Мотивы

В 2015 году мы запустили проект Cardano, чтобы попытаться изменить то, как разрабатываются и проектируются криптовалюты. Цель, которая объединяет конкретные инновации — сконструировать устойчивую сбалансированную экосистему, которая лучше отвечает нуждам своих пользователей и лучше подходит для интеграции с другими системами, чем существующие.

Как часто бывает в случае проектов с открытым исходным кодом, у Cardano изначально не было ни четкого плана развития, ни даже солидного технического описания. У нас был просто набор принципов проектирования, передовых практик разработки и направлений исследования. Например:

  • Разделить бухгалтерию и компьютерные расчеты (это должны быть отдельные уровни).

  • Реализовать ключевые компоненты с использованием модульного функционального кода.

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

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

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

  • Встроить возможность вносить изменения в уже запущенные системы без разрушения существующей сети.

  • Разработать механизм децентрализованного финансирования для дальнейшей работы.

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

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

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

  • Добавить возможность включать в транзакции метаданные для лучшего соответствия нуждам существующих систем.

  • Аккумулировать опыт около 1000 существующих альтернативных валют и заимствовать удачные решения.

  • Использовать стандартоориентированный процесс по примеру IETF (Internet Engineering Task Force, рус. Инженерный совет Интернета) для утверждения окончательного вида протокола.

  • Исследовать социальные аспекты коммерческой деятельности.

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

Вооружившись этим размытым списком идей, основатели Cardano начали изучение литературы по криптовалютам и разработку нужных абстракций. Результатом этих исследований стали: обширная библиотека статей IOHK, многочисленные результаты опросов — например, обзор скриптовых языков или Ontology of Smart Contracts (рус. Онтология умных контрактов), а также проект Scorex. Индустрия криптовалют переживает необыкновенно бурное развитие, и в некоторых случаях оно не идет ей на пользу.

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

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

Во-вторых, современные исследования в области криптовалют редко опираются на предыдущие находки в области криптографии. Например, в защите Bitshares по методу proof of stake можно было бы сделать простую и надежную генерацию случайных чисел с использованием техники подбрасывания монеты с гарантированной производительностью, которая была известна еще с восьмидесятых (см. оригинальную статью авторов Rabin и Ben-Or).

В-третьих, большинство альтернативных валют (за некоторыми исключениями вроде Tezos) не учли необходимость вносить изменения в будущем. Возможность успешно провести софтфорк или хардфорк (“мягкую” или “жесткую” модификацию протокола) — залог долгосрочного успеха любой криптовалюты.

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

Наконец, деньги — это исключительно общественное явление. Пытаясь обеспечить анонимность и уменьшить количество посредников, Bitcoin и его современники решили не обращать внимания на то, какое значение имеют идентификация личности, передача метаданных и репутация в коммерческих транзакциях. Добавление метаданных посредством централизованных решений исключает прозрачный аудит, доступность по всему миру и неизменяемость, а именно из-за этих качеств и стоит использовать блокчейны (распределенные базы данных).

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

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

Вкратце о концепции

Мы исследовали область криптовалют, ища возможности реализовать эти принципы, и результатом стали два набора протоколов. Это криптовалюта, использующая защиту proof of stake 1][2] с математически доказанной эффективностью, которую мы назвали Cardano Settlement Layer или CSL (рус. “Уровень заключения сделок”), а также набор протоколов Cardano Computation Layer или CCL (рус. “Вычислительный уровень”).

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

Защита по методу proof of stake

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

Наш протокол, основанный на методе proof of stake, называется Ouroboros (рус. “Уроборос”). Его разработала команда талантливых криптографов из пяти научных учреждений2, которую возглавляет профессор Aggelos Kiayias из Эдинбургского университета. Кроме того, что безопасность протокола математически доказана с использованием точной криптографической модели, новизна протокола состоит в его гибкой модульной реализации. Таким образом можно создавать множество протоколов в зависимости от того, какая нужна функциональность.

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

Социальные аспекты денег

Криптовалюты хорошо иллюстрируют социальные аспекты денег. Если говорить только о технической стороне криптовалют, то различий между Bitcoin и Litecoin не так уж много. Еще меньше их между Ethereum и Ethereum Classic. Но и Litecoin, и Ethereum Classic — проекты с большой рыночной капитализацией, динамичным сообществом, а также собственными социальными обязательствами.

