MimbleWimble: история, технология и майнинг

В январе этого года были запущены две новые криптовалюты, основанные на протоколе MimbleWimble и ориентированные на конфиденциальность пользователей. В обеих сетях применён ряд компромиссных проектных решений, при этом авторы Grin сделали акцент на «справедливом запуске» с распределением по принципу «снизу вверх», а BEAM в своей организационной структуре пошли по пути Zcash и других подобных ему проектов.

Исторический обзор MimbleWimble, Grin и BEAM

Техническая документация MimbleWimble, блокчейн-протокола, ориентированного на взаимозаменяемость койнов, конфиденциальность и масштабируемость, была впервые опубликована в июле 2016 года в IRC-канале #bitcoin-wizards пользователем под псевдонимом Tom Elvis Jedusor (настоящее имя Волан-де-Морта во французском переводе книг о Гарри Поттере). Автор предлагал новый способ комбинирования транзакций для повышения приватности в публичном блокчейне.

Документация Jedusor(а) была основана на ещё одной анонимно опубликованной whitepaper протокола с односторонними агрегированными подписями, требовавшего также использования нового криптографического примитива, pairing crypto, к которому академические круги относились настороженно. Помимо этого, автор MimbleWimble черпал вдохновение в Confidential Transactions и CoinJoin, двух направленных на конфиденциальность предложениях от разработчика Bitcoin Core Грегори Максвелла.

В оригинальной документации MimbleWimble использовалась та же эллиптическая криптография, что и в Биткойне, что привлекло внимание многих исследователей Биткойна, включая Эндрю Поэлстра из Blockstream, математика и специалиста в области прикладной криптографии, который внёс в белую книгу MimbleWimble ряд улучшений и опубликовал её «уточнённую» версию в октябре 2016 года. Поэлстра уже долгое время занимался проблемами приватности, работая над реализацией конфиденциальных транзакций (Confidential Transactions) и «скриптов-без-скриптов» (Scriptless Scripts) в Биткойне.

Первоначально предполагалось, что MimbleWimble может быть либо интегрирован в Биткойн в качестве обновления, либо существовать как его сайдчейн, но Питер Вуйле, соучредитель Blockstream и разработчик Bitcoin Core, в подкасте от 2016 года обратил внимание на проблемы, с которыми может быть связана интеграция этого протокола как обратно-совместимого изменения:

«Введение в Биткойне поддержки MimbleWimble через обновление с обратной совместимостью было бы очень непростым упражнением. Это, может быть, и не невозможно, но очень тяжело. Я думаю, что, если и вести речь о таких экспериментах, то это уместнее делать на отдельной либо боковой цепочке (сайдчейне). В случае сайдчейна мы бы обошлись без создания новой валюты, но это была бы отдельная цепочка. У MimbleWimble есть свои слабые стороны. В частности, у него нет скриптового языка… Работать со скриптовым языком было бы намного удобнее, но это порождает проблемы с приватностью. В MimbleWimble этот компромисс изначально решён иначе: вы получаете очень хороший уровень приватности, но ценой потери других функций».

MimbleWimble исключает использование скриптового языка, необходимого для поддержки таких инноваций, как платёжные каналы (например, Lightning Network) и атомарные свопы между разными блокчейнами. (И то, и другое было реализовано в Биткойне в 2017 году.) С тех пор появились две отдельные имплементации протокола MimbleWimble, обе с различными подходами в отношении комьюнити, этоса, финансирования, и существенными техническими различиями.

Первая имплементация, Grin, ставшая уже синонимом MimbleWimble, была выпущена всего через несколько дней после публикации меморандума Поэлстры. Некто под псевдонимом Ignotus Peverell (ещё один персонаж из книг о Гарри Поттере), создал на Github проект ignopeverell/grin, в котором представил частичную реализацию протокола на языке Rust, сопроводив её своим видением этоса проекта.

В марте 2017 года Peverell опубликовал техническое введение к Grin и MimbleWimble, которое сейчас упоминается как основное описание спецификации протокола. Сегодня проект по-прежнему поддерживается группой преимущественно анонимных разработчиков, некоторые из которых, продолжив традицию, взяли себе псевдонимы из вселенной Гарри Поттера (в том числе Luna Lovegood, Seamus Finnigan и Percy Weasley). Первая тестовая сеть Grin была запущена в ноябре 2017 года, а 15 января 2019 года произошёл запуск основной сети.

