
Стираннякодівання — це метод, що поділяє дані на кілька “шардів даних” і створює додаткові “шарди парності”. Якщо доступно достатньо шардів, навіть із частковими втратами, можна повністю відновити початкові дані.
Це схоже на головоломку із запасними деталями: основні частини (шарди даних) доповнюють резервними (шарди парності). Якщо деякі частини відсутні, достатньо зібрати певну кількість для складання повного зображення.
Ключові параметри стираннякодівання — k і r. Дані ділять на k шардів даних і генерують r шардів парності, разом n = k + r. Система відновлює дані навіть при втраті будь-яких r шардів, якщо залишаються доступними будь-які k шардів.
У технічній практиці часто використовують Reed–Solomon-кодування — класичний метод, який створює парні шарди за допомогою поліноміальних обчислень і застосовується десятиліттями. Наприклад, при k = 6 і r = 3 отримують 9 шардів. Можна втратити будь-які 3 шарди, і дані залишаться відновлюваними, причому надлишок зберігання становить близько 1,5x (9/6).
Відновлення відбувається подібно до “розв’язування рівнянь”: зібравши будь-які k шардів, алгоритми відновлюють початкові дані. У розподілених системах це гарантує надійний доступ до даних навіть при збоях вузлів, дисків або мережі.
У блокчейнах і децентралізованих мережах вузли розташовані по всьому світу й працюють із різною стабільністю. Дублювання повних копій даних потребує значних ресурсів пам’яті та пропускної здатності. Стираннякодівання надає аналогічну надійність із меншими витратами на сховище, що ідеально для середовищ, де багато вузлів спільно зберігають дані.
Цей підхід знижує витрати на зберігання багатьох повних копій, дозволяючи ефективніше розподіляти дані між вузлами та регіонами. У поєднанні з верифікацією хешів і аудитом це гарантує, що дані залишаються доступними навіть при зміні вузлів, підвищуючи доступність — тобто будь-хто може отримати повний набір даних.
У децентралізованих мережах зберігання стираннякодівання застосовують для поділу великих файлів на частини й розміщення їх на різних вузлах. Це мінімізує вплив відмови одного вузла, зменшує кількість реплік і дозволяє швидше завантажувати дані завдяки паралельному отриманню.
Типова стратегія: файл ділять на k шардів даних і створюють r шардів парності; їх розміщують на вузлах у різних регіонах і під управлінням різних операторів. У багатоконтинентальних кластерах це гарантує, що навіть при збоях кількох вузлів в одному регіоні можна зібрати щонайменше k шардів для відновлення.
Багато інструментальних ланцюгів верхнього рівня підтримують додавання шару стираннякодівання поверх мереж із адресацією за вмістом, наприклад, IPFS. Операції зазвичай включають верифікацію хешів на рівні блоків і періодичну вибірку для контролю цілісності та відновлюваності блоків.
У рішеннях другого рівня, таких як Rollups, критично важливо, щоб “інші могли отримати доступ до даних транзакцій” — це і є доступність даних. Один із підходів — розширити дані стираннякодіванням у вигляді ґратки. Легкі вузли випадково вибирають невелику кількість фрагментів; якщо вибірка свідчить про можливість отримання, вважається, що всі дані доступні. Це називається вибіркою доступності даних.
Станом на 2024 рік Celestia використовує двовимірні розширення Reed–Solomon і вибірку доступності даних на основній мережі, розширюючи блокові дані у великі матриці для підвищення надійності вибірки (детальніше в офіційній технічній документації). В Ethereum стираннякодівання також розглядають у межах повного шардування (danksharding) у поєднанні з вибіркою й схемами зобов’язань для підвищення доступності.
Обидва методи запобігають втраті даних, але мають принципові відмінності:
Впровадження вимагає балансу між надійністю, обсягом сховища й експлуатаційними витратами. Ось покрокова інструкція для невеликих експериментів або продуктивного використання:
Наприклад: якщо ви керуєте власними вузлами або розгортаєте приватний кластер зберігання у тестовому середовищі Gate для розробників, можна протестувати схему з k = 8, r = 4 у трьох локаціях — перевіривши, що втрата будь-яких чотирьох шардів не перешкоджає відновленню даних.
З інженерної точки зору, двовимірне стираннякодівання у поєднанні з вибіркою доступності даних швидко розвивається в модульних блокчейнах. Активно досліджують інтеграцію кодування з криптографічними зобов’язаннями та zero-knowledge proofs для перевірюваного відновлення. Станом на 2024 рік проекти на кшталт Celestia впровадили DAS у основній мережі; спільнота продовжує оптимізувати витрати на вибірку та покращувати досвід легких вузлів у масштабі.
Для команд і окремих користувачів важливо правильно обирати значення k і r відповідно до топології сховища; використовувати хеші й аудит для підтримки цілісності; керувати трафіком ремонту у пікові періоди; а при роботі з гаманцями чи критичними активами завжди комбінувати стираннякодівання із шифруванням і географічно розподіленими резервними копіями для забезпечення доступності та безпеки.
І стираннякодівання, і RAID — це рішення для надмірності, але вони застосовуються у різних сценаріях. RAID використовують у традиційних масивах дисків, створюючи кілька копій на різних носіях; стираннякодівання математично розбиває дані на фрагменти, що дозволяє відновити інформацію при часткових втратах із вищою ефективністю сховища. У блокчейнах стираннякодівання забезпечує подібну відмовостійкість, як і реплікація, але з меншими витратами на сховище.
Час відновлення залежить від параметрів кодування й стану мережі. Наприклад, для схеми (4,2) потрібно зібрати 4 фрагменти з розподіленої мережі для відтворення початкових даних — зазвичай це триває від кількох секунд до десятків секунд. Висока затримка чи повільна відповідь вузлів можуть збільшити час відновлення.
Стираннякодівання збільшує мережевий трафік, оскільки для відновлення потрібно отримати достатню кількість закодованих фрагментів від різних вузлів — тому споживання пропускної здатності вище, ніж при зберіганні однієї репліки. Однак у порівнянні з багаторівневою реплікацією (де передаються повні копії) стираннякодівання використовує пропускну здатність ефективніше. Вибір параметрів варто узгоджувати з наявною пропускною здатністю мережі під час проєктування системи.
Теоретично так, але на практиці це складно. Стираннякодівання вимагає розподіленої мережі (кількох вузлів зберігання) та складної логіки кодування/декодування — це не підходить для однієї машини. Зазвичай невеликі проекти використовують хмарні сервіси зберігання (які вже містять надмірність) або прості схеми реплікації. Платформи на кшталт Gate пропонують інтегровані сервіси зберігання зі стираннякодіванням, якими окремі користувачі можуть скористатися опосередковано.
Різні проєкти можуть використовувати різні параметри чи реалізації; проте базові принципи стираннякодівання універсальні. Основні відмінності — у параметрах (наприклад, (4,2) проти (6,3)) і складності міжмережевої взаємодії. Зараз більшість проєктів мають незалежні реалізації без уніфікованих протоколів — це одна з причин, чому впровадження ще не стало повністю універсальним.


