Перейти до основного вмісту
Change page

Доступність даних

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

Доступність даних означає впевненість користувача в тому, що дані, необхідні для перевірки блоку, дійсно доступні всім учасникам мережі. Для повних вузлів на Етеріум рівні 1 (l1) це відносно просто; повний вузол завантажує копію всіх даних у кожному блоці — дані повинні бути доступними, щоб завантаження було можливим. Блок із відсутніми даними буде відхилено, а не додано до блокчейну. Це «ончейн-доступність даних», і це є особливістю монолітних блокчейнів. Повні вузли неможливо обдурити, змусивши їх прийняти недійсні транзакції, оскільки вони самостійно завантажують і виконують кожну транзакцію. Однак для модульних блокчейнів, ролапів рівня 2 (l2) та легких клієнтів ситуація з доступністю даних є складнішою і вимагає більш досконалих процедур перевірки.

Передумови

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

Проблема доступності даних

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

Легкі вузли та ролапи рівня 2 (l2) є важливими прикладами учасників мережі, які потребують надійних гарантій доступності даних, але не можуть самостійно завантажувати та обробляти дані транзакцій. Уникнення завантаження даних транзакцій — це те, що робить легкі вузли легкими та дозволяє ролапам бути ефективними рішеннями для масштабування.

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

Рішення для доступності даних

Вибірка доступності даних (DAS)

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

DAS використовуватиметься для забезпечення того, щоб оператори ролапів робили свої дані транзакцій доступними після впровадження повного данкшардингу. Вузли Етеріуму будуть випадковим чином вибирати дані транзакцій, надані в блобах, використовуючи схему надмірності, пояснену вище, щоб переконатися, що всі дані існують. Цю ж техніку можна також застосувати для забезпечення того, щоб виробники блоків робили всі свої дані доступними для захисту легких клієнтів. Аналогічно, за умови розділення пропоузера та білдера (PBS), лише будівник блоків повинен буде обробляти весь блок — інші валідатори здійснюватимуть перевірку за допомогою вибірки доступності даних.

Комітети доступності даних

Комітети доступності даних (DAC) — це довірені сторони, які забезпечують або засвідчують доступність даних. DAC можна використовувати замість або в поєднанні з (opens in a new tab) DAS. Гарантії безпеки, які надають комітети, залежать від конкретного налаштування. Наприклад, Етеріум використовує випадково вибрані підмножини валідаторів для підтвердження доступності даних для легких вузлів.

DAC також використовуються деякими валідіумами (validiums). DAC — це довірений набір вузлів, який зберігає копії даних офлайн. DAC зобов'язаний надати дані у разі виникнення суперечки. Члени DAC також публікують ончейн-атестації, щоб довести, що зазначені дані дійсно доступні. Деякі валідіуми замінюють DAC системою валідаторів на основі доказу частки (PoS). Тут будь-хто може стати валідатором і зберігати дані позамережево. Однак вони повинні надати «заставу», яка депонується в смарт-контракті. У разі зловмисної поведінки, наприклад, приховування даних валідатором, застава може бути піддана слешингу. Комітети доступності даних на основі доказу частки значно безпечніші за звичайні DAC, оскільки вони безпосередньо стимулюють чесну поведінку.

Доступність даних та легкі вузли

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

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

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

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

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

Рішенням цієї проблеми доступності даних є DAS. Легкі вузли завантажують дуже маленькі випадкові фрагменти повних даних стану і використовують ці вибірки для перевірки доступності повного набору даних. Фактичну ймовірність помилкового припущення про повну доступність даних після завантаження N випадкових фрагментів можна розрахувати (для 100 фрагментів шанс становить 10^-30 (opens in a new tab), тобто це неймовірно малоймовірно).

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

Примітка: DAS та докази шахрайства ще не реалізовані для легких клієнтів Етеріуму на основі доказу частки, але вони є в дорожній карті, найімовірніше, у формі доведень на основі ZK-SNARK. Сучасні легкі клієнти покладаються на форму DAC: вони перевіряють особи комітету синхронізації, а потім довіряють отриманим підписаним заголовкам блоків.

Доступність даних та ролапи рівня 2

Рішення для масштабування рівня 2 (l2), такі як , знижують транзакційні витрати та збільшують пропускну здатність Етеріуму шляхом обробки транзакцій позамережево. Транзакції ролапів стискаються та публікуються в Етеріумі пакетами. Пакети представляють тисячі окремих позамережевих транзакцій в одній транзакції в Етеріумі. Це зменшує перевантаження на базовому рівні та знижує комісії для користувачів.

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

Оптимістичні ролапи публікують стислі дані транзакцій в Етеріумі та чекають певний час (зазвичай 7 днів), щоб дозволити незалежним верифікаторам перевірити дані. Якщо хтось виявляє проблему, він може згенерувати доказ шахрайства і використати його для оскарження ролапу. Це призведе до відкату ланцюга та вилучення недійсного блоку. Це можливо лише за умови доступності даних. Наразі існує два способи, якими оптимістичні ролапи публікують дані транзакцій на рівні 1 (l1). Деякі ролапи роблять дані постійно доступними як CALLDATA, які постійно зберігаються ончейн. З впровадженням EIP-4844 деякі ролапи натомість публікують свої дані транзакцій у дешевшому сховищі блобів. Це не постійне сховище. Незалежні верифікатори повинні запитувати блоби та подавати свої оскарження протягом ~18 днів, перш ніж дані будуть видалені з рівня 1 (l1) Етеріуму. Доступність даних гарантується протоколом Етеріуму лише протягом цього короткого фіксованого вікна. Після цього це стає відповідальністю інших суб'єктів в екосистемі Етеріуму. Будь-який вузол може перевірити доступність даних за допомогою DAS, тобто завантаживши невеликі випадкові вибірки даних блобу.

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

Доступність даних проти можливості отримання даних

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

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

Основний протокол Етеріуму в першу чергу стосується доступності даних, а не можливості їх отримання. Можливість отримання даних може забезпечуватися невеликою кількістю архівних вузлів, якими керують треті сторони, або вона може бути розподілена по мережі за допомогою децентралізованого сховища файлів, такого як Портал Нетворк (opens in a new tab).

Додаткова література