Больше денег: что такое Ethereum и как блокчейн меняет мир - Виталий Дмитриевич Бутерин
Дерево Меркла
Слева: лишь малое число вершин в дереве Меркла необходимо для доказательства валидности ветви. Справа: любая попытка изменить любую часть дерева Меркла приведет к нестыковке в корне дерева
Для масштабируемости протокола Bitcoin важно, что каждый блок встроен в многоуровневую структуру данных. Упомянутый хеш блока – на самом деле только хеш заголовка блока, примерно 200-байтовый фрагмент данных, включающий в себя временную метку, одноразовый код блока, хеш предыдущего блока и корневой хеш структуры данных под названием дерево Меркла, которая и хранит всю информацию о транзакциях блока. Дерево Меркла – тип бинарного дерева, устроенный следующим образом: внизу – набор нод, содержащих всю информацию; в середине – промежуточные ноды, где каждая представляет собой хеш двух дочерних нод; а наверху – одна корневая нода, также сформированная хешем двух дочерних нод.
Цель дерева Меркла – раздробить данные в блоке: ноде достаточно загрузить только заголовок блока из одного источника и нужную часть дерева из другого, чтобы быстро удостовериться, что вся информация корректна. Все это работает, потому что хеши вычисляются «вверх»: если злоумышленник попытается «подсунуть» фейковую транзакцию внизу дерева Меркла, все ноды сверху также изменят свои хеши, ноды над ними – тоже, и так до самого корня, из-за чего изменится и хеш блока. Из-за этого протокол будет воспринимать такой блок как совершенно другой (proof-of-work которого будет практически наверняка не валиден).
Можно сказать, что деревья Меркла необходимы для жизнеспособности системы Bitcoin в долгосрочной перспективе. На апрель 2014 года полная нода сети Bitcoin, которая полностью хранит и обрабатывает каждый блок, занимает 15 Гб дискового пространства и растет более чем на 1 Гб в месяц. На данный момент хранить полную копию блокчейна могут позволить себе владельцы ПК (но не смартфонов), а в будущем с этим будут справляться только специальные компании и отдельные энтузиасты. Протокол «упрощенной верификации платежей» (simplified payment verification, SPV) допускает существование также «легких нод», которые загружают лишь заголовки блоков, проверяют их proof-of-work и затем загружают «ветви» дерева Меркла лишь с необходимыми держателю такой ноды транзакциями. Это позволяет держателям легких нод надежно определить статус любой биткойн-транзакции, а также собственный текущий баланс, загрузив при этом крайне малую часть всего блокчейна.
АЛЬТЕРНАТИВНЫЕ ПРИЛОЖЕНИЯ БЛОКЧЕЙНА
Идея нефинансового применения блокчейн-технологии также имеет долгую историю. В 2005 году Ник Сабо изложил концепцию «безопасного хранения права на собственность», в которой описал, как «новые достижения в технологии реплицированных баз данных» позволят использовать основанные на блокчейне системы для хранения реестра земельной собственности, – что возможно выработать фреймворк, способный описывать, в частности, самообеспечение, «враждебное» владение землей и налог на земельную собственность. Но, к сожалению, никакой эффективной реализации реплицированных баз данных на тот момент не было, и протокол не имел практического применения. Однако с развитием системы децентрализованного консенсуса Bitcoin число альтернативных применений блокчейна стало быстро расти.
◊ NAMECOIN. Созданный в 2010 году Namecoin можно описать как децентрализованную базу данных зарегистрированных имен. Децентрализованным протоколам вроде Tor, Bitcoin и BitMessage нужен какой-то способ идентификации учетных записей, чтобы другие люди могли с ними взаимодействовать, но во всех существующих возможен лишь один вид идентификации – псевдослучайный хеш вроде 1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWy. В идеале пользователям хотелось бы иметь возможность создавать аккаунты с именами вроде «george». Но проблема в том, что если кто-то может создать аккаунт «george», то другой пользователь сможет таким же образом зарегистрировать аккаунт с тем же именем и выдавать себя за первого человека. Единственное решение здесь – парадигма «первого заявителя», где второй заявитель не сможет претендовать на уже занятое имя. Такой подход прекрасно сочетается с протоколом консенсуса Bitcoin. Namecoin – первый и самый успешный пример такой системы регистрации имен.
◊ ЦВЕТНЫЕ МОНЕТЫ. Цель цветных монет – позволить людям создавать собственные цифровые валюты (или, что тоже важно, валюты с одной единицей – цифровые токены) на блокчейне Bitcoin. В протоколе цветных монет любой может «выпустить» новую валюту, публично перекрасив свои UTXO из Bitcoin. Протокол рекурсивно окрашивает UTXO в цвет монет на входе создавших их транзакций (в случаях, когда на входе присутствует несколько цветов, применяются особые правила). Это позволяет пользователям поддерживать кошельки, содержащие только UTXO определенного цвета, и отправлять их так же, как обычные биткойны, отслеживая в истории цвет любого полученного UTXO.
◊ МЕТАКОЙН. Идея следующая: протокол метакойна располагается поверх сети Bitcoin, в ней же хранятся метакойн-транзакции, но при этом используется другая функция изменения состояния – APPLY’. Поскольку метакойн-протокол не может предотвратить появление невалидных метакойн-транзакций в блокчейне Bitcoin, в протокол добавляется правило: если APPLY’ (S, TX) выдает ошибку, применить APPLY’ (S, TX) = S. Это обеспечивает простой механизм для создания произвольного протокола криптовалюты с расширенным функционалом, невозможным внутри самого Bitcoin, но с очень низкой стоимостью разработки, поскольку сложности майнинга и сетевого взаимодействия уже обрабатываются протоколом Bitcoin. Метакойны используют для реализации некоторых классов финансовых контрактов, регистрации имен и децентрализованных бирж.
Таким образом, есть два подхода к созданию протокола консенсуса: построить независимую сеть или же построить протокол поверх сети Bitcoin. Первый подход при всей его успешности в приложениях вроде Namecoin трудноосуществим; для реализации каждой конкретной идеи необходимо построить свой блокчейн, а также создать и протестировать все необходимые переходы состояний и сетевой код. Кроме того, мы прогнозируем, что набор приложений для технологии децентрализованного консенсуса будет распределяться по степенному закону, где