Як ZeroSync допоможе знизити витрати на перевірку Біткоїн-вузлів

Як ZeroSync допоможе знизити витрати на перевірку Біткоїн-вузлів

Використовуючи докази з нульовим розголошенням, ZeroSync може радикально зменшити обчислювальні витрати на завантаження Біткоїн-клієнта.

Докази з нульовим розголошенням (ZKP) – це тема, яка обговорюється в індустрії вже понад 10 років. Навіть сам Сатоші Накамото знав про них як про примітив, який можна було використати, і ідея їхнього застосування у Біткоїні обговорювалася ще у 2010 році.

На мій погляд, докази з нульовим розголошенням завжди були однією з потенційних «довгострокових» функцій Біткоїна, які ніколи не мали надійної, конкретної реалізації, але могли зрештою розкритися та бути корисними для роботи. Хіба не очевидно, що криптографічний доказ того, що якесь твердження вірне чи що ви маєте деяку інформацію, не розкриваючи її, дуже цінний? Особливо у випадку дуже складних речей, використовуючи відносно невеликі докази?

Складні та великі смартконтракти/скрипти вимагають розміщення пропорційно великих фрагментів даних свідків у блокчейні, щоб витрачати монети. Це можуть бути або буквально великі обсяги даних, або дані, які дорого обчислювати та перевіряти. Це традиційна особливість блокчейнів: чим складніша умова для витрачання монет, тим дорожче перевірка або тим більше даних потрібно для їхнього витрачання.

Докази з нульовим розголошенням завжди використовувалися як спосіб змінити це, дозволяючи підтверджувати дуже складні умови сценарію за допомогою невеликої або постійної кількості даних, які під час перевірки остаточно демонструють, що ці умови були виконані. Це пов'язано з фундаментальною асиметрією між доведенням і перевіркою з допомогою доказів з нульовим розголошенням.

Щоб навести конкретний, максимально простий приклад, кільцеві підписи – це дуже проста форма ZKP. Ідея полягає в тому, щоб надати підпис, який можна перевірити одним ключем у великій групі ключів, не розкриваючи, який саме. Правильно визначивши алгоритм підпису, можна створити єдиний підпис, який можна перевірити з усього набору відкритих ключів і показати, що він був створений одним із них, але не вказувати, яким саме.

Ось як працюють докази з нульовим розголошенням на дуже високому рівні. Ви створюєте протокол, щоб довести щось, що включає спосіб надати доказ від сторони, яка стверджує певний факт, а для іншої сторони – спосіб це перевірити. У разі кільцевих підписів це алгоритм підпису, який перевіряє набір відкритих ключів, не вказуючи на жоден з них. Це є ключовим моментом: ви щось доводите, фактично не розкриваючи інформацію, яка зазвичай використовується для доказу цього (у цьому випадку підпис одним відкритим ключем).

Знайомство з ZeroSync

Після багатьох років обговорення можливостей, нарешті, досягнуто прогресу у використанні ZKP у Біткоїні у формі проєкту ZeroSync. Цікаво те, що він не має нічого спільного з блокуванням або витрачанням монет. Не буде жодного операційного коду ZKP або будь-якого способу заблокувати монети в ланцюжку з їхньою допомогою. Він застосовується, щоб допомогти повним вузлам набагато швидше виконати початкову синхронізацію.

Однак це масштабний задум, і все не відбудеться одразу. Як я вже говорив вище, описуючи кільцеві підписи, використання ZKP вимагає, щоб протокол був розроблений для кожної конкретної речі, яку ви намагаєтесь довести. Не існує «доказів з нульовим розголошенням», які можуть довільно довести будь-що, тому що кожному з них потрібен свій власний унікальний протокол доказу, щоб достатньою мірою підтвердити певний тип обчислень або твердження про будь-який вид даних.

ZeroSync працює над ітеративною побудовою трьох доказів, які забезпечать повну перевірку історичного ланцюжка блоків, не вимагаючи від користувача його фактичного завантаження та обробки. Найважливіше тут те, що для досягнення цієї мети не потрібні абсолютно ніякі консенсусні зміни у протоколі Біткоїна. Все відбувається просто на рівні програми, тобто у програмному забезпеченні, яке ви запускаєте. Воно перевіряє і реалізує ті ж правила консенсусу, що і звичайний Біткоїн-вузол. По завершенні розробки будь-хто може просто вибрати використання такого вузла ZeroSync і переконатися, що набір UTXO, що завантажується ним, дійсний. Або ви можете просто продовжувати використовувати Bitcoin Core та повністю перевіряти все звичайним способом.

