Ethereum in BigQuery: a Public Dataset for smart contract analytics

Эфириум и другие криптотермии захватили воображение технологов, финансистов и экономистов. Цифровые валюты — это всего лишь одно применение базовой технологии blockchain. Ранее в этом году мы сделали базу данных биткойнов общедоступной для анализа в Google BigQuery. Сегодня мы создаем набор данных Ethereum.

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

Что касается архитектуры системы, Ethereum напоминает Bitcoin тем, что он в первую очередь служит для записи неизменяемых транзакций. Оба они по существу являются базами данных OLTP и мало способствуют функциональности OLAP (аналитики). Однако набор данных Ethereum заметно отличается от набора данных биткойнов:

Первичной криптоэкономической единицей Ethereum blockchain является Ether, в то время как единица биткойнов-блокчейнов — биткойн. Однако большая часть переноса стоимости на блок-цепочку Ethereum состоит из так называемых токенов. Токены создаются и управляются интеллектуальными контрактами.

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

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

Данные Blockchain Ethereum теперь доступны для исследования с помощью BigQuery. Все исторические данные находятся в наборе данных ethereum_blockchain, который обновляется ежедневно. Проект Ethereum ETL на GitHub содержит весь исходный код, используемый для извлечения данных из блок-цепи Ethereum и загрузки его в BigQuery — мы приветствуем больше участников и больше блоков!

Зачем собирать данные о блок-цепочке Ethereum в Google Cloud?
В то время как одноранговое программное обеспечение Ethereum для блокноев имеет API для подмножества часто используемых функций произвольного доступа (например, проверка состояния транзакций, поиск связей между транзакциями транзакций и проверкой балансов кошельков, например), конечные точки API существует для легкого доступа ко всем данным, хранящимся в сети.

Возможно, что более важно, конечные точки API также не существуют для просмотра данных блок-цепи в совокупности. Вот примерная диаграмма, показывающая общую передачу Ether и среднюю транзакционную стоимость, агрегированную по дням:


Такая визуализация (и базовый запрос базы данных) полезна для принятия бизнес-решений, таких как определение приоритетов для самой архитектуры Ethereum (является ли система, работающая рядом с пропускной способностью и из-за обновления?), Для корректировки баланса (как быстро кошелек можно перебалансировать?).

BigQuery имеет сильные OLAP-возможности для поддержки такого типа анализа, ad-hoc и вообще, без необходимости дополнительной реализации API.

Соответственно, мы создали программную систему в Google Cloud, которая:
  • Синхронизирует блок-цепочку Ethereum с компьютерами, использующими Parity в облаке Google.
  • Выполняет ежедневное извлечение данных из блокберической таблицы Ethereum, включая результаты транзакций смарт-контрактов, таких как передача токенов.
  • Де-нормализует и сохраняет данные с разбивкой по дате в BigQuery для легкого и экономичного исследования.

Набор данных блок-схемы Ethereum также доступен в Kaggle. Вы можете запрашивать текущие данные в ядрах, без ограничений в кодировке браузера Kaggle, используя клиентскую библиотеку BigQuery Python. Попробуйте это ядро ​​примера, чтобы поэкспериментировать с вашей собственной копией кода Python.

Анализ 1: популярные журналы событий Smart Contracts
Основным вариантом использования блок-цепи Ethereum до сих пор был обмен цифровыми токенами. Ниже мы показываем запрос таблиц транзакций и контрактов набора данных для поиска наиболее популярных смарт-контрактов, измеряемых по количеству транзакций:

Каковы 10 самых популярных коллекций Ethereum (контракты ERC-721) по количеству транзакций? Посмотреть мой запрос здесь.


Самый популярный смарт-контракт ERC-721 по количеству транзакций — 0x06012c8cf97bead5deae237070f9587f8e7a266d, главный смарт-контракт для игры CryptoKitties. Мы рассмотрим некоторые атрибуты игры позже в этом документе.

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

Мы можем визуализировать родословную CryptoKitty, как показано здесь для учетных записей, которые владеют не менее 10 CryptoKitties. Цвет указывает владельца, а размер указывает PageRank (репродуктивная пригодность) каждого CryptoKitty:


Анализ 2: Объемы транзакций и транзакционные сети
Существует много типов токенов, распределенных по блок-цепочке Ethereum, и их модели распределения различаются по типу, а также по времени. Рассматривая транзакционную активность каждого токена, мы можем измерить, которые более популярны в совокупности или в течение определенного периода времени.

Вот запрос для измерения статистической статистики токенов: 10 самых популярных токенов Ethereum (контракты ERC20) по количеству транзакций? Найдите ответ здесь.

В позиции №5 одним из самых популярных токенов является OmiseGO ($ OMG) по адресу 0xd26114cd6ee289accf82350c8d8487fedb8a0c07.

В качестве продолжения, вот запрос для измерения статистики токенов (количество транзакций) по времени, в частности, ежедневное количество переносов токенов OMG и визуализация данных Data Studio этих данных в виде временного ряда с момента создания до 2 августа, 2018 из этого листка Google:


Обратите внимание, что 13 сентября 2017 года произошло значительное увеличение количества приемников $ OMG, но не увеличилось количество отправителей. Это соответствует началу OmiseGO Token Airdrop.

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

Вот визуализация подмножества одних и тех же данных: это первые 50 000 транзакций, в которых было по крайней мере два торговых партнера. На этом графике узлы (точки) представляют адреса кошельков в блочной цепочке Ethereum, а ребра (линии) представляют собой совокупную передачу токенов между двумя адресами. Длина края приблизительно пропорциональна количеству переносимых токенов, то есть кошельки, которые переносят более суммарные жетоны между ними, находятся ближе друг к другу на диаграмме. Дальнейшие группы адресов, которые передаются часто друг с другом — за исключением членов других групп — объединяются вместе, и мы четко определяем цвета этих групп для ясности. Эта графика была сделана с помощью Gephi, а узлы отмечены цветом по группам, рассчитанным с использованием алгоритма модульности.


Анализ 3: Анализ функциональности Smart Contract
Ранее мы упоминали, что многие из разумных контрактов на блок-цепочку Ethereum заключаются в контрактах ERC-20. Что это значит? ERC-20 просто определяет программный интерфейс, который могут реализовать интеллектуальные контракты. В частности, он состоит из нескольких функций, связанных с переносом токенов, полностью описанных в документе спецификации стандарта Token Standard ERC20.

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

Возвращаясь к CryptoKitties, обсужденному в анализе 3 выше, основным элементом игрового процесса является животноводство, а смешение генов в событии размножения реализовано в смарт-контракте CryptoKitties GeneScience, 0xf97e0a5b616dffc913e72455fde9ea8bbe946a2b. Предположим, мы хотели найти другие игры, которые также реализуют аналогичную механику игры в контракт CryptoKitties GeneScience? Мы можем измерить это, используя JavaScript UDF-реализацию коэффициента подобия Jaccard в этом запросе.

Эти результаты показывают, что несколько более ранних версий контракта GeneScience наиболее похожи на текущую версию смарт-контракта по адресу 0xf97e0a5b616dffc913e72455fde9ea8bbe946a2b. Но есть и некоторые другие (например, CryptoPuppies на 0xb64e6bef349a0d3e8571ac80b5ec522b417faeb6), которые выглядят очень схожими контрактами, измеренными сигнатурами методов.

cloud.google.com/blog/products/data-analytics/ethereum-bigquery-public-dataset-smart-contract-analytics
Выделенные серверы OVH
Выделенные серверы Hetzner

0 комментариев

Оставить комментарий