Для алгоритма f два взаимно недоверяющих участника, Алиса и Боб, могут установить доверие следующими способами:
Для вышеперечисленных 2, 3 и 4 пусть x будет транзакциями Уровня 2 и начальным состоянием, пусть f будет программой консенсуса Уровня 2, а y - конечным состоянием транзакции, соответствующей масштабируемому решению Уровня 2 для блокчейна. Среди них:
Таблица 1: Способы установления доверия
Кроме того, важно отметить:
В настоящее время, используя преимущества полных по Тьюрингу смарт-контрактов Solidity, технологии защиты от мошенничества и проверки действительности широко используются в масштабировании Ethereum Layer2. Тем не менее, в парадигме Биткойна, ограниченной ограниченной функциональностью Биткойна, 1000 элементов стека и другими ограничениями, применение этих технологий все еще находится на стадии изучения. В этой статье обобщаются ограничения и прорывные технологии в парадигме биткоина в контексте масштабирования биткоина уровня 2, исследуются технологии доказательства валидности и защиты от мошенничества, а также описывается уникальная технология сегментации скриптов в парадигме биткоина.
В рамках парадигмы Биткойна существует множество ограничений, но для преодоления этих ограничений можно использовать различные умные методы или техники. Например, бит-привязка может преодолеть ограничение на состояние UTXO без сохранения, taproot может преодолеть ограничения пространства скриптов, выход коннектора может преодолеть ограничения метода траты UTXO, а контракты могут преодолеть ограничения предварительной подписи.
Биткойн принимает модель UTXO, где каждый UTXO заблокирован в блокирующем сценарии, который определяет условия, которым должно удовлетворяться, чтобы потратить этот UTXO. Сценарии Биткойна имеют следующие ограничения:
В настоящее время сценарии Биткойна полностью не имеют состояния. При выполнении сценария Биткойна его среда выполнения сбрасывается после каждого сценария. Это приводит к невозможности нативной поддержки сценариев Bitcoin constraint 1 и 2 с одним и тем же значением x. Однако эту проблему можно обойти различными способами, основная идея которых заключается в подписи значения. Если для значения может быть создана подпись, можно достичь состояний сценариев Биткойна. То есть, проверяя подпись значения x в сценариях 1 и 2, можно обеспечить использование одного и того же значения x в обоих сценариях. Если есть конфликтующая подпись, что означает, что для одной и той же переменной x подписаны два разных значения, может быть применена штрафная мера. Это решение известно как бит-коммитмент.
Принцип фиксации бита относительно прост. Бит означает установку двух различных хэш-значений, hash0 и hash1, для каждого бита в сообщении, которое должно быть подписано. Если значение подписываемого бита равно 0, раскрывается преобразование preimage0 от hash0; если значение подписываемого бита равно 1, раскрывается preimage1 от hash1.
Если взять в качестве примера однобитовое сообщение m ∈{0,1}, то соответствующий сценарий разблокировки битовых обязательств представляет собой всего лишь некоторые прообразы: если значение бита равно 0, соответствующий сценарий разблокировки — preimage0—"0xfa7fa5b1dea37d71a0b841967f6a3b119dbea140"; Если значение бита равно 1, соответствующий сценарий разблокировки — preimage1—"0x47c31e611a3bd2f3a7a42207613046703fa27496". Таким образом, с помощью битового обязательства можно преодолеть ограничение UTXO без сохранения состояния и получить скрипты Биткойна с отслеживанием состояния, что делает возможными различные интересные новые функции.
OP_HASH160
OP_DUP
0xf592e757267b7f307324f1e78b34472f8b6f46f3> // Это hash1
OP_EQUAL
OP_DUP
OP_ROT
0x100b9f19ebd537fdc371fa1367d7ccc802dc2524> // Это hash0
OP_EQUAL
OP_BOOLOR
OP_VERIFY
// Теперь значение битового коммитмента находится в стеке. Либо «0», либо «1».
В настоящее время существует 2 реализации обязательства бита:
В настоящее время в библиотеке BitVM2 реализованы подписи Winternitz на основе хеш-функции Blake3. Длина подписи, соответствующей одному биту, составляет около 26 байт. Таким образом, можно видеть, что введение состояния через битовое подтверждение затратно. Таким образом, в реализации BitVM2 сначала сообщение хешируется для получения 256-битного хеш-значения, а затем выполняется битовое подтверждение хеш-значения для экономии накладных расходов, вместо подтверждения каждого бита исходного более длинного сообщения напрямую.
Апгрейд Bitcoin Taproot soft fork, активированный в ноябре 2021 года, включает три предложения: подписи Schnorr (BIP 340), Taproot (BIP 341) и TapScript (BIP 342). Он вводит новый тип транзакции - транзакции Pay-to-Taproot (P2TR). Транзакции P2TR могут создавать более приватный, гибкий и масштабируемый формат транзакции, объединяя преимущества Taproot, MAST (Merkel Abstract Syntax Tree) и подписей Schnorr.
P2TR поддерживает два метода расходов: расходы в соответствии с ключевым путем или путем скрипта.
В соответствии с положениями Taproot (BIP 341), при расходовании средств через путь скрипта соответствующий путь Меркла не может превышать максимальную длину 128. Это означает, что количество створок в стержневом дереве не может превышать 2^128. С момента обновления SegWit в 2017 году сеть Биткойн измеряет размер блока в единицах веса, с максимальной поддержкой 4 миллиона единиц веса (примерно 4 МБ). Когда вывод P2TR осуществляется по пути к сценарию, он должен показать только один сценарий tapleaf, что означает, что блок упакован одним скриптом tapleaf. Это означает, что для транзакций P2TR размер скрипта, соответствующего каждому ответвлению, может составлять максимум около 4 МБ. Тем не менее, в соответствии с политикой Биткойна по умолчанию, многие узлы пересылают только транзакции размером менее 400 тысяч; Более крупные транзакции должны сотрудничать с майнерами, чтобы быть упакованными.
Премия за пространство скриптов, предоставляемая Taproot, делает более ценным моделирование криптографических операций, таких как умножение и хеширование, с использованием существующих кодов операций.
При создании проверяемых вычислений на основе P2TR размер соответствующего скрипта больше не ограничивается 4 МБ, а может быть разделен на несколько подфункций, распределенных по нескольким tapleafs, таким образом, преодолевая ограничение пространства скрипта в 4 МБ. Фактически, алгоритм проверки Groth16, реализованный в текущей версии BitVM2, имеет размер до 2 ГБ. Однако его можно разделить и распределить по примерно 1000 tapleafs, и путем комбинирования его с фиксацией бита можно ограничить согласованность между входами и выходами каждой подфункции, обеспечивая целостность и правильность всего вычисления.
В настоящее время Bitcoin предоставляет два нативных метода расходования для одного UTXO: расходование по сценарию или по открытому ключу. Поэтому, как только выполнены правильная подпись открытого ключа или условия сценария, UTXO можно потратить. Два UTXO можно потратить независимо, и никаких ограничений нельзя добавить, чтобы ограничить два UTXO, что означает, что для их расходования необходимо выполнить дополнительные условия.
Тем не менее, Бурак, основатель протокола Ark, умело использовал флаг SIGHASH для достижения вывода коннектора. В частности, Алиса может создать подпись для отправки своих BTC Бобу. Однако, поскольку подпись может фиксироваться для нескольких входов, Алиса может установить свою подпись условной: подпись действительна для транзакции Taketx тогда и только тогда, когда эта транзакция потребляет второй вход. Второй вход называется разъемом, соединяющим UTXO A и UTXO B. Другими словами, транзакция Taketx действительна тогда и только тогда, когда UTXO B не были потрачены Challengetx. Поэтому, уничтожив выход коннектора, эффективность транзакции Taketx может быть заблокирована.
Рисунок 1: Иллюстрация выходного разъема
В протоколе BitVM2 выход коннектора действует как функция if...else. Как только выход коннектора потрачен транзакцией, его нельзя потратить другой транзакцией, чтобы обеспечить его исключительное потребление. В практической реализации для обеспечения периода вызова-ответа вводятся дополнительные UTXO с временной блокировкой. Более того, соответствующий выход коннектора также может быть установлен с различными стратегиями потребления по мере необходимости, такими как разрешение любой стороне тратить в случае вызова сделок, пока разрешается тратить только оператору или разрешается тратить любому после истечения времени ожидания для сделок ответа.
В настоящее время сценарии Bitcoin в основном ограничивают условия разблокировки, не ограничивая способы дальнейших трат UTXO. Это происходит потому, что сценарии Bitcoin не могут читать содержимое самой транзакции, что означает, что они не могут осуществлять транзакционную интроспекцию. Если бы сценарии Bitcoin могли проверять любое содержимое транзакции (включая выводы), функциональность контракта могла бы быть реализована.
Текущие реализации контрактов могут быть разделены на две категории:
Как доказательство действительности, так и доказательство мошенничества могут использоваться для масштабирования Bitcoin на уровне 2, основные различия показаны в таблице 2.
Таблица 2: Доказательства действительности против доказательств мошенничества
На основе битового коммитмента, тапрута, предварительной подписи и выхода коннектора можно создавать доказательства мошенничества на основе Биткойна. На основе тапрута также можно создавать доказательства действительности на основе Биткойна, введя контрактные опкоды, такие как OP_CAT. Кроме того, в зависимости от того, имеет ли Боб систему допуска, доказательства мошенничества можно разделить на допускаемые и недопускаемые. В допускаемых доказательствах мошенничества только определенные группы могут выступать в роли Боба, чтобы начать вызовы, тогда как в недопускаемых доказательствах мошенничества любая третья сторона может выступать в роли Боба, чтобы начать вызовы. Безопасность недопускаемых доказательств мошенничества превосходит безопасность допускаемых, что снижает риск коллаборации среди допущенных участников.
Согласно количеству взаимодействий challenge-response между Алисой и Бобом, доказательства мошенничества можно разделить на однокруговые доказательства мошенничества и многоходовые доказательства мошенничества, как показано на рисунке 2.
Рисунок 2: Доказательства мошенничества за один раунд против доказательств мошенничества за несколько раундов
Как показано в Таблице 3, доказательства мошенничества могут быть реализованы через различные модели взаимодействия, включая модели взаимодействия с одним раундом и модели взаимодействия с несколькими раундами.
Таблица 3: Взаимодействие за один раунд против многоступенчатого взаимодействия
В парадигме масштабирования Bitcoin Layer2 BitVM1 принимает механизм многоходового доказательства мошенничества, в то время как BitVM2 использует механизм однократного доказательства мошенничества, а bitcoin-circle stark использует доказательства действительности. Из них BitVM1 и BitVM2 могут быть реализованы без внесения каких-либо изменений в протокол Bitcoin, в то время как bitcoin-circle stark требует введения новой операции OP_CAT.
Для большинства вычислительных задач сигнет Bitcoin, тестнет и главная сеть не могут полностью представлять 4МБ скрипта, что требует использования технологии разделения скриптов - т. е. разделения полного вычислительного скрипта на части меньше 4МБ, распределенные по различным tapleafs.
Как показано в Таблице 3, многораундовые доказательства мошенничества подходят для сценариев, где есть желание сократить вычисления арбитража на цепочке и/или где невозможно точно определить проблемные сегменты вычислений сразу. Многораундовые доказательства мошенничества, как подразумевает название, требуют нескольких раундов взаимодействия между доказывающим и проверяющим, чтобы найти проблемные сегменты вычислений, за которыми следует арбитраж на основе выявленных сегментов.
Ранняя белая бумага BitVM Робина Линуса (обычно называемая BitVM1) использовала многоступенчатые доказательства мошенничества. Предполагая, что каждый период вызова длится неделю и применяя метод бинарного поиска для нахождения проблемных участков вычислений, период ответа на вызов в цепи для проверяющего Groth16 может продлиться до 30 недель, что приводит к плохой своевременности. Хотя в настоящее время существуют команды, исследующие более эффективные методы n-ичного поиска, чем бинарный поиск, их своевременность все равно значительно ниже по сравнению с 2-недельным циклом в одноступенчатых доказательствах мошенничества.
В настоящее время в парадигме Биткойна многофазовые доказательства мошенничества используют ограниченные вызовы, в то время как однофазовые доказательства мошенничества достигли метода без разрешения, что снижает риск сговора среди участников и тем самым повышает безопасность. Для этого Робин Лайнус полностью использовал преимущества Taproot для оптимизации BitVM1. Было сокращено количество раундов взаимодействия до одного, и метод вызова был расширен до метода без разрешения, хотя за счет увеличения вычислений арбитража в сети.
В этой модели проверка доказательств мошенничества может быть завершена через одно взаимодействие между доказывающим и проверяющим. Проверяющему нужно только инициировать одно вызов, и доказывающему нужно ответить только один раз. В этом ответе доказывающий должен предоставить доказательства того, что их вычисление верно. Если проверяющий обнаруживает несоответствия в этих доказательствах, вызов считается успешным; в противном случае он завершается неудачей. Характеристики однораундовых интерактивных доказательств мошенничества показаны в Таблице 3.
Рисунок 3: Доказательство мошенничества одного раунда
15 августа 2024 года Робин Линус выпустил техническую белую книгу BitVM2: Bridging Bitcoin to Second Layers, в которой был реализован кросс-цепной мост с использованием метода доказательства мошенничества в один раунд, аналогичного показанному на рисунке 3.
OPCAT был частью первоначального скриптового языка, когда Биткойн был выпущен, но был отключен в 2010 году из-за уязвимостей безопасности. Однако сообщество Биткойна обсуждает его повторное активирование уже несколько лет. OPCAT теперь был назначен номером 347 и включен на знаке Биткойна.
Основная функция OP_CAT - объединить два элемента в стеке и поместить объединенный результат обратно в стек. Эта функциональность открывает возможность для контрактов и STARK-проверителей на Bitcoin:
Несмотря на то, что вычислительная нагрузка, необходимая для запуска соответствующего алгоритма верификатора для проверки доказательства после доказательства SNARK/STARK, намного меньше, чем та, которая требуется для непосредственного выполнения исходного вычисления f, количество скрипта, необходимого при его преобразовании для реализации алгоритма верификатора в сценарии Биткойна, по-прежнему огромно. В настоящее время, основываясь на существующих опкодах Биткойна, оптимизированный размер скрипта верификатора Groth16 и размер скрипта верификатора Fflonk по-прежнему превышают 2 ГБ. Однако размер одного блока биткоина составляет всего 4 МБ, что делает невозможным запуск всего скрипта верификатора в рамках одного блока. Однако после обновления Taproot Биткойн поддерживает выполнение скриптов с помощью tapleaf, что позволяет разбивать сценарий верификатора на несколько частей, каждый из которых служит в качестве ответвления для создания дерева ответвления. Согласованность значений между блоками может быть обеспечена за счет выделения битов.
В присутствии контрактов OP_CAT, Проверяющий STARK может быть разделен на несколько стандартных транзакций меньше чем 400KB, что позволяет завершить проверку всего доказательства действительности STARK без необходимости сотрудничать с майнерами.
В этом разделе основное внимание уделяется соответствующей технологии разделения скриптов Биткойна в существующих условиях без введения или активации каких-либо новых опкодов.
При выполнении разбиения скриптов необходимо сбалансировать следующие измерения информации:
В настоящее время методы разделения сценария можно разделить на следующие три основные категории:
Например, после нескольких раундов оптимизации размер скрипта проверяющего Groth16 был сокращен с примерно 7 ГБ до примерно 1,26 ГБ. Кроме этой общей оптимизации вычислений, каждый фрагмент также может быть оптимизирован индивидуально для полного использования места в стеке. Например, путем введения лучших алгоритмов на основе таблицы поиска и динамической загрузки и выгрузки таблицы поиска размер каждого фрагмента скрипта может быть дополнительно уменьшен.
Вычислительные затраты и среда выполнения языков программирования web2 полностью отличаются от таковых у скриптов Биткойна, поэтому просто перевести существующие реализации для различных алгоритмов в скрипты Биткойна нецелесообразно. Таким образом, необходимо учитывать оптимизацию, специфичную для сценария Биткоина:
Эта статья сначала представляет ограничения скриптов биткойна и обсуждает использование обязательств биткойна для преодоления ограничений состояния UTXO, использование Taproot для преодоления ограничений пространства скрипта, использование выходов коннектора для обхода ограничений метода потраты UTXO и использование контрактов для преодоления ограничений предварительного подписания. Затем она предоставляет всесторонний обзор и краткое изложение характеристик доказательств мошенничества и доказательств действительности, особенностей разрешенных и неразрешенных доказательств мошенничества, различий между однораундовыми и многораундовыми доказательствами мошенничества и технологии разделения скриптов биткойна.
Для алгоритма f два взаимно недоверяющих участника, Алиса и Боб, могут установить доверие следующими способами:
Для вышеперечисленных 2, 3 и 4 пусть x будет транзакциями Уровня 2 и начальным состоянием, пусть f будет программой консенсуса Уровня 2, а y - конечным состоянием транзакции, соответствующей масштабируемому решению Уровня 2 для блокчейна. Среди них:
Таблица 1: Способы установления доверия
Кроме того, важно отметить:
В настоящее время, используя преимущества полных по Тьюрингу смарт-контрактов Solidity, технологии защиты от мошенничества и проверки действительности широко используются в масштабировании Ethereum Layer2. Тем не менее, в парадигме Биткойна, ограниченной ограниченной функциональностью Биткойна, 1000 элементов стека и другими ограничениями, применение этих технологий все еще находится на стадии изучения. В этой статье обобщаются ограничения и прорывные технологии в парадигме биткоина в контексте масштабирования биткоина уровня 2, исследуются технологии доказательства валидности и защиты от мошенничества, а также описывается уникальная технология сегментации скриптов в парадигме биткоина.
В рамках парадигмы Биткойна существует множество ограничений, но для преодоления этих ограничений можно использовать различные умные методы или техники. Например, бит-привязка может преодолеть ограничение на состояние UTXO без сохранения, taproot может преодолеть ограничения пространства скриптов, выход коннектора может преодолеть ограничения метода траты UTXO, а контракты могут преодолеть ограничения предварительной подписи.
Биткойн принимает модель UTXO, где каждый UTXO заблокирован в блокирующем сценарии, который определяет условия, которым должно удовлетворяться, чтобы потратить этот UTXO. Сценарии Биткойна имеют следующие ограничения:
В настоящее время сценарии Биткойна полностью не имеют состояния. При выполнении сценария Биткойна его среда выполнения сбрасывается после каждого сценария. Это приводит к невозможности нативной поддержки сценариев Bitcoin constraint 1 и 2 с одним и тем же значением x. Однако эту проблему можно обойти различными способами, основная идея которых заключается в подписи значения. Если для значения может быть создана подпись, можно достичь состояний сценариев Биткойна. То есть, проверяя подпись значения x в сценариях 1 и 2, можно обеспечить использование одного и того же значения x в обоих сценариях. Если есть конфликтующая подпись, что означает, что для одной и той же переменной x подписаны два разных значения, может быть применена штрафная мера. Это решение известно как бит-коммитмент.
Принцип фиксации бита относительно прост. Бит означает установку двух различных хэш-значений, hash0 и hash1, для каждого бита в сообщении, которое должно быть подписано. Если значение подписываемого бита равно 0, раскрывается преобразование preimage0 от hash0; если значение подписываемого бита равно 1, раскрывается preimage1 от hash1.
Если взять в качестве примера однобитовое сообщение m ∈{0,1}, то соответствующий сценарий разблокировки битовых обязательств представляет собой всего лишь некоторые прообразы: если значение бита равно 0, соответствующий сценарий разблокировки — preimage0—"0xfa7fa5b1dea37d71a0b841967f6a3b119dbea140"; Если значение бита равно 1, соответствующий сценарий разблокировки — preimage1—"0x47c31e611a3bd2f3a7a42207613046703fa27496". Таким образом, с помощью битового обязательства можно преодолеть ограничение UTXO без сохранения состояния и получить скрипты Биткойна с отслеживанием состояния, что делает возможными различные интересные новые функции.
OP_HASH160
OP_DUP
0xf592e757267b7f307324f1e78b34472f8b6f46f3> // Это hash1
OP_EQUAL
OP_DUP
OP_ROT
0x100b9f19ebd537fdc371fa1367d7ccc802dc2524> // Это hash0
OP_EQUAL
OP_BOOLOR
OP_VERIFY
// Теперь значение битового коммитмента находится в стеке. Либо «0», либо «1».
В настоящее время существует 2 реализации обязательства бита:
В настоящее время в библиотеке BitVM2 реализованы подписи Winternitz на основе хеш-функции Blake3. Длина подписи, соответствующей одному биту, составляет около 26 байт. Таким образом, можно видеть, что введение состояния через битовое подтверждение затратно. Таким образом, в реализации BitVM2 сначала сообщение хешируется для получения 256-битного хеш-значения, а затем выполняется битовое подтверждение хеш-значения для экономии накладных расходов, вместо подтверждения каждого бита исходного более длинного сообщения напрямую.
Апгрейд Bitcoin Taproot soft fork, активированный в ноябре 2021 года, включает три предложения: подписи Schnorr (BIP 340), Taproot (BIP 341) и TapScript (BIP 342). Он вводит новый тип транзакции - транзакции Pay-to-Taproot (P2TR). Транзакции P2TR могут создавать более приватный, гибкий и масштабируемый формат транзакции, объединяя преимущества Taproot, MAST (Merkel Abstract Syntax Tree) и подписей Schnorr.
P2TR поддерживает два метода расходов: расходы в соответствии с ключевым путем или путем скрипта.
В соответствии с положениями Taproot (BIP 341), при расходовании средств через путь скрипта соответствующий путь Меркла не может превышать максимальную длину 128. Это означает, что количество створок в стержневом дереве не может превышать 2^128. С момента обновления SegWit в 2017 году сеть Биткойн измеряет размер блока в единицах веса, с максимальной поддержкой 4 миллиона единиц веса (примерно 4 МБ). Когда вывод P2TR осуществляется по пути к сценарию, он должен показать только один сценарий tapleaf, что означает, что блок упакован одним скриптом tapleaf. Это означает, что для транзакций P2TR размер скрипта, соответствующего каждому ответвлению, может составлять максимум около 4 МБ. Тем не менее, в соответствии с политикой Биткойна по умолчанию, многие узлы пересылают только транзакции размером менее 400 тысяч; Более крупные транзакции должны сотрудничать с майнерами, чтобы быть упакованными.
Премия за пространство скриптов, предоставляемая Taproot, делает более ценным моделирование криптографических операций, таких как умножение и хеширование, с использованием существующих кодов операций.
При создании проверяемых вычислений на основе P2TR размер соответствующего скрипта больше не ограничивается 4 МБ, а может быть разделен на несколько подфункций, распределенных по нескольким tapleafs, таким образом, преодолевая ограничение пространства скрипта в 4 МБ. Фактически, алгоритм проверки Groth16, реализованный в текущей версии BitVM2, имеет размер до 2 ГБ. Однако его можно разделить и распределить по примерно 1000 tapleafs, и путем комбинирования его с фиксацией бита можно ограничить согласованность между входами и выходами каждой подфункции, обеспечивая целостность и правильность всего вычисления.
В настоящее время Bitcoin предоставляет два нативных метода расходования для одного UTXO: расходование по сценарию или по открытому ключу. Поэтому, как только выполнены правильная подпись открытого ключа или условия сценария, UTXO можно потратить. Два UTXO можно потратить независимо, и никаких ограничений нельзя добавить, чтобы ограничить два UTXO, что означает, что для их расходования необходимо выполнить дополнительные условия.
Тем не менее, Бурак, основатель протокола Ark, умело использовал флаг SIGHASH для достижения вывода коннектора. В частности, Алиса может создать подпись для отправки своих BTC Бобу. Однако, поскольку подпись может фиксироваться для нескольких входов, Алиса может установить свою подпись условной: подпись действительна для транзакции Taketx тогда и только тогда, когда эта транзакция потребляет второй вход. Второй вход называется разъемом, соединяющим UTXO A и UTXO B. Другими словами, транзакция Taketx действительна тогда и только тогда, когда UTXO B не были потрачены Challengetx. Поэтому, уничтожив выход коннектора, эффективность транзакции Taketx может быть заблокирована.
Рисунок 1: Иллюстрация выходного разъема
В протоколе BitVM2 выход коннектора действует как функция if...else. Как только выход коннектора потрачен транзакцией, его нельзя потратить другой транзакцией, чтобы обеспечить его исключительное потребление. В практической реализации для обеспечения периода вызова-ответа вводятся дополнительные UTXO с временной блокировкой. Более того, соответствующий выход коннектора также может быть установлен с различными стратегиями потребления по мере необходимости, такими как разрешение любой стороне тратить в случае вызова сделок, пока разрешается тратить только оператору или разрешается тратить любому после истечения времени ожидания для сделок ответа.
В настоящее время сценарии Bitcoin в основном ограничивают условия разблокировки, не ограничивая способы дальнейших трат UTXO. Это происходит потому, что сценарии Bitcoin не могут читать содержимое самой транзакции, что означает, что они не могут осуществлять транзакционную интроспекцию. Если бы сценарии Bitcoin могли проверять любое содержимое транзакции (включая выводы), функциональность контракта могла бы быть реализована.
Текущие реализации контрактов могут быть разделены на две категории:
Как доказательство действительности, так и доказательство мошенничества могут использоваться для масштабирования Bitcoin на уровне 2, основные различия показаны в таблице 2.
Таблица 2: Доказательства действительности против доказательств мошенничества
На основе битового коммитмента, тапрута, предварительной подписи и выхода коннектора можно создавать доказательства мошенничества на основе Биткойна. На основе тапрута также можно создавать доказательства действительности на основе Биткойна, введя контрактные опкоды, такие как OP_CAT. Кроме того, в зависимости от того, имеет ли Боб систему допуска, доказательства мошенничества можно разделить на допускаемые и недопускаемые. В допускаемых доказательствах мошенничества только определенные группы могут выступать в роли Боба, чтобы начать вызовы, тогда как в недопускаемых доказательствах мошенничества любая третья сторона может выступать в роли Боба, чтобы начать вызовы. Безопасность недопускаемых доказательств мошенничества превосходит безопасность допускаемых, что снижает риск коллаборации среди допущенных участников.
Согласно количеству взаимодействий challenge-response между Алисой и Бобом, доказательства мошенничества можно разделить на однокруговые доказательства мошенничества и многоходовые доказательства мошенничества, как показано на рисунке 2.
Рисунок 2: Доказательства мошенничества за один раунд против доказательств мошенничества за несколько раундов
Как показано в Таблице 3, доказательства мошенничества могут быть реализованы через различные модели взаимодействия, включая модели взаимодействия с одним раундом и модели взаимодействия с несколькими раундами.
Таблица 3: Взаимодействие за один раунд против многоступенчатого взаимодействия
В парадигме масштабирования Bitcoin Layer2 BitVM1 принимает механизм многоходового доказательства мошенничества, в то время как BitVM2 использует механизм однократного доказательства мошенничества, а bitcoin-circle stark использует доказательства действительности. Из них BitVM1 и BitVM2 могут быть реализованы без внесения каких-либо изменений в протокол Bitcoin, в то время как bitcoin-circle stark требует введения новой операции OP_CAT.
Для большинства вычислительных задач сигнет Bitcoin, тестнет и главная сеть не могут полностью представлять 4МБ скрипта, что требует использования технологии разделения скриптов - т. е. разделения полного вычислительного скрипта на части меньше 4МБ, распределенные по различным tapleafs.
Как показано в Таблице 3, многораундовые доказательства мошенничества подходят для сценариев, где есть желание сократить вычисления арбитража на цепочке и/или где невозможно точно определить проблемные сегменты вычислений сразу. Многораундовые доказательства мошенничества, как подразумевает название, требуют нескольких раундов взаимодействия между доказывающим и проверяющим, чтобы найти проблемные сегменты вычислений, за которыми следует арбитраж на основе выявленных сегментов.
Ранняя белая бумага BitVM Робина Линуса (обычно называемая BitVM1) использовала многоступенчатые доказательства мошенничества. Предполагая, что каждый период вызова длится неделю и применяя метод бинарного поиска для нахождения проблемных участков вычислений, период ответа на вызов в цепи для проверяющего Groth16 может продлиться до 30 недель, что приводит к плохой своевременности. Хотя в настоящее время существуют команды, исследующие более эффективные методы n-ичного поиска, чем бинарный поиск, их своевременность все равно значительно ниже по сравнению с 2-недельным циклом в одноступенчатых доказательствах мошенничества.
В настоящее время в парадигме Биткойна многофазовые доказательства мошенничества используют ограниченные вызовы, в то время как однофазовые доказательства мошенничества достигли метода без разрешения, что снижает риск сговора среди участников и тем самым повышает безопасность. Для этого Робин Лайнус полностью использовал преимущества Taproot для оптимизации BitVM1. Было сокращено количество раундов взаимодействия до одного, и метод вызова был расширен до метода без разрешения, хотя за счет увеличения вычислений арбитража в сети.
В этой модели проверка доказательств мошенничества может быть завершена через одно взаимодействие между доказывающим и проверяющим. Проверяющему нужно только инициировать одно вызов, и доказывающему нужно ответить только один раз. В этом ответе доказывающий должен предоставить доказательства того, что их вычисление верно. Если проверяющий обнаруживает несоответствия в этих доказательствах, вызов считается успешным; в противном случае он завершается неудачей. Характеристики однораундовых интерактивных доказательств мошенничества показаны в Таблице 3.
Рисунок 3: Доказательство мошенничества одного раунда
15 августа 2024 года Робин Линус выпустил техническую белую книгу BitVM2: Bridging Bitcoin to Second Layers, в которой был реализован кросс-цепной мост с использованием метода доказательства мошенничества в один раунд, аналогичного показанному на рисунке 3.
OPCAT был частью первоначального скриптового языка, когда Биткойн был выпущен, но был отключен в 2010 году из-за уязвимостей безопасности. Однако сообщество Биткойна обсуждает его повторное активирование уже несколько лет. OPCAT теперь был назначен номером 347 и включен на знаке Биткойна.
Основная функция OP_CAT - объединить два элемента в стеке и поместить объединенный результат обратно в стек. Эта функциональность открывает возможность для контрактов и STARK-проверителей на Bitcoin:
Несмотря на то, что вычислительная нагрузка, необходимая для запуска соответствующего алгоритма верификатора для проверки доказательства после доказательства SNARK/STARK, намного меньше, чем та, которая требуется для непосредственного выполнения исходного вычисления f, количество скрипта, необходимого при его преобразовании для реализации алгоритма верификатора в сценарии Биткойна, по-прежнему огромно. В настоящее время, основываясь на существующих опкодах Биткойна, оптимизированный размер скрипта верификатора Groth16 и размер скрипта верификатора Fflonk по-прежнему превышают 2 ГБ. Однако размер одного блока биткоина составляет всего 4 МБ, что делает невозможным запуск всего скрипта верификатора в рамках одного блока. Однако после обновления Taproot Биткойн поддерживает выполнение скриптов с помощью tapleaf, что позволяет разбивать сценарий верификатора на несколько частей, каждый из которых служит в качестве ответвления для создания дерева ответвления. Согласованность значений между блоками может быть обеспечена за счет выделения битов.
В присутствии контрактов OP_CAT, Проверяющий STARK может быть разделен на несколько стандартных транзакций меньше чем 400KB, что позволяет завершить проверку всего доказательства действительности STARK без необходимости сотрудничать с майнерами.
В этом разделе основное внимание уделяется соответствующей технологии разделения скриптов Биткойна в существующих условиях без введения или активации каких-либо новых опкодов.
При выполнении разбиения скриптов необходимо сбалансировать следующие измерения информации:
В настоящее время методы разделения сценария можно разделить на следующие три основные категории:
Например, после нескольких раундов оптимизации размер скрипта проверяющего Groth16 был сокращен с примерно 7 ГБ до примерно 1,26 ГБ. Кроме этой общей оптимизации вычислений, каждый фрагмент также может быть оптимизирован индивидуально для полного использования места в стеке. Например, путем введения лучших алгоритмов на основе таблицы поиска и динамической загрузки и выгрузки таблицы поиска размер каждого фрагмента скрипта может быть дополнительно уменьшен.
Вычислительные затраты и среда выполнения языков программирования web2 полностью отличаются от таковых у скриптов Биткойна, поэтому просто перевести существующие реализации для различных алгоритмов в скрипты Биткойна нецелесообразно. Таким образом, необходимо учитывать оптимизацию, специфичную для сценария Биткоина:
Эта статья сначала представляет ограничения скриптов биткойна и обсуждает использование обязательств биткойна для преодоления ограничений состояния UTXO, использование Taproot для преодоления ограничений пространства скрипта, использование выходов коннектора для обхода ограничений метода потраты UTXO и использование контрактов для преодоления ограничений предварительного подписания. Затем она предоставляет всесторонний обзор и краткое изложение характеристик доказательств мошенничества и доказательств действительности, особенностей разрешенных и неразрешенных доказательств мошенничества, различий между однораундовыми и многораундовыми доказательствами мошенничества и технологии разделения скриптов биткойна.