доказ шахрайства є широко використовуваним технічним рішенням у сфері блокчейну, яке вперше з'явилося в спільноті Ethereum і було прийнято такими проектами Layer2, як Arbitrum та Optimism. Після виникнення екосистеми біткоїна у 2023 році Робін Лінус запропонував рішення BitVM, яке має в основі доказ шахрайства, на основі існуючих технологій біткоїна надаючи нову модель безпеки для другого рівня або мостів.
BitVM пройшов кілька етапів еволюції, від ранньої версії BitVM0, основаної на логічних воротах, до пізнішої версії BitVM2, в якій основою стали ZK Fraud Proof і верифікаційні схеми Groth16, відповідні технологічні шляхи постійно вдосконалюються. Кілька проектів, таких як Bitlayer, Citrea, BOB та інші, реалізували різні рішення на базі технології BitVM.
У цій статті буде розглянуто приклад схеми доказу шахрайства Optimism, проаналізовано її схему на основі віртуальної машини MIPS та інтерактивного доказу шахрайства, а також основні ідеї ZK-доказу шахрайства.
OutputRoot і StateRoot
Optimism є відомим проектом Optimistic Rollup, його інфраструктура складається з послідовника та смарт-контрактів на Ethereum. Після обробки транзакцій послідовник відправляє дані на Ethereum. Запуск клієнта вузла Optimism дозволяє завантажити ці дані та виконати їх локально, обчисливши хеш поточного набору станів.
Якщо сортувальник завантажить неправильний хеш набору станів, локальний обчислений результат буде іншим, у такому випадку можна ініціювати сумнів через систему доказу шахрайства.
Блокчейни на основі EVM зазвичай використовують структуру даних Merkle Tree для запису набору станів, що називається World State Trie. Після виконання транзакції World State Trie змінюється, а його остаточний хеш також оновлюється. Ethereum називає цей хеш StateRoot, який використовується для позначення зміни набору станів.
Система облікового запису Optimism схожа на Ethereum, також використовує поле StateRoot. Секретар періодично завантажує OutputRoot в Ethereum, OutputRoot розраховується на основі StateRoot та ще двох полів.
MIPS віртуальна машина та дерево Меркла пам'яті
Щоб перевірити правильність OutputRoot в ланцюгу, найпростішим способом є реалізація клієнта OP-вузла на Ethereum, але існує дві проблеми:
Інтелектуальний контракт не може автоматично отримати вхідні параметри, необхідні для доказу шахрайства.
Обмеження Gas Limit в Ethereum, не підтримує складні обчислювальні завдання
Перше питання може бути вирішене за допомогою контракту PreimageOracle. Щодо другого питання, команда OP написала віртуальну машину MIPS на Solidity, реалізувавши частину функцій вузлів OP.
Команда розробників OP написала спрощену програму на Golang, функціональність якої в основному відповідає виконанню транзакцій OP-нодами, генерації блоків та модулю OutputRoot. Але через надмірні обчислювальні витрати вона не може повністю виконати всі транзакції в ланцюзі.
Для цього Optimism розробив інтерактивну систему доказів шахрайства, яка деталізує процес обробки транзакцій у впорядковану обробку MIPS-операційних кодів. Після виконання кожного операційного коду стан віртуальної машини змінюється, ці записи узагальнюються в дереві Меркла.
У інтерактивному доказі шахрайства необхідно визначити, який код операції MIPS призвів до помилки хешу стану віртуальної машини, а потім відтворити той стан на ланцюгу та виконати цей код операції, щоб перевірити, чи є результати однаковими. Це вимагає завантаження частини інформації про стан віртуальної машини MIPS на ланцюг.
Контракти, пов'язані з доказом шахрайства в блокчейні, виконують команду MIPS за допомогою функції Step:
солідність
функція step(
байтів пам'яті _stateData,
bytes пам'ять _proof
) публічні повернення (байти32) {
// ...
}
_stateData та _proof параметри містять залежні дані виконання однієї MIPS операції, такі як стан регістрів, хеш стану пам'яті тощо.
OP використовує 32-бітну архітектуру MIPS, пам'ять може бути організована у 28-ми рівневому двійковому дереві Меркла, на нижньому рівні є 2^27 листків, які записують дані за адресами пам'яті. Хеш усіх листкових даних, зібраних разом, дорівнює memRoot.
Інтерактивний доказ шахрайства
Щоб визначити спірний MIPS код операції, команда OP розробила протокол Fault Dispute Game(FDG). У FDG є два ролі: викликач і захисник, обидві сторони повинні локально побудувати GameTree.
GameTree складається з двох рівнів дерева: перший рівень листя - це OutputRoot різних блоків, другий рівень листя - це статус хешу віртуальної машини MIPS. Сторони спору багаторазово взаємодіють в мережі, врешті-решт визначаючи одну операцію MIPS, яку потрібно виконати в мережі.
Підсумовуючи, інтерактивний доказ шахрайства містить два основні механізми:
FDG позиціонування необхідно виконати в ланцюгу для MIPS операційного коду та інформації про стан VM
Виконати цю операцію на віртуальній машині MIPS в мережі Ethereum, щоб отримати остаточний результат.
ZK-діоказ шахрайства
Традиційні доказ шахрайства мають складну взаємодію, існують такі проблеми:
Багаторазові взаємодії призводять до великих витрат на gas
Процес взаємодії триває довго, під час якого Rollup не може нормально виконувати транзакції
Висока складність розробки специфічних VM на блокчейні
Щоб вирішити ці проблеми, Optimism запропонував концепцію ZK Fraud Proof. Основна суть полягає в тому, що під час виклику вказуються транзакції, які потрібно відтворити, секвенсер надає ZK доказ, який перевіряється контрактом Ethereum.
На відміну від інтерактивного доказу шахрайства, ZK Fraud Proof перетворює багаторазові взаємодії на одноразове генерування та перевірку ZK-доказів, заощаджуючи час і кошти. На відміну від ZK Rollup, OP Rollup на основі ZK Fraud Proof генерує докази лише у разі оскарження, знижуючи обчислювальні витрати.
Ідея ZK-доказу шахрайства також була прийнята BitVM2. Проекти, що використовують BitVM2, такі як Bitlayer, Goat Network та інші, реалізують програму верифікації ZK Proof через біткойн-скрипт, що значно зменшує розмір програми для запису в блокчейн.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Детальний аналіз доказу шахрайства: від інтерактивних схем до технічної еволюції ZK Fraud Proof
Доказ шахрайства та реалізація ZK Fraud Proof
доказ шахрайства є широко використовуваним технічним рішенням у сфері блокчейну, яке вперше з'явилося в спільноті Ethereum і було прийнято такими проектами Layer2, як Arbitrum та Optimism. Після виникнення екосистеми біткоїна у 2023 році Робін Лінус запропонував рішення BitVM, яке має в основі доказ шахрайства, на основі існуючих технологій біткоїна надаючи нову модель безпеки для другого рівня або мостів.
BitVM пройшов кілька етапів еволюції, від ранньої версії BitVM0, основаної на логічних воротах, до пізнішої версії BitVM2, в якій основою стали ZK Fraud Proof і верифікаційні схеми Groth16, відповідні технологічні шляхи постійно вдосконалюються. Кілька проектів, таких як Bitlayer, Citrea, BOB та інші, реалізували різні рішення на базі технології BitVM.
У цій статті буде розглянуто приклад схеми доказу шахрайства Optimism, проаналізовано її схему на основі віртуальної машини MIPS та інтерактивного доказу шахрайства, а також основні ідеї ZK-доказу шахрайства.
OutputRoot і StateRoot
Optimism є відомим проектом Optimistic Rollup, його інфраструктура складається з послідовника та смарт-контрактів на Ethereum. Після обробки транзакцій послідовник відправляє дані на Ethereum. Запуск клієнта вузла Optimism дозволяє завантажити ці дані та виконати їх локально, обчисливши хеш поточного набору станів.
Якщо сортувальник завантажить неправильний хеш набору станів, локальний обчислений результат буде іншим, у такому випадку можна ініціювати сумнів через систему доказу шахрайства.
Блокчейни на основі EVM зазвичай використовують структуру даних Merkle Tree для запису набору станів, що називається World State Trie. Після виконання транзакції World State Trie змінюється, а його остаточний хеш також оновлюється. Ethereum називає цей хеш StateRoot, який використовується для позначення зміни набору станів.
Система облікового запису Optimism схожа на Ethereum, також використовує поле StateRoot. Секретар періодично завантажує OutputRoot в Ethereum, OutputRoot розраховується на основі StateRoot та ще двох полів.
MIPS віртуальна машина та дерево Меркла пам'яті
Щоб перевірити правильність OutputRoot в ланцюгу, найпростішим способом є реалізація клієнта OP-вузла на Ethereum, але існує дві проблеми:
Перше питання може бути вирішене за допомогою контракту PreimageOracle. Щодо другого питання, команда OP написала віртуальну машину MIPS на Solidity, реалізувавши частину функцій вузлів OP.
Команда розробників OP написала спрощену програму на Golang, функціональність якої в основному відповідає виконанню транзакцій OP-нодами, генерації блоків та модулю OutputRoot. Але через надмірні обчислювальні витрати вона не може повністю виконати всі транзакції в ланцюзі.
Для цього Optimism розробив інтерактивну систему доказів шахрайства, яка деталізує процес обробки транзакцій у впорядковану обробку MIPS-операційних кодів. Після виконання кожного операційного коду стан віртуальної машини змінюється, ці записи узагальнюються в дереві Меркла.
У інтерактивному доказі шахрайства необхідно визначити, який код операції MIPS призвів до помилки хешу стану віртуальної машини, а потім відтворити той стан на ланцюгу та виконати цей код операції, щоб перевірити, чи є результати однаковими. Це вимагає завантаження частини інформації про стан віртуальної машини MIPS на ланцюг.
Контракти, пов'язані з доказом шахрайства в блокчейні, виконують команду MIPS за допомогою функції Step:
солідність функція step( байтів пам'яті _stateData, bytes пам'ять _proof ) публічні повернення (байти32) { // ... }
_stateData та _proof параметри містять залежні дані виконання однієї MIPS операції, такі як стан регістрів, хеш стану пам'яті тощо.
OP використовує 32-бітну архітектуру MIPS, пам'ять може бути організована у 28-ми рівневому двійковому дереві Меркла, на нижньому рівні є 2^27 листків, які записують дані за адресами пам'яті. Хеш усіх листкових даних, зібраних разом, дорівнює memRoot.
Інтерактивний доказ шахрайства
Щоб визначити спірний MIPS код операції, команда OP розробила протокол Fault Dispute Game(FDG). У FDG є два ролі: викликач і захисник, обидві сторони повинні локально побудувати GameTree.
GameTree складається з двох рівнів дерева: перший рівень листя - це OutputRoot різних блоків, другий рівень листя - це статус хешу віртуальної машини MIPS. Сторони спору багаторазово взаємодіють в мережі, врешті-решт визначаючи одну операцію MIPS, яку потрібно виконати в мережі.
Підсумовуючи, інтерактивний доказ шахрайства містить два основні механізми:
ZK-діоказ шахрайства
Традиційні доказ шахрайства мають складну взаємодію, існують такі проблеми:
Щоб вирішити ці проблеми, Optimism запропонував концепцію ZK Fraud Proof. Основна суть полягає в тому, що під час виклику вказуються транзакції, які потрібно відтворити, секвенсер надає ZK доказ, який перевіряється контрактом Ethereum.
На відміну від інтерактивного доказу шахрайства, ZK Fraud Proof перетворює багаторазові взаємодії на одноразове генерування та перевірку ZK-доказів, заощаджуючи час і кошти. На відміну від ZK Rollup, OP Rollup на основі ZK Fraud Proof генерує докази лише у разі оскарження, знижуючи обчислювальні витрати.
Ідея ZK-доказу шахрайства також була прийнята BitVM2. Проекти, що використовують BitVM2, такі як Bitlayer, Goat Network та інші, реалізують програму верифікації ZK Proof через біткойн-скрипт, що значно зменшує розмір програми для запису в блокчейн.