Можно сказать, что огромная часть ценности криптовалюты — это ее сообщество, то, как оно использует криптовалюту, и уровень вовлеченности сообщества в развитие валюты. Продолжая эту мысль, валюты вроде Dash встроили прямо в протокол системы, которые позволяют сообществу решать, что именно разрабатывать и спонсировать.

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

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

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

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

Любой пользователь должен иметь право запросить средства из фонда, используя специальную систему, а стейкхолдеры CSL проголосуют за то, кто именно их получит. Этот процесс обеспечивает полезную обратную связь, как в других криптовалютах с системами инвестиций/фондов, например, Dash. Таким образом начинается диалог о том, кого именно следует спонсировать.

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

Во-вторых, мы надеемся, что в Cardano со временем появится формальная система на основе блокчейна, чтобы предлагать изменения и голосовать по поводу софтфорков и хардфорков. Bitcoin и обсуждения размера блоков, Ethereum и хардфорк DAO — многие криптовалюты в свое время вели или все еще ведут долгие споры о техническом и моральном направлении развития кода.

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

Что нужно сделать, чтобы убедить пользователей Bitcoin принять софтфорк Segregated Witness? Как главным разработчикам Ethereum понять, насколько сообщество настроено спасать организацию DAO? Если в сообществе происходит раскол — криптовалюта уже не подлежит восстановлению?

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

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

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

Проектирование по уровням. Cardano Settlement Layer (Уровень заключения сделок)

Если вы хотите спроектировать по-настоящему хороший протокол или язык программирования, смотреть нужно не в будущее, а в прошлое. История знает множество идей, которые прекрасно выглядели на бумаге, но почему-то не прижились — примером тому стандарт Open Systems Interconnection. Истории также известны счастливые случайности — от TCP/IP до JavaScript.

Вот некоторые принципы, которым учит нас история:

  1. Будущее предсказать невозможно, поэтому всегда оставляйте место для маневра

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

  3. У семи нянек дитя без глазу

  4. Стандарт, принятый первым, скорее всего приживется — даже если он не самый оптимальный

  5. Из плохой идеи на самом деле можно сделать хорошую — было бы желание

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

Но на выручку не придет этакий цифровой децентрализованный Робин Гуд, который отберет у богатых узлов и воздаст бедным, чтобы в нашей сети все получилось по справедливости. И не стоит полагаться на человеческое милосердие — люди не будут альтруистически жертвовать своими интересами во имя процветания сети. Итак, Cardano берет у TCP/IP концепцию “разделения обязанностей”.

Блокчейны — это прежде всего базы данных, которые упорядочивают факты и события, гарантируя их неизменяемость и верные временные отметки. Если говорить о финансовой стороне, блокчейны упорядочивают данные о принадлежности активов. Добавление возможности сложных вычислений путем хранения и запуска программ — это совершенно другая задача. Итак, мы хотим просто узнать, сколько денег Алиса передает Бобу, или же нам нужно узнать всю полную историю транзакции и сколько стоимости пересылается в итоге?

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

Придется принимать сложные решения о том, какие именно метаданные следует хранить для каждой транзакции. Какие элементы полной истории, стоящей за транзакцией от Алисы к Бобу, для нас важны? Будут ли они оставаться важными всегда? Когда можно будет удалить некоторые данные? Не нарушит ли удаление этих данных законы некоторых стран?

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

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

Реестр стоимостей называется Cardano Settlement Layer (CSL). Поскольку его задача — перемещение стоимости, в плане развития указаны следующие цели:

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

  2. Поддержка протокола KMZ sidechains5 для связи с другими реестрами

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

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

  5. Возможность масштабирования — чем больше присоединяется пользователей, тем больше ресурсов у системы

Скрипты

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

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

Учитывая все это, мы решили спроектировать новый язык Simon6, названный в честь его автора Саймона Томпсона (Simon Thompson) и автора концепции, лежащей в его основе — Саймона Пейтона Джонса (Simon Peyton Jones). Simon — специфичный для области (domain-specific) язык, основанный на статье Composing contracts: an adventure in financial engineering.

Ключевая идея — финансовые транзакции состоят из набора основных элементов7. Если собрать финансовую “таблицу элементов”, то можно будет поддерживать сколь угодно большой набор сложных транзакций. В этот набор войдет большинство распространенных типов транзакций (или даже все распространенные транзакции), и для этого не понадобится универсальная программируемость.

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

