Image
Сайдчейни

Огляд компромісів для різних реалізацій сайдчейнів

Кожна реалізація сайдчейну Біткоїна викликає різні питання щодо централізації та консенсусу, які слід зважити та розглянути.
25 серпня 2022

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

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

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

Централізація майнінгу

Усі різні проєкти, через які я пройшов, за винятком Liquid, так чи інакше залежать від Біткоїн-майнерів для забезпечення безпеки сайдчейну. RSK, попри те, що це федеративна прив’язка, все ще використовує Біткоїн-майнерів. Теоретично софтчейни могли б використовувати щось інше, але якби вони не забезпечували таку ж безпеку на основі доказу роботи (PoW), як біткоїн-майнери, то це відкривало б блокчейн Біткоїна для атак типу «відмова в обслуговуванні» (DoS). Отже, якби насправді був залучений софтчейн, він використовував би Біткоїн-майнерів. PoW спейсчейнів явно базується на тому, що Біткоїн-майнери підтверджують транзакції зобов’язань для сайдчейну. Драйвчейни спеціально розроблені для злитого майнінгу (майнінгу більше однієї монети одночасно) Біткоїн-майнерами. Немає можливості уникнути залучення майнерів до сайдчейнів, коли що б то не було ще, окрім чистого федеративного сайдчейну, це все, що колись було залучено.

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

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

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

Також пам’ятайте, що немає обмежень щодо вартості перевірки сайдчейнів. Перевірка деяких криптографічних функцій може бути дуже коштовною, стосуватися речей довільної складності, наприклад Ethereum, або навіть повної гігаблокової дурості, як BSV. Софтчейни містять точно такий самий ризик, на додачу до збільшення вартості перевірки запуску повних вузлів звичайними користувачами. «Єдиним порятунком», якщо можна це так назвати, є вимога активувати один сайдчейн за раз за допомогою унікального софтфорка. Це принаймні означає, що кожна окрема пропозиція та вартість її перевірки будуть ретельно вивчені перед активацією.

Драйвчейни? Стверджується, що вони розв’язують цю проблему, але насправді це не так. Поняття драйвчейну полягає в тому, що творець блоку сплачує більшу частину комісії за майнінг блоку майнерам, залишаючи собі лише невелику частину. Ця невелика частка у світі надзвичайно низької норми прибутковості – це більший прибуток, ніж можна отримати, що знову ж таки, якщо ви це зробите самі, приводить до можливості витіснити інших майнерів з бізнесу. Навіть якщо ви припустите, що розробники блоків драйвчейну не залишають собі жодної комісії, віддаючи 100% майнерам, навіщо їм це робити, якби не було іншого аспекту цього сайдчейну, який вони могли б монетизувати? Ймовірно, це форма отримуваної цінності від майнера (MEV), на якій майнери могли б заробляти гроші, маючи той самий ефект централізації. У довгостроковій перспективі будь-який тип децентралізованого майнінг-пулу мав би залучати майнерів, які керують усіма цими вузлами сайдчейнів на додаток до вузла мейнчейну, що може стати дуже нереалістичною перспективою для дрібних майнерів. Це створило б штучну нижню межу, яка б обмежувала децентралізований майнінг.

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

Ризики прив’язки та консенсусу

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

Софтчейни становлять дуже чіткий консенсусний ризик для основної мережі Біткоїна. По-перше, підвищується вартість перевірки за софтчейн, який додається для нод, призначених лише для мейнчейну, і залежно від розміру блоків або складності правил для перевірки це може бути незначним збільшенням або досить значним збільшенням. По-друге, будь-яке консенсусне розділення через недетерміновану помилку може вплинути на мейнчейн. Така помилка стала причиною розділення ланцюга у 2013 році. Через те, як працює база даних, яку Біткоїн використовує для читання та запису даних, для деяких нод «вичерпувався» час, коли вони могли зчитувати та записувати дані та анулювати інакше недійсний блок. Оскільки ці операції були обмежені залежно від ресурсів окремого комп’ютера, не існувало постійної ситуації, яка спричинила б це, оскільки ресурси кожного окремого вузла різні.

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

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

Якщо така динаміка відбувається з драйвчейнами та майнери викрадають монети з прив’язки, у користувачів цього сайдчейну буквально не буде іншого вибору, крім активованого користувачами софтфорка (UASF), щоб анулювати цю прив’язку. Це буде зовсім інша ситуація, ніж останній UASF; у 2017 році користувачі по суті грали у «гру нервів», маючи монети по обидва боки форку. Людям, які підтримували UASF, були доступні обидва варіанти. Якби UASF зупинив драйвчейнову крадіжку, користувачі не мали б обох доступних варіантів. Лише на стороні форка у вигляді UASF вони мали б монети; у раніше розробленому ланцюгу вони не мали б нічого. У них буквально немає стимулів повертатися до застарілого ланцюга, якщо UASF зазнає невдачі та призведе до розділення ланцюга.

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

На завершення

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

Зрештою, жоден із запропонованих на цей момент проєкт сайдчейнів не наближається до виконання початкової обіцянки сайдчейнів, викладеної в оригінальному документі 2014 року. Усі вони або не забезпечують рівень безпеки, бажаний у механізмі прив’язки для переміщення між ланцюжками, або становлять ризики для самої основної мережі Біткоїна. Можливо, одного разу такі речі, як докази з нульовим розголошенням, зможуть створити спосіб розробити прив’язку, яка не накладає на вузли мейнчейна підвищені витрати, пов’язані з перевіркою, як софтчейни, або з точки зору безпеки коштів користувачів не вимагає нових припущень стосовно довіри, як драйвчейни або федеративні сайдчейни. Але наразі такого конкретного проєкту не існує. Якщо ви вважаєте, що сайдчейни, які справді не вимагають довіри, є важливим удосконаленням для Біткоїна, то, сподіваюся, одного дня буде розроблена технологія для їхнього впровадження, але наразі нічого з наявного не наблизилося до цього.

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