[Из песочницы] Анализ блокчейн, или почему сломался миксер?

По материалам моего доклада на конференции «Цифровая трансформация» в Москве 16 апреля 2018 г

Мне интересно, как работает блокчейн. Не только какие там алгоритмы, криптография, платформы и криптовалюты. Для меня блокчейн — не только технология, но и новый вид жизни, новая вселенная. Если вы в этом сомневаетесь, посмотрите на этот граф распродажи токенов Aragon:

3fea1izwdoaypv4s-j61shhxrl8.png

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

Как работают бизнесы в блокчейн, что там делают люди и роботы — эти вопросы заставили меня заняться исследованием блокчейна.


Проблема и пути решения

Блокчейн сеть, а мы говорим именно о публичных блокчейн сетях, вообще-то, полностью открыт. Можно прочитать абсолютно любую информацию о блоках, адресах и транзакциях. Для программистов для этого существуют интерфейсы API (например, Web3 [1]), а для простых смертных — блокчейн-исследователи, например Etherscan [2]. Кроме того, любой полный узел блокчейна скачивает на локальный диск все блоки с начала времен с полной информацией внутри, так как это требуется для проверки правильности транзакций, и боже упаси, майнинга. То есть любой узел блокчейна — это его полная копия, да ещё и с интерфейсами для доступа и подробной документацией.

Вроде бы есть всё для анализа, но не тут-то было. Блокчейн против. Вспомним, что значит это слово блокчейн на русском: цепочка блоков. В блоках хранятся записи о транзакциях и мета информация для обеспечения целостности и связности. Чтобы что-то найти в блокчейне надо знать номер блока или хеш транзакции, или в крайнем случае адрес. Никаких индексов, кроме перечисленных, на узле нет.

Etherscan тоже немногим лучше. Он показывает то же, что доступно через API, только в виде веб-страниц. И также, чтобы найти что-то, вы должны знать заранее или адрес, или хэш транзакции, или номер блока. Вы видите блокчейн через узенькое окошечко, ограниченное этими сущностями. Это как изучать вселенную с микроскопом, для анализа «в большом» существующие инструменты совершенно не подходят.

Чтобы пофилософствовать, я даже нарисовал такую диаграмму, где видна суть проблемы:

ilt6eahszfh2ss5uachuvwehtzw.png

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

Про блокчейн такого пока сказать нельзя. Информация в основном или чисто технического плана для понимающих (вида «Etherscan»), или беллетристика про проекты ICO [3], DAO [4], имеющая явное субъективное смещение, и не проверяемое математическими методами.

Блокчейн непрозрачен в целом, хотя и вся информация широко доступна, значит будем над этим работать!


Технические средства для аналитики блокчейн

Сначала поймём масштабы проблемы. Блокчейн сетей много, и также много разных платформ, на которых они построены. Надо с чего-то начинать и я выбрал сеть Ethereum Foundation по нескольким причинам:


  1. Много участников
  2. Капитализация всех валют сети, включая токены, возможно наибольшая из всех
  3. Смарт-контракты [5] и DAO [4], расширяющие возможный анализ и делая его намного более содержательным и полезным

Даже выбрав одну сеть, мы получаем довольно много данных (по состоянию на 15 июня 2018 года):


Количество переводов криптовалют, всего 267 млн
Переводов криптовалюты в день, в среднем 750 тыс
Количество действующих адресов 44 млн
Количество смарт-контрактов 6.8 млн
Количество выпущенных токенов 48 тыс
Вызовов смарт-контрактов в день, в среднем 690 тыс
Примерный объем сжатых данных для полной ноды 117 GBytes

Изначально было желание, чтобы анализ был как можно ближе к реальному состоянию сети, то есть в реальном времени. Это имеет два технических аспекта:


  1. Информация из блокчейна должна попадать в базу данных как можно быстрее, как только создан новый блок. Мы хотим видеть текущую информацию, а не архив;
  2. Получать отчеты мы хотим быстро, в течении секунды или быстрее, чтобы не терять интереса задавать много вопросов.

Выбор пал на базу данных Clickhouse [6], проект с открытым кодом от компании Яндекс. До этого я не использовал эту систему, и мне помогали разбираться ребята из Altinity [7], за что им отдельное спасибо.

Общая структура системы выглядит следующим образом:

jgbsmmdxs4m32db_8ut5l-xr-oy.png

Исходные данные читаются из полного узла сети Ethereum процессом ETL (Extract — Transform — Load), который разбирает данные внутри блока и записывает в несколько таблиц в базе данных Clickhouse. Процесс запускается как только новый блок попадает на узел сети и работает постоянно.

С правой стороны диаграммы пользователи данных, на настоящий момент:


  1. средство аналитики SuperSet [8]. С помощью него можно делать классные диаграммы и быстро комбинировать запросы для получения ответов на вопросы анализа;
  2. Python Jupiter [9] для более полного анализа средства машинного обучения и применения статистических алгоритмов;
  3. Веб-сайт Bloxy и API [10] для публичного использования информации.

Некоторое время заняло индексирование базы Ethereum, все-таки там уже почти 6 миллионов блоков, и каждый надо считать из узла и обработать, но эта работа позади, и мы, наконец, можем насладиться всей мощью аналитической базы данных, тем более что данные просто м-м-м какие вкусные!


