Удобное руководство, в котором обобщается, что вы можете сделать для загрузки, обработки и создания полезных моделей из наборов данных криптовалюты.

Повальное увлечение криптовалютой породило множество вариантов использования и интересный объем данных. Поскольку многие из блокчейнов, на которых работают эти криптовалюты, по умолчанию являются открытыми и общедоступными, в различных блокчейнах генерируются огромные объемы данных. Поскольку каждая точка данных создает экономическую ценность, было множество проектов и субъектов, изучающих технологию, от налоговых регуляторов до тех, кто хочет предсказать будущие цены на криптовалюту.

Я был одним из первых, кто написал о новых криптовалютах и ​​использовании биткойнов для денежных переводов для TechCrunch и VentureBeat. Я знаком с этим предметом, и я также любитель науки о данных, который помог Springboard работать над учебным курсом по машинному обучению с гарантией работы, поэтому я всегда ищу способы объединить как огромные данные, генерируемые криптовалютами, так и проекты машинного обучения, которые вы можете построить на их основе с реальными последствиями.

К счастью, Google BigQuery упрощает обработку данных бесплатно от некоторых ведущих мировых криптовалют, основанных на биткойнах, от биткойнов до Zcash.

Google смог создать простой классификатор, который определял, поступила ли транзакция из пулов майнинга. Вы можете импортировать библиотеку в блокнот iPython и начать использовать SQL для запроса этого огромного набора данных. Давайте немного поразвлекаемся с некоторыми примерами запросов к данным и посмотрим, что мы можем сделать с этими данными с биткойн-данными, которые есть у Google.

Здесь в схеме есть две основные таблицы: таблица «блоков» и таблица «транзакций», которые могут быть объединены.

Вот схема таблицы блоков:

Здесь нам нужно знать несколько основных определений. Блокчейн состоит из серии блоков, которые содержат данные транзакции и которые подтверждаются последовательно по прошествии определенного времени. Используя запрос block_id, мы можем сузить круг до конкретного блока в цепочке блоков.

Давайте поиграемся с основными концепциями блокчейна с помощью this explorer. Глядя на первый блок, мы видим, что для первого блока было выведено 50 биткойнов. Высота блока (1) указывает на то, что это первый блок, добытый и проверенный в блокчейне основной сети Биткойн, которая является производственной версией Биткойна, которую люди используют для обмена финансовой ценностью между собой (в отличие от тестовых сетей, которые предназначены для только для постановочных целей).

Вы можете запросить предыдущий block_id в цепочке блоков, используя переменную previous_block. В этом случае при высоте блока 1 ссылка на предыдущий_блок отсутствует. Но если вы посмотрите на высоту блока, равную 2, предыдущий_блок будет тогда относиться к блоку генезиса / блоку с высотой блока 1.

Корень Меркла - это хэш всех хешированных транзакций внутри блока, который позволяет вам проверить целостность всего блока с гораздо меньшими вычислительными затратами.

У каждого блока также есть временная метка, которая имеет относительно точную метрику для того, когда он был проверен, и которая служит дополнительным уровнем аутентификации против злоумышленников блокчейна. Цель сложности в каждом блоке - это мера того, сколько вычислительной мощности требуется для добычи блока: сложность корректируется каждые 2016 блоков, чтобы обеспечить постоянную сбалансированную скорость добычи примерно одного блока каждые 10 минут. Поскольку Биткойн - это система доказательства работы, блоки майнинга - это то, что позволяет системе прийти к консенсусу относительно ее текущего состояния, независимо от распределенного количества узлов и присутствующих транзакций.

У каждого блока есть одноразовый номер, который удовлетворяет требованиям сети и означает, что блок может быть добыт. Существует маркер версии, который говорит о версии базовой конфигурации биткойн-кода и может использоваться в качестве маркера того, при каких условиях и конкретных правилах был добыт блок.

Work_terahash тогда подразумевается как выражение того, сколько вычислительной мощности потребовалось для внесения и добычи блока. В случае с биткойном сейчас серьезные майнеры будут запускать терахеши (триллионы попыток решения проблем биткойнов) - до 13 в секунду. Эта метрика может служить прокси (наряду с уровнем сложности) того, сколько вычислительных ресурсов требуется для добычи блока.

