Обзор проекта FLOW
Краткое описание и история проекта
FLOW – высокоскоростной и децентрализованный блокчейн, основанный для нового поколения игр и приложений, а также цифровых активов, обеспечивающих их работу. Многие называют его Web 3 NFT блокчейн.
Flow работает на базе многоролевой архитектуры, обеспечивающей масштабирование без применения шардинга. Благодаря этому значительно увеличивается скорость и пропускная способность.
Проект запустили в 2020 году, когда создатели популярной NFT игры CryptoKitties – компания Dapper Labs с Рохама Гарегозлу (Roham Gharegozlou), Дитера Ширли (Dieter Shirley) и Кэти Тедман (Caty Tedman @CatyTedman), задумали создать свой собственный блокчейн, полностью разочаровавшись в скорости и масштабируемости сети Ethereum, на котором и была построена игра. Идея была простая – создать быстрый, дешевый и легко масштабируемый блокчейн, ориентированный на игры, музыку, фильмы и другой медийный контент. Им удалось этого достичь благодаря уникальному подходу к построению блокчейна, а именно многоролевой архитектуре.
Очень важно уточнить, что Дитер Ширли является разработчиком NFT стандарта ERC-721, который стал по сути основой всей NFT индустрии в целом.
Показатели проекта
Партнеры проекта
Инвесторы проекта
Архитектура проекта
Архитектура Flow базируется на 4 китах:
- Многоролевая архитектура. Структура, которая дает масштабировать сеть без применения шардинга.
- Ресурсно-ориентированное программирование. Использование простого и безопасного языка программирования – Cadence.
- Эргономика для разработчика. Сеть ориентирована на разработчиков. Она дает им полноценную среду для творчества – обновляемые смарт-контракты, встроенный журнал и собственный эмулятор.
- Доступность для потребителя. Простота в использовании и проведении платежей.
Сеть Flow использует свой собственный конвейерный принцип работы, благодаря которому выполняются функции полной ноды. Работа делится на 4 этапа:
1. Сбор
2. Консенсус
3. Исполнение
4. Верификация
Это распределение задач между нодами является вертикальным (на разных этапах валидации для каждой транзакции), а не горизонтальным (между разными транзакциями).
Простым языком, все полные ноды по-прежнему участвуют в валидации каждой транзакции, однако это происходит только на одном из этапов валидации. Благодаря этому ноды могут специализироваться в выполнении своих конкретных задач, что значительно повышает их эффективность.
Это позволяет Flow достигать многократного повышения пропускной способности, снижая при этом затраты и поддерживая общую среду для всех операций внутри самой сети. С точки зрения баз данных, смарт-контракты и пользовательские аккаунты Flow могут непрерывно взаимодействовать между собой в рамках единой транзакционной системы, отвечающей требованиям атомарности, согласованности, изолированности и стойкости (ACID). Это обеспечивает удобство использования, позволяя разработчикам легко дополнять работу друг друга.
Ключевая идея, которая легла в основу архитектуры Flow – возможность отделить недетерминированные процессы от детерминированных и присвоить каждый из них разным типам нод в зависимости от их технических возможностей, что позволяет значительно увеличить пропускную способность блокчейна и одновременно с этим решить ряд проблем, с которыми обычно сталкиваются пользователи и разработчики в существующих сетях. Разработчики пришли к выводу, что задачи в блокчейне можно разделить на две категории:
- Недетерминированные (субъективные) задачи, такие как определение наличия и порядка выполнения транзакций в блокчейне
- Детерминированные (объективные) задачи, такие как вычисление результата этих упорядоченных транзакций после того, как он был определен
Для выполнения недетерминированных задач необходим согласованный консенсусный механизм, например, Proof of Work или Proof of Stake. С другой стороны, детерминированные задачи имеют только один верный результат. В основе архитектуры Flow лежит важная идея. Суть идеи заключается в том, что самым узким местом с точки зрения производительности блокчейна являются детерминированные задачи, связанные с выполнением транзакций после того, как эти транзакции были включены в блок, в отличие от субъективного процесса, где необходим консенсус (формирование самого блока). Эта идея изложена в техническом документе.
Многоролевая архитектура
В сети Flow работа майнера или валидатора блокчейна разделена на четыре отдельные функции, каждая из которых требует стейкинга – разделения ответственности, позволяющего добиться существенной оптимизации:
- Ноды консенсуса определяют наличие и порядок проведения транзакций в блокчейне
- Ноды верификации отвечают за проверку нод исполнения
- Ноды исполнения выполняют вычисления по каждой транзакции
- Ноды сбора отвечают за улучшение сетевого подключения и доступность данных для децентрализованных приложений
Flow спроектирован таким образом, что даже одна честная нода, выполняющая любую из функций, может наказывать и запускать процесс восстановления на основе недействительных данных, внесенных недобросовестными Нодами сбора или исполнения.
Ноды консенсуса и верификации отвечают за безопасность сети Flow и с помощью криптоэкономических стимулов контролируют выполнение остальной частью сети своих обязательств. Эти валидаторы могут оптимизироваться с целью обеспечения безопасности и децентрализации сети: функции консенсуса и верификации выстроены таким образом, чтобы обеспечить высокий уровень участия, в том числе и со стороны лиц, использующих оборудование потребительского уровня, а также домашнее подключение к Интернету. Ноды консенсуса используют вариант протокола HotStuff – одного из самых надежных алгоритмов Proof-of-stake.
Ноды сбора и исполнения выполняют полностью детерминированные задачи, что делает их менее уязвимыми для атак. Работа этих нод также проверяется, и при этом они подотчетны нодам других типов. Таким образом, функции этих нод могут оптимизироваться, обеспечивая тем самым безопасность и масштабируемость сети. Для работы этих нод требуется выделенное серверное оборудование в специальном дата-центре.
Ресурсно-ориентированное программирование
Командой разработки был внедрен ряд улучшений на уровне протокола Flow. Часть этих нововведений отразилась в языке программирования Cadence.
Cadence – первый эргономичный, ресурсо-ориентированный язык программирования смарт-контрактов.
Существующие среды программирования могут быть использованы для отслеживания права собственности на активы, обычно такие среды программирования используются в сценариях, где они всего лишь отражают право собственности, а не определяют его напрямую. Публичные блокчейны уникальны тем, что предназначены для управления правом собственности на цифровые активы с учетом их дефицита и полного контроля доступа. Цифровые активы в публичных блокчейнах обладают теми же характеристиками, что и физические активы: их нельзя повторить или подделать, их можно только перемещать.
Ранее команда Flow изучила способы применения линейных типов в контексте блокчейнов после проведения научного исследования, задача которого состояла в том, чтобы найти более совершенные языки для программирования смарт-контрактов.
Команда разработчиков была очень сильно впечатлена возможностями ресурсо-ориентированного программирования, что и стало одной из определяющих характеристик Cadence – языка программирования, созданного специально для новой парадигмы приложений с поддержкой криптовалют.
Ресурсно-ориентированное программирование – это новая парадигма, призванная обеспечить безопасность и простоту использования. Теперь разработчики смогут создавать уникальные и надежные цифровые артефакты, право собственности на которые будет отслеживаться самим языком программирования. Это позволит использовать новую категорию мощных приложений.
Cadence – первый высокоуровневый ресурсо-ориентированный язык программирования с удобным и эргономичным синтаксисом, что делает его очень легким для чтения. Он использует эффективную систему статических типов для минимизации ошибок, связанных с временем выполнения, и позволяет всем методам, интерфейсам и транзакциям включать предварительные и последующие условия для обеспечения ожидаемого поведения. Это привело к созданию языка, который является более простым с точки зрения изучении и аудита, а также гораздо более плодотворным по сравнению с любыми существующими альтернативами.
Вдобавок команда Flow открыла доступ к следующим инструментам, которые помогут программистам влиться в Cadence. Это Flow Go SDK (бэкенд инструмент на основе языка программирования Go), Flow JavaScript SDK (инструмент для фронтенд разработки), Visual Studio Code (среда для тестирования смарт контрактов) и Flow Playground GUI (среда разработки в браузере).
Обновляемые смарт-контракты
Одна из главных привилегий платформы для работы со смарт-контрактами заключается в том, что пользователи могут доверять коду смарт-контракта вместо того, чтобы доверять авторам смарт-контрактов.
У многих разработчиков возникает желание исправить или доработать свои смарт-контракты после их развертывания, а некоторым из них приходится потратить немало времени и усилий, чтобы встроить в свои смарт-контракты механизм, обеспечивающий возможность обновления или миграции. Но когда каждый разработчик использует свой собственный механизм обновления, это усложняет задачу и подрывает доверие к таким смарт-контрактам.
В блокчейне Flow команда разработки разрешила смарт-контрактам развертываться в основной сети в «бета-версии», где первоначальные авторы могут периодически обновлять свой код. Пользователи будут предупреждены о незавершенности кода и смогут дождаться его доработки, прежде чем начать доверять ему. После того, как авторы уверены в безопасности своего кода, они могут выпустить контракт, который будет неизменным в течение всего оставшегося времени.
Данная система информирует пользователей о том, с каким кодом они имеют дело, независимо от степени надежности приложения или смарт-контракта. Разработчики при этом могут дорабатывать свой код в течение определенного период после его поставки.
Также стоит отметить встроенную функцию ведения журнала протоколирования работы системы.
Иногда единственный способ убедиться в том, что сложная программа работает должным образом, заключается в детальном протоколировании ее работы в течение продолжительного периода времени. Существующие платформы для работы со смарт-контрактами не предлагают инструменты для ведения журнала по той простой причине, что хранение полного журнала для всего блокчейна является непреодолимой задачей. Слишком много данных.
Flow признает тот факт, что все транзакции смарт-контрактов полностью детерминированы и нет необходимости хранить фактические журналы для каждой отдельной транзакции внутри сети. Вместо этого Flow просто отмечает, какие транзакции могут сгенерировать запись в журнале и по каким темам. Если пользователь захочет «изучить» журналы, он сможет запросить в блокчейне данные по множеству транзакций с пометкой определенной темы, а затем повторно запустить эти транзакции на локальном уровне, чтобы сгенерировать эти журналы для анализа. Данный метод также позволяет значительно повысить эффективность регистрации событий.
Community
Flow поддерживает идею мира открытых экосистем, а также мира, в котором разработчики программного обеспечения, создатели контента и потребители получают стимулы и вознаграждение в соответствии с той ценностью, которую они привносят в сеть.
Комиссия и вознаграждение операторов нод. В блокчейне Flow операторы полных нод, поддерживающие работу сети, получают часть транзакционных сборов, которые проходят через систему, соответственно их доле участия и объему выполненной ими работы. В отличие от майнеров или валидаторов в других блокчейнах, в сети Flow валидатор может начать работу в качестве Ноды консенсуса или верификации, используя при этом относительно недорогое оборудование и обеспечивая возможность широкого и равноправного участия.
Экосистема для разработчиков. Здоровая и динамичная экосистема – главный фактор долгосрочного успеха блокчейна. Одна из ключевых задач заключается в том, чтобы привлечь в Flow широкий круг заинтересованных сторон, включая не только инвесторов, но также и разработчиков и партнеров экосистемы, желающих использовать сеть для создания своих продуктов.
Помимо технического дизайна, оптимизированного для удобства и эффективности разработчиков, команда Flow предпринимает дополнительные шаги по обеспечению здоровой экосистемы.
Развитие экосистемы. Часть токенов Flow направлена на развитие экосистемы, а также на ускорение процесса привлечения и вознаграждение пользователей. Вознаграждение распределяется среди участников посредством различных программ, включая конкурсы, хакатоны и участие в разработке открытого исходного кода. Помимо этого, резервирование части токенов для долгосрочного развития экосистемы также обеспечивает возможность диверсификации и децентрализации процесса участия и управления сетью, тем самым открывая глобальный доступ для широкого круга участников.
Партнёрские программы. Блокчейн предоставляет брендам и лидерам мнения новые возможности для прямого общения со своими поклонниками. Ограниченный объем цифровых активов и истинное владение активами позволяют создать пространство для геймифицированного социального опыта, который выходит за рамки отдельных приложений и позволяет создавать экономики коллекционеров вокруг любой уникальной интеллектуальной собственности. Мы тесно сотрудничаем с независимыми специалистами-новаторами, ведущими мировыми энтертейнмент-студиями, владельцами интеллектуальной собственности и издателями, обеспечивая удовлетворение их потребностей с помощью нашей платформы.
Flow выступит в роли спонсора совета энтертейнмент-индустрии, в состав которого войдут руководители высшего звена мировых компаний-владельцев интеллектуальной собственности, создатели игр, энтертейнмент-студии и инфлюенсеры в мире культуры. Задача совета будет заключаться в том, чтобы помогать выявлять риски и новые возможности, устранять препятствия, связанные с привлечением новых потребителей, а также способствовать созданию здоровой глобальной энтертейнмент-экосистемы.