И все-таки всегда будет необходимость соединять CSL с оверлейными протоколами, старыми финансовыми системами и специализированными серверами. Поэтому мы разработали Plutus — одновременно в качестве и универсального языка программирования для умных контрактов, и специализированного языка для совместимости с другими системами.

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

Сайдчейны

Для работы с сайдчейнами Cardano будет поддерживать новый протокол авторов Kiayias, Miller и Zindros (KMZ sidechains). Протокол основан на предыдущих результатах доказательств proof of work. Описание устройства протокола выходит за пределы этой статьи; скажем лишь, что его концепция позволяет переместить средства из CSL в любой другой блокчейн, поддерживающий этот протокол — например, Cardano Computation Layer.

Протокол KMZ sidechains заключит сложность в системе внутри себя. Реестры с регулятивными требованиями, конфиденциальные операции, различные скриптовые языки и другие особые случаи остаются для CSL “черными ящиками”, но пользователь CSL получает определенные бухгалтерские гарантии и возможность отозвать транзакцию после того, как расчеты окончены.

Подписи

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

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

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

Существует две группы проблем, которые приходится решать, выбирая схему подписей. Во-первых, схема должна быть безопасной даже спустя долгое время. Некоторые криптографические схемы, использовавшиеся в 1970 и 1980 гг — к примеру, DES — на сегодняшний день уже взломаны. Следует решить, какое время схема должна гарантированно оставаться рабочей.

Во-вторых, существует много предприятий, правительств и других учреждений, которые предпочитают или даже предписывают использовать определенную схему. Например, Агенство национальной безопасности США использует набор протоколов NSA Suite B Cryptography. Есть стандарты ISO и даже рабочие группы W3C по криптографии.

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

Для Cardano мы решили начать с использования криптографии на основе эллиптических кривых — в частности, кривой Ed25519. Также мы решили улучшить уже существующие библиотеки, добавив поддержку технологии HD wallets на основе спецификации Дмитрия Ховратовича и Джейсона Лоу (Jason Law)8.

В будущем Cardano станет поддерживать и другие криптографические схемы. В частности, мы хотим интегрировать BLISS-B, чтобы добавить в нашу систему возможность использовать квантово-устойчивые подписи. Кроме того, мы хотели бы добавить SECP256k1, чтобы улучшить взаимодействие с существующими криптовалютами, например, Bitcoin.

При разработке в Cardano были добавлены специальные расширения, которые позволят добавлять схемы подписей через софтфорк. Мы будем добавлять их по необходимости во время крупных обновлений, указанных в плане развития9.

Выпускаемые пользователем активы (User Issued Assets)

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

В случае других криптовалют, основанных на Bitcoin, например, Colored Coins и Mastercoin (нынешнее название — Omni), облегченным клиентам приходится полагаться на доверенные сервера. Кроме того, комиссия за транзакции все равно выплачивается в биткоинах. Эти факты, а также наличие только одного канала для обработки всех транзакций делают Bitcoin неоптимальным для учета нескольких разных активов.

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

Эта фундаментальная проблема состоит из трех частей: ресурсы, премиальные схемы и согласие. Говоря о ресурсах — если в один и тот же реестр мы добавляем другую криптовалюту, это значит, что теперь в реестре сосуществуют два независимых набора UTXO (unspent transaction inputs, “неистраченные входы транзакций”), которые делят между собой пропускную способность канала, мемпул и место в блоке. Узлам консенсуса, ответственным за обработку транзакций в этих валютах, нужна мотивация для того, чтобы это делать. И не каждый пользователь криптовалюты будет — или должен — заботиться о какой-то другой валюте.

Таким образом, есть огромное преимущество в том, что основной токен реестра с несколькими активами может служить “связующей валютой” для формирования децентрализованного рынка. Cпециализированные активы можно издавать для дополнительных целей, например, активы с фиксированной стоимостью вроде Tether или MakerDAO, которые используются для кредитования и денежных переводов.

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

  1. Специальные аутенцифированные структуры данных, позволяющие отслеживать состояние огромного количества UTXO

  2. Возможность сделать распределенный мемпул, способный хранить огромную очередь транзакций

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

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

  5. Механизм подписки, позволяющий пользователям решать, какие валюты они хотят отслеживать

  6. Гарантия того, что пользовательские активы получают такую же безопасность, как и основной актив

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