Докази заголовка блоку

Перший доказ, над яким працює команда ZeroSync і який мав би бути випущений до цього часу, стосується валідності заголовків блоків. Він доводить, що кожен блок у ланцюжку правильно відповідає вимогам складності у визначений час, і відстежує кожну зміну складності, щоб переконатися, що кожен блок відповідає визначеній цілі. Це також матиме величезну перевагу для архітектури гаманця зі спрощеною платіжною верифікацією (Simplified Payment Verification (SPV)).

Кожен Біткоїн-блок, по суті, є деревом Меркла кожної транзакції в блоці, а також заголовком, який містить деякі інші дані, і коренем цього дерева Меркла. Доказ заголовка блоку ZeroSync у процесі побудови також застосовуватиме таке дерево Меркла до кожного окремого заголовка блоку в ланцюжку. Таким чином, так само як кожна транзакція закріплюється за допомогою дерева Меркла, що веде до одного хешу, кожен блок у блокчейні буде закріплено за одним хешем з використанням дерева Меркла. Це дозволить отримати набагато компактніші докази з нульовим розголошенням. Наразі для реалізації SPV користувач повинен зберігати повну копію заголовка кожного блоку в ланцюжку блоків і, за наявності транзакції та шляху дерева Меркла від неї до заголовка блоку, може використовувати це для перевірки того, що вона дійсно була зафіксована в блоці.

Маючи докази заголовків блоків користувачам навіть не потрібно копіювати заголовки блоків, щоб переконатися, що транзакція закріплена в блокчейні. Вони просто додають шлях Меркла від заголовка блоку, в якому знаходиться транзакція, до кореневого хешу поточного дерева Меркла блокчейну, і це забезпечує ті ж гарантії безпеки у поєднанні з ZKP перевірки достовірності заголовка блоку.

Перевірка вмісту блоку

Другий доказ орієнтований на фактичну достовірність вмісту блоку, проте, як і функція Assume Valid («вважати достовірним») у Bitcoin Core, він не доводить достовірність даних свідка. Він перевірить ліміт розміру транзакції, правила інфляції монет тощо, але не надасть докази правильності підписів, хеш-блокувань та інших даних свідка. Цей доказ, однак, включатиме Utreexo, щоб інтегрувати набір UTXO на кожній висоті блоку в загальний протокол ZKP для ланцюжка.

Перший доказ просто покаже вам, що заголовки блоків дійсні, але нічого не скаже про кількість монет або набір UTXO. Другий доказ дозволить доставити набір UTXO користувачу з ZKP, підтверджуючи, що всі заголовки блоків, які ведуть до цього набору UTXO, дійсні, а також включаючи зобов'язання щодо кожного набору UTXO та всіх змін до нього, що доводить, що кожен перехід від одного до іншого також дійсний. Це дозволило б повністю синхронізуватися з Assume Valid у Bitcoin Core за замовчуванням тільки з UTXO, встановленим на цій висоті блоку, і невеликим доказом, – і все це з такою ж моделлю довіри, що й для завантаження цього всього та перевірки повних блоків напряму.

Перевірка кожної частини даних свідка

Зрештою, остаточний доказ включатиме ZKP для заголовків блоків і буде побудований на основі ZKP для Assume Valid, щоб включити доказ достовірності кожної частини даних свідків в історичному ланцюжку. Після цього етапу, з технічної точки зору, вузол, який використовує остаточну систему перевірки ZeroSync, фактично зможе завантажуватись з єдиним доказом та набором UTXO з більш надійною моделлю перевірки, ніж Bitcoin Core за замовчуванням.

Зазвичай Bitcoin Core використовує висоту блоку Assume Valid за умовчанням, щоб пропустити перевірку свідка для будь-якого блоку перед ним (хоча користувач може перевизначити це за допомогою assertvalid=0 і перевірити свідків для кожного блоку), але вузол ZeroSync міститиме доказ правильності для даних-свідків кожного блоку.

