Мимбл Вимбл: Как урезанная версия Биткойна могла бы улучшить конфиденциальность, взаимозаменяемость и масштабируемость – разом

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

Но, возможно, эти недостатки можно исправить. На прошлой неделе на канале, посвященному исследованию Биткойна, таинственным образом появился новый документ с техническим описанием, написанный анонимным автором «Томом Элвисом Жедюсором» (Tom Elvis Jedusor, Воландеморт – во французском издании романов о Гарри Поттере). Его предложение “Мимбл Вимбл” — ссылка на заклинание Гарри Поттера — представляет собой радикальное упрощение Биткойн-протокола, которое могло бы не только резко повысить уровень конфиденциальности и взаимозаменяемости, но также значительно повысить масштабируемость по сравнению с нынешней архитектурой блокчена Биткойна.

Мимбл Вимбл может поразить сразу двух гигантских зайцев одним выстрелом. И вот как.

Сокрытие сумм

Концепция Мимбл Вимбл базируется на некоторых знакомых нам функциях конфиденциальности Биткойна. Одной из таких функций являются Конфиденциальные Транзакции, которые в основном появились, благодаря разработчику Bitcoin Core и Blockstream Грегори Максвеллу (Gregory Maxwell) и в настоящее время реализованы в качестве альфа-версии так называемых сайдчейн-элементов от Blockstream.

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

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

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

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

Объединение транзакций

Другим известным Биткойн-трюком, вдохновившим Мимбл Вимбл, является CoinJoin, впервые предложенный (опять-таки) Максвеллом.

CoinJoin позволяет пользователям собирать их транзакции в одну более крупную, объединяя все «входы» (передающие части транзакции, “от кого”), а также все «выходы» (принимающие части транзакции, “кому”). Это потенциально усложняет понимание того, какие биткойны были отправлены с какого адреса на какой адрес, и мешает предполагать, что все «входы» принадлежат одному пользователю.

Мимбл Вимбл (и решение, предложенное математиком компании Blockstream Эндрю Поелстра [Andrew Poelstra]) развивает эту концепцию немного дальше и полностью избавляет от транзакций при создании нового блока. Вместо транзакций, создаются блоки Мимбл Вимбл, включающие в основном три списка: список новых «входов» (со ссылкой на предыдущие «выходы»), список новых «выходов» и список криптографических подписей, созданных на основе вышеупомянутых «фиктивных выходов».

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

И поскольку никогда не обнаруживается точно с каких «входов» биткойны потрачены на какие «выходы», сколько биткойнов на самом деле потрачено, никаких следов движения средств найти вообще невозможно. А значит, Мимбл Вимбл представляет огромное благо для конфиденциальности и взаимозаменяемости.

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

Необходимо отметить улучшение масштабируемости.

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

Но с Мимбл Вимбл больше не существует такого понятия, как история транзакции по каждой монете. Каждая монета имеет определенный блок, в котором она был впервые создана. Но с того момента, её значение просто становится частью объединенного множества неизрасходованных «выходов» (предыдущих) транзакций (UTXO), определяющего все «выходы», которые хранят монеты и которые потенциально могут быть потрачены в любое время.

Это означает, что для проверки новых транзакций, узлам больше не нужно заботиться (знать) о предыдущих транзакциях. Единственное о чем они должны заботиться – о том, что используемые ими конкретные «выходы» являются действительными.

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

Преимущество данного подхода по сравнению с другими методами анонимизации является существенным. Если бы Конфиденциальные Транзакции и CoinJoin использовались в сети Биткойн с первого дня ее работы, в настоящее время узлам потребовалось бы более 1 терабайта данных для работы. С Мимбл Вимбл им бы потребовалось лишь около 120 гигабайт. И, что может быть даже более интересным: тогда как блокчейн обязательно должен увеличиваться с течением времени, необходимому набору данных для Мимбл Вимбл этого не требуется, на самом деле он даже может уменьшаться в размере, если больше биткойнов будет храниться в меньшем количестве «выходов».

Совместимость

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

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

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

Полное техническое пояснение концепции Мимбл Вимбл, в том числе, математические подробности, см. в whitepaper.

Источник: Bitcoin Magazine



Categories: Инфраструктура, Разработчикам, Стандарты, Теория, Технологии

Tags: , ,

