Mina Protocol (MINA) - блокчейн размером 22 КБ

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

Теоретически блокчейны предназначены для того, чтобы пользователи несли ответственность за них.

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

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

Темпы роста блокчейна Биткойн в мегабайтах

Mina Protocol предлагает элегантное решение: замену блокчейна легко проверяемым криптографическим доказательством постоянного размера. Mina значительно сокращает объем данных, которые необходимо загрузить каждому пользователю. Вместо того, чтобы проверять всю цепочку с самого начала, участники полностью проверяют сеть и транзакции, используя рекурсивные доказательства с нулевым разглашением (или zk-SNARK). Затем узлы могут хранить только это доказательство, а не всю цепочку. И поскольку это постоянный размер, Mina Protocol остается доступной и может быть доступна без доверия с любого устройства - даже если она масштабируется до миллионов пользователей и накапливает данные о транзакциях за годы.

Серия зеркал, отражающих друг друга до бесконечности

Но как работают zk-SNARK?

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

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

Сетевые роли и стимулы

В сетях большинства криптовалютных протоколов есть как минимум две роли:

  1. те, кто проверяет каждую транзакцию в сети, часто называемые полными узлами (полные ноды), стейкерами (POS) или майнерами (POW).
  2. те, кто доверяет третьим сторонам проверять транзакции для них, такие как легкие клиенты (ноды).

По мере распространения и использования этих протоколов, проверка блокчейна становится все более дорогостоящей, поэтому все больше участников выходят из первой группы и переходят во вторую. Например, хотя исторически сложилось так, что биткойн в среднем имеет менее 1,5 транзакций в секунду, новый участник сети должен проверить около 500 000 000 транзакций, чтобы обеспечить полную безопасность узла. Эта проблема усугубляется тем, что некоторые протоколы утверждают, что имеют пропускную способность большую чем Биткойн в 10– 100 000 раз и теоретически могут генерировать гигабайты или терабайты данных каждую неделю при пиковых нагрузках.

Mina Protocol (MINA), напротив, имеет постоянные требования к ресурсам: независимо от того, сколько транзакций обработала сеть, пользователи могут полностью проверить текущее состояние с помощью небольшого zkSNARK. Чтобы поддерживать это, у Mina Protocol (MINA) есть три роли в сети, каждая из которых стимулируется к участию различными механизмами.

Доказательство с нулевым разглашением

Доказательство с нулевым разглашением (ZKP) - это криптографический метод, который позволяет одному человеку доказать другому человеку, что он владеет некоторой информацией, не раскрывая информацию проверяющему.
Другими словами, ZKP позволяет выразить уверенность в том, что информация имеется, не раскрывая самой информации.

Доказательства с нулевым разглашением были впервые предложены в 1985 году Шафи Гольдвассером , Сильвио Микали и Чарльзом Ракоффом в их статье «Сложность знаний интерактивных систем доказательства».

The New York Times, 17 февраля 1987 г. © The New York Times

Как работает доказательство с нулевым разглашением

Рассмотрим пещеру, похожую на пещеру Алибаба, содержащую волшебную дверь, для открытия которой требуется секретное слово. Пещера имеет два входа A и B, оба ведут к волшебной двери.

Маруся (доказывающая) и Василий (честный проверяющий)

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

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

Василий ждет снаружи пещеры, пока Маруся входит в пещеру. Маруся выбирает путь А или Б. Василий не имеет права подсматривать, какой путь она выберет. 

Затем Василий входит в пещеру и выкрикивает наугад название пути, по которому он хочет, чтобы она вернулась, A или B.

Теперь возникают два случая:

  • Маруся знает секретные слова: она может вернуться указанным путем, даже если для этого ей потребуется без проблем пройти ворота.

  • Маруся не знает секретных слов: в этом случае она может вернуться только тем путем, по которому пришла. Таким образом, существует 50% вероятность того, что она все еще знает секретные слова, даже если она их не знает.

