Как в действительности будет работать «блокчейн» Libra?

Экспертное мнение Джеймсона Лоппа, профессионального шифропанка, создателя satoshi.info и тех. директора Casa, о бесцеремонном вмешательстве Facebook в криптосферу. Лопп внимательно изучил, помимо прочей доступной информации по теме, 26-страничный технический документ (с впечатляющими 53 авторами!), описывающий протокол, который будет использоваться в качестве платформы для койна Libra от Facebook. Ниже приведён подробный разбор этого документа.

(Примечание редактора: курсивом выделены цитаты из документа.)

Краткий обзор

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

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

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

Использование такого обобщения, как «ресурсы», наводит на мысль о том, что речь идёт о чём-то значительно большем, нежели просто очередной стейблкойн.

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

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

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

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

1. Введение

Libra – это настраиваемый протокол криптоактивов, и первым активом станет стейблкойн.

Звучит до боли похоже на proof-of-stake. Очевидно, план заключается в том, чтобы сделать членство открытым через пять лет, и я надеюсь, что за это время авторы протокола хорошенько изучат особенности proof-of-stake. Хотя подозреваю, что в итоге они столкнутся с теми же проблемами, что и Ethereum.

Я уверен, что это будет первый случай перехода распределённой сети от закрытой системы с ограниченным доступом к открытой системе. Возможно, сеть в целом сможет переключиться на proof-of-stake, но для поддержания привязки курса и обеспечения стейблкойна, некоторые субъекты должны сохранять мостик к традиционной финансовой системе открытым. И это будет оставаться постоянной точкой централизованного контроля, организованного через Libra Association.

Это звучит как Practical Byzantine Fault Tolerance – хорошо изученный за последние 20 лет алгоритм – хотя они, вероятно, изменили некоторые параметры. Из раздела 5 белой книги мы узнаём, что алгоритм получил название LibraBFT и представляет собой версию протокола консенсуса HotStuff.

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

2. Логическая модель данных

С точки зрения структуры данных, Libra больше похожа на Ethereum или Ripple, чем на Bitcoin. У UTXO-модели есть свои преимущества и недостатки – такие как лучшая конфиденциальность и более надёжная история транзакций (благодаря простоте истории, основанной на выходах транзакций) – но работать со сложными смарт-контрактами в рамках такой модели может оказаться сложнее. Следовательно, основанная на счетах модель имеет смысл, потому что Facebook едва ли будет беспокоиться о конфиденциальности пользователей, притом что платформа как будто заинтересована в поддержке смарт-контрактов.

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

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

Что ж, теперь мы знаем, как система защищена от атак истощения ресурсов – предположительно, за счёт использования системы стоимости этих ресурсов, подобной той, что применяется в Ethereum.

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

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

Как в действительности будет работать «блокчейн» Libra?

Транзакции объединяются в блоки с целью их упорядочения и присвоения временных меток. Это очень важно для открытых сетей, в которых данные аутентифицируются групповыми подписями с динамическим количеством участников группы (dynamic multiparty membership signatures, DMMS). Поскольку Libra будет закрытой системой, в ней можно использовать более эффективный алгоритм консенсуса, который не нуждается в объединении транзакций в блоки в виду намного меньшей вероятности переписывания истории транзакций.

Это очень напоминает уже упоминавшиеся ранее планы об «открытом членстве валидаторов». Похоже, что Facebook пока ещё не решил ни одной из серьёзнейших проблем, над которыми Ethereum бьётся последние годы.

Монеты Libra являются собственными рыночными единицами протокола так же, как ETH представляют собой нативные рыночные единицы протокола Ethereum. Это подводит нас к ещё одному вопросу о псевдонимной природе Libra: могут ли пользователи приобретать эти койны без обязательной идентификации через процедуры AML/KYC? Если нет, то, похоже, ни одной из функций системы нельзя будет воспользоваться анонимно. Из доступных материалов о кошельке Calibra ясно, что он будет требовать от пользователей прохождения процедур AML/KYC. Так что у меня возникают сомнения в том, что Libra в конечном итоге перерастёт в не контролируемую жёстким и централизованным образом систему.

Это звучит крайне расплывчато и вызывает множество вопросов: Что значит низкие комиссии? Что такое нормальное функционирование? Какая вычислительная мощность считается достаточной?

