Flow (Flow) - блокчейн для открытых миров

Flow (Flow) - высокоскоростной, децентрализованный и «дружественный» к разработчикам блокчейн, созданный в качестве основы для нового поколения игр и приложений, а также цифровых активов, обеспечивающих их работу. Flow работает на базе уникальной многоролевой архитектуры и обеспечивает масштабирование без применения шардинга, что позволяет значительно увеличить скорость и пропускную способность, сохраняя при этом «дружественную» к разработчикам среду, отвечающую требованиям ACID.

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

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

Зачем строить новый блокчейн?

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

Другими словами, шардинг - хорошее решение для платежей, но не для экосистемы сложных приложений, таких как игры или социальные сети.

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

Чем отличается Flow?

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

Flow имеет конвейерную архитектуру, которая разделяет задачи, обычно выполняемые одним узлом, по пяти различным типам узлов, что значительно сокращает избыточные усилия и повышает эффективность. Для поддержки этого подхода команда Flow разработала новую криптографическую технику под названием Specialized Proofs of Confidential Knowledge (SPoCKs) для решения дилеммы проверяющего.

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

Flow переосмысливает многие другие варианты дизайна, чтобы улучшить удобство использования как для разработчиков, так и для потребителей, включая обновляемые смарт-контракты, удобочитаемую безопасность и многое другое. Протокол защищен с помощью варианта HotStuff, алгоритма консенсуса Proof of Stake, разработанного VMware Research.

Результатом является единое общее состояние для всех смарт-контрактов, гарантирующее, что каждая транзакция имеет полные гарантии ACID (атомарность, согласованность, изоляция, долговечность). Такой подход дает разработчикам возможность безопасно и легко создавать над кодом друг друга, создавая совершенно новые продукты и услуги в ускоряющемся темпе. Это называется компонуемостью . Подобно программному обеспечению с открытым исходным кодом, возможность компоновки позволяет разработчикам быстрее вводить новшества, что в конечном итоге приводит к большему выбору потребителей:

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

Бизнес криптографических приложений

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

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

Стимулы криптовалюты открывают новые бизнес-модели, которые отрасль только начала изучать.

В играх и развлечениях невзаимозаменяемые токены (NFT) являются наиболее интересным строительным блоком на сегодняшний день с точки зрения бизнес-моделей.

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

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

Начиная с CryptoKitties и стандарта ERC-721, разработанного нашим техническим директором Дитером Ширли, миллионы NFT уже были куплены и проданы в небольшом, но активном сообществе децентрализованных приложений, в результате чего объем рынка составил десятки миллионов долларов, в основном на одноранговой сети. одноранговые, децентрализованные сети.

Пока мы говорим, разрабатываются и тестируются новые типы контента и бизнес-модели. Только в пределах небольшой, но могущественной распределенной команды Dapper Labs:

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

Ранее этим летом мы заключили партнерские отношения с Fabricant и Йоханной Ясковской, одним из крупнейших дизайнеров в Instagram, чтобы разработать и продать на аукционе iridescence , первую в мире цифровую одежду в качестве NFT на блокчейне Ethereum. Iridescence продали за 9500 долларов на Ethereal Summit в Нью-Йорке.

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

Будущее открытого исходного кода

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

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

Это понимание лежит в основе того, что заставляет Flow работать.

Flow (Flow) не «ломает» и не опровергает Трилемму, он уклоняется от нее. Хитрость заключается в том, что, если мы позволяем различным узлам участвовать в разных ролях, мы можем выбрать правильные компромиссы для каждой части системы.

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

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

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

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

Проблема шардинга

Большинство предложений ориентиовано на повышение масштабируемости блокчейнов путем их фрагментации на взаимосвязанные сети. Как правило, это шарды, хотя для боковых цепей характерны те же проблемы. Такой подход приводит к потере гарантий сериализуемости («ACID»), распространённых в системах баз данных.

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

В сегментированном блокчейне для осуществления простой операции (например, покупка пользователем шляпы для CryptoKitty с использованием стейблкойнов, таких как TUSD) может потребоваться двенадцать транзакций и семь блоков. В несегментированной среде, отвечающей требованиям ACID, такой как Flow, подобная транзакия, а также многие другие более сложные операции могут обрабатываться в рамках одной атомарной транзакции в одном блоке.

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

Разделение консенсуса и вычислений

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

  1. Недетерминированные (или «субъективные») задачи, такие как определение наличия и порядка выполнения транзакций в блокчейне
  2. Детерминированные (или «объективные») задачи, такие как вычисление результата этих упорядоченных транзакций после того, как он был определен

Для выполнения недетерминированных задач необходим согласованный консенсусный механизм (например, Proof of Work или Proof of Stake). С другой стороны, детерминированные задачи имеют только один объективно верный результат. В основе архитектуры Flow лежит важная идея, суть которой заключается в том, что самым узким местом с точки зрения производительности блокчейна являются детерминированные задачи, связанные с выполнением транзакций после того, как эти транзакции были включены в блок, в отличие от субъективного процесса, где необходим консенсус (то есть, формирование самого блока). Эта идея изложена в нашем первом техническом документе: Разделение консенсуса и вычислений.

Многоролевая архитектура Flow

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

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

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

Ноды консенсуса и верификации отвечают за безопасность сети Flow и с помощью криптоэкономических стимулов контролируют выполнение остальной частью сети своих обязательств. Эти валидаторы могут оптимизироваться с целью обеспечения безопасности и децентрализации сети: функции консенсуса и верификации выстроены таким образом, чтобы обеспечить высокий уровень участия, в том числе и со стороны лиц, использующих оборудование потребительского уровня и домашнее подключение к Интернету. Ноды консенсуса используют вариант протокола HotStuff, одного из самых надежных алгоритмов Proof-of-stake.

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

Специализированные доказательства конфиденциальных сведений (SPoCK)

Специализированные доказательства конфиденциальных сведений (SPoCK) – это новый криптографический метод, разработанный командой Flow и описанный в нашей Технической документации. SPoCK позволяют любому числу пруверов продемонстрировать стороннему наблюдателю то, что каждый из них имеет доступ к одной и той же конфиденциальной информации. При этом такие доказательства не являются интерактивными и не раскрывают самих конфиденциальных сведений. SPoCK каждого прувера уникален и не может быть скопирован или подделан другим прувером.

Удобство для разработчиков

Опираясь на прошлый опыт разработки блокчейн-приложений, включая CryptoKitties и кошелек Dapper Smart Contract, мы внедрили целый ряд улучшений с точки зрения эргономики для разработчиков непосредственно на уровне протокола Flow. Некоторые из таких нововведений описаны ниже.

Cadence

Cadence – первый эргономичный, ресурсо-ориентированный язык программирования смарт-контрактов.

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

В прошлом году команда Flow изучила способы применения линейных типов в контексте блокчейнов после проведения научногоисследования,задача которого состояла в том, чтобы найти более совершенные языки для программирования смарт-контрактов. Примерно в это же время команда Libra определила новую модель программирования для Move, в основе которой лежит новая модель владения в духе линейных типов, – ресурсы. Ресурсы – это новый способ репрезентации права собственности на активы, а также свойств цифровых активов с поддержкой криптовалют непосредственно в языке программирования. Из введения к документу Move:
«Ключевой особенностью Move является возможность определения пользовательских типов ресурсов. Типы ресурсов используются для шифрования безопасных цифровых активов с широкими возможностями программирования».

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

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

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