Для алгоритму 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 підписано два різних значення, можна застосувати покарання. Цей метод називається Біт-зобов’язанням.
Принцип обіцянки Біта відносно простий. Кожен Біт відповідає двом різним хешам: хеш0 та хеш1. Якщо значення Біта для підпису дорівнює 0, то виявляється преімідж хеша0; якщо значення Біта дорівнює 1, то виявляється преімідж хеша1.
На прикладі одного Біт-повідомлення 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 (дерево абстракцій Меркла) та підписів Schnorr, транзакції P2TR можуть створювати більш приватний, гнучкий та масштабований формат транзакцій.
P2TR підтримує два способи витрат: за допомогою шляху Секретний ключа або шляху сценарію. Згідно з вимогами Taproot (BIP 341), довжина відповідного шляху Merkle не може перевищувати 128. Це означає, що кількість tapleaf в taptree не може перевищувати 2^128. З моменту оновлення SegWit у 2017 році, мережа BTC вимірюється ваговими одиницями розміру Блоку і підтримує максимум 4 млн вагових одиниць (приблизно 4 МБ). При витраті P2TR-виводу за допомогою шляху сценарію потрібно розкрити лише один окремий сценарій tapleaf, що означає, що в Блоці буде лише один сценарій tapleaf. Тому для операцій P2TR максимальний розмір сценарію, що відповідає кожному tapleaf, може досягати приблизно 4 МБ. Однак згідно з типовою політикою BTC, багато Нод пересилають тільки транзакції розміром менше 400 КБ; більші транзакції потребують співпраці з Майнером для пакування.
Використання простору скрипта, який привносить 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, попередніх підписів та з’єднувачів ви можете побудувати доказ шахрайства на основі BTC. Також, за допомогою введення операційного коду контракту (наприклад OP_CAT), можна побудувати доказ дійсності на основі Taproot BTC. Крім того, доказ шахрайства може бути розділений на дозволений доказ шахрайства та недозволений доказ шахрайства в залежності від того, чи приєднався Боб до системи. У дозволеному доказі шахрайства лише певна група може викликати Боба на виклик, тоді як у недозволеному доказі шахрайства будь-яка третя сторона може викликати Боба на виклик. Бездозвольна система доказу шахрайства є безпечнішою, ніж дозволена система доказу шахрайства, оскільки вона зменшує ризик змови між учасниками.
Залежно від кількості взаємодій між Еліс та Бобом у виклик-відповідь, доказ шахрайства можна розділити на однофазний доказ шахрайства та багатофазний доказ шахрайства, як показано на рисунку 2.
图 2:单轮доказ шахрайства与多轮доказ шахрайства
Як показано на таблиці 3, доказ шахрайства може бути реалізований за допомогою різних моделей взаємодії, включаючи одномоментну та багаторазову моделі взаємодії.
Таблиця 3: Однокругова взаємодія та багаторазова взаємодія
У парадигмі розширення Layer2 BTC BitVM1 використовує механізм доказу шахрайства з кількома раундами, тоді як BitVM2 використовує механізм доказу шахрайства з одним раундом, а bitcoin-circle stark використовує доказ дійсності. У цих механізмів BitVM1 та BitVM2 можуть бути реалізовані без змін у протоколі BTC, тоді як для bitcoin-circle stark потрібно ввести нову операцію Код операції OP_CAT.
Для більшості обчислювальних завдань signet, testnet та mainnet BTC не можуть повністю підтримувати скрипти розміром 4 МБ, тому потрібно використовувати технологію розбиття скриптів, тобто розбити повний обчислювальний скрипт на блоки розміром менше 4 МБ та розподілити їх по різних Tapleaf.
Як показано у таблиці 3, багаторазовий доказ шахрайства підходить для тих, хто бажає зменшити обчислення арбітражу у блокчейні або випадків, коли не можна одним кроком визначити обчислювальний сегмент проблеми. Багаторазовий доказ шахрайства, як і зазначено в назві, передбачає багаторазову взаємодію між доказувачами та валідаторами для виявлення обчислювального сегмента проблеми, а потім розгляду цих сегментів для арбітражу.
Рання Біла книга BitVM Robin Linus (зазвичай відома як BitVM1) використовувала багаторазові докази шахрайства. Якщо припустити, що кожен термін виклику триває тиждень і використовує двійковий пошук для знаходження сегменту обчислень проблеми, терміни виклику викликів у відповідь на виклики у блокчейні Groth16 можуть тривати до 30 тижнів, що призводить до поганої актуальності. Хоча наразі деякі команди досліджують більш ефективні методи пошуку n-ary, ніж двійковий пошук, але їхня актуальність все ще значно менша, ніж цикл доказів шахрайства з однієї ітерації за два тижні.
Наразі, багаторазові докази шахрайства в BTC використовують дозволений виклик, тоді як одноразові докази шахрайства реалізують бездозвольний виклик, що знижує ризик змови між учасниками і підвищує безпеку. З цією метою, Робін Лінус повністю використовує переваги Taproot для оптимізації BitVM1, зменшуючи кількість взаємодій до однієї, а також розширюючи бездозвольний спосіб виклику, навіть якщо це збільшує витрати на обчислення у блокчейні.
У цій моделі підтвердження шахрайства потребує лише одного взаємодії між валідаторами та доказувачем. Валідатори повинні лише поставити виклик, а доказувач повинен відповісти лише раз. У відповіді доказувач повинен надати докази, що його обчислення є правильним. Якщо валідатори знайдуть невідповідності у доказах, то виклик буде успішним, в іншому випадку - невдалим. Одноразова взаємодія підтвердження шахрайства має такі характеристики, як показано в таблиці 3.
Рис. 3: Одноколісний доказ шахрайства
15 серпня 2024 року Робін Лінус опублікував технічну Біла книга “BitVM2: підключення BTC до другого рівня”, в якій була реалізована методика кросчейн міста з використанням однораундового доказу шахрайства, схожого на той, що показано на рисунку 3.
OP_CAT - це частина мови сценаріїв, яка була заборонена у 2010 році через вразливість безпеки під час випуску BTC. Незважаючи на це, спільнота BTC протягом багатьох років обговорює можливість повторного включення OP_CAT. Наразі OP_CAT має номер 347 і активований у мережі signet BTC.
OP_CAT основна функція полягає в об’єднанні двох елементів у стеку та поверненні результату назад у стек. Ця функція відкриває нові можливості для контрактів на BTC та верифікаторів STARK:
Незважаючи на те, що обчислювальне навантаження для доказу валідації після SNARK/STARK значно нижче, ніж обчислювальне навантаження прямого виконання початкового обчислення f, обсяг скриптів, необхідних для перетворення його на BTC скрипт для реалізації алгоритму валідатора, залишається великим. На сьогоднішній день з оптимізованими операційними кодами BTC розмір оптимізованих скриптів валідаторів Groth16 та Fflonk перевищує 2 ГБ, тоді як розмір одного блоку BTC становить лише 4 МБ, тому неможливо виконати весь скрипт валідатора в межах одного блоку. Однак з моменту оновлення Taproot BTC підтримує виконання скриптів через tapleaf, що дозволяє розбити скрипт валідатора на кілька блоків, кожен з яких буде побудований як окремий tapleaf для створення taptree. Консистентність між блоками можна забезпечити за допомогою зобов’язання бітів.
У разі OP_CAT контракту верифікатор STARK може бути розбитий на кілька стандартних транзакцій менших, ніж 400KB, що дозволяє завершити перевірку всього доказу дійсності STARK без необхідності співпраці з Майнером.
У цьому розділі буде наголошено на розщепленні техніки BTC-скрипта за наявних умов, без введення або активації будь-яких нових операційних кодів.
Під час розбиття сценарію необхідно збалансувати наступну інформацію:
Наразі методи розбиття сценарію можна розділити на наступні три категорії:
Наприклад, після кількох раундів оптимізації розмір скрипта перевірки Groth16 зменшився з приблизно 7 ГБ Падіння до близько 1,26 Гб. Окрім загальної оптимізації обчислень, кожен блок також може бути оптимізований окремо для повного використання стекового простору. Наприклад, застосування більш ефективного алгоритму таблиці пошуку, а також динамічне завантаження та видалення таблиці пошуку може подальше зменшити розмір скрипта кожного блоку.
Оскільки вартість обчислення та середовище виконання мов програмування Web2 відрізняються від скриптів BTC, просте перетворення існуючих реалізацій Алгоритму на скрипти BTC неможливе. Тому потрібно розглянути спеціальну оптимізацію для сценаріїв BTC:
У цій статті спочатку розглянуто обмеження BTC скрипту, і обговорено кілька рішень: використання обіцянки BTC для подолання обмеження безстатевості UTXO, використання Taproot для подолання обмеження простору скрипту, обхід обмеження витрат UTXO шляхом з’єднання виведення, а також вирішення обмеження підпису за допомогою контракту. Далі в статті докладно описано характеристики доказу шахрайства і доказу дійсності, включаючи особливості дозволеного та недозволеного доказу шахрайства, відмінності між одноразовим і багаторазовим доказом шахрайства, а також відповідні відомості про техніку розщеплення BTC скрипту.