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