Что такое MimbleWimble?
Мало какой криптовалютный проект привлекает к себе столько же внимания, сколько MimbleWimble. Своим названием он обязан заклятию косноязычия из вселенной Гарри Поттера, которое не давало героям говорить на определенные темы. MimbleWimble – инновационный протокол, задача которого заключается в обеспечении для пользователей большей степени приватности и масштабируемости сети.
Впервые он был представлен в IRC-канале #bitcoin-wizards 1 августа 2016 года анонимным автором, скрывающимся за псевдонимом Том Элвис Жедусор (так во французском переводе звучало настоящее имя Волан-де-Морта). Оригинальное предложение было довольно кратким. Основную архитектуру разработчики MimbleWimble позаимствовали у Биткоина, исключив из нее сценарии и добавив конфиденциальные транзакции и концепцию сквозных переводов. В результате они получили поддающийся сжатию и непрозрачный блокчейн.
После первого релиза к работе над протоколом подключились многие инженеры и исследователи. В их числе был и Эндрю Поэлстра, талантливый разработчик из Blockstream, который глубоко изучил проект, осмыслил его идеи и выразил свое мнение в аналитической статье в октябре 2016 года. Тем самым он внес свой вклад в консолидацию первичных идей и выдвинул аргументы в пользу безопасности проекта.
Текущая ситуация
MimbleWimble был создан с целью привнести в Биткоин ряд улучшений с точки зрения масштабируемости и конфиденциальности. Из-за ряда изменений и компромиссов, его включение в сам Биткоин на данный момент невозможно с политической и технологической точек зрения. Впрочем, в будущем вероятна его реализация как сайдчейна Биткоина либо в виде отдельного блокчейна, использующего собственный протокол консенсуса (возможно, через объединенный майнинг), но не собственный токен. Вместо этого, в нем может использоваться валюта Биткоина через двустороннюю привязку.
С учетом того, что в ближайшее время включение проекта в Биткоин маловероятно, обе команды начали работу над автономными реализациями. Анонимный разработчик Игнотус Певерелл, также выбравший себе псевдоним из вселенной Гарри Поттера, возглавляет работу над проектом Grin, имеющим открытый исходный код и не слишком отличающимся от самого Биткоина. Вторая команда работает над инициативой Beam, в большей степени напоминающей Zcash: работа ведется через формально организованную компанию и с использованием вознаграждения для фаундеров, за счет которого финансируются развитие проекта и оплачивается труд разработчиков. Этот проект возглавляет израильский предприниматель Александр Зайдельсон.
Чуть позже мы обсудим решения и компромиссы, характерные для каждой из двух реализаций, а пока давайте рассмотрим концепцию самого MimbleWimble.
Как это работает?
Криптография в целом пользуется доверием, однако в большинстве случаев ее точность носит исключительно эмпирический характер и не доказывается, а доверие приобретается благодаря долгосрочному существованию без взломов. Криптография опирается на предположения о том, что некоторые вычисления сложны настолько, что их выполнение становится практически невозможным. Биткоин же полагается в своей работе на задачи дискретного логарифмирования и криптографического хеширования. Красота его заключается в том, что он включает в себя только относительно простые криптографические допущения, за которыми стоят десятилетия исследований. Эти примитивы и являются задачами дискретных логарифмов и криптографическим хешированием.
Одно из преимуществ MimbleWimble перед Monero или проектами вроде Zcash заключается в том, что он построен на тех же задачах дискретного логарифмирования и предположениях, что и Биткоин. Пока они сохраняют свою силу, Биткоин и MimbleWimble остаются безопасными. MimbleWimble сочетает эти относительно простые криптографические примитивы очень сложными способами, и в результате получается непростая, но элегантная по сути своей система. Чтобы детально разобраться в этом вопросе, нужно хорошо разбираться в криптографии, однако я постараюсь немного приподнять завесу этой тайны.
Криптография основывается на идее о том, что определенные вычислительные операции довольно легко выполнить в одну сторону и практически невозможно в обратном направлении. Задача дискретного логарифмирования является важным тому примером и одним из самых фундаментальных допущений. Она позволяет инновациям вроде криптографических систем с открытым ключом и подписей работать и быть высокоэффективными.
Задача дискретного логарифмирования – это понятие из дискретной математики, которая имеет дело с ограниченным набором значений. Допустимые значения, в свою очередь, ограничены набором дискретных величин или точек, а не действительными числами. Яркий тому пример – булева алгебра, единственными допустимыми значениями в которой являются ноль и единица. Разделы, связанные с наборами целых чисел или целочисленными переменными, также являются примерами дискретной математики.
Как и Биткоин, MimbleWimble опирается на эллиптическую криптографию (ECC), где математические операции определяются в диапазоне, представляющем собой набор точек, которые принадлежат специально выбранной эллиптической кривой. При построении графика она выглядит примерно так:
Автор: Ник Салливан
Этот раздел математики называется теорией групп и является одной из форм абстрактной алгебры. В нем используются такие знакомые всем математические операции, как сложение и вычитание. Точки также можно умножать и делить на целые числа, в этом контексте известные как скаляры, однако результат этих операций будет определяться кривыми, а не привычной нам арифметикой. С помощью стандартных компьютеров точки можно добавлять, вычитать и умножать, однако делить их очень сложно, и на данный момент единственным известным способом решения этой задачи является грубая сила. Возможно, в будущем появление квантовых компьютеров значительно упростит этот процесс, но произойдет это очень нескоро. Именно простота умножения и сложность деления обеспечивают свойство, необходимое для создания мощной криптографии.
В Биткоине и MimbleWimble публичные ключи являются производными приватных. Протокол выбирает точку на эллиптической кривой и обычно называет ее H или G. Такие точки называются генераторными. Приватный ключ представляет собой целое (скалярное) число, выбранное в произвольном порядке из очень большого набора (порядка 2¹²⁸ или больше). Для получения публичного ключа генераторная точка умножается на выбранный скаляр. Именно сложность отмены подобного умножения позволяет подобным системам функционировать. Обратное действие также известно как взятие логарифма, отсюда и название задачи дискретного логарифмирования.
Более подробную информацию об эллиптической криптографии и вышеупомянутой задаче дискретного логарифмирования можно найти в отличном материале (англ.) главы отдела криптографии Cloudflare Ника Салливана.
Криптографическая хеш-функция преобразует массив входных данных произвольной длины в выходную битовую строку установленной длины, называемую хешем или сводкой сообщения. Для того чтобы хеш-функция стала криптографической, выходные данные должны быть абсолютно непредсказуемы и не связаны с входными. Даже самые минимальные изменения в них должны приводить к кардинально иному хешу. Эта непредсказуемость и делает функции безопасными. Крайне важно, чтобы потенциальный злоумышленник не мог найти входные данные, соответствующие хешу другого набора входных данных. Данное качество известно как устойчивость к коллизиям.
Для создания адреса с использованием публичного ключа в Биткоине используется функция RIPEMD-160, а для функции Proof-of-Work – алгоритм SHA-256. В MimbleWimble хеширование используется для создания выходов, которые по сути своей являются криптографическими обязательствами (см. раздел о конфиденциальных транзакциях ниже). В таких поручениях адрес получателя не разглашается, а потрачены они могут быть только при наличии приватного ключа.
В обеих реализациях протокола MimbleWimble хеширование используется как механизм Proof-of-Work-консенсуса. Если выбранные хеш-функции нарушаются, то злоумышленники могут получить возможность предсказуемой генерации небольших хеш-значений, что позволит им перегрузить сеть легкими в обнаружении блоками.
Гомоморфное шифрование – это отличная техника, позволяющая выполнять математические операции с зашифрованными числами. И если это кажется вам сумасшествием, то вы правы, так оно и есть. Корректно выполнять умножение в этой схеме довольно сложно, поэтому полноценные системы гомоморфного шифрования чересчур медленны и их использование связано с огромными издержками. Впрочем, довольно интересных результатов можно добиться и с использованием аддитивно гомоморфных систем. Это значит, что сложение и вычитание в них выполняется с использованием зашифрованных чисел.
Способность проверить, имеют ли результаты двух операций суммирования одинаковые значения, оказалась очень мощным инструментом. Как мы увидим дальше, MimbleWimble во многом полагается на это свойство, чтобы постоянно подтверждать идентичность сумм входных и выходных данных без необходимости знать их точные значения.
Изначально метод конфиденциальных транзакций (CT) был предложен Грегом Максвеллом, криптографом и бывшим CTO проекта Blockstream, с целью обеспечения анонимности транзакций с использованием Биткоина. Он использует схему обязательства Педерсена, в рамках которой значения неизрасходованных выходов в блокчейне Биткоина (UTXO) заменяются криптографическими обязательствами. UTXO представляют собой индивидуальные наборы неизрасходованных средств в блокчейне Биткоина и олицетворяют альтернативный подход к балансам счетов. Криптографическое обязательство связывает пользователя с определенным значением, не раскрывая его. Таким образом, когда (и если) придет время его обнародовать, пользователь не сможет изменить свое мнение касательно этого значения, так как используемым вычислениям будет соответствовать только первоначальная цифра.
Такой подход называется схемой обязательств и состоит из двух этапов: непосредственно самого обязательства и его раскрытия. Самая интересная часть заключается в том, что знать истинное значение нужно только получателям конфиденциальных транзакций. Обязательства Педерсена следуют свойствам аддитивно гомоморфных систем, позволяя сверять соответствие сумм входных и выходных данных. Для подтверждения транзакций не нужно знать сумму передаваемых средств, и это большое преимущество с точки зрения конфиденциальности данных.
Впрочем, у этого метода есть и свои недостатки, сопряженные с использованием отрицательных значений. Создание обязательств, связанных с отрицательными числами, позволило бы генерировать денежные средства путем создания двух результатов – например, 10 BTC и –10 BTC – и последующего игнорирования последнего. Метод конфиденциальных транзакций решает эту проблему с помощью техники, именуемой диапазоном доказательства. Иными словами, это криптографический аргумент, подтверждающий, что обязательство принадлежит определенному диапазону. В рамках конфиденциальных транзакций он подтверждает, что сумма обязательства является положительной, но не раскрывает саму цифру. Диапазон доказательств – крупнейшая часть выходных данных конфиденциальных транзакций. Она играет крайне важную роль, гарантируя, что денежная масса не подвергнется серьезной инфляции.
В MimbleWimble схема конфиденциальных транзакций используется для ведения отчетности в блокчейне проекта. В ней нет видимых значений – только криптографические обязательства и диапазон доказательств. Благодаря гомоморфной аддитивности, общую денежную массу в системе можно постоянно проверять, не раскрывая сумм транзакций.
CoinJoin – еще одна техника, изобретенная Грегом Максвеллом. Благодаря ей, пользователи могут объединять свои транзакции, что делает их граф несколько более запутанным. Граф транзакций показывает, кто является участниками сделки, и может раскрыть информацию о связях между различными пользователями и об истории коина. Иногда используется допущение о том, что расходование в одной транзакции нескольких входов свидетельствует об их принадлежности одному и тому же кошельку. При использовании CoinJoin достаточным количеством людей, это допущение теряет смысл, что является неоспоримым преимуществом с точки зрения конфиденциальности. CoinJoin – хорошая техника, но и у нее есть свои недочеты: она требует взаимодействия между участниками транзакции, поскольку владелец каждого входа должен подписать объединенную транзакцию, чтобы ее подтвердить. Объединить транзакции офлайн или в асинхронном режиме невозможно.
С целью устранения этого недостатка проводились серьезные исследования, призванные обеспечить неинтерактивную работу CoinJoin. Одна из техник подразумевает использование схемы односторонних совокупных подписей (OWAS) и выглядит довольно многообещающе, однако она требует более сложных криптографических допущений, особенно в области сопряженной криптографии. Основатель Ethereum Виталик Бутерин опубликовал пост с объяснением этой темы, в котором отметил, что в сопряженной криптографии используются операции, требующие взаимно однозначного отображения между точками на двух эллиптических кривых. Своими идеями касательно неинтерактивного CoinJoin Максвелл поделился на форуме BitcoinTalk в 2016 году.
MimbleWimble избегает потребности в более сложных допущениях, связанных с безопасностью, полагаясь вместо этого на эллиптические кривые, как Биткоин. Кроме того, система позволяет использовать неинтерактивные комбинации транзакций, и это одно из главных преимуществ проекта. По сути, протокол автоматически объединяет все транзакции на уровне блоков.
Упрощенная схема сквозной функции (серые стрелки использованы исключительно в иллюстративных целях: структура индивидуальных транзакций в MimbleWimble упразднена)
Как мы уже упоминали, MimbleWimble объединяет все транзакции в блоке в одну, при этом связанные с ней структуры и связи упраздняются. Если в транзакции используется свежий (неподтвержденный) вход, то все промежуточные выходы могут быть исключены, и это не повлияет на валидность цепочки.
Стоит отметить, что сквозная функция не полностью устраняет следы промежуточных транзакций: от каждой из них остается так называемое ядро, которое необходимо сохранить, чтобы должным образом валидировать цепочку. Именно эти ядра транзакций позволяют подтвердить право собственности на те или иные входы и обеспечить выполнение вычислений, подтверждающих валидность транзакций и всей цепочки в целом.
Резюме
Благодаря всем вышеперечисленным характеристикам, протокол MimbleWimble обеспечивает работу блокчейна, подходящего для простых платежей. Он использует видоизмененный вариант конфиденциальных транзакций (CT), позволяющий хранить балансы в виде криптографических обязательств, а не публичных записей с суммами. Структура транзакций удаляется внутри каждого блока, и они подтверждаются как единое целое.
Интересно, что адреса в этой системе опускаются, и используемые вместо них выходы могут быть израсходованы только теми, кому известна определенный параметр, использованный при создании обязательства. Этот параметр, известный как «ослепляющий фактор», изначально была включен в систему CT исключительно из соображений конфиденциальности, однако в MimbleWimble она претерпела некоторые изменения и теперь играет роль приватного ключа, обеспечивающего разрешение на расходование выходов. «Ослепляющие факторы» играют важнейшую при аутентификации и не должны разглашаться.
Недостатки MimbleWimble
Протокол MimbleWimble лишен каких бы то ни было дополнительных функций и пригоден только для простых платежей. Из-за упразднения адресов, отправители и получатели должны взаимодействовать в безопасных и конфиденциальных средств, чтобы размещать транзакции в сети. Подобная схема резко отличается от принципов работы систем, основанных на использовании адресов, где деньги можно легко получить в автономном режиме и без использования конфиденциального канала коммуникаций.
Суммы сделок скрыты, и сторонним наблюдателям сложно понять, что именно происходит в сети, если они не располагают соответствующей подробной информацией. Использование сквозной функции также является положительным фактором с точки зрения конфиденциальности, однако в этом смысле оно работает, только если транзакции производятся в пределах одного и того же блока.
Кроме того, сохранять приватность помогает консолидация транзакций внутри блока, и в особенности это касается защиты от потенциальных наблюдателей. Впрочем, если шпионские программы получат данные о транзакциях в индивидуальном порядке, то они смогут составить базу данных, сопоставляющую входы и выходы транзакций, и связать их с IP-адресами. Впоследствии эта информация может быть использована для деанонимизации частей блокчейна.
В обоих релизах MimbleWimble используется протокол Dandelion, изначально созданный для Биткоина и позволяющий обеспечить правдоподобное отрицание причастности участников процесса к сделкам. Он отправляет транзакции на несколько узлов, а затем случайным образом объединяет их перед тем, как отправить майнерам для включения в блок. Эта схема мешает шпионским программам отслеживать происходящее.
С точки зрения конфиденциальности, MimbleWimble может уступать Monero и ZCash. Технология конфиденциальных транзакций (CT) позволяет надежно скрыть суммы переводов, однако граф транзакций останется скрытым, только если пользователь может найти осуществляемые параллельно транзакции, с которыми сможет объединить свои. В этом смысле Monero и ZCash обеспечивают более надежную криптографическую защиту графа транзакций на базовом уровне и не требуют одновременного осуществления переводов.
С точки зрения количества осуществляемых в секунду транзакций, MimbleWimble не предлагает значительных улучшений по сравнению с другими криптовалютами. CT обеспечивают определенные преимущества с точки зрения конфиденциальности, но вместе с тем эта технология требует и серьезных ресурсов. При этом объединение индивидуальных транзакций на уровне блока позволяет устранить часть нагрузки, влияющей на пропускную способность.
Основное преимущество получают новые узлы, которые присоединяются к сети. Вспомните: валидация цепочки осуществляется путем постоянной проверки баланса входов и выходов. Такая схема позволяет исключить соответствующие друг другу входы и выходы, и это не помешает проверке валидности цепочки. Таким образом, когда новые узлы захотят присоединиться к сети, им достаточно будет загрузить только релевантную выборку входов и выходов. Существующие узлы также могут освободить немного дискового пространства, но это сравнительно легко можно сделать и в других криптовалютах.
Идея обобщенной кросс-валидации с использованием меньшего количества данных не является уникальной. Да, используемая в MimbleWimble для решения этой задачи схема довольно элегантна, но Биткоин тоже вполне мог бы адаптировать под себя решения вроде UTXO-обязательств и предложить схожую модель отсечения лишнего.
Сравнение Grin и Beam
1 минута | 1 минута | |
60 гринов / «вечная» инфляция | Ограничена 263 миллионами | |
Нет | 20% коинов, добытых в первые 5 лет | |
Proof-of-Work («цикл кукушки») | Proof-of-Work (Equinash) | |
Rust | C++ | |
4-я итерация | 2-я итерация | |
15 января 2019 года | Декабрь 2018? |
Grin и Beam – две независимых реализации протокола MimbleWimble, запуск которых намечен на конец 2018 года – начало первого квартала 2019-го. Они значительно отличаются друг от друга с точки зрения используемых подходов: Beam имеет структуру продукта или компании, тогда как Grin представляет собой открытый проект, развиваемый силами сообщества. Время записи блока в обеих инициативах аналогично.
Еще одно серьезное различие между проектами заключается в их денежной политике. Некоторые сторонники Grin считают, что его истинное назначение – стать тестнетом для Биткоина. Линейная денежная политика без снижения инфляции может свидетельствовать о том, что команда проекта, вероятно, не преследует цели сделать свой токен дефицитным средством хранения ценности и не возражала бы против более активного его оборота. В программном коде Beam, в свою очередь, прописано жесткое ограничение эмиссии, а токены служат в том числе средством мотивации для команды, и этот выбор в значительно большей мере способствует росту стоимости токенов.
Источник: cryptocurrency.tech