Наши ранние попытки найти подходящую аутентифицированную структуру данных закончились созданием нового типа AVL+ дерева, совместно разработанного Leo Reyzin, IOHK и Waves. Необходимы дальнейшие исследования, но это фундаментальное улучшение уже будет включено в одну из следующих версий Cardano.

Распределенный мемпул можно реализовать, используя протокол RAMCloud Стэнфордского университета. В третьем квартале 2017 года мы начнем исследовать возможность интегрировать его с уровнем заключения сделок Cardano.

Остальные темы связаны между собой, и по ним уже ведутся исследования. По результатам этих исследований мы надеемся включить протокол для UIA в Cardano во время релиза CSL Basho в 2018 году.

Масштабируемость

Распределенные системы состоят из набора компьютеров (сетевых узлов), которые выполняют протокол или пакет протоколов, преследуя общую цель. Этой целью может быть распространение файла, как в протоколе BitTorrent, или фолдинг белка, как в протоколе [email protected]

В случае самых эффективных протоколов ресурсов становится больше, когда в сети появляются новые узлы. Например, средняя скорость скачивания файла с BitTorrent будет в среднем намного выше, если его качают одновременно много пиров. Скорость увеличивается, потому что пиры не только потребляют, но и предоставляют ресурсы. Именно эту характеристику имеют в виду, когда говорят, что распределенная система является масштабируемой.

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

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

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

В масштабировании Cardano очень поможет наш алгоритм консенсуса. Ouroboros позволяет децентрализованно выбрать кворум узлов консенсуса, а эти узлы запускают более привычные протоколы, разработанные за последние 20 лет для компаний с огромной инфраструктурой, например, Google или Facebook10.

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

Такую же технику можно применять для расширения сети и сегментирования блокчейна. Мы запланировали применение методов масштабирования к алгоритму Ouroboros на 2018 год и продолжим работу над этой проблемой в 2019 и 2020.

Cardano Computation Layer (Вычислительный уровень)

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

При моделировании причин и условий, сопутствующих передаче стоимости, главная сложность заключается в том, что все они зависят от конкретных участников транзакции — и порой самым неожиданным образом. Область контрактного права рисует нам еще более нерадостную картину: действующие лица иногда и сами не в курсе, что транзакция не соответствует происходящему на рынке. Обычно мы называем это явление “семантический разрыв”11.

Зачем разрабатывать криптовалюту с бесконечными уровнями сложности и абстракции? Это по сути сизифов труд — и на практике такая задумка очень наивна. Кроме того, любая абстракция имеет последствия — как с точки зрения закона, так и с точки зрения безопасности.

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

Судебный процесс над операторами Tor, жестокое обращение с оператором Silk Road и отсутствие ясности в законах насчет защиты участников протокола — все довольно туманно. Несложно представить, чему еще может поспособствовать достаточно развитая криптовалюта (см. Ring of Gyges). Разумно ли принуждать всех пользователей криптовалюты одобрять — или хотя бы делать возможным — все самое худшее, что может водиться в Сети?

К сожалению, на этот вопрос нет четких ответов, которые бы помогли создателям криптовалюты. Здесь нужно выбрать позицию и ее придерживаться. И у Cardano, и у Bitcoin есть общее преимущество, которое состоит в том, что в них проблемы разделяются по уровням. У Bitcoin есть Rootstock. У Cardano — Cardano Computation Layer.

Такое сложное поведение, которое обеспечивает описанные выше виды деятельности, не может выполняться на CSL. Для этого нужна возможность запускать программы, написанные на Тьюринг-полном языке, а также какая-то форма газовой экономики для оплаты расчетов. Кроме того, узлы консенсуса должны иметь мотивацию включать эти транзакции в свои блоки.

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

Если кому-то понадобится расширить функциональность — есть два варианта. Первый — функциональность расширяется усилиями группы единомышленников и по природе своей временна (например, партия в покер). Второй — функциональность расширяется за счет реестра с возможностями, сравнимыми с Ethereum. В обоих случаях события отдаются на обработку другому протоколу.

В случае частного, временного события разумно отойти от парадигмы блокчейна и ограничить усилия созданием библиотеки MPC-протоколов (протоколов конфиденциального вычисления), которые при желании может воспользоваться группа единомышленников. Расчеты и другая деятельность координируются частной сетью, а CSL используют только в качестве безопасной “доски объявлений” и — если это понадобится — канала передачи сообщений.