14 replies

  1. Все остальные данные транзакций — почти весь блокчейн — можно без какого-либо риска отбросить

    То есть нам предлагают доверять, что кто-то в прошлом проверил транзакции, вместо того, чтобы делать это самостоятельно?

    • Нет, Вы все также проверяете самостоятельно. Только теперь нет понятия “маленькая” транзакция. Теперь каждый блок блокчейна это одна большая транзакция. Эта большая транзакция включает в себя новые входы, если таковые созданны, с подписями и отсылкой на соответствующие выходы в предыдущем блоке, а так же данные о абсолютно всех выходах. И проверить соответствие этих данных может любой желающий самостоятельно. Теперь нет истории для каждой отдельной транзакции, теперь есть история, только одна большая, и общая для всех. Чтобы понять выше написанное разберитесь как создается coinjoin транзакция.

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

        Это не сократит размер блока и не сделает его ненужным в будущем, чтобы его можно было отбросить.

        Чтобы понять выше написанное разберитесь как создается coinjoin транзакция.

        Coinjoin транзакция ничем не отличается от обычной транзакции в которой ты отправляешь монеты с нескольких выходов (обычно так и происходит, связывая используемые адреса и уменьшая приватность) на несколько (даже в обычной транзакции монеты идут на два адреса – целевой адрес и сдача) адресов. Суть coinjoin в том, что входы и выходы принадлежат разным людям.

        • А где говорится, что блоки не нужны в будущем?

          • Это означает, что для проверки новых транзакций, узлам больше не нужно заботиться (знать) о предыдущих транзакциях. Единственное о чем они должны заботиться – о том, что используемые ими конкретные «выходы» являются действительными.

            Все остальные данные транзакций — почти весь блокчейн — можно без какого-либо риска отбросить.

            • Ну, и где здесь говорится, что блоки не нужны?? Если быть внимательным, то речь о уменьшении количества данных, то-есть, сократить размер блокчейна. Например, в текущей реализации сети каждая транзакция имеет свой ID – длинная строка хеша. В каждом блоке может быть тысяча, и более, транзакций, и у каждой свой ID хеш. Если избавится хотя-бы от этих данных, то блокчейн прилично похудеет. А еще, на входах каждой транзакции указывается с какой транзакции берется этот вход(отсылка на не потраченный выход и ID его транзакции) , а входов в транзакции может быть много, и того можно получить многократное упоминание одного и того же ID в пределах одной транзакции в блоке. И все это добро сейчас мы храним в вечном граните блокчейна. В Мимбл Вимбл всего этого нет в блоках блокчейна.

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

    • В статье так и написали, внедрение в будущем возможно в качестве сайдчейна.

  3. “Все остальные данные транзакций — почти весь блокчейн — можно без какого-либо риска отбросить.”

    Насколько я понимаю, даже сейчас можно без ущерба для безопасности отбросить часть блокчейна. А именно – скачиваешь весь блокчейн на данный момент (около 80 Гб), проверяешь валидность всех транзакций, составляешь таблицу всех не потраченных выходов, отделяешь цепочку заголовков блоков от всего блокчейна. Таблицу всех не потраченных выходов и цепочку заголовков блоков оставляешь себе, остальное удаляешь. Если приходит новый блок, проверяешь по таблице все ли транзакции валидны. Если да, переписываешь таблицу и добавляешь заголовок нового валидного блока в цепочку заголовков блока. При форке, когда цепь раздвойняется, придется сохранять обе таблицы. Но так как такое раздвойнение мало живет и цепочка блоков быстро стабилизируется, да и таблицы одна от другой будут мало чем отличаться, это не большая проблема.
    Правда тут опять много проблем. Если кто запросит блокчейн, ты его предоставить не сможешь. Ну и если кто-то выкинет блокчейн длиннее (и по сложности выше) твоего, форкнутый от блока например в 2013 году, придется заново скачивать блоки с 2009 по 2013 год, и проверять точно ли он примыкается к блокчейну от 2009 до 2013 г., и принимать его как истинный в случае положительного ответа. Такое правдо мало вероятно, и если посмотреть на орфан-блоки, максимальная длина 7 блоков.

    • Насколько я понимаю, даже сейчас можно без ущерба для безопасности отбросить часть блокчейна. А именно – скачиваешь весь блокчейн на данный момент (около 80 Гб), проверяешь валидность всех транзакций, составляешь таблицу всех не потраченных выходов, отделяешь цепочку заголовков блоков от всего блокчейна.

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

Trackbacks

  1. Мимбл Вимбл: Как урезанная версия Биткойна могла бы улучшить конфиденциальность, взаимозаменяемость и масштабируемость – разом | Народны
  2. Четверть всех узлов биткойна уже используют код SegWit | Заработок онлайн доступный каждому
  3. Что крипто-децентралисты думают по поводу дебатов о размере блока | Заработок онлайн доступный каждому

Поделитесь своими мыслями

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s