Вы можете поиграть с различными запросами в BigQuery explorer, чтобы проверить их, хотя скорость будет ограничена, особенно с большими запросами данных, которые возвращают гигабайты данных. Этот предел довольно легко преодолеть с помощью богатых данных блокчейна.

В Google BigQuery есть специальная функция, в которой вам нужно использовать обратные черты (`), окружающие имена таблиц, чтобы запрос также был действительным.

В качестве первого запроса мы можем взглянуть на первый блок в Биткойне, который является генезисным блоком. Мы видим, что корень Меркла для этого - 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098. Выбор block_id для этого корня Меркла дает нам block_id исходного блока, 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048. Когда мы проверяем проводник блокчейна на предмет этого block_id, мы видим, что он содержит высоту блока, равную 1, подтверждая, что это, по сути, первый блок, добытый в биткойнах.

После того, как все переменные блока проанализированы, мы можем перейти к переменным уровня транзакции - суммам транзакций между различными пользователями биткойнов.

С помощью первичного ключа таблицы транзакций, transaction_id, мы можем разблокировать информацию об отдельных транзакциях в блоке: все, от вывода кода до суммы сатоши (100 миллионов сатоши равны одному биткойну) в каждой транзакции в каждом блоке. Блоки будут иметь ряд транзакций, которые являются источником жизненной силы Биткойна, передачей стоимости между различными учетными записями.

База монет также содержит код и выходные данные, которые не имеют отношения к переданным сатоши - это можно использовать для таких вещей, как определение майнинговых пулов, которые объединяют вычислительные мощности, а затем распределяют доходы от майнинга криптовалюты между отдельными участниками, которые явно размещать свою подпись в качестве вывода на блочной базе монет, чтобы идентифицировать себя.

Поигравшись с различными SQL-запросами и различными концепциями, представленными в интерфейсе Google BigQuery, мы можем затем импортировать непосредственно в записные книжки iPython, используя клиентский инструмент Kaggle BigQuery и его интерфейс ядра, а затем также выполнять агрегированные функции, подфункции и все, что SQL предлагает для источник точных объемов данных о блоках и транзакциях, которые они содержат.

Давайте посчитаем каждый блок, содержащийся в данных цепочки биткойнов, и поиграем с интерфейсом в iPython и ядре Kaggle с помощью нескольких различных запросов, из которых мы можем легко получить данные через их интеграцию с BigQuery.

Что мы можем делать в машинном обучении с этой возможностью получать обширные данные о блокчейне Биткойн и различных криптовалютах?

Определите, является ли майнер частью майнингового пула

Google выпустил образец проекта, который мог классифицировать, была ли данная транзакция сгенерирована майнинговым пулом, попытка объединить вычислительную мощность нескольких организаций и отдельных лиц, чтобы попытаться успешно майнить биткойн и другие криптовалюты. , учитывая их уровень сложности.

Следующие запросы привели к 26 векторам признаков из вывода, переданного на определенный адрес и время простоя. Используя простой классификатор случайного леса и классификации майнеров в базе монет, Google смог обучить и пометить модель, которая помогла определить, будут ли транзакции генерироваться как часть майнинг-пула.

Сопоставляйте и прогнозируйте интерес и сложность криптовалюты с уровнями цен

Вы можете взять такие факторы, как уровень сложности и объем хэш-мощности, выделенной для блокчейна, а также объем транзакционной активности в цепочке, и сопоставить это с историческими ценовыми данными, чтобы увидеть, можете ли вы предсказать будущие цены на основе об анализе временных рядов и сетевых факторах - потенциально очень прибыльное предприятие в наши дни.

Классифицируйте различные блокчейны по их атрибутам

Вы можете получить различные атрибуты из разных блокчейнов, такие как коэффициент Джини вознаграждений майнеров, как это было сделано в этом анализе Ethereum Classic на Kaggle ,, а затем использовать их для анализа сходства между разными блокчейны, основанные на различных характеристиках, таких как концентрация вознаграждений за майнинг, или изменение уровня сложности или истории версий - или что-то еще, что вы можете найти.