Ключевое новшество здесь — согласие: концепция, объединяющая обязательства и конфиденциальность. CSL используется в качестве электронной площадки для сбора и общения пользователей — как парк может быть местом для проведения какого-либо частного события, но не участвовать в его организации. Использование специальных MPC-протоколов позволяет взаимодействие с низкой задержкой без накладных расходов, которые бы повлекло применение блокчейна. Это помогает масштабированию всей системы.

Исследования Cardano по этой библиотеке проводятся в нашей лаборатории в Токийском техническом институте при помощи иностранных ученых. Мы назвали библиотеку Tartaglia в честь одного математика, современника Cardano, и предполагаем, что первая ее итерация будет доступна в первом квартале 2018 года.

Во втором случае нужен блокчейн с виртуальной машиной, набор узлов консенсуса и механизм, обеспечивающий коммуникацию между двумя блокчейнами. Мы начали процесс строгой формализации Ethereum Virtual Machine с использованием K-framework12 в сотрудничестве с командой из Иллинойского университета.

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

Остаются нерешенными вопросы про газовую экономику, предложенную Ethereum, и ее связь как с учитывающим ресурсы ML (Jan Hoffmann и др.), так и в целом с исследованиями про оценку ресурсов, расходуемых при вычислениях. Нам также интересно, насколько виртуальная машина должна зависеть от используемого языка. Например, проект Ethereum выразил желание перейти с их нынешней виртуальной машины на WebAssembly.

Следующим шагом станет разработка подходящего языка программирования для контрактов с отслеживанием состояния (stateful contracts), которые децентрализованные приложения смогут вызывать как службы. Для этой цели мы, во-первых, будем поддерживать традиционный язык для умных контрактов Solidity для приложений с низким уровнем гарантий, а во-вторых — разработаем новый язык под названием Plutus для приложений с более высоким уровнем гарантий, которым нужна формальная верификация.

Как и в случае с Zeppelin project, который основан на Solidity, IOHK разработает свою библиотеку кода на Plutus, чтобы разработчики приложений использовали ее в своих проектах. Мы также создадим специальный набор инструментов для формальной верификации, на идею которого нас натолкнула работа из проекта Liquid Haskell Калифорнийского университета в Сан-Диего.

Если говорить о консенсусе, Ouroboros достаточно модульный, чтобы поддерживать выполнение умных контрактов. Таким образом, в основе CSL и CCL лежит один и тот же алгоритм консенсуса. Дело в том, что Ouroboros может использоваться как в контролируемых, так и неконтролируемых реестрах — зависит от распределения токенов.

В случае CSL сгенерированные токены Ada были распределены между покупателями в Азии. Они будут постепенно перепродавать токены на вторичном рынке. Это значит, что алгоритм консенсуса CSL контролируется разнообразным и со временем все более децентрализованным набором участников или их делегатов. При помощи CCL можно создать специализированный токен, принадлежащий делегатам конкретного реестра — это могут быть регулируемые организации. Таким образом получается контролируемый реестр.

Гибкость подобного подхода позволяет настраивать CCL для каждого конкретного случая с разными правилами выполнения транзакций. Например, можно ограничить деятельность, связанную с азартными играми, если для транзакции отсутствуют данные KYC/AML — просто внести в черный список транзакции без соответствующих аттрибутов.

И, наконец, еще один штрих нашего проекта — добавить в наш стек протоколов аппаратные модули безопасности (HSM, hardware security module). Добавление этих возможностей в протокол дает нам два огромных преимущества. Во-первых, использование HSM увеличивает производительность14, сохраняя требуемый уровень безопасности (приходится доверять только производителю модуля). Во-вторых, используя технологию Sealed Glass Proofs (SGP), HSM позволяют верифицировать данные и затем уничтожить их, гарантируя, что данные не будут копироваться и не смогут попасть в руки злоумышленникам.

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

Возможность выбрать доверенных аттестаторов и поместить персональные данные в защищенный аппаратный модуль значит, что любой человек с подходящим HSM сможет верифицировать данные других пользователей, и результат проверки нельзя будет подделать — но при этом он не сможет узнать личность этих пользователей. Например, Боб не является резидентом США. Алиса — аккредитованный инвестор. Джеймс является налогоплательщиком в США и должен посылать облагаемую налогом прибыль на счет Х.

