Джерело: Bitcoin Magazine; Переклад: Ву Жу, Золоті фінанси
Роллапи недавно стали фокусом масштабирования BTC, став первым настоящим конкурентом для Lighting Network, получив большее внимание. Роллапи стремятся стать вторым уровнем, который не ограничен ограничениями Ліквідність в ядре Lighting Network, то есть конечному пользователю нужно заранее выделить (или «заимствовать») средства, чтобы получить деньги, или Нода-маршрутизатору нужен баланс канала, чтобы обеспечить полный поток платежей от отправителя к получателю.
Ці системи спочатку функціонували на Ethereum та інших системах Повнота за Тюрінгом, але останнім часом акцент перенесено на їхню адаптацію на блокчейн на основі UTXO (наприклад, BTC). У цій статті не мається на меті обговорити поточний стан впровадження на BTC, але обговорити бажані функції ідеального Rollup, які залежать від функцій, що в даний час не підтримуються BTC, а саме здатність прямо перевіряти ZKP (Докази з нульовим розголошенням) безпосередньо на BTC.
Основна структура Roll складається таким чином: окремий рахунок (UTXO в BTC) містить баланс усіх користувачів у Rollup. Цей UTXO містить зобов’язання у вигляді кореня Меркла, який відображає поточний баланс усіх рахунків в Rollup. Усі ці рахунки авторизовані за допомогою Відкритого/Закритого ключа, тому для витрат поза блокчейном користувачеві все ще потрібно підписати деякий вміст за допомогою Секретного ключа. Ця частина структури дозволяє користувачам вийти з Rollup в будь-який момент без необхідності дозволу, лише пред’явивши доказ того, що їх рахунок є частиною дерева Меркла. Вони можуть односторонньо вийти з Rollup без дозволу оператора.
Оператор Rollup повинен включати ZKP у транзакцію, щоб оновити кореневий меркл-дерева балансів рахунків у блокчейні поза процесом транзакції. Якщо немає ZKP, транзакція буде недійсною і не може бути включена до Блокчейну. Цей доказ дозволяє перевірити, чи всі зміни балансів рахунків поза блокчейном отримали відповідні дозволи власників рахунків, а також чи оператор не зловживає оновленням балансів, щоб вкрасти кошти користувачів або недобросовісно перерозподіляти їх іншим користувачам.
Проблема полягає в тому, що якщо на у блокчейні публікується лише корінь дерева Меркла, який користувачі можуть переглядати та отримувати доступ до нього, то як вони можуть додати свої гілки до дерева, щоб вийти без дозволу, коли їм заманеться?
У відповідному Rollup, кожен раз, коли підтверджується нова угода поза блокчейном та змінюється стан рахунку Rollup, інформація безпосередньо вноситься в ланцюжок блоків. Це не вся дерево, це було б надто абсурдно, а лише інформація, необхідна для відновлення дерева. У простій реалізації у Rollup всі суміжні рахунки будуть містити зведену інформацію про баланс, і рахунок буде додаватися тільки в угодах з оновленням Rollup.
У більш просунутих реалізаціях використовуються дисперсії балансу. По суті, це підсумок того, який рахунок збільшився або зменшився в ході оновлення. Таким чином, кожне зведене оновлення містить лише ті зміни балансу, які відбуваються. Потім користувачі можуть просто просканувати ланцюжок і «обчислити» з початку зведення, щоб отримати поточний стан балансу рахунку, що дозволяє їм реконструювати дерево Меркла поточного балансу.
Таким чином можна заощадити величезні витрати та місце в Блоку (що дозволяє економити кошти), одночасно дозволяючи користувачам забезпечувати інформацію, необхідну для одностороннього вихіду. Згідно з правилами rollup, ці дані повинні бути включені в офіційний rollup, який надається користувачам за допомогою Блокчейну, тому транзакції, які не містять рахунок-витяг або різницю рахунків, вважаються недійсними.
Ще один спосіб вирішення проблеми доступності даних для вилучення користувача - це розміщення даних в інших місцях поза ланцюжком Блок. Це вносить деякі складнощі, оскільки rollup все ще потребує забезпечення доступності даних в інших місцях. Традиційно це робиться за допомогою інших ланцюжків Блок, спеціально призначених для забезпечення доступності даних для систем, таких як rollup.
Це створює такий же потужний стан, як і безпека. Консенсусні правила можуть гарантувати абсолютну правильність даних, коли вони безпосередньо публікуються на BTC-ланцюжку Блок. Однак, коли вони публікуються в зовнішніх системах, найкращим, що вони можуть зробити, це підтвердити підтвердження SPV, тобто дані були опубліковані в іншій системі.
Це потребує доказів, що дані існують у блокчейні іншого Блоку, це нарешті стає проблемою Оракул-машина. Блокчейн Біткойн не може повністю підтвердити будь-що, крім того, що відбувається в його власному Блоку блокчейну, краще за все, що він може підтвердити - це ZKP. Однак ZKP не може підтвердити те, що Блок, що містить дані rollup, насправді був опублікований після його генерації. Він не може підтвердити, що зовнішня інформація дійсно доступна для всіх.
Це відкрило двері для атак затримки даних, що означає створення обіцянки щодо публікації даних та їх використання для просування rollup, але фактично дані не доступні. Це призводить до того, що користувачі не можуть виводити кошти. Єдиним справжнім рішенням є повне залежання від цінності та структури стимулювання систем поза BTC.
Це створює проблему для rollup. Коли йдеться про проблему доступності даних, фактично існує двохвибірковий вибір між публікацією даних на блокчейні BTC або в іншому місці. Цей вибір має серйозний вплив на безпеку, суверенітет та масштабованість rollup.
З одного боку, використання Блокчейну BTC як шару доступності даних встановлює жорсткий верхній ліміт масштабованості для rollup. Блокчейн має обмежений простір, що встановлює верхній ліміт для кількості rollup, які можуть існувати одночасно, а також загальної кількості транзакцій, які можуть бути оброблені поза блокчейном. Кожне оновлення rollup потребує простору блоку, пропорційного кількості рахунків, у яких змінилася баланс з моменту останнього оновлення. Інформаційна теорія дозволяє тільки певну ступінь стиснення даних, тому в цьому випадку немає більшого потенціалу для масштабування.
З іншого боку, використання різних шарів для досягнення доступності даних прибирає жорсткий верхній ліміт вигоди масштабовності, але також створює нові проблеми щодо безпеки та суверенітету. У Rollup, який використовує BTC для досягнення доступності даних, якщо дані, які потрібно видобути, не були автоматично розміщені на ланцюжку блоків, стан Rollup не може змінюватися. У Validiums ця гарантія повністю залежить від здатності зовнішньої системи відстоювати шахрайство та приховування даних.
Зараз, будь-який Блокпродуцент на системі доступності зовнішніх даних може захопити кошти користувачів BTCRollup, продукуючи Блоки, а не фактично розповсюджуючи їх.
Таким чином, якщо ми дійсно досягли ідеальної реалізації Rollup на BTC, що дозволяє одностороннє зняття коштів користувачем, як це буде виглядати?