Токены

Начнём с токенов, поскольку это самое популярное применение смарт контрактов сети Ethereum, можно сказать, цель и смысл её создания. Токены — это криптовалюты, которую каждый может выпустить используя смарт контракт определенного вида. Основной стандарт токена — ERC20 [11], но как мы сейчас увидим, им всё не ограничивается.

Теперь, имея базу для аналитики и SuperSet, мы можем посмотреть, какие токены выпускаются, как они используются, и что сейчас популярно:

-pmoec7ziylhi2yyf8av4ubthsi.png

Данные приведены для всего времени существования Ethereum. Круговая диаграмма показывает, что токены ERC20 имеют подавляющее распространение по сравнению с другими видами. График количества активно используемых токенов при переводов имеет стабильный рост до сих пор, и это означает, что энтузиазм ICO не спадает, а даже наоборот. На самом деле в день создается иногда несколько сотен новых токенов, читай крипто-валют, но не все попадают на этот график, а только те, что активно используются.

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

На этом графике есть две аномалии: пик переводов токенов ERC20 в ноябре 2017 года и менее выраженный «горбик» роста перевода токенов стандарта ERC721 в декабре.

Ноябрьский пик связан с токеном InsPromo, который разбрасывали почти миллиону адресов «просто так», это была рекламная акция типа «airdrop» [12]. Этот способ привлечения клиентов ICO использовался и до и после много раз, но масштаб разброса за 1 день бесплатных «монет» рекордный!

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


Крипто-Звери и не только

Токены ERC721 [14] появились, по сути, с появления именно крипто-кошек [13], хотя их потенциальное использование гораздо шире. Если стандарт ERC20 дал возможность выпускать всем измеряемую в определенной величине крипто-валюту, то ERC721 дал всем возможность обозначать права собственности любого объекта, виртуального, реального или даже интеллектуального мира.

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

v3i0pmtkyp5i4sx-rz5z-bewbnw.png

Верхний график показывает количество транзакций всех токенов ERC721. В декабре 2017 года виден большой рост, на 100% от игры Crypto Kitties. Интерес к игре продержался весь декабрь, потом постепенно спал.

На нижнем графике показано количество разных токенов стандарта ERC721 в обороте, читай проектов, на этой технологии. На декабрь был один только Crypto Kitties, а в феврале их уже несколько десятков. Слева показаны названия токенов, чем больше количество транзакций, тем крупнее шрифт, до сих пор котята с символом CK на первом месте.


Зачем нам миксер?

Анализ блокчейна целиком дает возможность находить закономерности и аномалии, которые не видны на микроуровне транзакций, адресов и блоков. Один из ярких примеров — «миксер» из тысячи ботов, работающий в сети Ethereum.

Начнем с поиска аномалии в распределении адресов по количеству получателей и отправителей крипто-валюты:

4lz8f-qef2vrkz9shfumgj2o_da.png

По горизонтальной оси — количество адресов, с которых переводились деньги на адрес, по вертикали — количество адресов, на которых переводились с адреса. Размер круга — количество таких адресов.

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

Но в декабре 2017 года круг с двумя отправителями и тремя получателями аномально вырос в размере. И таких адресов несколько миллионов! Чтобы разобраться в ситуации выберем один из таких адресов из жатого круга и построим граф переводов:

si1og922-6jklgi2ny1yp1dowog.png

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

Объём работы этого огромного робота мы оценили, отделив транзакции этих адресов от остальных транзакций в сети:

kmxkuajh3ziym_sz_5xkkkwaopo.png

По объему переводов миксер (оранжевые столбцы) в отдельные месяцы превышает все остальные переводы в сети (зеленые столбцы) в несколько раз. Нужно, конечно, учитывать, что он переводит валюту внутри себя и внешний оборот его не столь значителен, не более 17 млн эфира (на сегодняшний день 10 млрд долларов).

Транзакции миксера занимали существенную часть пропускной способности сети Etehereum на протяжении многих месяцев. Максимум его деятельности приходится на начало 2018 года, когда каждая четвертая транзакция перевода Ethereum была инициирована этим роботом, как видно из синего графика доли транзакций миксера в общем количестве:

hd2z4xkprso30vi4amj8iabwkbe.png

Но вот внезапно в конце февраля 2018 года он перестал работать. Так как мы не знаем причин его использования, мы можем только догадываться о причинах его жизни и внезапной смерти. А может быть он не умер, а изменил алгоритм и просто ушёл с наших радаров?


Я верю в блокчейн

Я верю в блокчейн. Бизнесы, люди и сообщества выигрывают от его использования. Чтобы его использовать, надо понимать как он работает как явление. По каким законам он развивается, какие есть внутренние аномалии, тренды, спады и подъёмы.

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

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


Литература

[1] Web 3: A platform for decentralized apps

[2] Etherscan

[3] ICO

[4] DAO

[5] Смарт-контракты сети Ethereum

[6] Yandex Clickhouse

[7] Altinity

[8] SuperSet

[9] Python Jupyter

[10] Bloxy

[11] ERC20

[12] WTF is an Airdrop? A Detailed Guide to Free Cryptocurrency

[13] CryptoKitties

[14] ERC721 standard

© Habrahabr.ru