50% недостаточно, поэтому Маруся и Василий повторяют это упражнение. С каждой итерацией шансы, на то что Маруся не знает секретных слов уменьшаются. После 20 итераций они становятся очень низкими (один на миллион).

Определение доказательства с нулевым разглашением 

ZKP должен удовлетворять следующим свойствам:

  • Полнота. Если утверждение верно, честный проверяющий (то есть тот, кто правильно следует протоколу) будет убежден в этом факте честным доказывающим.
  • Разумность. Если утверждение ложно, никакой обманщик не сможет убедить честного проверяющего в его истинности, за исключением некоторой небольшой вероятности. Возвращаясь к нашему примеру, даже после 20 итераций остается шанс один на миллион, что Маруся (доказывающая) обманула Василия (честный проверяющий).
  • Нулевое знание. Если утверждение истинно, ни один проверяющий не узнает ничего, кроме того факта, что утверждение истинно. В нашем примере Василий не знает секретных слов, чтобы открыть волшебную дверь в процессе проверки. 

Mina Protocol (MINA)

Mina Protocol (MINA) - это новый протокол криптовалюты, который позволяет любому человеку синхронизироваться с сетью [на любом устройстве] с полной безопасностью на уровне узла, при этом загружая всего несколько килобайт данных и выполняя несколько миллисекунд вычислений по сравнению с гигабайтами и гигабайтами в традиционных протоколах криптовалюты.

Что делает это возможным?

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

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

Mina Protocol (MINA)

В основе протокола Mina лежит использование zk-SNARK, которые можно использовать для сертификации любых вычислений.

zk-SNARK функционируют как неподдельные сертификаты, чтобы доказать, что вычисление было выполнено правильно, без подтверждения всего вычисления. Как уже упоминалось, мы можем взять любое вычисление, такое как проверка транзакций в блоке, и создать на его основе SNARK. Этот SNARK доказывает точность истории транзакций блока без необходимости отображать все транзакции. Это эффективно уменьшает размер блока до одного SNARK (~ 1 КБ).

SNARK проверяет ВСЕ правила консенсуса.

Это обеспечивает:

  • Сделки подписаны.
  • Они действительны.
  • Правила консенсуса (общая хеш-мощность + сила цепочки для PoW и переменная случайная функция / другие правила для PoS).

Если SNARK не сгенерирован честно, он недействителен. Любой в сети сможет мгновенно увидеть это на чем-то столь же «легком», как Raspberry Pi или смартфон.

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

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

Очень реальный разговор между процессором Mina и конечным пользователем:

«Привет, проверяющий / конечный пользователь! Я создал сертификат, чтобы вы могли легко проверить историю транзакций блока. Этот процесс требовал больших вычислительных мощностей, поэтому я за это вознагражден. Вы можете проверить точность этого доказательства, проверив SNARK, что займет всего несколько миллисекунд и несколько килобайт свободного места. Таким образом, вам не придется загружать сотни гигабайт для проверки цепочки блоков! » - Процессор SNARK.
«Большое спасибо, процессор. Я проверю этот сертификат! Поскольку он такой маленький, мне не нужно доверять кому-то еще для проверки блокчейна для меня, и я наконец могу запустить проверяющий узел и кошелек на чем-то вроде моего смартфона. Спасибо! Теперь жизнь так прекрасна ». - Конечный пользователь.

Замена каждого блока на SNARK не является полным решением.

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

Как это исправить?

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

Несколько сертификатов / SNARK, каждый из которых проверяется конечным пользователем

Рекурсивная композиция SNARK в Mina

Как упоминалось ранее, мы можем цепь эти сертификаты вместе в рекурсивной композиции и позволяют blockchain оставаться размер постоянной от ~ 20kb (SNARK + Merkle путь).

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

Несколько сертификатов / SNARK помещены в один сертификат / SNARK

