Для алгоритму f два недовірливі учасники, Еліс і Боб, можуть встановити довіру наступними способами:
Для вищезазначених 2, 3 та 4, нехай x - це транзакції рівня 2 та початковий стан, f - програма консенсусу рівня 2, а y - кінцевий стан транзакції, що відповідає рішенню масштабування рівня 2 блокчейну. Серед них:
Таблиця 1: Способи встановлення довіри
Додатково важливо зауважити:
Наразі, користуючись перевагами смарт-контрактів Solidity, повних за Тюрінгом, технології доказів шахрайства та доказу валідності широко використовуються в масштабуванні Ethereum Layer2. Однак, згідно з парадигмою Bitcoin, обмеженою функціональністю коду операції Bitcoin, 1000 елементами стека та іншими обмеженнями, застосування цих технологій все ще знаходиться на стадії дослідження. У цій статті узагальнено обмеження та проривні технології в рамках парадигми Bitcoin в контексті масштабування Bitcoin Layer2, досліджено технології доказу валідності та доказу шахрайства, а також окреслено унікальну технологію сегментації скриптів відповідно до парадигми Bitcoin.
Під парадигмою Біткойну існує багато обмежень, але для їх подолання можна використовувати різні винахідливі методи або техніки. Наприклад, зобов'язання бітів може прорватися через обмеження безстаничного UTXO, тапрут може прорватися через обмеження простору скрипту, вихідний коннектор може прорватися через обмеження методу витрат UTXO, а контракти можуть прорватися через обмеження попереднього підпису.
Біткойн використовує модель UTXO, де кожен UTXO заблокований в замкненому скрипті, який визначає умови, що повинні бути виконані для витрати цього UTXO. Скрипти Біткойн мають наступні обмеження:
В даний час скрипти Bitcoin повністю не мають стану. Під час виконання сценарію Bitcoin середовище його виконання скидається після кожного сценарію. Це призводить до нездатності скриптів Bitcoin підтримувати скрипти обмеження 1 і 2, що мають однакове значення x. Однак цю проблему можна обійти за допомогою деяких методів, основна ідея яких полягає в тому, щоб якимось чином підписати значення. Якщо підпис може бути створений для значення, можна досягти скриптів Bitcoin зі збереженням стану. Тобто, перевіряючи сигнатуру значення x у скриптах 1 і 2, можна переконатися, що одне й те саме значення x використовується в обох скриптах. Якщо є конфліктуюча сигнатура, тобто для однієї і тієї ж змінної x, може бути застосовано штраф. Це рішення відоме як бітове зобов'язання.
Принцип бітового зобов'язання є відносно простим. Біт відноситься до встановлення двох різних хеш-значень, hash0 і hash1, для кожного біта в повідомленні, що підлягає підпису. Якщо значення біта, яке підлягає підпису, дорівнює 0, відкривається преображення0 хеш0; якщо значення біта, яке підлягає підпису, дорівнює 1, відкривається преображення1 хеш1.
Беручи однобітове повідомлення m ∈{0,1} як приклад, відповідний скрипт розблокування зобов'язання біту - це лише деякі передображення: якщо значення біту - 0, відповідний скрипт розблокування - це передображення0 - '0xfa7fa5b1dea37d71a0b841967f6a3b119dbea140'; якщо значення біту - 1, відповідний скрипт розблокування - це передображення1 - '0x47c31e611a3bd2f3a7a42207613046703fa27496'. Отже, завдяки зобов'язанню біту, можливо прорватися через обмеження безстанційного UTXO та досягти скриптів Bitcoin зі станом, що розвиваються, що робить можливими різноманітні цікаві нові функції.
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, активоване в листопаді 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), при витрачанні через шлях скрипта, відповідний Merkle-шлях не може перевищувати максимальної довжини 128. Це означає, що кількість tapleafs в taptree не може перевищувати 2^128. З моменту оновлення SegWit у 2017 році мережа Bitcoin вимірює розмір блоку в одиницях ваги з максимальною підтримкою 4 мільйони одиниць ваги (приблизно 4 МБ). Коли вивод P2TR витрачається через шлях скрипта, потрібно розкрити лише один скрипт tapleaf, що означає, що блок запакований з одним скриптом tapleaf. Це означає, що для транзакцій P2TR розмір скрипту, що відповідає кожному tapleaf, може бути максимум близько 4 МБ. Однак за політикою за замовчуванням Bitcoin багато вузлів пересилають лише транзакції менше 400K; для великих транзакцій потрібна співпраця з майнерами, щоб їх запакувати.
Премія за простір скрипта, яку принесла Taproot, робить його більш цінним для моделювання криптографічних операцій, таких як множення та хешування, використовуючи існуючі опкоди.
При побудові перевірки обчислень на основі P2TR розмір відповідного скрипта більше не обмежується 4 МБ, але може бути розбитий на кілька підфункцій, розподілених по кількох tapleafs, тим самим прориваючи обмеження 4 МБ на простір скриптів. Фактично, алгоритм перевірки Groth16, реалізований у поточному BitVM2, має розмір до 2 ГБ. Однак його можна розбити та розподілити по близько 1000 tapleafs, а поєднуючи його з бітовим зобов'язанням, можна обмежити узгодженість між входами та виходами кожної підфункції, забезпечуючи цілісність та правильність всього обчислення.
На даний момент, Bitcoin надає два внутрішніх методи витрат для одного UTXO: витрата за допомогою скрипта або за допомогою публічного ключа. Тому, якщо виконано правильний підпис публічного ключа або умови скрипту, UTXO може бути витрачено. Два UTXO можуть бути витрачені незалежно один від одного і не можуть бути обмежені, що означає, що для їх витрати мають бути виконані додаткові умови.
Однак Бурак, засновник протоколу Ark, вміло використав прапор SIGHASH для досягнення виходу роз'єму. Зокрема, Аліса може створити підпис, щоб відправити свої BTC Бобу. Однак, оскільки підпис може вносити кілька вхідних даних, Аліса може встановити умовний підпис: підпис дійсний для транзакції Taketx тоді і тільки тоді, коли ця транзакція споживає друге введення. Другий вхід називається роз'ємом, що з'єднує UTXO A і UTXO B. Іншими словами, транзакція Taketx дійсна тоді і тільки тоді, коли UTXO B не був витрачений Challengetx. Тому, знищивши вихід конектора, ефективність транзакції Taketx може бути заблокована.
Рисунок 1: Ілюстрація виводу конектора
У протоколі BitVM2 вихід роз'єму виконує роль якщо... else. Після того, як вихід конектора витрачений транзакцією, він не може бути витрачений іншою транзакцією, щоб забезпечити її виключні витрати. Під час практичного розгортання, щоб забезпечити період реагування на виклики, вводяться додаткові UTXO з фіксацією часу. Крім того, відповідний вихід конектора також може бути встановлений з різними стратегіями витрат за потреби, наприклад, дозволити будь-якій стороні витрачати у випадку проблемних транзакцій, дозволяючи витрачати лише оператору або дозволяючи будь-кому витрачати після тайм-ауту на транзакції відповіді.
Наразі сценарії Bitcoin в основному обмежують умови розблокування, не обмежуючи способу подальшого витрачання UTXO. Це тому, що сценарії Bitcoin не можуть читати вміст самої транзакції, що означає, що вони не можуть здійснювати інтроспекцію транзакції. Якби сценарії Bitcoin могли перевіряти будь-який вміст транзакції (включаючи виходи), можливості контракту могли б бути реалізовані.
Поточні реалізації контрактів можна розділити на дві категорії:
Як докази дійсності, так і докази шахрайства можуть використовуватися для масштабування Bitcoin L2, з основними відмінностями, показаними в Таблиці 2.
Таблиця 2: Докази дійсності проти доказів шахрайства
На основі бітової прихильності, taproot, попереднього підписання та виведення з'єднувача можна побудувати докази шахрайства на основі Bitcoin. Засновані на taproot, докази дійсності на основі Bitcoin також можуть бути побудовані шляхом введення кодів операцій контракту, таких як OP_CAT. Крім того, залежно від того, чи є у Боба система допуску, докази шахрайства можна розділити на дозволені докази шахрайства та інклюзивні докази шахрайства. У дозволених доказах шахрайства лише певні групи можуть виступати в ролі Боба для ініціювання викликів, тоді як у доказах шахрайства без дозволу будь-яка третя сторона може виступати в ролі Боба для ініціювання викликів. Безпека інклюзивних доказів шахрайства перевершує безпеку дозволених, що знижує ризик змови між дозволеними учасниками.
Залежно від кількості взаємодій відповідь-виклик між Алісою і Бобом, докази шахрайства можуть бути розбиті на однораундові докази шахрайства та багатораундові докази шахрайства, як показано на рис. 2.
Рис. 2: Однораундові докази шахрайства проти багатораундових доказів шахрайства
Як показано в Таблиці 3, докази шахрайства можуть бути реалізовані через різні моделі взаємодії, включаючи однораундові моделі взаємодії та багатораундові моделі взаємодії.
Таблиця 3: Взаємодія одного раунду проти взаємодії кількох раундів
У парадигмі масштабування Bitcoin Layer2, BitVM1 використовує багатораундовий механізм доказу шахрайства, тоді як BitVM2 використовує однораундовий механізм доказу шахрайства, а bitcoin-circle stark використовує докази дійсності. З цих, BitVM1 та BitVM2 можуть бути реалізовані без внесення будь-яких змін до протоколу Bitcoin, тоді як bitcoin-circle stark вимагає введення нової операції OP_CAT.
Для більшості обчислювальних завдань, signet, testnet та mainnet Біткойну не можуть повністю представляти 4MB скрипт, що вимагає використання технології розбиття скрипту - тобто розбиття повного обчислювального скрипту на частини менші за 4MB, розподілені по різних tapleafs.
Як показано в таблиці 3, багаторазові докази шахрайства підходять для сценаріїв, де є бажання зменшити обчислення арбітражу на ланцюжку та / або де неможливо виявити проблемні сегменти обчислення одним кроком. Багаторазові докази шахрайства, як ім'я вказує, потребують кількох раундів взаємодії між доведником та перевіряючим для виявлення проблемних сегментів обчислення, за якими слідує арбітраж, заснований на виявлених сегментах.
У ранній білий папер Робіна Лінуса BitVM (зазвичай називається BitVM1) використовував багатораундові докази шахрайства. Припускаючи, що кожний період виклику триває тиждень і використовується метод бінарного пошуку для знаходження проблемних обчислювальних сегментів, період відповіді на виклик на ланцюжку для перевірника Groth16 може тривати до 30 тижнів, що призводить до поганої своєчасності. Незважаючи на те, що в даний час команди досліджують більш ефективні методи n-арного пошуку, ніж бінарний пошук, їхня своєчасність все ще значно нижча порівняно з 2-тижневим циклом в однораундових доказах шахрайства.
В даний час багатораундові докази шахрайства в парадигмі Bitcoin використовують дозволені виклики, в той час як однораундові докази шахрайства досягли методу виклику без дозволу, зменшуючи ризик змови між учасниками і, таким чином, підвищуючи безпеку. З цією метою Робін Лінус повною мірою використав переваги Taproot для оптимізації BitVM1. Мало того, що кількість раундів взаємодії було скорочено до одного, але й метод виклику було розширено до інклюзивного підходу, хоча й ціною збільшення обчислень арбітражу в ланцюжку.
У цій моделі перевірка доказів шахрайства може бути завершена за одну взаємодію між доводчиком та перевіряючим. Перевіряючому потрібно лише ініціювати одне виклик, а доводчику потрібно відповісти лише один раз. У цій відповіді доводчик повинен надати докази того, що їх обчислення є правильними. Якщо перевіряючий виявить неузгодженості в цих доказах, виклик вдалий; в іншому випадку він невдалий. Характеристики одноразових інтерактивних доказів шахрайства показані в Таблиці 3.
Рисунок 3: Доказ шахрайства в один раунд
15 серпня 2024 року Робін Лінус опублікував технічну білу книгу BitVM2: Містить Bitcoin до другого рівня, яка реалізувала міжланцюговий міст за допомогою одноразового методу доказу шахрайства, подібного до показаного на Рис. 3.
OPCAT був частиною початкової мови сценаріїв, коли вийшов Bitcoin, але був вимкнений у 2010 році через вразливості безпеки. Однак спільнота Bitcoin обговорює його повторне ввімкнення вже кілька років. OPCAT тепер був призначений номером 347 і був увімкнений на підпису Bitcoin.
Основна функція OP_CAT полягає в поєднанні двох елементів у стеку та вталюванні об'єднаного результату назад у стек. Ця функціональність відкриває можливість для контрактів та перевіряючих STARK на Bitcoin:
Незважаючи на те, що обчислювальне навантаження, необхідне для запуску відповідного алгоритму верифікатора для перевірки доказу після доведення SNARK/STARK, набагато менше, ніж те, яке необхідне для безпосереднього виконання оригінального обчислення f, обсяг скрипту, необхідний при його конвертації для реалізації алгоритму верифікатора в скрипті Bitcoin, все ще величезний. Наразі, виходячи з існуючих кодів операцій Bitcoin, оптимізований розмір сценарію верифікатора Groth16 і розмір скрипта верифікатора Fflonk все ще перевищують 2 ГБ. Однак розмір одного блоку Bitcoin становить лише 4 МБ, що унеможливлює запуск усього сценарію перевірки в межах одного блоку. Однак, починаючи з оновлення Taproot, Bitcoin підтримує виконання скриптів за допомогою tapleaf, що дозволяє розділити скрипт верифікатора на кілька частин, причому кожен фрагмент служить Tapleaf для створення taptree. Узгодженість значень між фрагментами може бути забезпечена за допомогою бітової прив'язки.
За наявності OP_CAT контрактів STARK Verifier можна розділити на кілька стандартних транзакцій розміром менше 400 КБ, що дозволяє завершити всю перевірку валідності STARK без необхідності співпраці з майнерами.
Цей розділ розглядає відповідну технологію розщеплення скриптів Bitcoin за існуючих умов без введення або активації нових опкодів.
Під час виконання розщеплення сценарію необхідно збалансувати наступні аспекти інформації:
На даний момент методи розділення сценарію можна розділити на наступні три основні категорії:
Наприклад, після кількох раундів оптимізації розмір скрипта верифікатора Groth16 був зменшений приблизно з 7 ГБ до приблизно 1,26 ГБ. На додаток до цієї загальної обчислювальної оптимізації, кожен фрагмент також може бути оптимізований окремо, щоб повністю використовувати простір стека. Наприклад, впроваджуючи кращі алгоритми на основі таблиць пошуку та динамічно завантажуючи та вивантажуючи таблицю підстановки, можна ще більше зменшити розмір сценарію кожного фрагмента.
Витрати на обчислення та середовища виконання мов програмування web2 цілком відмінні від тих, що використовуються для Bitcoin скриптів, тому просто перекладати існуючі реалізації різних алгоритмів в Bitcoin скрипти не є можливим. Тому потрібно розглянути оптимізації, специфічні для сценарію Bitcoin:
У цій статті спочатку представлено обмеження сценаріїв Bitcoin і обговорюється використання зобов'язань Bitcoin для подолання обмеження UTXO без стану, використання Taproot для подолання обмежень простору сценарію, використання виходів з'єднувачів для обходу обмежень на метод витрат UTXO та використання контрактів для подолання обмежень перед підписанням. Потім він надає вичерпний огляд і підсумок характеристик доказів шахрайства та доказів дійсності, особливостей дозволених і інклюзивних доказів шахрайства, відмінностей між однораундовими та багатораундовими доказами шахрайства, а також технології поділу сценаріїв Bitcoin.
Для алгоритму f два недовірливі учасники, Еліс і Боб, можуть встановити довіру наступними способами:
Для вищезазначених 2, 3 та 4, нехай x - це транзакції рівня 2 та початковий стан, f - програма консенсусу рівня 2, а y - кінцевий стан транзакції, що відповідає рішенню масштабування рівня 2 блокчейну. Серед них:
Таблиця 1: Способи встановлення довіри
Додатково важливо зауважити:
Наразі, користуючись перевагами смарт-контрактів Solidity, повних за Тюрінгом, технології доказів шахрайства та доказу валідності широко використовуються в масштабуванні Ethereum Layer2. Однак, згідно з парадигмою Bitcoin, обмеженою функціональністю коду операції Bitcoin, 1000 елементами стека та іншими обмеженнями, застосування цих технологій все ще знаходиться на стадії дослідження. У цій статті узагальнено обмеження та проривні технології в рамках парадигми Bitcoin в контексті масштабування Bitcoin Layer2, досліджено технології доказу валідності та доказу шахрайства, а також окреслено унікальну технологію сегментації скриптів відповідно до парадигми Bitcoin.
Під парадигмою Біткойну існує багато обмежень, але для їх подолання можна використовувати різні винахідливі методи або техніки. Наприклад, зобов'язання бітів може прорватися через обмеження безстаничного UTXO, тапрут може прорватися через обмеження простору скрипту, вихідний коннектор може прорватися через обмеження методу витрат UTXO, а контракти можуть прорватися через обмеження попереднього підпису.
Біткойн використовує модель UTXO, де кожен UTXO заблокований в замкненому скрипті, який визначає умови, що повинні бути виконані для витрати цього UTXO. Скрипти Біткойн мають наступні обмеження:
В даний час скрипти Bitcoin повністю не мають стану. Під час виконання сценарію Bitcoin середовище його виконання скидається після кожного сценарію. Це призводить до нездатності скриптів Bitcoin підтримувати скрипти обмеження 1 і 2, що мають однакове значення x. Однак цю проблему можна обійти за допомогою деяких методів, основна ідея яких полягає в тому, щоб якимось чином підписати значення. Якщо підпис може бути створений для значення, можна досягти скриптів Bitcoin зі збереженням стану. Тобто, перевіряючи сигнатуру значення x у скриптах 1 і 2, можна переконатися, що одне й те саме значення x використовується в обох скриптах. Якщо є конфліктуюча сигнатура, тобто для однієї і тієї ж змінної x, може бути застосовано штраф. Це рішення відоме як бітове зобов'язання.
Принцип бітового зобов'язання є відносно простим. Біт відноситься до встановлення двох різних хеш-значень, hash0 і hash1, для кожного біта в повідомленні, що підлягає підпису. Якщо значення біта, яке підлягає підпису, дорівнює 0, відкривається преображення0 хеш0; якщо значення біта, яке підлягає підпису, дорівнює 1, відкривається преображення1 хеш1.
Беручи однобітове повідомлення m ∈{0,1} як приклад, відповідний скрипт розблокування зобов'язання біту - це лише деякі передображення: якщо значення біту - 0, відповідний скрипт розблокування - це передображення0 - '0xfa7fa5b1dea37d71a0b841967f6a3b119dbea140'; якщо значення біту - 1, відповідний скрипт розблокування - це передображення1 - '0x47c31e611a3bd2f3a7a42207613046703fa27496'. Отже, завдяки зобов'язанню біту, можливо прорватися через обмеження безстанційного UTXO та досягти скриптів Bitcoin зі станом, що розвиваються, що робить можливими різноманітні цікаві нові функції.
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, активоване в листопаді 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), при витрачанні через шлях скрипта, відповідний Merkle-шлях не може перевищувати максимальної довжини 128. Це означає, що кількість tapleafs в taptree не може перевищувати 2^128. З моменту оновлення SegWit у 2017 році мережа Bitcoin вимірює розмір блоку в одиницях ваги з максимальною підтримкою 4 мільйони одиниць ваги (приблизно 4 МБ). Коли вивод P2TR витрачається через шлях скрипта, потрібно розкрити лише один скрипт tapleaf, що означає, що блок запакований з одним скриптом tapleaf. Це означає, що для транзакцій P2TR розмір скрипту, що відповідає кожному tapleaf, може бути максимум близько 4 МБ. Однак за політикою за замовчуванням Bitcoin багато вузлів пересилають лише транзакції менше 400K; для великих транзакцій потрібна співпраця з майнерами, щоб їх запакувати.
Премія за простір скрипта, яку принесла Taproot, робить його більш цінним для моделювання криптографічних операцій, таких як множення та хешування, використовуючи існуючі опкоди.
При побудові перевірки обчислень на основі P2TR розмір відповідного скрипта більше не обмежується 4 МБ, але може бути розбитий на кілька підфункцій, розподілених по кількох tapleafs, тим самим прориваючи обмеження 4 МБ на простір скриптів. Фактично, алгоритм перевірки Groth16, реалізований у поточному BitVM2, має розмір до 2 ГБ. Однак його можна розбити та розподілити по близько 1000 tapleafs, а поєднуючи його з бітовим зобов'язанням, можна обмежити узгодженість між входами та виходами кожної підфункції, забезпечуючи цілісність та правильність всього обчислення.
На даний момент, Bitcoin надає два внутрішніх методи витрат для одного UTXO: витрата за допомогою скрипта або за допомогою публічного ключа. Тому, якщо виконано правильний підпис публічного ключа або умови скрипту, UTXO може бути витрачено. Два UTXO можуть бути витрачені незалежно один від одного і не можуть бути обмежені, що означає, що для їх витрати мають бути виконані додаткові умови.
Однак Бурак, засновник протоколу Ark, вміло використав прапор SIGHASH для досягнення виходу роз'єму. Зокрема, Аліса може створити підпис, щоб відправити свої BTC Бобу. Однак, оскільки підпис може вносити кілька вхідних даних, Аліса може встановити умовний підпис: підпис дійсний для транзакції Taketx тоді і тільки тоді, коли ця транзакція споживає друге введення. Другий вхід називається роз'ємом, що з'єднує UTXO A і UTXO B. Іншими словами, транзакція Taketx дійсна тоді і тільки тоді, коли UTXO B не був витрачений Challengetx. Тому, знищивши вихід конектора, ефективність транзакції Taketx може бути заблокована.
Рисунок 1: Ілюстрація виводу конектора
У протоколі BitVM2 вихід роз'єму виконує роль якщо... else. Після того, як вихід конектора витрачений транзакцією, він не може бути витрачений іншою транзакцією, щоб забезпечити її виключні витрати. Під час практичного розгортання, щоб забезпечити період реагування на виклики, вводяться додаткові UTXO з фіксацією часу. Крім того, відповідний вихід конектора також може бути встановлений з різними стратегіями витрат за потреби, наприклад, дозволити будь-якій стороні витрачати у випадку проблемних транзакцій, дозволяючи витрачати лише оператору або дозволяючи будь-кому витрачати після тайм-ауту на транзакції відповіді.
Наразі сценарії Bitcoin в основному обмежують умови розблокування, не обмежуючи способу подальшого витрачання UTXO. Це тому, що сценарії Bitcoin не можуть читати вміст самої транзакції, що означає, що вони не можуть здійснювати інтроспекцію транзакції. Якби сценарії Bitcoin могли перевіряти будь-який вміст транзакції (включаючи виходи), можливості контракту могли б бути реалізовані.
Поточні реалізації контрактів можна розділити на дві категорії:
Як докази дійсності, так і докази шахрайства можуть використовуватися для масштабування Bitcoin L2, з основними відмінностями, показаними в Таблиці 2.
Таблиця 2: Докази дійсності проти доказів шахрайства
На основі бітової прихильності, taproot, попереднього підписання та виведення з'єднувача можна побудувати докази шахрайства на основі Bitcoin. Засновані на taproot, докази дійсності на основі Bitcoin також можуть бути побудовані шляхом введення кодів операцій контракту, таких як OP_CAT. Крім того, залежно від того, чи є у Боба система допуску, докази шахрайства можна розділити на дозволені докази шахрайства та інклюзивні докази шахрайства. У дозволених доказах шахрайства лише певні групи можуть виступати в ролі Боба для ініціювання викликів, тоді як у доказах шахрайства без дозволу будь-яка третя сторона може виступати в ролі Боба для ініціювання викликів. Безпека інклюзивних доказів шахрайства перевершує безпеку дозволених, що знижує ризик змови між дозволеними учасниками.
Залежно від кількості взаємодій відповідь-виклик між Алісою і Бобом, докази шахрайства можуть бути розбиті на однораундові докази шахрайства та багатораундові докази шахрайства, як показано на рис. 2.
Рис. 2: Однораундові докази шахрайства проти багатораундових доказів шахрайства
Як показано в Таблиці 3, докази шахрайства можуть бути реалізовані через різні моделі взаємодії, включаючи однораундові моделі взаємодії та багатораундові моделі взаємодії.
Таблиця 3: Взаємодія одного раунду проти взаємодії кількох раундів
У парадигмі масштабування Bitcoin Layer2, BitVM1 використовує багатораундовий механізм доказу шахрайства, тоді як BitVM2 використовує однораундовий механізм доказу шахрайства, а bitcoin-circle stark використовує докази дійсності. З цих, BitVM1 та BitVM2 можуть бути реалізовані без внесення будь-яких змін до протоколу Bitcoin, тоді як bitcoin-circle stark вимагає введення нової операції OP_CAT.
Для більшості обчислювальних завдань, signet, testnet та mainnet Біткойну не можуть повністю представляти 4MB скрипт, що вимагає використання технології розбиття скрипту - тобто розбиття повного обчислювального скрипту на частини менші за 4MB, розподілені по різних tapleafs.
Як показано в таблиці 3, багаторазові докази шахрайства підходять для сценаріїв, де є бажання зменшити обчислення арбітражу на ланцюжку та / або де неможливо виявити проблемні сегменти обчислення одним кроком. Багаторазові докази шахрайства, як ім'я вказує, потребують кількох раундів взаємодії між доведником та перевіряючим для виявлення проблемних сегментів обчислення, за якими слідує арбітраж, заснований на виявлених сегментах.
У ранній білий папер Робіна Лінуса BitVM (зазвичай називається BitVM1) використовував багатораундові докази шахрайства. Припускаючи, що кожний період виклику триває тиждень і використовується метод бінарного пошуку для знаходження проблемних обчислювальних сегментів, період відповіді на виклик на ланцюжку для перевірника Groth16 може тривати до 30 тижнів, що призводить до поганої своєчасності. Незважаючи на те, що в даний час команди досліджують більш ефективні методи n-арного пошуку, ніж бінарний пошук, їхня своєчасність все ще значно нижча порівняно з 2-тижневим циклом в однораундових доказах шахрайства.
В даний час багатораундові докази шахрайства в парадигмі Bitcoin використовують дозволені виклики, в той час як однораундові докази шахрайства досягли методу виклику без дозволу, зменшуючи ризик змови між учасниками і, таким чином, підвищуючи безпеку. З цією метою Робін Лінус повною мірою використав переваги Taproot для оптимізації BitVM1. Мало того, що кількість раундів взаємодії було скорочено до одного, але й метод виклику було розширено до інклюзивного підходу, хоча й ціною збільшення обчислень арбітражу в ланцюжку.
У цій моделі перевірка доказів шахрайства може бути завершена за одну взаємодію між доводчиком та перевіряючим. Перевіряючому потрібно лише ініціювати одне виклик, а доводчику потрібно відповісти лише один раз. У цій відповіді доводчик повинен надати докази того, що їх обчислення є правильними. Якщо перевіряючий виявить неузгодженості в цих доказах, виклик вдалий; в іншому випадку він невдалий. Характеристики одноразових інтерактивних доказів шахрайства показані в Таблиці 3.
Рисунок 3: Доказ шахрайства в один раунд
15 серпня 2024 року Робін Лінус опублікував технічну білу книгу BitVM2: Містить Bitcoin до другого рівня, яка реалізувала міжланцюговий міст за допомогою одноразового методу доказу шахрайства, подібного до показаного на Рис. 3.
OPCAT був частиною початкової мови сценаріїв, коли вийшов Bitcoin, але був вимкнений у 2010 році через вразливості безпеки. Однак спільнота Bitcoin обговорює його повторне ввімкнення вже кілька років. OPCAT тепер був призначений номером 347 і був увімкнений на підпису Bitcoin.
Основна функція OP_CAT полягає в поєднанні двох елементів у стеку та вталюванні об'єднаного результату назад у стек. Ця функціональність відкриває можливість для контрактів та перевіряючих STARK на Bitcoin:
Незважаючи на те, що обчислювальне навантаження, необхідне для запуску відповідного алгоритму верифікатора для перевірки доказу після доведення SNARK/STARK, набагато менше, ніж те, яке необхідне для безпосереднього виконання оригінального обчислення f, обсяг скрипту, необхідний при його конвертації для реалізації алгоритму верифікатора в скрипті Bitcoin, все ще величезний. Наразі, виходячи з існуючих кодів операцій Bitcoin, оптимізований розмір сценарію верифікатора Groth16 і розмір скрипта верифікатора Fflonk все ще перевищують 2 ГБ. Однак розмір одного блоку Bitcoin становить лише 4 МБ, що унеможливлює запуск усього сценарію перевірки в межах одного блоку. Однак, починаючи з оновлення Taproot, Bitcoin підтримує виконання скриптів за допомогою tapleaf, що дозволяє розділити скрипт верифікатора на кілька частин, причому кожен фрагмент служить Tapleaf для створення taptree. Узгодженість значень між фрагментами може бути забезпечена за допомогою бітової прив'язки.
За наявності OP_CAT контрактів STARK Verifier можна розділити на кілька стандартних транзакцій розміром менше 400 КБ, що дозволяє завершити всю перевірку валідності STARK без необхідності співпраці з майнерами.
Цей розділ розглядає відповідну технологію розщеплення скриптів Bitcoin за існуючих умов без введення або активації нових опкодів.
Під час виконання розщеплення сценарію необхідно збалансувати наступні аспекти інформації:
На даний момент методи розділення сценарію можна розділити на наступні три основні категорії:
Наприклад, після кількох раундів оптимізації розмір скрипта верифікатора Groth16 був зменшений приблизно з 7 ГБ до приблизно 1,26 ГБ. На додаток до цієї загальної обчислювальної оптимізації, кожен фрагмент також може бути оптимізований окремо, щоб повністю використовувати простір стека. Наприклад, впроваджуючи кращі алгоритми на основі таблиць пошуку та динамічно завантажуючи та вивантажуючи таблицю підстановки, можна ще більше зменшити розмір сценарію кожного фрагмента.
Витрати на обчислення та середовища виконання мов програмування web2 цілком відмінні від тих, що використовуються для Bitcoin скриптів, тому просто перекладати існуючі реалізації різних алгоритмів в Bitcoin скрипти не є можливим. Тому потрібно розглянути оптимізації, специфічні для сценарію Bitcoin:
У цій статті спочатку представлено обмеження сценаріїв Bitcoin і обговорюється використання зобов'язань Bitcoin для подолання обмеження UTXO без стану, використання Taproot для подолання обмежень простору сценарію, використання виходів з'єднувачів для обходу обмежень на метод витрат UTXO та використання контрактів для подолання обмежень перед підписанням. Потім він надає вичерпний огляд і підсумок характеристик доказів шахрайства та доказів дійсності, особливостей дозволених і інклюзивних доказів шахрайства, відмінностей між однораундовими та багатораундовими доказами шахрайства, а також технології поділу сценаріїв Bitcoin.