Крадущийся тигр: о возможностях платформы Exonum от Bitfury

Платформа корпоративных блокчейнов Exonum закрепляется на российском рынке. Крупнейшая за пределами Китая майнинговая компания Bitfury Group открывает представительство в Москве. Главной задачей нового офиса станет развитие и продвижение Exonum — открытой программной платформы для создания блокчейнов. Как работает новая платформа, и какие преимущества она имеет перед другими, корреспонденту bits.media рассказал Rust разработчик в Exonum (проект Bitfury Group) Алексей Сидоров.

Bits.media: Алексей, расскажите, что собой представляет платформа Exonum?

Алексей Сидоров: Платформа Exonum — это фреймворк с открытым исходным кодом. Он представляет собой каркас, на основе которого разработчики строят свой блокчейн.

Exonum имеет ряд особенностей, которые отличают этот фреймворк от других блокчейн-платформ.

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

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

Кроме того, Exonum имеет несколько архитектурных особенностей. В первую очередь — это наличие «византийского консенсуса». То есть система продолжает корректно работать, даже если до трети узлов-валидаторов скомпрометированы или ведут себя произвольным образом. Вторая особенность – наличие процедуры “Биткоина анкоринг”. Она регулярно отправляет слепки состояния системы, то есть ее хэшей, в публичный блокчейн Биткоина, а также исключает возможность подделки данных приватного блокчейна Exonum и отката системы путем сговора узлов.

Третьей ключевой особенностью Exonum является тонкий клиент (Light Client), с помощью которого на стороне конечного пользователя легко проверить наличие и корректность данных пользователя, которые он направил в Exonum, а также статус анкоринга.

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

Bits.media: В чем заключаются преимущества платформы перед аналогами?

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

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

Bits.media: Как в инфраструктуре Exonum применён блокчейн?

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

В основе технологии лежит алгоритм византийского консенсуса. Этот алгоритм обоснован математически и не требует экономических гарантий корректной работы участников сети, например, вознаграждений в виде токенов, как в случае proof-of-work или proof-of-stake алгоритмов и их альтернатив.

Чтобы нарушить работу сети, основанной на византийском консенсусе, злоумышленнику необходимо взломать более трети узлов системы, а чтобы получить контроль над сетью, ему необходимо взломать даже более ⅔ узлов сети. Иными словами система способна корректно генерировать и принимать блоки до тех пор, пока количество скомпрометированных узлов в сети не превысит ⅓ их общего количества.

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

Bits.media: За счёт чего достигается высокий уровень безопасности?

Алексей Сидоров: Высокая безопасность обеспечивается привязкой Exonum к публичному блокчейну Биткоина. Отличие публичного блокчейна от приватного заключается в том, что количество участников последнего не ограничено: кто угодно может присоединиться к сети и получить доступ к данным ее базы. Это гарантирует неподдельность данных, которые в ней содержатся, а также возможность их аудита в любой момент. Для взлома подобной сети потребуются невероятные энергетические и финансовые ресурсы.

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

Данный сервис по сути в вопросе безопасности приравнивает приватный блокчейн Exonum к публичному.

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

Bits.media: Что является гарантом безопасности платформы?

Алексей Сидоров: Безопасность данных гарантирует алгоритм византийского консенсуса. На каждой высоте блокчейна “Н” процедура достижения консенсуса может происходить в течение нескольких раундов. При этом цикл алгоритма консенсуса по принятию нового блока в блокчейн, условно говоря, имеет два этапа. На первом этапе в каждом раунде выбирается узел-лидер (существует отдельный алгоритм по выбору узла-лидера). Лидер делает предложение блока (proposal) и рассылает его всем узлам в сети. Валидаторы голосуют за proposal, рассылая сообщения типа prevote. Это означает, что валидатор изучил все транзакции внутри предложения и среди них нет ни одной ему неизвестной. На втором этапе, после того как валидатор собрал более ⅔ сообщений типа prevote от других валидаторов, он выполняет транзакции, указанные в предложении, и рассылает всем сообщение типа precommit. Сообщение содержит результат выполнения предложенных транзакций в виде нового хэша состояния сети (state hash). Данное сообщение является подтверждением того, что его отправитель готов принять предложенный блок в блокчейн, но должен получить согласие от большинства других валидаторов в сети. Наконец, если валидатору удается собрать более ⅔ сообщений типа precommit, содержащих одинаковый state hash по результатам одного и того же предложения, данный новый блок добавляется в блокчейн.

Bits.media: Как реализуется регистрация транзакций с технической точки зрения?

Алексей Сидоров: Новые транзакции попадают в так называемый пул неподтвержденных транзакций (memory pool), при этом пользователь получает хэш содержимого этой транзакции. Как только транзакция попадает в очередной новый блок, ее хэш сохраняется в базе. В дальнейшем транзакцию с идентичным хэшем невозможно будет провести повторно. Такой подход гарантирует, что если, к примеру, транзакция на перевод средств будет перехвачена злоумышленником, он не сможет выполнить ее снова и снова для полного списания монет с кошелька отправителя.

Bits.media: Платформа Exonum написана на Rust. Чем обусловлен выбор языка программирования?

Алексей Сидоров: Во-первых, Rust — один из самых безопасных языков программирования. При этом Rust во многих вопросах более универсальный инструмент, чем Java, C и C++.

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

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

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

Bits.media: Каким образом платформа работает с умными контрактами?

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

Bits.media: Где уже используется Exonum?

Алексей Сидоров: Одним из самых известных проектов на Exonum является пилотный проект по внедрению блокчейна в земельный реестр в Грузии, а именно создание системы регистрации прав собственности для граждан Грузии на блокчейне. Проект стартовал в 2016 году.

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

Недавно появился еще один пилотный проект с Росреестром. Первым шагом стал перевод процесса регистрации договоров долевого строительства на блокчейн. Договор регистрируется только после подтверждения перевода страхового взноса в Фонд защиты прав участников долевого строительства. Блокчейн применяется при взаимодействии Росреестра с данным Фондом, оптимизируя время получения подтверждения до 3-5 минут, что в 10 раз быстрее обычной операции.

Интересен также кейс использования платформы Exonum для Aricent — глобальной инженерно-исследовательской и проектной компании. Для них была создана серия пилотных проектов для повышения эффективности процесса разработки программного обеспечения (DevOps). По данным внутренних исследований самих Aricent внедрение блокчейна в отслеживание DevOps процессов привело к ускорению цикла разработки продуктов на 34%.

Bits.media: Как вы планируете развивать платформу дальше?

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

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

Мы активно изучаем WebAssembly с нашими коллегами из Parity Technologies. Имея в руках легковесную виртуальную машину WASM, мы сможем разрешить разработчикам реализовывать сервисы на многих языках программирования. Это будет также полезным для тех проектов, которые захотят использовать Exonum в формате «public-permission»: создавать блоки могут только валидаторы, но пользоваться блокчейном может кто угодно.

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