White Paper
Исполнительное резюме
Что такое Cellframe?
Cellframe — это сервис-ориентированная блокчейн-сеть. Она построена «максимально близко» к аппаратному уровню, чтобы обеспечивать эффективную работу на любом устройстве: от суперкомпьютера до умного холодильника. Постквантовое шифрование является стандартом в Cellframe и гарантирует наивысший уровень безопасности. Важно отметить, что мы не изобретали новую, непроверенную технологию; мы делаем блокчейн таким, каким он должен быть, чтобы называться «инфраструктурой».
Как можно использовать Cellframe?
Архитектура Cellframe представляет собой структуру с интегрированным двухуровневым шардингом. Первый уровень (гетерогенный) позволяет запускать настраиваемые субчейны и токены. На втором уровне (гомогенном) субчейны состоят из множества ячеек (Cells). Эти функции интероперабельности позволяют нам создавать экосистему сервисов, где каждое приложение (dApp) может обмениваться данными с другим приложением напрямую, через P2P-соединение.
Наша миссия — создать безопасную, децентрализованную среду, поддерживающую свободу Интернета, чтобы люди могли чувствовать себя уверенно и спокойно при повседневном использовании сети.
Cellframe подходит как для публичных, так и для корпоративных решений.
Производительность и масштабируемость Cellframe отвечают требованиям не только публичного блокчейн-рынка, но и корпоративного сегмента, что позволяет широко применять его в бизнес-решениях. Вот несколько примеров использования:
- Сервис-ориентированная архитектура упрощает создание протоколов второго уровня с выделенными сервисами. Встроенная платёжная система Cellframe и приватные шарды (сети) позволяют разработчикам сосредоточиться на создании самого сервиса. Условные транзакции, на которых основана архитектура приложений Cellframe, могут эффективно заменить 90% типичных операций смарт-контрактов: меньше комиссий, выше безопасность, проще разработка, ниже риски и меньше временных затрат.
- Cellframe предлагает коробочное блокчейн-решение для бизнеса. Кроме того, это одно из самых передовых решений для защиты существующих публичных и приватных блокчейнов от терминальных атак.
- Благодаря своей архитектуре, Cellframe — единственная система, способная защитить блокчейн от терминальных атак (включая квантовые) без миграции пользователей или внедрения стороннего кода.
Аннотация
В этом White Paper мы представляем наше видение блокчейн-платформы с фундаментально широким функционалом, которая способна создавать и поддерживать разнообразные высоконагруженные сервисы с повышенными требованиями к безопасности. Cellframe — это протокол нулевого уровня для создания сервисов, поддерживающих новые бизнес-модели Web 3.0. Платформа обеспечивает не только производительность и возможности для интеграции, но и основу постквантовой безопасности. Основные инновации включают децентрализованные сервисы, новую реализацию шардинга (с производительностью и отказоустойчивостью), а также низкоуровневую архитектуру (для повышения скорости и безопасности) и высокую степень модифицируемости (гибкость).
Вызовы
История учит, что будущее предсказать невозможно. Умные люди в прессе и книгах делают свои прогнозы, но мы заранее знаем: одни из них сбудутся, а другие — нет. И хотя найти по-настоящему достоверного предсказателя сложно, можно выделить устойчивую закономерность: люди склонны переоценивать скорость изменений в ближайшем будущем и недооценивать её в долгосрочной перспективе. Учитывая это, позвольте нам отделить факты от мнений и предложить, на наш взгляд, оптимальную стратегию для дальнейшего развития нашей технологии.
- Факт №1: Скорость генерации новой информации растёт. Что это означает для создания базовых технологий будущего? Возможно, пришло время строить инфрастуктуру таким образом, чтобы отслеживать динамику роста? Помимо необходимости обеспечивать высокую производительность и эффективность, базовый инфраструктурный протокол также должен обладать масштабируемостью и гибкостью. Мы знаем, что спрос на производительность стремительно растёт. Однако невозможно предсказать будущие потребности и изобретения. А они несомненно появятся. Будет необходимо поддерживать их, внедрять улучшения и модификации.
- Факт №2: Технологический предел размера транзисторов в современных процессорах практически достигнут. По разным оценкам, в период с 2025 по 2030 год мы больше не сможем уменьшить размер кремниевого чипа, поскольку он будет ограничен размером атома. Поэтому инфраструктурный протокол, ориентированный на будущее, должен быть эффективным и масштабируемым в рамках сети. Речь идёт о максимальном использовании доступных вычислительных ресурсов и их эффективном объединении в сети. Таким образом, мы максимизируем производительность, пишем код как можно более приближенный к аппаратному, используя для этого язык программирования C и низкоуровневую аппаратную оптимизацию.
- Факт №3: Квантовые вычисления привлекают всё больше внимания по всему миру. Ведущие криптографы пристально наблюдают за прогрессом в области квантовых вычислений. Сектор постквантовой криптографии (Post-Quantum Cryptography, PQC) сейчас активно работает в рамках Национального института стандартов и технологий США, где анализируется десятки алгоритмов и протоколов в поисках отраслевого стандарта. Мы ожидаем, что на принятие этого стандарта уйдёт не один-два года. Хотя точная дата появления функционального квантового компьютера пока не определена, мы уже строим планы. PQC также формирует собственные уникальные требования и особенности. Любая архитектура, ориентированная на будущее, должна одинаково хорошо работать как с классической, так и с постквантовой криптографией.
Видение
Cellframe был создан как ответ на вызовы, описанные выше, и основан на принципах, которые, по нашему мнению, помогут справиться с будущими изменениями. Платформа предлагает:
- Низкоуровневую архитектуру. Для максимальной эффективности протокол должен быть написан на максимально близком к железу языке программирования. Он должен эффективно работать со всеми видами устройств: от мейнфреймов до «умных холодильников». Именно поэтому Cellframe полностью написан на C и не содержит стороннего кода.
- Протокол нулевого уровня. В последние годы появилось множество различных протоколов, каждый из которых стремится улучшить или изменить что-то. Их появление сигнализирует о том, что люди стремятся внедрить блокчейн-технологии в различные сферы жизни. Однако до сих пор не существовало уникальной платформы, предлагающей эффективные инструменты для решения их задач. На наш взгляд, это похоже на попытку изобрести паровой двигатель раньше, чем было придумано колесо. Так зародилась концепция Cellframe Tissue, о которой мы подробно расскажем позже.
- Невозможность предугадать все задачи, которые будут решаться с помощью Cellframe. Другими словами, протокол должен уметь модифицироваться и адаптироваться для решения конкретных задач — без ущерба для безопасности и производительности. Это означает, что гибкость и изменяемость должны быть заложены в архитектуру изначально.
- Децентрализованные сервисы, которые в конечном итоге заменят традиционную веб-инфраструктуру, устранив множество точек отказа.
Веб-инфраструктура — это комплекс взаимосвязанных сервисных структур или объектов, обеспечивающих основу для функционирования системы. Наш протокол изначально задумывался как инфраструктура (Wiki), а значит, он создан для высоких нагрузок и высокого уровня интерактивности. Мы создаём гибкую и эффективную систему, каждый элемент которой может использоваться для решения различных задач, с разными характеристиками.
Если нагрузка на определённую ячейку (Cell) достигает предела, который мешает эффективной работе, то владелец ячейки может создать любое количество дополнительных ячеек в поддержку первой. Разные ячейки в одной системе могут выполнять различные функции с помощью смарт-контрактов. В результате система из различных ячеек формирует Cellframe Tissue — второй по важности «орган» системы. Первым является ZeroChain. Архитектура получившейся системы позволяет достичь гигантского уровня масштабируемости и практически бесконечной пропускной способности при обеспечении максимального уровня безопасности.
Создание предложенного проекта мотивировано желанием разработать систему, которая подходила бы как для независимых децентрализованных приложений, так и для корпоративных решений. По-настоящему децентрализованные сервисы и приложения смогут обмениваться микротранзакциями без перегрузки системы. Встроенная P2P-платежная система Cellframe работает эффективнее без необходимости использования смарт-контрактов, что в свою очередь делает её дешевле и безопаснее.
Помимо беспрецедентной вертикальной и горизонтальной производительности, гибкости и удобного для разработчиков подхода, этого удастся достичь за счёт внедрения инструментов, снижающих стоимость ошибок или произвольных действий. С самого начала система будет запущена с гибридным консенсусом Proof-of-Genesis (менее 1% от общего консенсуса блокчейна) и Proof-of-Stake (до 99%).
Сеть состоит из взаимосвязанных пиринговых ячеек (peer cells). Она может запускать собственный блокчейн с уникальными атрибутами, токеном и типом консенсуса, без жёсткой привязки к ZeroChain. Именно поэтому такие ячейки называются сингенными (syngeneic) — по аналогии со стволовыми клетками, которые могут превращаться в любой специализированный тип клеток в организме. Эта метафора означает, что каждая ячейка может быть создана с произвольными параметрами и подключена к любой другой ячейке. Информация о ячейках, токенах и исходном расположении реестров хранится в ZeroChain, где используется механизм Proof-of-Genesis (PoG). Такое решение влечёт за собой ещё два важных следствия:
- Условная централизация системы сводится к минимуму благодаря созданию условно зависимых ячеек, на которые невозможно повлиять. Их невозможно удалить или изменить через корневые ноды из-за того, что все коммуникации между Cell осуществляются напрямую, то есть в режиме peer-to-peer.
- В перспективе мы планируем внедрить особый тип консенсуса, который сможет обеспечить полноценное управление децентрализованной системой.
С помощью этого механизма, ячейки становятся однородными и обладают высоким уровнем взаимодействия между собой. Иерархия Cellframe также предполагает фрактальную модель: каждая ячейка имеет свой базовый чейн (Base Chain) внутри. Этот чейн похож на ZeroChain, но предназначен для одной конкретной ячейки.
Подводя итог, Cellframe — это не просто блокчейн-протокол. Скорее, это инфраструктурный уровень для построения блокчейн-экосистемы. Все существующие блокчейн-решения могут быть перенесены на Cellframe и получить недостижимый ранее уровень производительности и безопасности.
Есть ещё несколько вопросов, которые мы хотели бы обсудить в этой главе. В последние годы в сфере блокчейна работало множество ярких умов. Почему же тогда мы считаем, что у Cellframe есть место на рынке? Значит ли это, что никто другой в этом секторе не движется в схожем направлении? Почему сложилась текущая ситуация?
Развитие любой технологии проходит через этапы или поколения. Когда одно поколения демонстрируют свою несостоятельность, мы учимся на этом и создаём новые, более совершенные решения. Современные блокчейн-технологии сталкиваются с рядом фундаментальных проблем, которые мы описали выше. Пути их решения можно разделить на две группы:
- Тактическое решение проблем — улучшение отдельных компонентов традиционных систем. Именно этим путём идут большинство проектов в блокчейн-секторе, поскольку он менее трудоёмкий. Они работают с системой, которая уже доказала свою эффективность на определённом уровне, который считают достаточным.
- Стратегическое решение проблем — попытка создать новую технологическую платформу (систему), принципиально отличающуюся от существующих решений. В этом направлении движется меньше проектов, так как это требует времени, значительных трудозатрат и глубокого понимания принципов работы компьютерных сетей и криптографии. Трудоёмкость этого подхода наглядно демонстрирует тот факт, что первая приватная версия девнета Cellframe была запущена лишь в июле 2018 года — примерно через год после старта проекта.
Основные моменты
Изменяемость
Обычно разработчики блокчейнов стараются экономить каждый байт информации в цепи, поскольку размер блокчейна часто не является приоритетом из-за постоянного снижения цены дискового пространства. Благодаря гибкой структуре Cellframe мы не ограничены этим, что позволяет нам добавлять дополнительные байтовые поля в адреса кошельков, заголовки событий, структуры подписей и публичных ключей, сетевые протоколы и другие общие структуры, которые должны распознаваться программным обеспечением для обработки.
Несколько дополнительных байтовых полей дают нам возможность создавать больше новых типов транзакций, подписей, событий, кошельков, данных и других структур на лету, без полной переработки кода, изменения структуры блокчейна, выпуска новых типов кошельков и так далее. Такая вариативность обеспечивает обратную совместимость между различными версиями и предотвращает несовместимость версий.
Безопасность
Безопасность в Cellframe обеспечивается, в первую очередь, за счёт гибкости. Она не зависит от какого-то конкретного алгоритма подписи и — благодаря мультиклиентности — не привязана к единому консенсусу. Со временем стандарты безопасности усложняются. Если система использует один конкретный алгоритм, то её стабильность будет определяться исключительно устойчивостью этого алгоритма к взлому шифрования. Поскольку мы работаем с концепциями квантовых компьютеров и квантового шифрования, необходимо создать систему, которая не зависела бы от этого фактора. Другими словами, нужна возможность безопасно менять тип шифрования для повышения уровня защиты. То же самое касается и механизма консенсуса — наша задача создать систему, в которой можно быстро менять алгоритм консенсуса как в текущей ячейке, так и при создании новой.
В случае возникновения проблем мы сможем быстро их локализовать и предотвратить распространение по всей системе: либо изолируя шард, либо используя механизмы произвольных действий в качестве меры безопасности в первые несколько месяцев после запуска основной сети. Произвольное действие — это механизм, который может пометить транзакцию как недействительную и откатить её. Эта функция задумана как временная мера на первый год, до тех пор, пока система не станет достаточно стабильной.
Также существует так называемый Rat Announcement (англ. “крысиное оповещение”), которое может быть выдано любой нодой, затем проверено с помощью корневой ноды и размещено в специальной Support Chain (англ. “цепь поддержки”). В ней произвольные действия, объявления и системные предупреждения помогают предотвратить возможные атаки или минимизировать ущерб от них.
Таким образом, ZeroChain оповещает об обнаружении злоумышленника в сети. Вся архитектура системы Cellframe практически не содержит стороннего кода, что также повышает общий уровень безопасности. Это означает, что весь код уже написан нашими инженерами без использования сторонних модулей — в нём нет известных нам уязвимостей и методов взлома.
В качестве основы используются супресингулярные кривые и пермутации решёток. Реализации таких алгоритмов для публичных ключей уже доступны в сети, как и несколько вариантов подписей на основе супресингулярных кривых.
Масштабируемость и производительность
Структура и масштабируемость ноды Cellframe обладают высокой надёжностью и ограничены только мощностью оборудования. Поскольку мы используем низкоуровневую оптимизацию и организацию с нуля, нам удалось создать высокопроизводительную систему с эффективной параллелизацией. Кривая роста производительности относительно мощности оборудования практически линейна. Возможности ноды рассчитаны на обработку до десяти подписей без задержек и даже на работу с трафиком до 100 Гбит/с при условии оснащения достаточным количеством CPU, оперативной памяти и грамотного распределения нагрузки между ними.
Событийно-ориентированная архитектура делает всё это возможным. Применяется метод группировки ввода-вывода, при котором однотипные операции выполняются последовательно в неблокирующем режиме. Это позволяет оптимизировать их на уровне ОС и железа, а также дополнительно ускорить ввод-вывод за счёт группировки в одном месте. В свою очередь, это даёт возможность использовать технологии Zero Copy (или аналогичные), резко снижая нагрузку на так называемое «переключение контекстов». Без этого работать на высоких скоростях невозможно.
Масштабируемость сети Cellframe во многом соответствует масштабируемости любой peer-to-peer системы, но с важным нюансом. Учитывая, что uplink-нода определяется по принципу кратчайшего сетевого пути, наша сеть должна работать быстрее и оперативнее реагировать на внешние запросы. Данные передаются с минимально возможной задержкой. Задержки в мультичейн-системе приводят к увеличению количества цепочек и удлинению раундов, а также влияют на время распространения изменений в сети. Мы сокращаем задержки и повышаем скорость.
В основе нашей криптографии лежат суперсингулярные кривые и перестановки решёток. Реализации таких алгоритмов для обмена открытыми ключами уже доступны в сети, как и некоторые варианты подписей на основе суперсингулярных кривых. Мы планируем «инвертировать» и модифицировать их в алгоритмы формирования цифровых подписей, и часть из них уже представлена на GitHub.
dApps: как сделать их по-настоящему децентрализованными?
Сегодня информация передаётся практически мгновенно. Количество возможных социальных связей ограничено лишь доступом в интернет и наличием компьютера. Но ключевой проблемой современности остаётся доверие. Как мы можем доверять и проверять тех, с кем общаемся или работаем? В прошлом веке человечество сосредоточилось на сложных системах верификации. Государства начали использовать паспорта и базы данных для отслеживания почти каждого шага граждан, не говоря уже о многоуровневых визовых системах. В крупных банках появились целые комплаенс-отделы, занимающиеся проверками.
В конце 2008 года был опубликован White Paper сети Bitcoin, предложивший псевдоанонимную p2p-сеть, не требующая доверия между участниками. Здесь доверие в привычном смысле не требуется — сама архитектура сети обеспечивает безусловный уровень надежности между участниками. С тех пор блокчейн-индустрия проделала большой путь. Мы стали свидетелями ажиотажа, вызванного появлением смарт-контрактов, за которым последовал пузырь ICO, первые серьезные государственные внедрения технологий и, конечно, такие абсурдные явления, как токены для мемов или “мусорный майнинг”.
Сегодня почти все компании из Fortune 500 имеют блокчейн-подразделения. Мировые знаменитости успели либо заработать миллионы, либо получить штрафы от регуляторов за продвижение криптоафер.
Рынок децентрализованных приложений (dApps) стремительно развивается. Всего за год индустрия показала больший рост, чем весь блокчейн в 2017–2018 годах. Сектор DeFi (Compound, MakerDAO, Synthetix, Uniswap) достиг $1 млрд в заблокированных активах (по данным defipulse.com).
Однако за пределами сообщества разработчиков мало кто понимает, как работают смарт-контракты и каковы их реальные ограничения. Распространено мнение: «смарт-контракт = безопасная система без доверия». Но это не совсем так. И речь не только о проблемах масштабируемости Ethereum. Когда мы говорим об ограничениях, мы имеем в виду функции, которые невозможно реализовать в текущих смарт-контрактах. Кроме того, существуют проблемы безопасности, о которых многие обычные пользователи даже не подозревают. Об этом — далее.
Проблемы текущей архитектуры dApps
Несмотря на децентрализацию сети Ethereum, можно (довольно условно) сказать, что смарт-контракт де-факто «принадлежит» частному владельцу (или владельцам). Этот человек (или группа) может стать лакомой целью для хакеров, если в контракте хранятся значительные объёмы цифровых активов. Таким образом, в системе существует одна или несколько критических точек уязвимости. Успешная атака может привести к потере средств пользователей.
Если же, напротив, средства распределены между неограниченным количеством держателей приватных ключей (как в случае сервисов блокчейна Cellframe), то даже в случае кражи набора ключей злоумышленник смог бы похитить средства только у конкретного человека. Остальные участники и пользователи сервиса не пострадали бы.
Второй недостаток существующей архитектуры контрактов — ограничения на типы бизнес-логики, которую можно в них реализовать. С учётом ограничений EVM (в её текущей конфигурации) невозможно взаимодействовать с аппаратными ресурсами компьютера, что исключает возможность создания широкого спектра dApps.
Описанные недостатки ограничивают возможности разработчиков по созданию dApps уровнем «умного децентрализованного калькулятора». Конечно, простые формы бизнес-логики, такие как «одновременный перевод активов при выполнении условия» или «если токен заморожен в контракте ERC20, то...», актуальны и достаточны для создания множества полезных децентрализованных сервисов, что подтверждается успехом сектора DeFi. Однако сегодня рынок таких dApps всё ещё крайне мал, если говорить о реальных цифрах, за пределами узкого круга криптоэнтузиастов. В то же время существует огромное количество сервисов, децентрализация которых могла бы положительно повлиять на жизнь миллиардов людей. Можно предположить, что любой читатель этой статьи ежедневно пользуется такими сервисами: DNS, облачные хранилища, VPN, CDN и многие другие.
Безусловно, уже есть ряд проектов, создающих децентрализованные аналоги файловых хранилищ (Filecoin, DADI) или VPN (Sentinel, Orchid, Lethean). Однако ни одна из этих инициатив пока не превратилась в массовый проект ни по числу пользователей, ни по другим метрикам. По сути, проекты либо не вышли на стадию mainnet, либо их аудитория ограничивается парой десятков криптоэнтузиастов.
Мы предполагаем, что причин этому несколько, включая несовершенство текущей архитектуры блокчейнов. Это ничья вина — эти платформы изначально не разрабатывались для таких целей. В результате приходится многое дорабатывать самостоятельно. В этом отношении каждый проект пытается решить конкретную задачу построения блокчейн-сервиса (и очень часто с нуля), что совершенно неэффективно. Такой подход больше напоминает изобретение веб-сервера заново вместо использования готового решения вроде Nginx.
Мы считаем, что решением этой проблемы может стать специальный блокчейн-фреймворк, который можно адаптировать под конкретную задачу создания того или иного блокчейн-сервиса. В первую очередь это сократит время разработки и сузит объем работ — подобно тому, как технология CMS десятилетие назад упростила создание сайтов.
Cellframe: сервис-ориентированная блокчейн-платформа
Мы решили закрыть этот пробел с помощью Cellframe SDK, чтобы позволить любому создавать децентрализованные интернет-сервисы быстро и просто.
Как уже упоминалось, в современных решениях (таких как Ethereum, Tezos, NEO и др.) смарт-контракты не могут взаимодействовать с ресурсами операционной системы. В отличие от других платформ, при разработке Cellframe мы поставили перед собой задачу создать фреймворк, который позволит реализовывать бизнес-логику, основанную на использовании вычислительных мощностей, интернет-соединения и дискового пространства. Кроме того, мы уделили особое внимание децентрализации управления и защите конечных пользователей.
Как мы уже говорили, классический смарт-контракт имеет адрес, с которого он был развернут в сети, тогда как блокчейн-сервис на основе Cellframe существует внутри системы и не имеет адреса владельца. Да, у контракта Compound, в котором хранится $5 млрд в криптовалюте, есть конкретный владелец. А что, если бы его не было? Мы считаем, что это снизило бы риск мошенничества или незаконного использования приватных ключей (даже если у вас есть институциональная система управления ключами, всегда есть вероятность их утечки). Мы убеждены, что денежные потоки, генерируемые сервисом, должны распределяться надёжным образом между поставщиками услуг, минуя владельца смарт-контракта. Для таких децентрализованных приложений мы предлагаем термин t-dApps (истинно децентрализованные приложения).
При этом процесс разработки блокчейн-сервисов не должен отличаться от создания веб-скриптов или других системных сервисов. Такой подход сделает разработку проще и дешевле, поскольку командам не придётся нанимать узкоспециализированных блокчейн-программистов, которые стоят значительно дороже разработчиков из «традиционных» сфер.
Тем не менее, у этих двух подходов к созданию dApps есть свои области эффективного применения. Бывают ситуации, когда блокчейн-сервис принципиально не может заменить смарт-контракт. Например, ключевой случай: вам нужно создать dApp, бизнес-логика которого не требует установки сервисных нод и поддержания их в онлайн-режиме. С другой стороны, есть сценарии, где блокчейн-сервис предпочтительнее смарт-контракта — например, когда работа физических нод и их поддержка являются ключевой частью сервисной модели, и у вас достаточно пользователей, готовых предоставлять эти ресурсы.
Cellframe — это платформа для создания блокчейн-сервисов, в которой проблема масштабируемости решена на фундаментальном уровне. Для достижения высокой производительности мы используем шардинг, но не в классическом виде. В Cellframe устранено узкое место пропускной способности — промежуточный хаб, который используется в некоторых блокчейн-платформах (например, Polkadot) для обмена информацией между цепочками. Шарды Cellframe взаимодействуют автономно в P2P-режиме, что значительно повышает эффективность всей системы. Что касается безопасности, мы позаботились о том, чтобы Cellframe оставался защищённым «в будущем» — в эпоху квантовых компьютеров. Именно поэтому в системе используется переменное квантово-устойчивое шифрование.
Мы считаем, что децентрализованные интернет-сервисы (блокчейн-сервисы) станут одним из ключевых компонентов архитектуры Web3.0, подобно тому, как централизованные сервисы доминировали в эпоху Web2.0. Безусловно, децентрализация передачи стоимости (биткоин, стейблкоины) и простых финтех-приложений (DeFi) — это важный вклад в интернет будущего. Однако пока базовый интернет-слой остаётся централизованным и, следовательно, подвержен цензуре, вся эта система будет неполноценной. Какой смысл в возможности переводить биткоины или токены, если ваше подключение могут заблокировать? Мы уверены: для построения эффективного Web3.0 необходимо создать инфраструктурные модули, которые будут безопасны и не будут иметь единой точки отказа.
В завершение отметим, что суть, гибкость и свобода — это ценности, на которых основан Cellframe. Мы (и миллионы людей вместе с нами) убеждены, что интернет нуждается в изменениях. Нет сомнений: централизация создаёт опасную хрупкость. Какой ценностью обладает интернет, если одно решение политиков или корпорации может лишить миллионы людей доступа к информации и средствам коммуникации?
Ядро Cellframe
Основной код Cellframe полностью написан на чистом C с использованием объектно-ориентированного программирования. Все остальные элементы кода Cellframe также оригинальны: реализация HTTP-протокола, обмен ключами, потоковая передача и мультиплексирование, а также низкоуровневые сервисы, такие как VPN, CDN и распределенные вычисления. Мы придерживаемся этого подхода, чтобы защититься от готовых инструментов взлома и ускорить обработку событий в сети.
Благодаря низкоуровневой оптимизации и событийно-ориентированной внутренней структуре мы стремимся достичь недостижимого уровня производительности. Мы сокращаем количество запросов к системным функциям и связанных с ними переключений контекста. Таким образом, мы избегаем потолков обработки данных, которые могут возникать при работе с большими объёмами информации на высоких скоростях, вызывая экспоненциальный рост этих переключений.
Структура блокчейна
Основная идея архитектуры Cellframe — поддержка множества субчейнов, содержащих плазму (любые элементы блокчейна) внутри сингенных ячеек (шардов). ZeroChain представляет собой единый чейн плазмы, который проходит через все ячейки и обеспечивает межъячеечную коммуникацию.
Нода
Нода — это базовый элемент децентрализованной сети. Большинство нод имеют равные права в системе, что делает сеть «одноранговой». Следует отметить, что нам необходимы несколько специальных типов нод: лёгкие, полные, архивные, мастер-ноды, корневые, а также любые частные ноды (seed, gate, swap и т.д.).
Ноды могут предоставлять сервисы через сеть. Сервисы могут использовать собственные идентификаторы и обмениваться данными блокчейна, данными из белых списков, потоковыми каналами и другими функциональными возможностями сети Cellframe. Поскольку всё разработано на относительно низкоуровневом языке, мы можем предоставлять инструменты для создания сервисов, таких как VPN и аудио-видео трансляции. Это стало возможным благодаря эффективному использованию CPU и памяти в Cellframe.
Из-за необходимости поддерживать постквантовые алгоритмы, которые имеют очень большой размер файлов, и оптимизировать их использование для высокопроизводительных сервисов (1 млн+ TPS), в Cellframe используется оптимизация с применением Ассемблера.
Организация нод
Организация нод осуществляется с помощью white-листа — списка нод, каждая из которых имеет аплинк (вышестоящую ноду). Этот список копируется от ноды к ноде. Аплинк — это нода, которая при первом подключении запрашивает весь белый список, и неблокчейновые данные, полученные от неё, считаются приоритетными. Это означает, что если нижестоящая нода отправит белый список, противоречащий данным родительской ноды, предпочтение будет отдано последней. Однако при этом потребуется сравнение списка со всеми остальными нодами сети.
Если доступен IPv6-адрес из белого списка, всегда существует возможность P2P-подключения к любой другой ноде. Аплинк при подключении новой ноды определяется автоматически: белый список загружается с так называемых «seed-нод» (центральных нод), откуда данные запрашиваются по умолчанию, а затем отслеживается оптимальный маршрут до каждой точки.
Эти подключения оптимизируются для выбора кратчайшего интернет-маршрута с минимальным временем отклика. В результате ноды выстраиваются в иерархическую схему, которая в целом повторяет иерархию реального интернета.
Подключение к сети
Ноды подключаются к сети по следующему алгоритму:
- Подключение к корневым нодам;
- Запрос списка доступных нод и их IP-адресов;
- Определение ближайших нод на основе их белых IP-адресов и выбор наиболее подходящих;
- Проверка доступности (ping) и попытка установить соединение (handshake) для оценки минимальной задержки и максимальной скорости;
- Подключение к 2–5 наиболее подходящим нодам;
- Первая подключённая нода назначает новый ID на основе ключа, созданного для неё;
- Синхронизация блокчейна с аплинк-нодами;
- Отправка запроса на получение адреса, публикация публичного ключа ноды и прайс-листа услуг в нулевой уровень блокчейна;
- После того, как ключ принят в блокчейне, нода может предоставить доступ к сервису.
Обработка данных нодой
Соединения из интернета поступают к ноде от клиентов — C-0, C-1, C-2 и так далее. После этого соединения назначаются определённому воркеру: w-0, w-1, w-2 и так далее.
Количество воркеров строго фиксировано и обычно равно количеству физических процессоров в системе. Соответственно, воркер — это отдельный поток, строго привязанный к процессору, то есть выполняющийся исключительно на нём. Это позволяет системному драйверу определить, что процесс занят сетевыми операциями, и генерировать прерывание от сетевой карты строго на этом процессоре, что значительно ускоряет обработку на скоростях выше 1–4 Гбит/с. Кроме того, внутри каждого воркера существует цикл — бесконечный цикл вызова операций ввода и вывода. Эти группы операций группируются в объект dap_events_socket, и каждый такой объект (точнее, псевдообъект) имеет определённое соединение: C-0, C-1... Также он имеет реализацию — на схеме от разных dap_events_socket стрелка тянется к dap_http_client, который выполняет операции типа запрос/ответ, не требующие постоянного соединения, или к другим стрелкам — dap_events_socket, которые имеют реализацию dap_stream. dap_stream обеспечивает постоянно существующую сессию между нодами и передаёт данные, требующие высокой скорости, например, сетевой трафик VPN-сервисов, новые элементы блокчейна участников, аудио-видео потоки или любые другие типы данных. Каждый тип таких данных проходит через свой канал, например, CH–B для элементов блокчейна, CH–N для сетевых данных VPN и так далее.
Все эти пакеты каналов группируются внутри потокового пакета, который передаётся через UDP-транспорт, обрабатываемый dap_events_socket, который работает внутри цикла и считывает ввод-вывод из удалённого соединения, находящегося в потоке воркера, привязанного к отдельному процессору.
Необходимость реализации Cellframe
Дело в том, что в современных многозадачных системах потеря вычислительной мощности экспоненциально растёт при высоких нагрузках. Это происходит из-за переключения процессоров между задачами, а также непосредственно из-за самих операций ввода-вывода. В архитектуре Cellframe (как показано на схеме) операции ввода-вывода сгруппированы в одном месте: процессоры объединяют эти операции, а последующие вычисления всегда остаются на том же процессоре. Это исключает постоянные переключения, что критически важно при высоких нагрузках. Фактически, без такой технологии передача даже 1 ГБ данных затруднительна, а более 4 Гбит/с и вовсе невозможна.
Структура транзакции
Это схема процессов, происходящих внутри каждой транзакции.
Началом транзакции является подтверждение баланса из другой ячейки, которое осуществляется как минимум тремя случайно выбранными мастернодами или проверенной копией токена из ZeroChain. Таким образом, если транзакция отправляется в другую ячейку, исходящая транзакция проверяется мастернодой отправителя, а входящая транзакция — мастернодой получателя. Это аналогично тому, как клиент одного банка отправляет средства клиенту другого банка. Каждая транзакция должна иметь как минимум три выхода: один для получателя, один для комиссии (может быть нулевым) и один для сдачи. Выходы также могут быть открыты не только для адреса, но и для одноразовых ключей, подписанных замкнутой кольцевой подписью — транзакции с нулевым разглашением.
ZK Кольцевая подпись
Zero-level (ZeroChain) консенсус
На уровне ZeroChain мы используем только один консенсус: Proof-of-Genesis.
Это работает как модификация Proof-of-Authority (PoA): первый блок содержит только одну запись с общими метаданными и набором корневых публичных ключей. Каждая запись после генезис-блока должна быть подписана корневым ключом (ключом генезис-блока).
Каждая следующая запись должна быть подписана большинством корневых ключей. Например, если в генезис-блоке восемь корневых ключей, то каждая следующая запись должна быть подписана любыми пятью случайно выбранными ключами.
Шардинг
Технология шардинга в Cellframe предполагает разделение всей блокчейн-сети на отдельные «шардовые цепочки» или ячейки (Cells). Эти шардовые цепочки организованы таким образом, что вся информация об одном аккаунте содержится в пределах одной ячейки. Шард может быть ограничен по размеру, например, 1 ГБ.
Шардинг привязан к топологии сети, которая, в свою очередь, зависит от реальной сетевой инфраструктуры. Таким образом, попадание в конкретную ячейку по умолчанию определяется сетевой близостью. При желании пользователь может самостоятельно выбрать ячейку или запросить создание новой. Однако переполненные шарды могут отказать в регистрации новых участников. Все запросы на работу с ячейками обрабатываются через сообщения внутри блокчейна нулевого уровня.
Все события, связанные с шардом, происходят в два этапа: декларация и объявление, между которыми должно пройти как минимум X блоков. Для Cellframe это означает минимальное время в 10 000 секунд (может быть больше, если сеть загружена).
Декларация может быть отправлена мастернодой или корневой нодой. Если кто-то хочет стать мастернодой, он должен отправить запрос в мемпул любой мастерноды, после чего он будет представлен корневым нодам.
Корневые ноды проверяют, обладает ли кандидат на роль мастерноды достаточным количеством монет, – Hold Output. Этот выход может быть разблокирован только консенсусом нулевой цепочки. Если кандидат соответствует требованиям, то после X блоков должно появиться объявление мастерноды с публичным ключом, связанным с идентификатором ячейки (Cell ID).
Декларация ячейки работает аналогичным образом, но такие запросы могут быть отправлены только мастернодой, которая уже присутствует в списке. В запросе должна быть указана причина шардинга – перегруженный шард ранее запущенной ячейки Cellframe или монеты, удерживаемые для шарда. Дополнительно указываются метаданные. После всех проверок корневые ноды объявляют новый идентификатор ячейки (Cell ID), и только после этого будут приниматься новые декларации мастернод.
Внутри ячейки существуют две части — базовая цепочка ячейки (Cell’s Base Chain) и Plasma DAG. Базовая цепочка ячейки аналогична ZeroChain: она хранит проверенные состояния балансов из других цепочек, при этом следующие транзакции могут выполняться только в Plasma.
Протоколы связи и сети
Вся коммуникация осуществляется с использованием фреймворка DAP SDK, основанного на событийной модели, которая позволяет обрабатывать множество операций ввода-вывода в одном потоке. По умолчанию создаётся количество потоков, равное числу ядер процессора, и они назначаются исключительно для обработки вычислений на этих ядрах. Эта же технология используется популярным веб-сервером Nginx, что позволяет ему обрабатывать и обслуживать огромное количество одновременных подключений. Мы ожидаем, что получим аналогичное преимущество.
Соединения для обмена ключами
Cellframe начинает любую сетевую активность с соединения для обмена публичными ключами. Сначала клиент подключается к серверу и получает публичный ключ, подписанный конкретным ключом, включенным в white-листы Cellframe. Клиент проверяет ключ, а затем отправляет короткое сообщение, зашифрованное публичным ключом сервера. После этого сервер расшифровывает его своим приватным ключом, зашифровывает ответ с использованием публичного ключа клиента и отправляет результат обратно.
После установления обмена клиент может легко инициировать любую сессию запроса/ответа или установить потоковое соединение. Сервер генерирует приватный симметричный ключ SALSA2012 для потокового соединения, чтобы снизить нагрузку на процессор. Более того, ключ меняется каждые 30 минут.
Шифрование с использованием PQ-алгоритмов
Для соблюдения принципа вариативности в начало каждой точки шифрования добавляется 2-байтовый идентификатор. Мы предполагаем, что человечество не изобретёт больше 65 536 алгоритмов цифровой подписи. Для начала мы выбрали наиболее перспективные постквантовые алгоритмы: NewHope, NTRU, Frodo, SIDH* и другие. Один из наиболее интересных алгоритмов, которые мы используем, является Picnic — постквантовая подпись с Zero Knowledge. По умолчанию используется цифровая подпись CRYSTALS-Dilithium.
Также доступна комбинация нескольких алгоритмов: например, пользователь может защитить все депозиты в своём кошельке с помощью нескольких ключей (мульти-алгоритмная подпись). Сейф становится надёжнее, когда он закрыт несколькими ключами одновременно.
Токены
ZeroChain не требует реализации токена для успешной работы, так как он основан на консенсусе Proof-of-Genesis, и в традиционном понимании майнинга здесь нет. Все решения относительно формирования блоков принимаются изначально авторизованными узлами, а сама цепочка хранит только необходимую техническую информацию и не содержит балансов адресов, поэтому не влияет на безопасность запущенных ячеек. Все значимые взаимодействия в сети происходят внутри ячеек. В случае межсетевого взаимодействия, такого как передача активов, операции осуществляются исключительно через P2P-подход и поэтому не требуют добавления дополнительных записей в ZeroChain. Каждая ячейка представляет собой псевдонезависимый блокчейн, который включается в общую экосистему через межсетевые взаимодействия. Таким образом, каждая сеть имеет собственный консенсус на основе гибкого PoS (или DPoS/PoA при необходимости), который может быть настроен инициатором цепочки. Однако все Cells в рамках одной сети используют единый тип консенсуса. Ячейки обеспечивают две основные функции токена: во-первых, стейкинг для участия в консенсусе (в случае PoS), а во-вторых, единицу передачи стоимости / единицу учёта внутри экосистемы (включая межсетевые взаимодействия).
Процесс эмиссии токенов выглядит следующим образом:
- Корневые узлы получают запрос на создание токена;
- Узлы проверяют, имеет ли автор запроса достаточно прав для эмиссии токена, и в случае положительного результата публикуют декларацию токена;
- Декларация токена содержит подписи держателей эмиссии, что впоследствии позволяет им добавлять события эмиссии токена через память, а затем публиковать базовую транзакцию с этой эмиссией в удобную ячейку. Важно: эмиссия в ZeroChain привязана к адресу, а не к ключу или ячейке;
- В момент эмиссии ни ключ держателя эмиссии, ни его шард неизвестны до тех пор, пока он не захочет использовать средства и сформировать базовую транзакцию в любой ячейке. Аналогичный процесс происходит при передаче токенов из ячейки в ячейку — базовая транзакция в новой ячейке указывает на транзакционный токен, содержащий ID плазменной цепочки, ID ячейки и хэш транзакции, выход которой указывает на адрес, подписывающий базовую транзакцию;
- Таким образом, транзакция между ячейками имеет структуру атомарного свопа «под капотом» и выполняется медленнее, чем транзакции внутри ячейки.
Токеномика
Обновлённая токеномика предусматривает доход не только от предоставления услуг, но и от ликвидности. Дополнительные вознаграждения также поступают от долгосрочного хранения LP-токенов.
Эмиссии
Для структурирования системы вознаграждений для стейкеров планируется выпустить 3 миллиона токенов в следующем году. Затем будет проведено голосование по поводу эмиссии на 2024 год и последующие периоды. Базовый сценарий предполагает сокращение эмиссии до 1,5 миллиона токенов в 2023 году, с последующим уменьшением вдвое каждый год. Эмиссия может быть пересмотрена в зависимости от успехов в развитии экосистемы и настроений держателей токенов.
Распределение эмиссии будет следующим:
1,3 миллиона для пар на Uniswap:
- 1 миллион для пары CELL/ETH
- 0,3 миллиона для пар CELL/USDC, CELL/DAI и CELL/USDT
0,7 миллиона для пар на Pancakeswap:
- 0,5 миллиона — для пары CELL/BNB
- 0,2 миллиона — для пар CELL/BUSD, CELL/DAI и CELL/USDT
1 миллион токенов на одиночный стейкинг.
Резервы
Для построения устойчивой экосистемы в долгосрочной перспективе будет предусмотрена эмиссия из резервов в размере двух миллионов токенов $CELL. Один миллион будет выпущен в середине 2023 года, второй миллион — в середине 2024 года. Эти средства будут направлены на развитие проекта.
Дополнительные вознаграждения и бонусы
Программа вознаграждений для стейкеров
Вознаграждения за стейкинг Cellframe рассчитываются по системе баллов.
Количество ваших баллов зависит от размера стейка и срока блокировки. Чтобы рассчитать количество баллов, начисляемых за конкретный стейк, мы умножаем заблокированную сумму на коэффициент, который зависит от срока блокировки.
При предоставлении ликвидности и участии в программе стейкинга Cellframe коэффициент вознаграждения увеличивается на 15 процентных пунктов за каждые 3 месяца блокировки. Максимальный срок блокировки — 2 года. Если средства заблокированы на этот период, коэффициент составит 220%, а значит, количество начисленных баллов будет в 2,2 раза больше общей суммы заблокированных токенов.
При создании стейка вы можете выбрать, реинвестировать часть или все накопленные вознаграждения в баланс стейка для повышения доходности. Любая часть вознаграждения, которую вы решите не реинвестировать, станет доступна для вывода до окончания срока блокировки.
Бонусы за предоставление ликвидности до запуска программы стейкинга.
Владение LP-токенами в пулах Uniswap или Pancake до запуска программы стейкинга Cellframe принесёт вам дополнительные баллы. Даже до блокировки LP-токенов в стейкинге или аукционе коэффициент увеличится на 0,16 процентных пункта за каждый день.
Если LP-токены были созданы за 30 дней до старта программы стейкинга, это увеличит коэффициент при расчёте баллов на 4,8 процентных пункта.
Если срок LP составил 313 дней, коэффициент увеличится на 50 процентных пунктов.
Максимальный бонус за раннее предоставление ликвидности ограничен 50 процентными пунктами.
Примеры расчёта APY
Рассмотрим несколько примеров, чтобы показать, как работает система баллов. Для удобства будем считать, что все стейки фиксированы, хотя на самом деле они пересчитываются каждую минуту. В зависимости от выбранной доли рефинансирования, размер вашего депозита будет расти, а вместе с ним и количество баллов. Это справедливо как для пользователя, так и для системы в целом. Когда период стейкинга закончится, общее количество баллов в системе уменьшится.
Одиночный токен
1 000 CELL, заблокированные на 1 год, дают:
1 000 × 160% = 1 600 баллов.
Допустим, общее количество баллов других участников в одиночном стейкинге составляет 2 миллиона баллов. Тогда этот стейкер получт вознаграждение в размере: 1 000 000 / (2 000 000 / 1 600) = 1 000 000 / 1 250 = 800 CELL в год.
При начальной инвестиции в 1 000 CELL, это даёт 80% APY.
Пара
Пара CELL/ETH на аналогичную сумму, которая была застейкана на 3 месяца до начала программы стейкинга, а затем заблокирована на 9 месяцев:
1 000 × (100 + 15 × 3 + 3 × 5)% = 1 000 × 160% = 1 600 баллов.
Предположим, общее количество баллов других участников в CELL/ETH составляет 1,5 миллиона баллов. Тогда этот стейкер получит следующее вознаграждение:
1 000 000 / (1 500 000/1 600) = 1 000 000/ 937,5 = 1 066,66667 CELL в год.
При начальной инвестиции в 1 000 CELL это даёт 106,666667% APY.
Как запустить мастерноду для участия в стейкинге?
Участники программы стейкинга и аукционов получат дополнительные вознаграждения в виде аирдропа специальных токенов mCELL. Эти токены не подлежат передаче, торговле, обмену или выбору, их единственное назначение — “залог” для запуска мастернод. Это означает, что не придётся выбирать между программой стейкинга и аукционами за возможность запустить мастерноду. Все, кто участвует в стейкинге, также будут получать вознаграждения в в виде процента от стоимости предоставляемых услуг и транзакций, обрабатываемых мастернодой. Это вознаграждение — дополнительным бонус, который не заменяет вознаграждения в токенах CELL.
UPD:
В конце 2024 года мы провели три голосования в рамках сообщества. Первое голосование определило размер вознаграждений для стейкинга в 2025 году — 2 миллиона токенов. Во втором голосовании команда предложила перенаправить награды за LP-стейкинг пар со стейблкоинами на развитие проекта, но это предложение было отклонено сообществом. Третье голосование касалось распределения пула вознаграждений между стейкерами и валидаторами. Сообщество решило распределить 2 миллиона токенов в соотношении 80/20. 80% пула пойдут на вознаграждения валидаторам, а 20% будут выделены на стейкинг-вознаграждения. Такое распределение отражает текущие приоритеты экосистемы, направленные на устойчивое развитие и поддержание активности сети.
Текущие данные по распределению токенов в сети выглядят следующим образом:
Всего 2 миллиона токенов: :
● 1,6 миллиона — на вознаграждения валидаторам;
● 0,4 миллиона — на вознаграждения за стейкинг.
Распределение среди стейкеров:
0,144 миллиона — для соло-стейкинга.
0,16 миллиона — для пар на Uniswap:
● 0,12 миллиона для пары CELL/ETH;
● 0,04 миллиона для пар CELL/USDC, CELL/DAI и CELL/USDT (по 0,013333 на каждый пул).
0,096 миллиона — для пар на Pancakeswap:
● 0.068 миллиона для пары CELL/BNB;
● 0.028 миллиона для пар CELL/BUSD, CELL/DAI и CELL/USDT.
В начале 2025 года мы прекратили принимать новые LP-стейки в сторонних сетях. Это решение было принято в связи с быстрым развитием квантовых технологий и растущими рисками, связанными с хранением средств в сторонних сетях. Все активные стейки остаются в силе, и вознаграждения по ним будут выплачены в полном объеме. Однако новые стейки приниматься не будут.
Вместо этого мы начинаем разработку механизма создания LP-токенов на платформе Cellframe. После его запуска вознаграждения, предназначенные для LP-стейкинга, будут перераспределяться среди держателей LP-токенов Cellframe.
Будущие решения относительно распределения вознаграждений в основной сети Cellframe будут определяться последующими голосованиями.
Conclusion
В этом документе мы продемонстрировали ключевые технические особенности Cellframe и пути реализации. Предложенная структура протокола служит нулевым уровнем блокчейнов и распределённых систем, поскольку она способна решить несколько реально существующих проблем в этой области: масштабируемость, безопасность и гибкость. Cellframe предоставляет возможность вносить модификации для решения любых будущих задач без ущерба для масштабируемости или производительности.
Со временем этот документ будет расширяться и дополняться более подробным описанием взаимодействий между цепочками, архитектуры использования, результатов тестирования и других.
Содержимое
- Краткое содержание
- Аннотация
- Вызовы
- Видение (цели проектирования)
- Основные моменты
- dApps: как сделать их действительно децентрализованными?
- Структура блокчейна
- Токены
- Токеномика
- Дополнительные вознаграждения и бонусы
- Примеры расчета годовой процентной доходности (APY)
- Как запустить мастер-узел для участия в стейкинге?
- Заключение