Вторая имплементация протокола, BEAM, – это проект, начатый в марте 2018 и официально анонсированный ровно через год после публикации оригинальной белой книги MimbleWimble. BEAM был представлен в отдельной whitepaper (наряду с документацией полнофункционального майнингового узла и клиентского кошелька) и имел более формализованную структуру, похожую на Zcash, что резко контрастировало с анархическим и открытым духом Grin. Возглавляет команду BEAM израильский предприниматель Александр Зайдельсон.

С ясно определённой управленческой и инженерной командой, предпродажей токенов и пошлиной в адрес фаундеров, основатели BEAM избрали совершенно иной подход по сравнению со своим прямым конкурентом, Grin. Помимо создания вокруг проекта формальной структуры, команда BEAM приняла ряд отличных от Grin технических решений, в том числе в отношении монетарной политики и алгоритма хеширования (подробнее об этом ниже).

BEAM был запущен в начале января 2019 года со значительным преимуществом в скорости хеширования.

Понимание UTXO-модели Биткойна и криптографических примитивов

Примечание: Приведённое описание ни в коем случае не претендует на роль полноценного введения в Биткойн или криптографию в целом, но способно предоставить неинформированному читателю достаточный контекст для общего понимания темы.

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

И в Grin, и в BEAM, в отличие от других основанных на счетах криптовалют (таких как Ethereum), используется та же модель непотраченных выходов транзакций (UTXO), что и в Биткойне.

Визуализация UTXO-модели Биткойна с Bitcoin.org

При отправке 90 тыс. сатоши посредством двух новых транзакций TX1 и TX2 генерируются два выхода (40 тыс. и 50 тыс. сатоши соответственно) на адрес с определённой отправителем суммой.

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

Самое главное, магия криптографической хеш-функции заключается в асимметрии между требованиями к атакующей и защищающейся стороне. Что это значит? Хешировать вход довольно легко, но при этом получить по профилю исходный вход очень, очень сложно – на это не хватит человеческой жизни даже со всеми суперкомпьютерами мира. Это хорошее решение: большинство принятых в мире гипотез об интернет-безопасности, от паролей до открытых/секретных ключей, строятся на хешировании и эти допущения будут оставаться актуальными до тех пор, пока не появятся существенно более мощные квантовые компьютеры.

Диаграмма криптографической хеш-функции. (: Wikipedia)

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

Однако эти свойства предполагают наличие существенного компромисса: Транзакции Биткойна нельзя назвать приватными, поскольку вся эта информация доступна внешнему наблюдателю в не зашифрованном виде (хоть данные и хешируются). И хотя в распоряжении комьюнити есть возможность не использовать адреса повторно, а также сервисы микширования (в которых биткойны «перемешиваются» и возвращаются вам со «свежими» UTXO), появлялись и инициативы по обеспечению более совершенных способов защиты пользовательских данных, такие как CoinJoin и Confidential Transactions.

Как MimbleWimble улучшает приватность

