MimbleWimble в Litecoin – как это будет выглядеть?

Изучаем обновление (LIP 0002 и LIP 0003) для Litecoin с поддержкой MimbleWimble, развернутое пока в тестовой сети.

На 30 сентября был намечен запуск реализации MimbleWimble в тестовой сети Litecoin – эксперимента с новым интересным протоколом, потенциально способным повысить взаимозаменяемость токенов и масштабируемость сети, поддержка которого реализована через блоки расширения (extension blocks). MimbleWimble (далее, для краткости, MW) – перспективный протокол, поскольку он привносит компонент, которого недостает многим криптовалютам, таким как Bitcoin или Litecoin: взаимозаменяемость цифровых монет.

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

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

Хотя владение секретными ключами по-прежнему гарантирует право собственности на выходы транзакций, доказательство владения секретным ключом в MW достигается не через непосредственное подписание транзакции. Оно достигается с помощью методов, подобных CoinJoin и Confidential Transactions. Владельцы входа и выхода формируют мультиподпись для подписания каждого блока, устраняя необходимость в адресах, скрывая суммы отдельных транзакций и при этом значительно повышая масштабируемость в сравнении с существующими распределенными регистрами на основе UTXO (где UTXO расшифровывается как Unspent Transaction Output, неизрасходованный выход транзакции).

Что такое MimbleWimble?

MimbleWimble (MW) – это сравнительно новый протокол, повышающий не только конфиденциальность, но и масштабируемость блокчейнов. Название протокола происходит из серии книг о Гарри Поттере; «Мимбл вимбл» – это заклятие, мешающее противнику правильно произнести свои заклинания (известно также как «заклятие косноязычия»).

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

Как и Биткойн, этот протокол был опубликован неизвестным автором под псевдонимом Tom Elvis Jedusor (настоящее имя Волан-де-Морта во французском переводе). Псевдонимы из вселенной Гарри Поттера вообще оказались распространены среди разработчиков, внесших свой вклад в развитие протокола, а первую реализацию MW, Grin, запустил Игнотус Певерелл (у Роулинг – открыватель плаща-невидимки).

Ниже приведена краткая хронология истории протокола MimbleWimble (подробнее о ней мы писали здесь):

Краткая история MimbleWimble

  • 2 августа 2016 г.: Tom Elvis Jedusor постит в IRC .onion-ссылку на текстовый файл, озаглавленный MimbleWimble и датированный 19 июля.
  • Август 2016: Эндрю Поэлстра и Брайан Бишоп проверяют файл и повторно выкладывают статью. В последовавшем обсуждении другие разработчики дали MW положительную оценку и признали достоинства протокола. Эндрю Поэлстра и Ави Кулкарни разработали версию протокола с улучшенным масштабированием.
  • 8 октября 2016 г.: Эндрю Поэлстра выпускает статью о масштабировании Биткойна.
  • 20 октября 2016 г.: человек под псевдонимом Игнотус Певерелл в IRC анонсировал проект на основе MW, названный Grin.
  • Март 2017: Игнотус Певерелл опубликовал на Github техническое введение к MW и Grin.
  • Ноябрь 2017: запущена тестовая сеть проекта Grin.
  • Март 2018: релиз второй версии тестнета Grin, а также появление еще одной реализации MW, BEAM.
  • 15 января 2019: запуск основной сети Grin, первой реализации MW.
  • 17 января 2019: релиз основной сети BEAM.
  • 20 октября 2019: публикация предложений (LIP 0002 и 0003) по добавлению MW в Litecoin через блоки расширения.
  • 30 сентября 2020: активация MW с блоками расширения в тестовой сети Litecoin.

MW предлагает, возможно, лучший компромисс между конфиденциальностью и масштабируемостью в сравнении с альтернативными решениями, такими как Confidential Transactions и ZK-STARKs.

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

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

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

Как работает MimbleWimble?

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

Для передачи BTC, входы транзакций создают выходы, которые позволяют пользователю тратить средства, ассоциируемые с теми адресами, секретный ключ от которых он контролирует. При отправке 5 ₿, если у вас нет входа, содержащего ровно 5 ₿, ваш кошелек собирает достаточное количество входов, чтобы отправить бóльшую сумму – скажем, 7 ₿ – и получить сдачу в размере 2 ₿. Все данные транзакций являются общедоступными: в блок-эксплорере можно увидеть использованные входы, информацию о выходах и сумму для каждой конкретной транзакции.

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

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

В CT используется криптографический примитив под названием «схема обязательств Педерсена», где сумму транзакции могут видеть только ее участники. Вместо открытия для проверки всего набора UTXO, схема гарантирует, что суммы входов и выходов являются достоверно равными.

