Я заглянул в 26-страничный технический документ, описывающий протокол, который будет использоваться в качестве платформы для монеты Libra от Facebook. У него 53 внушительных автора! Вот вам анализ.
Аннотация
Протокол Libra позволяет использовать набор репликаторов, на которые ссылаются как на валидаторов — от различных органов власти для совместного ведения базы данных программируемых ресурсов.
Скажем прямо — система будет контролироваться группой представителей сверху вниз. Однако следует отметить, что в ней говорится, что база данных предназначена для “программируемых ресурсов”, а не только для цифровой валюты.
Эти ресурсы принадлежат различным учетным записям пользователей, аутентифицированных криптографией с открытым ключом и придерживающихся пользовательских правил, установленных разработчиками этих ресурсов.
Употребление общих слов, таких как “ресурсы”, заставляет меня подозревать, что это нечто гораздо большее, чем просто стейблкоин.
Транзакции основаны на предопределенных и, в будущих версиях, определенных пользователем умных контрактах на новом языке программирования под названием Move. Мы используем Move для определения основных механизмов блокчейна, таких как валюта и участие валидатора.
Хорошо, теперь это становится интересным. Использование специально разработанного “умного” языка контрактов приведет к возникновению большого числа вопросов о том, насколько многофункциональным является этот язык, и, как следствие, насколько надежна система в отношении к враждебным контрактам. Будут также вопросы о дружелюбном отношении к разработчикам и о том, насколько хорошо Libra может защитить разработчиков умных контрактов от “выстрела в ногу”.
Эти основные механизмы позволяют создать уникальный механизм управления, основанный на стабильности и репутации существующих институтов на ранних этапах, но со временем осуществляющий переход к полностью открытой системе.
Звучит так, будто Libra Association будет федерацией, которая может развиваться с помощью системы голосования и какой-то уже существующей репутации.
1. Введение
Эта экосистема предложит новую глобальную валюту — монету Libra, которая будет полностью обеспечена банковскими депозитами и ценными бумагами от высококачественных центральных банков.
Libra — это общий протокол шифрования имущества, и первым активом будет стейблкоин.
Со временем право на членство изменится и станет полностью открытым, основываясь только на членских активах Libra.
Сильно похоже на proof of stake. Очевидно, что через пять лет членство должно быть открытым, и надеюсь, что к тому времени они уже разберутся с proof of stake, хотя я думаю, они столкнутся с теми же проблемами, что и Ethereum.
Ассоциация опубликовала отчеты с изложением… дорожной карты перехода к неразрешенной системе.
Я почти уверен, что это будет первый раз, когда распределенная сеть перейдет с разрешенной на неразрешённую. Возможно, сеть в целом сможет переключиться на proof of stake, но для того, чтобы сохранять стейблкоин, некоторые организации должны держать мост открытым к традиционной финансовой системе. Это будет постоянной точкой централизованного контроля через Libra Association.
Валидаторы по очереди управляют процессом проведения транзакций. Когда валидатор выступает в качестве лидера, он предлагает транзакции, как те, которые предоставлены ему непосредственно клиентами, и те, которые косвенно предоставлены через других валидаторов, к другим валидаторам. Все валидаторы выполняют транзакции и формируют аутентифицированную структуру данных, которая содержит новую историю регистра. Валидаторы голосуют за аутентификатора для данной структуры данных в рамках консенсуса протокола.
Это похоже на Задачу Византийских Генералов, которая хорошо понимается 20-летним алгоритмом, хотя они, вероятно, и сделали несколько доработок. В Разделе 5 вайт пейпера мы видим, что он называется LibraBFT, что является вариацией протокола консенсуса HotStuff.
В рамках выполнения транзакции T в версии i, консенсус-протокол выдаёт подпись на полное состояние базы данных в версии i — включая всю её историю — для проверки подлинности запросов от клиентов.
Это примечательно, в первую очередь потому, что это означает, что новые валидаторы должны иметь возможность быстро подключаться к сети и синхронизироваться, без необходимости повторно анализировать всю историю блокчейна, предполагая, что они доверяют уже существующим валидаторам. Модель аккаунтов имеет смысл, потому что Facebook вряд ли будет заботиться о конфиденциальности, хотя кажется, что он заинтересован в умных контрактах.
2. Логическая модель данных
Протокол Libra использует модель данных на основе учетных записей, чтобы шифровать состояние регистра.
С точки зрения структуры данных, Libra больше похожа на Ethereum или Ripple, чем на Bitcoin. Модель UTXO имеет свои плюсы и минусы, такие как лучшая конфиденциальность и более надежная история транзакций, благодаря простоте истории на основе выходных данных, но может быть более трудной в работе со сложными умными контрактами. Таким образом, модель аккаунта имеет смысл, потому что Facebook вряд ли будет заботиться о конфиденциальности, даже несмотря на то, что платформа заинтересована в умных контрактах.
Протокол Libra не связывает учетные записи с личностью человека. Пользователь может создавать несколько учетных записей, создавая несколько пар ключей. Учетные записи, контролируемые одним и тем же пользователем, не имеют внутренней связи друг с другом. Эта схема аналогична схеме Bitcoin и Ethereum, поскольку она обеспечивает псевдонимность для пользователей.
Это звучит удивительно хорошо, но мне интересно, если это так и в случае с Libra Coin (активом). Будет интересно посмотреть, насколько открыта эта система для разработчиков, желающих создавать приложения, которые в большей степени сохраняют конфиденциальность.
Каждый ресурс имеет тип, заявленный модулем. Типы ресурсов — это номинальные типы, которые состоят из имени типа, имени и адреса ресурса объявившего модуль.
Похоже, вы можете сгенерировать адрес, и этот адрес может иметь произвольное количество назначенных ему активов, если каждый из них имеет уникальное имя.
При выполнении транзакции T i формируется новое состояние регистра S i, а также код состояния выполнения, использование газа и список событий.
Теперь мы знаем, как система защищена от атак, связанных с исчерпанием ресурсов, предположительно с использованием системы стоимости ресурсов, аналогичной системе Ethereum.
Отсутствует понятие блокировки транзакций в истории регистра.
Интересно. Фактически нет никакой блокчейн-структуры данных в протоколе Libra, блоки являются скорее виртуальной, логической конструкцией, которая используется валидаторами с целью координации подтвержденных снимков состояния системы. Вспомним, что теперь первое предложение этого раздела имеет больше смысла:
Все данные в Libra Blockchain хранятся в единой версии базы данных. Номер версии — это 64-битное целое число, соответствующее количеству совершенных в системе транзакций.
Каждая крипто-сеть, с которой я знаком, работает одинаково на высоком уровне: есть состояние системы, затем выполняется транзакция, которая фактически является переходной функцией состояния системы, а затем возникает новое состояние системы. Цель размещения серий транзакций в контейнеры или блоки заключается в их упорядочивании, и маркировке по времени. Это очень важно для без разрешенных сетей, в которых данные аутентифицируются через динамические многосторонние подписи, где валидаторы могут свободно присоединяться и покидать сеть. Так как Libra работает с разрешенной системой, она может использовать более эффективный алгоритм консенсуса, который не требует серийной обработки транзакций, поскольку история транзакций гораздо реже может быть переписана.
В первоначальной версии протокола Libra для пользователей будет доступно только ограниченное количество функций Move. Хотя Move используется для определения основных концепций системы, таких как валюта Libra, пользователи не могут публиковать персональные модули, которые декларируют свои собственные типы ресурсов. Такой подход позволяет использовать язык Move и инструментарий, основанный на опыте реализации основных компонентов системы, до того, как они будут представлены пользователям. Этот подход также позволяет избежать проблем с масштабируемостью при проведении транзакций и хранении данных, присущих универсальной платформе умных контрактов.
Это очень похоже на планы “членства открытого валидатора”, о которых говорилось выше. Похоже, что Facebook еще не решил ни одну из огромных проблем, над которыми Ethereum работает уже много лет.
Для управления спросом на вычислительные мощности, протокол Libra взимает плату за транзакции, выраженную в монетах Libra.
Монеты Libra на самом деле являются родной единицей протокола, так же как и ETH является родной единицей протокола Ethereum. Это приводит к другому вопросу о псевдонимной природе Libra: можете ли вы приобрести монеты без AML/KYC? Если нет, то, похоже, вы не сможете анонимно использовать ни одну из функциональных возможностей системы. Читая о бумажнике Calibra, вы увидите, что для его использования потребуется AML/KYC. Поэтому мне интересно, будут ли, в конечном счете, в системе появляться препятствия, которые не находятся под жестким контролем.
Система спроектирована таким образом, чтобы иметь низкую плату при нормальной эксплуатации, когда имеется достаточный потенциал.
Это очень расплывчато и вызывает много вопросов: Что такое низкая плата? Что такое нормальная работа? Что такое достаточный потенциал?
3. Выполнение транзакций
Многие части основной логики блокчейна определяются с помощью Move, включая взимание платы за газ. Во избежание замкнутости VM отключает измерение газа во время выполнения этих основных компонентов.
Это звучит довольно опасно, но авторы документа отмечают, что основные компоненты должны быть написаны защитно, чтобы предотвратить DoS-атаки.
Ключевой особенностью Move является возможность задавать собственные типы ресурсов… Система Move type предоставляет специальные гарантии безопасности ресурсов. Ресурс никогда не может быть скопирован, только перемещен. Соблюдение этих гарантий обеспечивается на статической основе с помошью Move VM. Это позволяет нам представлять монеты Libra как тип ресурса в языке Move.
Это проясняет более ранний вопрос о том, являются ли монеты Libra родным активом, как ETH или BTC. Я ожидаю, что эти монеты являются только стандартным или единственным типом ресурса, который будет разрешен в системе при ее запуске, а другие ресурсы появятся позже.
В стековом байткоде Move меньше инструкций, чем в исходном языке более высокого уровня. Кроме того, каждая команда имеет простую семантику, которая может быть выражена еще меньшим количеством действий. Это уменьшает влияние спецификаций протокола Libra и облегчает обнаружение ошибок реализации.
Это звучит очень продуманно; надеюсь, это означает, что безопасность их языка будет проверена лучше, чем у Ethereum. Мы видим, что блокчейн Libra на самом деле не является блокчейном.
4. Аутентифицированные структуры данных и хранилище
Протокол Libra использует единственное дерево Меркля для обеспечения аутентифицированной структуры данных для истории регистра … в частности, история регистра использует аккумулятор дерева Меркля для формирования других деревьев Меркля, что также обеспечивает эффективные операции с приложениями.
В очередной раз мы видим, что Libra Blockchain на самом деле не является блокчейном. Очень странно, что данный протокол очень хорошо спроектирован, и все же его продолжают называть блокчейном, когда структура данных регистра представляет собой набор подписанных состояний самого регистра. Валидаторы выполняют свои обязательства для каждого состояния регистра, и все состояния регистров также выполняются в деревьях Меркля, но мне еще не удалось увидеть никаких связанных списков данных, образующих цепочку — гораздо меньше цепочки блоков.
Аутентификатором учетной записи является хэш этого сериализованного представления.
Обратите внимание, что это представление требует пересчета аутентификатора над учётной записью, после любого изменения учётной записи. Стоимость этой операции O(n), где n — длина байтового представления полноценного аккаунта.
Хммм, звучит как открытость к DoS-атакам, если нет ограничений на объем данных, хранящихся на данной учетной записи.
Мы предполагаем, что по мере использования системы рост объема памяти, связанный с учетными записями, может стать проблемой. Подобно тому, как газ поощряет ответственное использование вычислительных ресурсов, мы ожидаем, что для хранения газа может понадобиться аналогичный механизм, основанный на арендной основе. Мы оцениваем широкий спектр подходов к арендному механизму, который лучше всего подходит для экосистемы.
Еще одна нерешённая проблема. Не могу дождаться мемов “Чертовски высокая арендная плата!”.
Голосование должно оставаться честным как в течение определенного периода времени, так и после него, чтобы позволить клиентам синхронизироваться с новой конфигурацией. Клиенту, который находится вне сети дольше этого времени, необходимо заново синхронизироваться, используя какой-то внешний источник достоверной информации, чтобы получить точку, которой он доверяет.
Ай. Неясно, как долго этот “период времени”, но если период времени меньше суток, то, наверное, указанный “период времени” тоже. Представляется, что этот консенсус-протокол недостаточно прочен, чтобы участники могли покинуть сеть и вновь присоединиться к ней по своему желанию.
5. Консенсус задачи византийских генералов
LibraBFT предполагает, что набор из 3f + 1 голоса распределяется между набором валидаторов, которые могут быть честными, или византийскими. LibraBFT остается в безопасности, предотвращая такие атаки, как двойные расходы и форки, когда не более f голосов контролируются византийскими валидаторами.
Подобно PBFT, этот алгоритм консенсуса может выдержать 33% валидаторов, считая их нечестными. Модификации HotStuff звучат разумно:1. Противодействовать недетерминированным ошибкам, используя валидаторов, подписывающих состояние блока, а не только последовательность транзакций.2. Лидер, который выдает явные тайм-ауты, и валидаторы полагаются на кворум тех, кто переходит в следующий раунд — это должно улучшить пригодность.3. Непредсказуемый механизм выборов лидеров для ограничения DoS-атак на лидеров.4. Совокупные подписи сохраняют личность валидаторов, подписывающих кворумные сертификаты для голосования за принятие блока.
6. Огранизация сети
Каждый валидатор в протоколе Libra сохраняет полноправное членство в системе и подключается непосредственно к любому валидатору, с которым ему необходимо общаться. Предполагается, что валидатор, к которому невозможно подключиться напрямую, подпадает под квоту византийских ошибок, допускаемых системой.
Это потребует большой работы для того, чтобы система прошла несколько сотен валидаторов.
7. Основная реализация Libra
Безопасность цепочки блокчейна Libra зависит от правильной реализации валидаторов, программ Move и Move VM. Работа над решением этих вопросов в Libra Core продолжается.
Подводя итог этому разделу, можно сказать, что он написан на языке Rust, который, похоже, является хорошим началом для производительности и безопасности.
8. Производительность
Мы ожидаем, что первый запуск протокола Libra будет поддерживать 1000 платежных транзакций в секунду с 10-секундным интервалом между отправкой транзакции и ее завершением.
Так как будет только около 100 валидаторов, и все они напрямую связаны друг с другом, 10-секундный интервал между блоками звучит вполне реально.Минимальные требования к нодам:
- Интернет-соединение 40 Мбит/с
- 1 CPU
- 16 ТБ SSD
Ранее было несколько ссылок на сохранение возможности валидатора выполнять первоначальную синхронизацию с нуля, а не доверять подписанным состояниям от других валидаторов. Я ожидаю, что если Libra получит широкое применение, то выполнять такую синхронизацию станет крайне непрактично, и поэтому модель безопасности узла будет сильно зависеть от доверия к валидаторам.
9. Реализация политики в отношении экосистемы Libra с Move
Резерв Libra Coin является ключевым механизмом сохранения ценности. Благодаря резерву, каждая монета полностью обеспечена набором стабильных и ликвидных активов. Контракт на выпуск монет Libra позволяет ассоциации выпускать новые монеты, когда спрос растет, и уничтожать их, когда спрос сокращается. Ассоциация не проводит денежно-кредитной политики. Она может выпускать и сжигать монеты только по требованию уполномоченных реселлеров. Пользователям не нужно беспокоиться об ассоциации, вводящей инфляцию в систему или девальвирующей валюту: Для выпуска новых монет в резерве должно быть соответствующий фиатный депозит.
Хорошо, но теперь мы говорим о событиях, которые не связаны с сетью. Как было сказано ранее, сеть не способна выполнять скрипты, использующие входные данные, которые являются внешними по отношению к состоянию сети. Таким образом, модификаторы “могут” и “должны” в вышеприведенном фрагменте, несомненно, ссылаться на политику Libra Association или договорные обязательства, о которых сеть не знает.
Алгоритм консенсуса основан на управлении набором валидаторов с помощью модуля Move, который поддерживает текущий набор валидаторов и управляет распределением голосов между валидаторами. Изначально блокчейн Libra предоставляет голоса только членам-основателям.
Если предположить, что валидаторы голосуют за изменения в группе валидаторов, похоже, что это приводит к проблемам, аналогичным той, что мы видим в proof of stake системам — long range атакам. Если достаточное количество приватных ключей членов-основателей будет скомпрометировано, может ли злоумышленник создать новую историю регистра с генезис-блока? Если да, примут ли его другие узлы? Неясно, позволяет ли консенсус-протокол переписывать старые состояния или же он существует только в одном месте.
Мы планируем постепенный переход к proof-of-stake.
Если они смогут решить неразрешенные проблемы.
Неразрешённые вопросы
Как работает механизм управления?Здесь мы видим, что Libra Association — это совет членов, и для внесения изменений требуется большинство в 2/3 голосов. Они единственные, кому разрешено выпускать или уничтожать монеты Libra, но они, предположительно, могут вносить любые изменения, если есть достаточное согласие. Требуется ли AML/KYC? Очевидно, это не требуется на уровне протокола, но бумажник Calibra утверждает, что все пользователи будут проверяться через государственный ID. Похоже, что бумажник Calibra будет единственным доступным кошельком по крайней мере на некоторое время, поэтому неясно, могут ли разработчики и пользователи запускать приложения в сети Libra, не отвечающие тем же стандартам, что Calibra. Что означают низкие комиссии? Что такое нормальная работа? Что такое достаточный потенциал? Кошелек Calibra FAQ обещает низкие комиссии, но кажется, что это может противоречить работе основного протокола во время высокой нагрузки. Плата за транзакции будет низкой и прозрачной, особенно если вы отправляете деньги за границу. Calibra снизит комиссию, чтобы помочь людям сохранить больше своих денег. Будут ли Libra действительно открыта для разработчиков? В соответствии с планом продвижения к без разрешенному консенсусу:
Блокчейн Libra будет открыт для всех — любой потребитель, разработчик или бизнес может использовать сеть Libra, создавать продукты на ее основе и добавлять им ценность посредством своих услуг. Открытый доступ обеспечивает низкий уровень барьеров для входа и инноваций, а также способствует здоровой конкуренции, приносящей пользу потребителям.
Я скептически отношусь к тому, что разработчики смогут запустить на этой платформе любое технически корректное приложение, о котором они могут только мечтать. Ничего из того, что я читал, не наводит меня на мысль, что эта система будет сопротивляться цензуре, но только время покажет!
Наш канал в телеграм. Присоединяйтесь!