Чтобы упростить эту идею, допустим, у вас есть:

  • Один сертификат, подтверждающий, что вы можете перейти из блока 0 в блок 2.
  • Дополнительный сертификат, подтверждающий, что вы можете перейти из блока 2 в блок 4.

Затем можно объединить эту SNARKs в один единый SNARK, который гласит, вы можете перейти от блока 0 до блока 4.

Новый SNARK / сертификат остается ~ 1 КБ. В более широком масштабе вы можете создать сертификат для всей истории транзакций блокчейна, размер которого останется неизменным - несмотря на количество сертификатов, «застрявших» в самом последнем SNARK.

Узел проверки в Mina будет состоять из:

zk-SNARK (1kB), который доказывает справедливость на всю прошлую историю blockchain и Merkle корневого пути текущего состояния (20kb); вместе доказывая действительность баланса пользователя. Все это занимает всего миллисекунды для синхронизации.

Конечный пользователь проверяет SNARK текущего состояния, который включает все прошлые сертификаты, а также путь Меркла. Все это вместе позволяет пользователю проверить свой баланс

Приложения, децентрализация и масштабируемость

Приложения

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

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

Любое устройство сможет запускать узел проверки в браузере или на обычных телефонах (да, на вашей старой нерушимой Nokia).

Децентрализация

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

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

Масштабируемость

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

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

Чтобы поддерживать это, у Mina Protocol (MINA) есть три роли в сети, каждая из которых стимулируется к участию различными механизмами.

Верификаторы

Мы ожидаем, что подавляющее большинство участников сети будут способны верифицировать текущие состояния. Поскольку Mina Protocol (MINA) использует рекурсивные zk-SNARK для непрерывного подтверждения достоверности состояния, полная безопасность узла достигается простой загрузкой zk-SNARK, которая примерно составляет нескольких сотен байтов и для проверки требуется несколько миллисекунд вычислений. 

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

Производители блоков

Производители блоков похожи на майнеров или стейкеров в других протоколах. Они стимулируются в форме вознаграждений за блок в виде коинбейз транзакций, а также комиссиями в сети, выплачиваемыми пользователями за их транзакции. Важно отметить, что производители блоков не заинтересованы в «угрозе урезания», поскольку Mina Protocol (MINA) использует Ouroboros. В дополнение обычному стейкингу, отдельные лица могут делегировать свою долю другому производителю блоков. Это позволяет делегату стейкать - но не отправлять транзакции от другого имени.

Как правило, производители блоков выбирают, какие транзакции включать в следующий блок. Очевидно, они заинтересованы включать транзакции с самой высокой комиссией. Однако, чтобы блокчейн оставался сжатым, производители блоков несут дополнительную ответственность: для каждой транзакции, которую они добавляют в блок, они должны создать снарк для эквивалентного количества ранее добавленных транзакций. Если они этого не сделают, их блок не будет соответствовать правилам консенсуса и будет отклонен другими узлами. Этот факт удобно представить как очередь транзакций, например, производитель блока хочет добавить 10 транзакций в конец очереди (они могут требовать комиссионные за транзакции), он должен создать снарк 10-ти транзакций в начале очереди. Они могут сами производить эти SNARK и или выбрать их на маркетплейсе, которому способствуют другие специализированные участники сети, Снаркеры (Снарк воркеры).

Снаркеры

Снаркеры - участниками сети, которые создают zk-SNARK, проверяющие транзакции. Они компенсируют свою работу размещением комиссий, называемые заявками в маркетплейсе и, если их SNARK и используются в блоке, то производитель блока выплачивает эти комиссии из общей суммы комиссий за транзакции в блоке.

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

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

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

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

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

Получите полную безопасность на уровне узла практически на любом устройстве , загрузив один SNARK, который действует как сертификат для всей цепочки блоков и конечного пути Меркла. Используя рекурсивную композицию SNARK, размер блокчейна может оставаться ~ 20 КБ. Наличие широкой сети проверяющих узлов увеличивает децентрализацию, поскольку все больше конечных пользователей получают возможность участвовать в проверке сети.