3. Выполнение транзакций

Это звучит довольно опасно, но авторы документа отмечают, что основные компоненты должны быть написаны с учётом возможных DoS-атак и предотвращать их проведение.

Это проливает чуть больше света на то, являются ли монеты Libra нативным активом для сети, как ETH или BTC. Я ожидаю, что эти монеты будут просто типом ресурсов по умолчанию либо единственным допустимым в системе сразу после запуска, а поддержка других типов ресурсов будет введена позже.

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

4. Структуры и хранение проверенных данных

И снова мы видим, что «блокчейн Libra» на самом деле блокчейном не является. Действительно странно, что при всей кажущейся проработанности этого протокола, они всё же продолжают называть его блокчейном, притом что структура данных в истории реестра представляет собой набор подписанных состояний реестра. Валидаторы берут на себя обязательства за каждое состояние реестра и все исторические состояния реестра также привязаны к деревьям Меркла, но я пока не увидел, чтобы какие-либо листы данных с обратной связью формировали цепочку, не говоря уже о цепочке блоков.

Хммм. Если нет ограничений на количество данных, хранимых одним счётом, то это звучит как открытость к DoS-атакам.

Ещё одна нерешённая проблема. Можно ожидать волну мемов по поводу «слишком высокой ренты».

Ой. Не очень понятна продолжительность этого «периода», но если эпоха длится меньше дня, то, надо полагать, что и указанный «период» – тоже. Похоже, что этот протокол консенсуса не настолько прочен, чтобы участники могли выходить из сети и снова к ней присоединяться по своему усмотрению.

5. Устойчивый к византийской ошибке консенсус

Как и PBFT, этот алгоритм консенсуса может выдержать до 33% недобросовестных валидаторов. Модификации HotStuff звучат разумно:

  1. Сопротивление недетерменизму за счёт подписания валидаторами состояния блока, а не просто последовательности транзакций.
  2. Лидер, задающий явные тайм-ауты, и валидаторы полагаются на кворум тех, кто перейдёт в следующий раунд – это должно повысить живость (liveness).
  3. Непредсказуемый механизм выбора лидера для ограничения DoS-атак на него.
  4. Агрегированные подписи сохраняют валидаторов идентичности, которые подписывают сертификаты кворума для голосования за принятие блока.

6. Сетевое взаимодействие

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

7. Имплементация Libra Core

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

8. Производительность

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

Минимальные требования к узлам:

  • скорость интернет-соединения 40 Мбит/с
  • 1 серийно выпускаемый CPU
  • 16 ТБ SSD

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

9. Реализация политик экосистемы Libra с Move

Хорошо, но теперь мы говорим о событиях, которые являются внешними по отношению к сети. Как указывалось в whitepaper до того, сеть не может выполнять скрипты, использующие входы данных, которые являются внешними по отношению к состоянию сети. Таким образом, модификаторы «может» и «должен» в приведённом выше фрагменте, безусловно, относятся к политикам Libra Association либо договорным обязательствам, о которых сеть не знает.

Предположим, что валидаторы проголосуют за изменения в составе валидаторов. Похоже, что это должно привести к проблеме, аналогичной той, что мы видим в proof-of-stake-системах, – атакам дальнего действия (long range attack). Скомпрометировав достаточное количество секретных ключей учредителей, сможет ли злоумышленник написать новую историю реестра с нуля? И если да, то примут ли её другие узлы? Неясно, позволяет ли протокол консенсуса переписывать старые состояния или только создавать новые.

Если им удастся решить нерешённые пока проблемы.

Вопросы без ответов

Как осуществляется управление?

Мы можем видеть, что Libra Association представляет собой совет из участников и для внесения изменений требуется согласие 2/3 его участников. Они единственные, кто может выпускать или уничтожать монеты Libra, но, обладая достаточным большинством, они, предположительно, могут и произвести любые другие изменения по своему усмотрению.

Требуется ли прохождение процедур AML/KYC?

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

Что значит низкие комиссии? Что такое нормальное функционирование? Какая вычислительная мощность считается достаточной?

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

Будет ли Libra действительно открыта для разработчиков?

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

Добавить комментарий