MimbleWimble вносит несколько изменений в UTXO-модель Биткойна, чтобы сделать возможной поддержку приватных транзакций, основанных на Confidential Transactions и CoinJoin. Из документации:

  • Нет адресов.
  • Нет сумм транзакций.
  • Две транзакции, одна расходующая другую, могут быть объединены в блок, чтобы сформировать единственную транзакцию, удалив всю промежуточную информацию.
  • Первые два пункта объясняются использованием Confidential Transactions, предложения бывшего технического директора Blockstream, в котором для усовершенствования UTXO-модели Биткойна используется криптографический примитив под названием «схема обязательства Педерсена«. (Сегодня это решение используется также в Blockstream Liquid, рабочем сайдчейне Биткойна.) С технологией конфиденциальных транзакций, сумму транзакции могут видеть только её участники. В теории это звучит здорово, но есть одна проблема: нужно обеспечить другим пользователям системы возможность проверить, была ли транзакция валидной, чтобы не позволить кому бы то ни было тратить больше денег, чем у него есть.

    Как это делается? «Криптографическое обязательство» звучит несколько причудливо, но означает это следующее: “Я подтверждаю, что знал нечто, прежде чем это хешировать, потому что я не могу отменить хеширование, чтобы раскрыть то, что я знал”. Даже вне криптовалют обязательства используются людьми, например, для подтверждения публичных прогнозов (например, публичное предсказание Ника Картера от 1 января 2018 о развитии проекта в течение наступившего года). Первого января 2019 Ник раскрыл список в plain text, и люди могли легко проверить, соответствует ли этот список тому, что был хеширован год назад.

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

    Но что мешает кому-то принять два входа (например, -100 BTC и 100 BTC), используя 100 BTC как вход в конфиденциальной транзакции и проигнорировав -100 BTC? В Confidential Transactions это решается через использование ещё одного криптографического примитива, называемого range proof (доказательство диапазона). Это доказательство обеспечивает точность и корректность общего объёма денежной массы, гарантируя, что все входы в системе находится в определённом диапазоне (в данном случае, является положительным числом).

    Confidential Transactions используется во всех имплементациях MimbleWimble для сокрытия адресов и сумм транзакций.

    Что касается третьего пункта из указанных в начале этого раздела, то «удаление всей промежуточной информации» происходит благодаря использованию CoinJoin, также созданного Грегори Максвеллом, и это относится к графу транзакций сети. Хотя сокрытие информации, явным образом раскрываемой в транзакции, имеет принципиальное значение и достигается использованием Confidential Transactions, история транзакций всё ещё содержит большое количество неявной информации, позволяющей обладателю достаточных вычислительных ресурсов легко визуализировать и установить соответствия между различными транзакциями сети. Пример графа этого типа представлен ниже.

    Пример визуализации Биткойн-транзакции любезно предоставлен Бенедиктом Колером

    Это не что-то беспрецедентное – такие стартапы, как Elliptic и Chainalysis, используют такие формы блокчейн-экспертизы для выявления мошенничества и «незаконных» транзакций (связанных с «отмыванием» денег или с операциями на чёрных рынках), получая хорошее финансирование от пользователей в диапазоне от криптовалютных бирж (которые используют это в целях комплаенс-контроля) до правительственных организаций. По причине простоты отслеживания сетевого графа Биткойна, для транзакций с высокими требованиями к приватности он остаётся неудачным выбором.

    Хотя представление аргументов в пользу полной анонимности расчётов выходит за рамки этой статьи, проблема приватности транзакций не сводится только к сложностям при продаже наркотиков и отмывании денег: легко отслеживаемый сетевой граф позволяет специалистам с течением времени приходить ко всё более точным и весомым выводам о транзакциях в сети. Сохранение приватности на этом направлении остаётся важной задачей для всех прото-киберденег.

    В CoinJoin входы от нескольких пользователей объединяются в так называемое анонимное множество и перемешиваются, чтобы затруднить отслеживание графа транзакций. Это показано на рисунке ниже, где входы Алисы и Боба на 10 и 20 BTC объединяются в одну CoinJoin-транзакцию.

    Диаграмма CoinJoin любезно предоставлена Artncase

    Поддержка CoinJoin реализована в некоторых биткойн-кошельках (как, например, Wasabi Wallet) и «микшерах» (как TumbleBit), чтобы обеспечить конфиденциальность Биткойн-транзакций. Но этого недостаточно. Анонимное множество этих продуктов, как правило, очень невелико, каждая транзакция насчитывает всего несколько участников и получение средств обычно занимает значительное время. Исследователи даже сумели деанонимизировать большинство транзакций в небольших анонимных множествах.

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

    Здесь вы можете задаться вопросом: если мои входы, выходы и суммы транзакций скрыты, а граф транзакций существенно запутан, остаются ли ещё способы для мотивированных третьих лиц отследить мои действия? Последним потенциально уязвимым местом остаётся способность отдельных узлов деанонимизировать транзакции по IP-адресу.

    Когда из кошелька производится биткойн-транзакция, она транслируется набору узлов, которые затем быстро передают её другим таким же узлам – это называют gossip-сетью Биткойна. (Gossip в переводе с англ. – сплетни, слухи). Отдельные транзакции транслируются частями, и до того, как они будут объединены в блок, актор, желающий их проанализировать, может сделать это, записывая транзакции и IP-адреса, с которых они первоначально отправляются, рассчитывая использовать эту информацию для получения сведений о чьей-то активности.

    Решение, предлагаемое MimbleWimble, основано на другом предложении по совершенствованию, изначально предназначавшимся для Биткойна, Dandelion, разработанным командой исследователей из Иллинойсского университета в Урбане-Шампейне. Оно обсуждается в качестве публичного предложения по совершенствованию Биткойна с 2017 года.

    Цель Dandelion (англ. одуванчик) заключается в сокрытии исходного IP-адреса транзакции. Лепестки цветка одуванчика имеют один стебель до тех пор, пока одуванчик не расцветёт полностью. Аналогичным образом, в Dandelion трансляция биткойн-транзакции в сеть происходит в два этапа: 1) фаза “стебля” (в которой она скрыта) и 2) фаза “пуха”, в которой она транслируется.

    Сначала транзакция транслируется на один узел, который передаёт её другому такому же узлу, и так до тех пор, пока не будет сделано достаточно «шагов» от исходного узла – тогда транзакция распространяется по всей gossip-сети. Схематичная визуализация этого процесса представлена на картинке ниже: сначала транзакция передаётся за один шаг на один узел (фаза 1), прежде чем после нескольких шагов распространиться по всей сети (фаза 2).

    Изображение взято из презентации Джулии Фанти «Presenting Dandelion»

    Сочетание таких элементов, как Confidential Transactions, CoinJoin и Dandelion, позволяет имплементациям MimbleWimble избавиться от таких традиционных идей, как адреса: обязательства людей, генерирующих транзакцию, служат той же цели, для которой в сети Биткойна при выполнении транзакции используются открытый и секретный ключи. Это позволяет MimbleWimble предложить существенно более высокий уровень конфиденциальности по сравнению с Биткойном и обеспечить полностью приватную криптовалюту.

    Различия между BEAM и Grin

    Хотя и Grin, и BEAM представляют собой имплементации протокола MimbleWimble, различия между ними носят не только организационный, но и технический характер:

    • Основная имплементация Grin написана на языке Rust, а основная имплементация BEAM – на C++.
    • Хотя оба проекта стремятся обеспечить устойчивость к ASIC-майнингу, их различает избранная стратегия и подход к выбору алгоритма хеширования (см. ниже).
    • Команда Grin OS, представившая обширный анализ неизбежных компромиссов, предпочла придерживаться принципов управления проекта с открытым исходным кодом вместо создания формального фонда. К издержкам такого подхода можно отнести финансирование – основным источником финансирования для Grin являются добровольные пожертвования. Команда BEAM, помимо того, что получает 20% от награды за блок (как в Zcash), подняла раунд частного финансирования.
    • В монетарной политике Grin написано: «новый токен grin создаётся каждую секунду», что подразумевает постоянную инфляцию предложения (хоть и асимптотически приближающуюся к 0%). Это мотивировано идеологическими различиями с дефляционными криптовалютами, такими как Bitcoin. В частности, команда Grin убеждает пользователей не заниматься накоплением токенов сети. BEAM же, напротив, имеет фиксированный объём эмиссии: ~263 млн монет.
    • В Grin предусмотрен режим частичной синхронизации узлов сети с несколькими компенсационными стратегиями по снижению риска на случай ошибок. Это позволяет узлам Grin синхронизировать с сетью лишь небольшую часть от того объёма данных, что необходим для синхронизации полного узла (поддержания работы которых требует BEAM).
    • BEAM предлагает традиционные конфиденциальные транзакции (подписанные с помощью Bulletproof-подписей). Кроме того, BEAM предложили проектное решение поддающегося аудиту кошелька. Встроенная функция «Audibility» позволяет бизнесам или другим пользователям генерировать уникальные пары публичного и приватного ключей, которые позволяют третьим сторонам верифицировать средства или любые мета-данные, передаваемые с транзакцией (например, для документа или любого другого цифрового актива). Команда Grin, со своей стороны, явным образом предпочла не расширять имплементацию за пределы основных функций.

    Ситуация с майнингом

    Ситуация с майнингом для обеих сетей пока остаётся не вполне ясной в силу их молодости.

    Команда BEAM выбрала для своей сети модифицированный алгоритм Equihash PoW (Equihash 150,5 с дополнительным изменением канала передачи данных, направленным на противодействие ASIC-майнерам). Это, в сочетании с периодическими хард-форками, должно защитить сеть от ASIC-майнеров.

    Grin для начала использует Cuckoo Cycle, новую альтернативную Proof-of-Work-систему, разработанную в 2015 году Джоном Тромпом. Хотя этот алгоритм направлен на противодействие ASIC-майнингу, команда Grin убеждена в том, что потенциальный приход в сеть ASIC-майнеров неизбежен и это является лишь вопросом времени. Решение проблемы ASIC-майнинга появилось в сентябре 2018 года в виде использования двух алгоритмов, один из которых оптимизирован для ASIC (Cuckatoo31+), а другой (Cuckaroo29) призван сохранить конкурентоспособность GPU-майнинга. При этом размер награды за PoW-майнинг ребалансируется между двумя этими алгоритмами каждые 24 часа.

    GPU первого выбора среди ранних майнеров в обеих сетях, похоже, является Nvidia GTX 1080 TI (графический процессор, используемый для майнинга и во многих других блокчейнах).

    Статистические данные BEAM за первый период, похоже, указывают на доминирование двух основных майнинговых пулов: sparkpool.com (мультивалютный майнинговый пул), с ~69% от хешрейта, и bepool.org, с ~30% от хешрейта сети. Вместе эти два пула обеспечивают 1,5 млн решений в секунду. Конкретное количество решений в секунду, которое может обеспечивать оборудование, зависит от используемого майнера (и его оптимизации), но при том, что OpenCL майнер выдаёт ~10 решений/сек., а на основе CUDA – ~15–20 решений/сек., можно предположить, что безопасность сети в настоящее время, вероятно, обеспечивают 100.000+ GPU-майнеров.

    Рынок майнинга Grin в большей мере институциализирован, с более чем десятком частных майнинговых предприятий, управляемых широким спектром криптофондов, семейными предприятиями и просто состоятельными людьми. Самостоятельные майнеры имеют возможность присоединиться к пулам. На этот случай сообществом проекта предусмотрено две опции: Grinmint (управляемый BlockCypher) и MWGrinPool.com.

    С майнингом пока ещё есть некоторые трудности: майнеры для других GPU (например, для AMD) менее доступны, программное обеспечение пулов сложно назвать надёжным, инфраструктуры кошельков с мультиподписью ещё не создано, а сведения о проводимых оптимизациях до участников рынка не доходят либо доходят с запозданием. Это предполагает асимметричное распределение существенной информации в пользу ранних майнеров, которых отличает также более высокий уровень технической грамотности. Некоторые компании, как 713.grinbox, пытаются построить более совершенную инфраструктуру для майнинга Grin.

    Заключение

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

    Если даже использование кем-либо инструментов повышения приватности (как, например, биткойн-микшеров) может внушить правоохранительным органам подозрения, полностью и по умолчанию приватные валюты дают пользователям возможность для обоснованного возражения относительно наличия у них каких-либо преступных намерений. И даже если им нечего скрывать, это важное различие.

    Grin и BEAM привносят на рынок два очень разных подхода. Несмотря на поверхностное сходство, они отличаются приблизительно во всём, кроме того, что обе криптовалюты построены на основе протокола MimbleWimble. На то, чтобы узнать, какой из этих подходов в результате возьмёт верх, понадобится несколько месяцев, если не больше. Хотя «победитель» ещё не определён, запуск основных сетей этих двух проектов станет проверкой для многих моментов, имеющих большое значение для криптоэнтузиастов:

    • Могут ли открытые и безупречные с точки зрения концепции распределённого управления проекты, при прочих равных, успешно конкурировать с более формально финансируемыми (и, вероятно, более финансово устойчивыми) проектами?
    • Насколько большое значение на ранних этапах имеет качество пользовательского интерфейса (где у BEAM, похоже есть явное преимущество) по сравнению с прочими факторами (как, например, сила бренда, где преимущество на стороне Grin)?
    • Возможно ли для маргинальной приватной криптовалюты, даже новой, набрать обороты в условиях высокой конкуренции (включая Zcash, Monero и вносимые в Биткойн усовершенствования)?

    Ближайшие год или два будут интересным временем для приватных криптовалют.

     

    Подписывайтесь на BitNovosti в Telegram!

    Делитесь вашим мнением об этой статье в комментариях ниже.

    Источник

    Rating: 5.0/5. From 1 vote.
    Please wait...

    Ответить

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.