Єдина проблема з цим останнім доказом полягає в тому, що обчислювальна складність його фактичної побудови є набагато вищою, ніж у двох попередніх. Перевірка доказу проста і швидка, для цього потрібні тільки докази з нульовим розголошенням та верифікатор, але для його створення насправді потрібно взяти повні, необроблені дані, які складають звичайний доказ (в цьому випадку весь історичний блокчейн), і фактично обробити їх для побудови ZKP. Додавання даних свідка на підтвердження нині дуже дорого обходиться. Щоб ця дорожня карта запрацювала знадобиться багато оптимізації. Але якщо виявиться, що це все одно неможливо? Цей проєкт, як і раніше, матиме величезну цінність, дозволяючи користувачам «обнулити синхронізацію» до висоти блоку Assume Valid за замовчуванням, а потім звичайним чином перевіряти решту ланцюжка звідти до кінця.

Зниження обчислювальних витрат Біткоїна

Якщо його дорожня карта буде успішною, цей проєкт може вплинути на зниження обчислювальних витрат для користувачів Біткоїна, необхідних для запуску Біткоїн-клієнта, який проводить повну перевірку. Враховуючи, що розмір блокчейна зараз становить майже 500 ГБ, існує дуже обмежувальна вартість, яка не дозволяє великій кількості користувачів запускати клієнт. Для його завантаження потрібна значна пропускна здатність, а в багатьох частинах світу пропускна здатність, як і раніше, непомірно дорога. Також необхідно мати пристрій досить потужний для обробки цих даних, тоді як у багатьох частинах світу у людей немає нічого, крім смартфона.

ZeroSync може знизити цю вартість до кількох гігабайтів для набору UTXO, а підтвердження ZKP настільки невелике, що може поміститися на дискеті місткістю 1,44 МБ. І для цього не потрібно жодних змін у консенсусі чи форків.

Тепер, щоб підбити підсумок, я хочу сказати дещо досить зухвале: ZeroSync створений з використанням мови Cairo, розробленої Starkware, повної за Тьюрингом мови, яку можна використовувати для створення систем з нульовим розголошенням для довільних обчислень. Starkware – це компанія, яка розробляє ZKP для екосистеми Ethereum, зокрема роллапи з нульовим розголошенням як рішення другого рівня. ZeroSync, який пропонує клієнт синхронізації для Біткоїна, який здійснює перевірку за допомогою доказів з нульовим розголошенням, може стати першим випадком, коли реальна матеріальна розробка альткоїна справді зробить цінне покращення для екосистеми Біткоїна.

Докази з нульовим розголошенням можуть виявитися дуже потужним інструментом для Біткоїна, навіть якщо їх не буде включено до рівня консенсусу або не використовуватимуть як спосіб фактичного блокування та витрати біткоїнів. Сподіватимемося, що ZeroSync зможе досягти своїх цілей і запропонує клієнт швидкої синхронізації, над яким працює його команда. Після цього можна зробити ще більше для розгортання доказів з нульовим розголошенням в екосистемі Біткоїна, окрім початкового завантаження вузла.

Це гостьовий пост Шинобі, викладача-самоучки в Біткоїн-сфері та орієнтованого на технології ведучого Біткоїн-подкастів. Висловлені погляди є його власними і не обов’язково збігаються з точкою зору BTC Inc. або Bitcoin Magazine.

Метод ковзного блоку: новий спосіб прогнозування складності майнінгу Метод ковзного блоку: новий спосіб прогнозування складності майнінгу Luxor описує свою нову методологію для підвищення точності прогнозів складності біткоїн-майнінгу. Колін Харпер 26 травня 2023
Коли Біткоїн перетинається з ШІ: пробудження божевілля чи розсудливості? Коли Біткоїн перетинається з ШІ: пробудження божевілля чи розсудливості? Навколо штучного інтелекту проводяться ідеологічні лінії, і біткоїнерам необхідно приготуватися вступити у боротьбу. Александар Свєцкі 26 травня 2023
Чи варто починати майнити біткоїн Чи варто починати майнити біткоїн Отримання прибутку від майнінгу біткоїнів – складне завдання, але не неможливе. Ось деякі фактори, які слід врахувати, якщо ви хочете почати майнити. Кітон Рекард 24 травня 2023