Это наша заявка на The Great Reddit Scaling Bake-off . Это StarkEx Rollup (данные по цепочке).
Искренне,
TL;DR
Показать и рассказать
Наша колода
Подробное описание
Оглавление
StarkEx— Общие
- Системный Обзор
- Документация по продукту
StarkEx — конкурс Reddit Bake-off
- Анализ затрат
- Архитектура системы
- Код
Системный Обзор
Движок StarkEx состоит из сетевых и сторонних компонентов. Вообще говоря, офчейн предназначен для тяжелых вычислений и хранения, а ончейн — для проверки с минимальными вычислительными затратами, фиксации состояния и доступности данных, необходимых для использования аварийного люка.
Для более подробного обзора читайте наш средний пост . Однако обратите внимание, что в этом посте описывается StarkEx в режиме Validium (данные вне сети), тогда как в этом тесте мы продемонстрировали StarkEx в режиме Rollup (данные в сети).
Примечание по терминологии. Свертки, использующие криптографические доказательства, часто называют «ZK-свертками», даже если доказательства не являются нулевым разглашением (ZK); мы будем использовать этот общий термин при обращении к общему классу сверток, основанных на доказательствах.
Документация по продукту
Смотрите здесь .
Демонстрация StarkEx для Reddit Bake-off
Анализ затрат
TL;DR
- StarkEx может работать как с данными в сети (режим Rollup), так и с данными вне сети (режим Validium).
- В этом тесте мы работали в режиме Rollup . Наша общая стоимость газа в основной сети составила 94,47 млн газа, что означает в среднем 315 газа за транзакцию . Затраты вне сети составляли небольшую часть этой суммы. Это фактические измеренные затраты на основную сеть, а не оптимистичные оценки.
- Выполнение отжига в режиме Validium стоило бы в общей сложности 5 миллионов газа, что составляет менее 17 газов за транзакцию . У StarkWare уже есть система StarkEx в режиме Validium, развернутая в основной сети.
- StarkEx превосходит другие решения Rollup
- Он превосходит существующие ZK-роллапы как по затратам в сети, так и вне сети.
- Он принципиально превосходит оптимистичные накопительные пакеты (OR) по затратам в сети. Поскольку в стоимости преобладают затраты внутри сети, он имеет фундаментальное преимущество по стоимости перед OR.
Подробности
В системе StarkEx есть два набора затрат:
- Затраты на цепочку
- Подача и проверка доказательств
- (Только в режиме объединения:) публикация данных, относящихся к изменениям состояния
2. Затраты вне сети: запуск облачного сервиса StarkEx и, в частности, пруверов.
В режиме агрегации преобладающей частью стоимости является внутрисетевая часть. Обратите внимание, что фактическая стоимость внутри сети на транзакцию намного ниже в решениях ZK-Rollup, чем в решениях OR, поскольку объем данных, которые необходимо опубликовать, намного меньше.
При отладке фактические затраты в сети составили 94,47 млн (в среднем 315 газа на передачу), а затраты вне сети были незначительными по сравнению с ними (менее 5% стоимости в сети).
При стоимости газа в 70 gwei это обошлось нам в 6,6 ETH, что при цене ETH в 230 долларов стоило 1518 долларов (средняя стоимость в сети 0,5 цента за отложенный Tx). Естественно, цена в долларах США колеблется в зависимости от цены газа в Ethereum и цены ETH.
94,5% затрат в сети были связаны с работой в режиме Rollup, то есть с размещением данных транзакции в сети (раздел 1.b выше). Если бы мы запустили то же самое в режиме Validium, затраты на цепочку составили бы всего 5 млн газа (в среднем менее 17 газа за транзакцию) и стоили бы 0,35 ETH, что составляет в общей сложности 80,5 доллара США (в среднем 0,02 цента). на каждый Bake-Off Tx).
Сводка по потреблению газа в сети:
При использовании StarkEx стоимость верификации растет только полилогарифмически по отношению к размеру партии. Наиболее четко это отображается в режиме Validium, где данные не публикуются в цепочке, и, таким образом, стоимость в цепочке масштабируется сублинейно (логарифмически) с размером партии. Следовательно, при большом масштабе амортизированная стоимость одной транзакции в сети в режиме Validium стремится к нулю с увеличением размера партии, а стоимость вне сети преобладает. С точки зрения затрат вне сети STARK имеют значительное преимущество перед решениями на основе SNARK: новейшие современные пруверы STARK в 20 раз быстрее, чем современные пруверы SNARK, и это ускорение основано на фундаментальных криптографических причинах¹.
Как правило, фактическая стоимость зависит от различных факторов, в том числе:
- Как указано выше, на цене газа в Ethereum и цене ETH.
- Пропускная способность системы (количество транзакций в секунду): StarkEx достигает эффективности за счет пакетной обработки, поскольку стоимость проверки является только логарифмической по отношению к размеру пакета. Чем больше партии, тем ниже стоимость за транзакцию. Вообще говоря, более высокая пропускная способность подходит для больших партий и, следовательно, более низкой средней стоимости за транзакцию.
- Максимально допустимая задержка между транзакцией и ее отправкой по цепочке: чем больше допустимая задержка, тем больше пакеты и ниже стоимость за транзакцию. Большая задержка также лучше позволяет отправлять документы с подтверждением времени, когда затраты на газ ниже.
- Решение для обеспечения доступности данных: как упоминалось выше, текущая заготовка была в режиме Rollup, где большая часть стоимости системы — это доступность данных в сети. Работа в режиме Validium снизила бы стоимость сети в 20 раз.
- Количество одновременно конкурирующих операторов доказательства вне сети и механизм распределения доказательств между ними: вообще говоря, если несколько операторов доказательства параллельно генерируют доказательства и конкурируют за их отправку, затраты вне сети растут, поскольку все эти операторы должны быть компенсированы. их текущие расходы на облако.
- Деловые отношения/соглашение с операторами пруфов: если Reddit сам управляет оператором пруфов, расходы вне сети — это просто наличные расходы на запуск службы (включая плату за лицензию/использование прувера). Если услугу предоставляют другие организации, стоимость может быть выше.
- Независимо от того, содержат ли доказательства только транзакцию Reddit или они объединяются с транзакциями из других приложений: поскольку пакетная обработка снижает затраты, объединение транзакций Reddit вместе с транзакциями из других приложений в одни и те же доказательства может снизить среднюю стоимость за транзакцию.
- Оптимизации, основанные на шаблонах использования: StarkEx содержит различные оптимизации в каждом пакете (например, объединение разных Tx, относящихся к одним и тем же учетным записям). В некоторых случаях шаблоны использования приложения выигрывают больше от этих оптимизаций (например, если во многих случаях пакет содержит много Tx для одних и тех же учетных записей, средняя стоимость будет ниже).
Стоимость, указанная выше для отладки, может дать достойную приблизительную оценку стоимости для работающей системы (опять же, при условии наличия данных в сети; в противном случае они были бы значительно ниже). Более точные оценки могут быть предоставлены после того, как мы получим более точные спецификации для желаемой конфигурации системы.
Обратите внимание, что приведенные выше затраты являются фактическими переменными затратами на проведение отладки в основной сети. Мы читали различные публикации о конкурирующих решениях по масштабированию, в которых указаны затраты, которые являются просто оценками, и часто пренебрегают значительными частями фактической структуры затрат, поскольку обычно у них еще нет полностью функционального продукта. Насколько нам известно, STARK (как криптографический протокол) и StarkEx (наша конкретная реализация для этого варианта использования) значительно эффективнее других систем криптографического доказательства. Например, ethSTARK, наш код с открытым исходным кодом, финансируемый EF, работает в 20 раз быстрее, чем любая другая известная нам система подтверждения. Эта эффективность приводит к ценовому преимуществу по сравнению с другими альтернативами, если принять во внимание все соображения.
Архитектура системы
Особенности
- Масштабируемость: высокая пропускная способность благодаря пакетной обработке транзакций.
- Честность: криптографические доказательства и обязательства гарантируют истинное владение баллами.
- Доступность: поддержка ведущих кошельков, от пользователей не требуется никаких операций в сети.
Системные компоненты
Чеканка (1)
Чеканка осуществляется путем передачи баллов с учетных записей модераторов выбранным пользователям (согласно спецификации Reddit, пользователи претендуют на эти баллы). Это делается через API модератора.
UX — подпишитесь, подскажите и сожгите (2)
Инициирование пользовательских команд
StarkWare создала расширение Reddit для Chrome (RCE), которое отслеживает действия пользователей на веб-сайте Reddit. RCE перехватывает такие события, как «Подписка» (нажатие кнопки «ПРИСОЕДИНИТЬСЯ») и «Подсказка» (добавление ответа, начинающегося с «/ подсказка»), и интерпретирует их соответствующим образом. Всякий раз, когда RCE перехватывает команду пользователя, он создает необходимую транзакцию StarkEx и просит пользователя подписать ее с помощью выбранного кошелька. Подписанные транзакции передаются RCE в механизм масштабирования StarkEx (SESE) в облаке. StarkEx группирует транзакции, генерирует доказательство STARK, подтверждающее их целостность, и записывает доказательство в Ethereum, подтверждая обновленную структуру данных пользовательских балансов и измененные пользовательские балансы.
Беспроблемный пользовательский опыт
Пользователям, ограничивающим себя базовыми взаимодействиями Reddit Point (а именно: получением баллов, подпиской на сабреддит, чаевыми другими пользователями и сжиганием баллов), не нужно взаимодействовать с Ethereum, и, в частности, не требуется регистрация в сети. Только когда пользователи решат взаимодействовать с Ethereum, например, для снятия или внесения баллов, им также необходимо зарегистрироваться в сети. Регистрация в сети просто означает привязку адреса пользователя Ethereum к его учетной записи StarkEx.
Поддержка кошелька (3)
Родная интеграция
Несколько кошельков поддерживают схему подписи StarkEx ECDSA и API-интерфейсы, предлагая своим пользователям максимальную безопасность. Эти кошельки надежно представляют пользователю транзакции StarkEx в четком и удобочитаемом формате, поэтому пользователь знает, что он подписывает. Это гарантирует, что любые попытки подделки сообщения (например, вредоносной программой) могут быть обнаружены пользователем до его подписания.
В настоящее время предоставляется: Ledger, Authereum, Portis и Argent (через WalletConnect).
Стандартная интеграция
Там, где нативная интеграция со StarkEx еще не завершена, мы выбрали стандартную интеграцию. Для теста Reddit эти кошельки используются исключительно для безопасного хранения закрытого ключа пользователя. При использовании такого кошелька RCE сам подписывает сообщение ключом, полученным от кошелька.
В настоящее время предоставляется: MetaMask и Torus.
Механизм масштабируемости StarkEx (4)
SESE работает в облаке и отвечает за пакетирование транзакций, создание доказательства STARK, свидетельствующего об их целостности, и обновление обязательства (хэша) до нового состояния учетных записей после этого пакета. StarkEx отправляет в Ethereum доказательство STARK вместе с обязательством. Система смарт-контрактов StarkEx проверяет доказательство и, если оно принимается, сохраняет обязательство в цепочке. StarkEx сопровождает каждое доказательство, отправленное в Ethereum, списком измененных балансов счетов, также подтвержденных доказательством (также известным как доступность данных в цепочке), тем самым обеспечивая механизм антицензуры, описанный ниже.
Обозреватель пакетов StarkEx (5)
Пакетный обозреватель StarkEx подключается к SESE. Это позволяет просматривать созданные пакеты и транзакции в каждом пакете. Пакетный обозреватель также отображает удобочитаемый формат измененных данных учетных записей, которые StarkEx помещает в цепочку, и которые обозреватель считывает непосредственно из блокчейна. Обратите внимание, что отображаемый набор транзакций требует доверия к проводнику, поскольку его нельзя получить просто из наблюдения за обязательствами и измененными учетными записями, записанными в блокчейне.
Антицензурный механизм
Служить всем или никому
В StarkEx пользователь всегда должен иметь возможность вывести свои очки в блокчейн Ethereum в виде монет ERC-20. В стандартном потоке пользователь отправляет запрос на снятие средств в SESE через API вне сети. Служба API вне сети требует доверия к Оператору (например, доступность системы). Если запрос на снятие средств не обслуживается Оператором, пользователь отправляет запрос на полное снятие средств (подумайте об этом как о подаче жалобы недоверенной стороне) в смарт-контракт StarkEx-Reddit. Это запускает льготный период, в течение которого Оператор может представить доказательство обслуживания запроса на снятие средств. Если это произойдет, система вернется к своей нормальной работе. В противном случае смарт-контракт замораживает систему StarkEx, отказываясь обрабатывать дальнейшие обновления.
Снятие баллов с замороженного StarkEx
Когда система заморожена, пользователи могут требовать свои очки и снимать их по цепочке, демонстрируя смарт-контракту, что они действительно владеют заявленными активами. Обязательство, хранящееся в цепочке, на самом деле является обязательством дерева Меркла для балансов пользователей. Пользователь может вывести средства непосредственно из контракта, предоставив путь аутентификации Merkle от своей учетной записи (лист в дереве) к корню (обязательство сохраняется в цепочке). Доступность данных в цепочке, отправляемая с каждым обработанным пакетом, содержит информацию, необходимую для того, чтобы позволить пользователю создавать такие пути аутентификации (данные транслируются исключительно для этой цели).
Код
Прокси-контракт:
https://etherscan.io/address/0x7737d2afcd437a07dc8d58792344e76b4f8e93b6#code
Контракт на реализацию:
https://etherscan.io/address/0x4126cf347cd0d3aa900041756329de4c319933b0#code
¹ Вкратце, SNARK требует вычислительно тяжелой теоретико-числовой криптографии, в то время как STARK использует экономичную (постквантовую безопасную) симметричную криптографию. См. этот пост для более подробного обзора и сравнения развернутых систем проверки.