Celestia
September 30, 2022

Запуск Celestia MVP: легкий клієнт вибірки доступності даних

Стаття за 15 червня, 2021

Сьогодні ми раді повідомити, що випустили наш мінімально життєздатний продукт (MVP - minimum viable product) — легкий клієнт вибірки доступності даних. Це знаменує собою перший важливий крок в нашій дорожній карті побудови універсальної консенсусної мережі, яка дозволить будь-кому запустити власний спеціальний блокчейн за лічені хвилини.

Коротко про головне

  • Легкі клієнти вибірки доступності даних відіграють важливу роль у безпеці, масштабованості та сумісності екосистеми Celestia.
  • Легкі клієнти Celestia користуються майже такою ж безпекою, що й повні ноди, і не покладаються на чесну консенсусну більшість для перевірки стану.
  • Наша реалізація інтегрує двовимірне кодування стирання Reed-Solomon з консенсусом Tendermint і компонентами IPFS для досягнення вибірки доступності даних.
  • Інструкції щодо того, як працювати з нашим легким клієнтом, можна знайти в кінці публікації.

Що таке клієнт вибірки доступності даних?

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

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

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

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

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

І це ще не все

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

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

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

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

Основні технічні функції

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

Ми реалізували бібліотеку дерева Merkle з простором імен (NMT). Це бінарне дерево Merkle, відсортоване за просторами імен, яке дозволяє будь-якому rollup на Celestia завантажувати лише дані, що стосуються їхнього чейну, і ігнорувати дані для інших rollup. Ноди в дереві позначаються тегами мінімального та максимального простору імен своїх дітей. Ми замінили звичайне дерево Merkle Tendermint на наш NMT. Ви можете думати про це як про багатокористувацький Tendermint, де кожній програмі потрібно дбати лише про свою частину дерева.

Ми також запровадили спеціальну схему кодування під назвою 2-Dimensional Reed-Solomon Merkle Tree (rsmt2d). Ми використовуємо цю схему для кодування даних блоку в квадрат, який кодується стиранням у більший квадрат із даними парності. Потім ми інтегрували цей механізм кодування разом із NMT для обчислення коренів Merkle рядка та стовпця з кодованого блоку стирання, який ми називаємо розширеним блоком або розширеним квадратом. Ми змінили заголовок блоку Tendermint, щоб зафіксувати ці корені рядків і стовпців.

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

Щоб зробити вибірку можливою через однорангову мережу, ми змусили виробників блоків взяти на себе зобов’язання щодо даних у спосіб, з якого легко здійснювати вибірку. Зокрема, ми написали плагін IPLD і модифікували IPFS, щоб створити оптимізовану мережу, з якої легкі клієнти можуть збирати дані. IPFS і особливо IPLD здаються природним підходом для цього, оскільки всі дані адресуються через дерево Merkle (з простором імен).

Ми об’єднали все це в бібліотеку, яка може використовуватися легкими клієнтами та іншими типами нод для перевірки наявності блоку. Щоб отримати загальне уявлення про те, як це порівнюється з ванільним легким клієнтом Tendermint, не занурюючись у код, вам слід поглянути на цей ADR.

Спробуйте запуск самі

Тепер давайте подивимось на код. Використовуйте це демо для запуску легкого клієнта.

https://youtu.be/X8lxtJJfnQk

Що далі?

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

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

Якщо ви зацікавлені стежити за розробкою Celestia або взяти участь у нашій спільноті, будь ласка, приєднайтеся до нашого каналу Telegram, зайдіть на наш сервер Discord, позначте зірочкою наші репозиторії GitHub і слідкуйте за нашим Twitter.

Українська спільнота

Приєднуйтесь до нашаго Telegram каналу, щоб читати всі новини та апдейти про Celestia українською. Ми будемо раді Вас бачити!