Чому біткоїну потрібні оновлення смарт-контрактів?

біткоїн смарт контрактиБіткоїну, щоб повернутися в лад найцікавіших і потрібних проектів останніх років, пропонують безліч різнобічних поліпшень: перейти на різні варіації PoS-майнінга, запустити багаторівневий блокчейн, оптимізувати Lightning Network тощо.

Зовсім недавно з'явилася інформація про те, що Taproot для біткоїна вже майже готов до впровадження. Що це таке і для чого біткоїну потрібні смарт-контракти?

Смарт-контракти в біткоїні

Певні смарт-контракти в біткоїні є і зараз. Найвідоміші - це переказ по таймеру (коли біткоїни відправляються тільки при досягненні певної висоти блокчейна або в призначену дату) і мультитранзакції (коли підтвердження транзакції вимагає наявності кількох приватних ключів і підписів до них).

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

Древо Меркла

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

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

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

Підписи Schnorr

Schnorr - новий алгоритм підпису транзакцій, своєрідний міксер для приватних і публічних ключів. З його допомогою можна змішати публічні ключі і підписи мультитранзакцій в єдиний публічний ключ і єдиний підпис. Чи навпаки. Таким чином легше приховати інформацію про те, який тип транзакції був використаний, скільки підписів і ключів використовувалося для її активації і так далі.

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

Taproot для біткоїна

Taproot - це наступний етап організації смарт-контрактів в блокчейні. Він має в собі основні характеристики всіх попередніх алгоритмів і модифікує їх за власним сценарієм. Або, як кажуть розробники, примножує на скрипт.

Цей «мікс» дуже схожий за концепцією з древом Меркла, а також дозволяє в деяких випадках включати «спільну витрату». Тобто для досягнення консенсусу в договорі можна залучити всіх учасників і організувати кооператив. Будь-яке витрачання в межах Taproot буде виглядати як звичайна транзакція, ніяких структур і складних смарт-контрактів в ній не простежується. Простіше кажучи, Taproot бере найкраще від усіх наявних технологій і модифікує це на свій лад. Але для його повноцінної роботи обов'язково наявність Schnorr в мережі.

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

Graftroot

Розглянемо приклад: Олена та Іван укладають договір на кілька біткоїнів, які вони можуть переказати один одному без обмежень. Олена хоче зробити переказ грошей Івану через тиждень після відкриття контракту. Іван же збирається переказувати монети тільки після того, як у нього з'явиться секретна фраза. У цьому випадку вони змішують свої публічні ключі в один загальний і переказують кошти. Коли підходить термін закриття контракту, вони домовляються про спосіб його закриття і створюють на основі цього правильний «загальний» підпис. Так, закритий смарт-контракт виглядає як звичайна транзакція в блокчейні з однією умовою. І не важливо, скільки умов ставили Олена і Іван для виконання контракту. Їх можуть бути тисячі, але в підсумку залишиться одна.

Головна роль Graftroot в формуванні смарт-контрактів - це повне спрощення транзакції на виході, незалежно від того, скільки десятків, сотень або тисяч умов міг містити договір.

Але Graftroot потребує інтерактивну взаємодію учасників контракту. Тобто Олена і Іван повинні домовитися про умови договору поза блокчейна, а також продумати запасні варіанти закриття контракту.

Висновок

Відомий розробник Грегорі Максвел вважає, що Graftroot, Taproot і Schnorr - це технології, які доповнюють одна іншу, і вони не можуть існувати окремо. Разом вони здійснять революцію в безпеці смарт-контрактів і оптимізації інформаційних обсягів, завдяки хешуванню і спрощенню.

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