Стратегия Cardano в отношении HSM состоит в том, чтобы за следующие два года внедрить специализированные протоколы, используя Intel SGX и ARM Trustzone. Оба этих модуля встроены в миллиарды бытовых устройств, от ноутбуков до мобильных телефонов, и не требуют от пользователя никаких дополнительных усилий для работы. Кроме того, они подвергались различным испытаниям, отлично спроектированы и являются результатом многих лет работы самых лучших команд, занимающихся аппаратной защитой.

Регулирование

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

Например, за Банковской паникой 1907 года последовало учреждение Федеральной резервной системы в 1913 году как кредитора-спасителя. Другой пример — события в двадцатых годах в США, которые привели к ужасному финансовому кризису, Великой депрессии. Этот кризис подтолкнул США к созданию Комиссии по ценным бумагам и биржам в 1934 году, которая была призвана предотвращать подобные события в будущем или хотя бы привлекать виновников к ответственности.

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

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

Во-вторых, технологии сохранения конфиденциальной информации постоянно улучшаются, что приводит к цифровой “гонке вооружений”. Все сложнее и сложнее будет понять, кто принял участие в транзакции, не говоря уже о том, кто владеет определенным количеством стоимости. Как организовать эффективное регулирование в мире, где активы на сумму в миллионы долларов можно контролировать всего лишь секретным ключом-мнемоникой из 12 слов15?

Как и в любой финансовой системе, в протоколе Cardano должна быть заложена идея о том, что такое “честно” и “разумно”. Мы решили разделять права физических лиц и права рынка.

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

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

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

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

Основная сложность всегда заключалась в стоимости и практичности претворения в жизнь требований закона. Мелкие межъюрисдикционные транзакции в традиционных финансовых системах слишком дорого отменять в случаях, если произошло мошенничество или торговый спор. Если кто-то пошлет деньги нигерийскому принцу17, то возвращать их назад обычно слишком дорого.

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

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

И наконец, в плане развития Cardano есть создание инструмента для модульного регулирования — DAO, децентрализованной автономной организации. DAO можно настроить для работы с умными контрактами, созданными пользователем, что добавит системе гибкости, защитит потребителей и облегчит арбитраж. Мы очертим объем и содержание этого проекта в статье, которую выпустим позднее.

Зачем это нужно?

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

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

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

Скорее стоит искать места, где слишком дорого внедрять существующие банковские системы, где многие живут на несколько долларов в день, не имеют удостоверения личности, и где невозможно взять кредит.

В таких местах возможность объединить платежную систему, права на собственность, удостоверение личности, кредитование и защиту от рисков в одном приложении, которое можно запустить на мобильном телефоне, не просто полезна — она меняет жизни. Мы разрабатываем Cardano, потому что считаем, что можем создать или хотя бы улучшить такую концепцию для развивающихся стран.

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


1: Список можно найти в главе “Регулирование”.

2: Коннектикутский университет, Афинский университет, Эдинбургский университет, Орхусский университет, Токийский технологический институт.

3: Она также известна как “система казначейства” (treasury system).

4: См. Рациональное невежество.

5: Скоро в статье авторства Kiayias, Zindros и Miller.

6: Подробности можно будет найти в готовящейся к выпуску статье. Полная версия языка будет поддерживаться после релиза Shelley CSL, который запланирован на четвертый квартал 2017 года.

7: Проект ACTUS предоставляет подробную информацию.

8: Вот документация по реализации технологии HD Wallets в Cardano. Насколько нам известно, Cardano — первая криптовалюта, поддерживающая технологию Ed25519 HD Wallets.

9: См. cardanoroadmap.com.

10: Есть и другие протоколы, преследующие те же цели, например, Elastico и Bitcoin-NG.

11: Loi Luu с соавторами освещают эту разницу в своей последней статье об умных контрактах, Making Smart Contracts Smarter.

12: K — это универсальный фреймворк для машиноисполняемых семантик, не зависящих от языка программирования. До нашей работы его использовали для моделирования С, Java и JavaScript.

13: Если предположить, что на различных узлах консенсуса запущены разные умные контракты. Также известно под названием “разделение статусов” (state sharding).

14: См. статью http://hackingdistributed.com/2016/12/22/scaling-bitcoin-with-secure-hardware/ (Корнеллский университет)

15: См. BIP39.

16: Иллюстрацией мер против утечки капитала является финансово-расчетная система Хавала).

17: См. Нигерийские письма.