Входы и выходы транзакций можно представить в виде следующей формулы:

C = rG+vH

где C – это обязательство Педерсена, G и H – точки на эллиптической кривой, v – значение UTXO, а r – ослепляющий фактор, играющий роль секретного ключа для обфускации (запутывания) значения UTXO. Вместе rG представляет собой открытый ключ.

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

Например, транзакция с двумя входами и одним выходом может быть представлена следующим образом:

  • входы = (G+2H) + (2G+4H)
  • выход = (7G+3H)

Транзакция проверяется и валидируется, гарантируя, что (7G + 3H) — (3G + 6H) = 4G 3H = 0, и в результате мы получаем достоверное знание, что никаких новых денег в обход правил протокола в рамках транзакции создано не было.

Чтобы потратить выход в MW, необходимо знать случайный коэффициент ослепления r и значение выхода v. Значение r известно только отправителю транзакции, и поэтому никто другой этот выход потратить не может. Помимо этого, используется также технология rangeproof («доказательство диапазона»), гарантирующая, что общее количество монет в сети не превышает заданного правилами протокола. В двух словах, rangeproof являются доказательствами того, что сумма выходов (хоть и они и зашифрованы) не является отрицательным значением или таким значением, которое даст отрицательный результат при сложении с другими значениями.

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

Помимо входов и выходов, блоки MW имеют также ядро, которое служит двум целям:

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

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

MimbleWimble в Litecoin – как это будет выглядеть?

MimbleWimble в Litecoin – как это будет выглядеть?

Графическое представление CoinJoin. Источник: Wikipedia.

На основе истории транзакций прозрачного блокчейна наблюдатели могут построить граф транзакций, восстановив связи между ними, чтобы собрать информацию о пользователях. Для обхода этой проблемы разработчик Грегори Максвелл в 2013 году представил CoinJoin. Однако проблема с Биткойном заключается в том, что опция CoinJoin является исключительно добровольной, и в результате анонимное множество, как правило, получается небольшим.

Однако MW – это в том числе и включение CoinJoin по умолчанию. Одно из следствий этого заключается в том, что две валидные MW-транзакции могут быть объединены в одну, как это показано на рисунке ниже.

MimbleWimble в Litecoin – как это будет выглядеть?

MimbleWimble в Litecoin – как это будет выглядеть?

Рисунок 1: MimbleWimble-транзакции состоят из входов, выходов и ядер. Любые две валидные MimbleWimble-транзакции могут быть объединены в одну.

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

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

MimbleWimble в Litecoin – как это будет выглядеть?

MimbleWimble в Litecoin – как это будет выглядеть?

Рисунок 2: входы и выходы могут быть алгебраически сокращены, чтобы удалить промежуточные шаги и уменьшить размер блокчейна.

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

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

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

Это делает запуск ноды Биткойна сложнее и дороже в сравнении с MW. Новый участник MW-блокчейна может скачать все транзакции и объединить их вместе. За исключением coinbase-входов, создающих новые монеты, нет необходимости верифицировать каждый инпут, поскольку каждый вход является выходом предыдущей транзакции.

Все в блокчейне стирается, за исключением:

  • coinbase-входов – фиксированного количества монет на блок, добавляемых к имеющейся денежной массе;
  • непотраченных выходов, дающих нам информацию о конечном состоянии системы;
  • ядер транзакций.

До сих пор мы говорили об отличиях MW-регистров от UTXO-модели и о способах, применяемых в MW для обеспечения большей приватности и эффективности. Спецификации MW, используемые в Litecoin, описаны в LIP 0003. Но Litecoin не будет заменять свой UTXO-блокчейн этим новым протоколом. То, как именно активируется в Litecoin поддержка MW, объясняется в LIP 0002: это реализуется через блоки расширения, о которых я расскажу ниже.

Что такое блоки расширения?

Блоки расширения (далее, для краткости, БР) были предложены Джонсоном Лау в 2017 году как способ ввода и вывода средств из дополнительного блока с использованием специальных опкодов (операционных кодов), построенных на основе предыдущего предложения Лау от 2013 года.

БР нужны для включения в блокчейн-сеть новых протоколов без необходимости изменения правил консенсуса. В частности, использование БР позволит Лайткойну реализовать поддержку протокола MW без изменения архитектуры основного UTXO-блокчейна. Поскольку протокол MW не является скриптовым, софт-форк был бы невозможен.

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

Таким образом, MW-транзакции предоставляют пользователям Litecoin возможность выбрать уровень конфиденциальности: можно использовать прозрачный UTXO-регистр либо MW-слой, обеспечивающий более серьезный уровень приватности. После активации MW в основной сети пользователи смогут перемещать свои LTC в MW-слой с помощью транзакций ввода (привязки, peg-in), чтобы воспользоваться преимуществами лучшей взаимозаменяемости цифровых монет и масштабируемости сети.

Транзакции peg-in

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

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

В интегрирующей транзакции майнер отправляет переводимые в MW монеты на Хогвартс-адрес (aka адрес расширения), который дублирует обязательство в заголовок БР.

MimbleWimble в Litecoin – как это будет выглядеть?

MimbleWimble в Litecoin – как это будет выглядеть?

Peg-in транзакции подразумевают отправку LTC-входа в ядро MW-транзакции. Интегрирующая транзакция добавляется к каждому блоку основной цепочки, и майнеры отправляют переводимые в MW монеты на Хогвартс-адрес, который дублирует обязательство в заголовок блока расширения в MW.

Чтобы майнеры не приписывали монеты посторонним получателям (напоминаю, что в протоколе MW отсутствует понятие адресов), обязательство ядра coinbase-транзакции кодируется в bech32-адресе. В результате peg-in транзакция может быть верифицирована в основном блокчейне Лайткойна.

Все комиссии в блоке расширения в MW будут взиматься на основной цепочке в виде комиссий за HogEx-транзакцию.

Теперь, когда мы увидели, как работают транзакции ввода, давайте посмотрим, как работают транзакции вывода монет со слоя MW в основную UTXO-цепочку Лайткойна.

Транзакции peg-out

Вывести LTC из блоков расширения можно посредством транзакции вывода (peg-out). Это делается путем создания MW-транзакции, содержащей peg-out ядро с указанием суммы вывода и адрес, на который должны быть отправлены монеты. Выводимые монеты отправляются на LTC-адрес как часть интегрирующей транзакции.

Для peg-out транзакций, монеты в БР должны быть разрушены, а затем отправлены из Хогвартс-адреса. Лимит эмиссии Лайткойна в 84 миллиона монет не должен нарушаться, поэтому, чтобы вывести LTC из слоя MW обратно на основную цепочку, на MW-слое эти LTC должны быть уничтожены. Любая скрытая инфляция будет ограничиваться слоем MW и блоков расширения и может привести к разнице в обменном курсе между монетами с обеих сторон, хотя для поддержки MW-LTC никакого обмена не требуется.

Litecoin-адрес получателя сохраняется в ядре peg-out транзакции на слое MW. Таким образом, peg-out адреса на основном блокчейне могут быть сопоставлены с Litecoin-адресами в MW-ядрах в блоках расширения.

MimbleWimble в Litecoin – как это будет выглядеть?

MimbleWimble в Litecoin – как это будет выглядеть?

Peg-out выходы на основном блокчейне должны быть заблокированы до получения шести подтверждений (в среднем, примерно на 15 минут). Определение оптимального времени блокировки, а также размера блоков расширения, требует дополнительных исследований.

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

Вкратце, только обновленные MW-ноды могут валидировать как обычные litecoin-транзакции, так и peg-in/peg-out транзакции и MW-транзакции внутри блоков расширения. Необновленные ноды могут только на стороне основного блокчейна валидировать обычные LTC-транзакции и количество монет, вводимых и выводимых из блоков расширения.

Заключение

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

Для пользователей LTC преимущества очевидны: повышение конфиденциальности и эффективности, плюс снижение затрат на запуск и поддержку ноды (за счет оптимизации размера блокчейна и сокращения времени, необходимого для синхронизации и проверки его истории). Притом что MW и блоки расширения обеспечивают приватность по умолчанию, большая часть пользовательской активности, по-видимому, еще долгое время будет происходить в прозрачном UTXO-блокчейне. Как мы видим на примере SegWit, принятие экосистемой нового технического решения требует времени. И LIP 0002, и LIP 0003, будут активированы по схеме BIP 8, согласно которой у майнеров будет возможность активировать изменения досрочно, с нижним порогом сигнализации 75%.

Есть в этом определенные преимущества и для Биткойна. Учитывая радикально отличающийся дизайн MW, то, что блоки расширения еще не были протестированы «в боевых условиях», а также консерватизм Биткойна в отношении обновлений протокола, эксперименты Лайткойна с MimbleWimble могут стать для Биткойна ценным источником информации о том, когда и каким образом будет лучше включить в Биткойне поддержку Confidential Transactions или MimbleWimble.

Подписывайтесь на bitcoins-news в Telegram!
Делитесь вашим мнением об этой статье в комментариях ниже.

Источник

Закладка Постоянная ссылка.

Комментарии запрещены.