*Переслати оригінальну назву: Вивчення канонічного мосту і системи доведення Eclipse в Ethereum
Eclipse складається з трьох шарів:
На діаграмі нижче показано, як ці модулі взаємодіють між собою:
Решта статті буде присвячена мосту Ethereum в Eclipse, як показано на схемі. Blobstream буде передавати підтвердження, підписані валідатором Celestia, який засвідчує Ethereum, що дані про партію слотів Eclipse були опубліковані коректно. Це дозволяє мосту Eclipse звіряти дані, надані для перевірки на шахрайство, з підписаними кореневими даними від Celestia. У решті частини цього розділу ми опишемо процеси, за допомогою яких:
Потік, коли користувач вносить кошти на Eclipse через власний міст Ethereum, виглядає наступним чином:
На діаграмі нижче показано взаємодію між Ethereum, Celestia та Виконавцем SVM під час потоку депозитів, описаного вище:
Нижче показано процес публікації партій слотів Eclipse до Celestia у вигляді блоків даних:
Наведена нижче діаграма з Celestia пояснює, як зобов'язання щодо даних у певному блоці Celestia зберігаються в заголовку блоку:
Подібно до інших L2, які використовують докази шахрайства (Arbitrum, Fuel і багато інших), виведення коштів з Eclipse вимагає періоду оскарження, протягом якого верифікатори можуть надати докази шахрайства в разі недійсного переходу в інший стан:
У цьому останньому розділі ми детально розглянемо дизайн системи захисту від шахрайства Eclipse, натхненний Анатолієм Яковенком та Джоном Адлером. Як правило, для будь-якого доказу шахрайства потрібен верифікатор:
У випадку Eclipse, (1) Celestia мерклізує блоки партій блоків, які відправляє SVM-виконавець Eclipse, забезпечуючи докази включення транзакцій через свідків Меркла. Для (2), на відміну від L2 на основі EVM, які розміщують корінь Меркла у глобальному дереві станів, з міркувань продуктивності Eclipse не оновлює глобальне дерево станів для кожної транзакції, але ми пояснимо, як ми забезпечуємо коректність вхідних даних більш детально нижче. Нарешті, у випадку (3), верифікатор Eclipse генерує zk-доказ виводу (виводів) для даної транзакції, на відміну від інтерактивного ігрового підходу до верифікації, поширеного в L2 на основі EVM.
Всі транзакції Eclipse можна представити як отримання списку вхідних рахунків, виконання транзакції та створення списку результуючих вихідних рахунків:
Критично важливим спостереженням для нашого дизайну захисту від шахрайства є те, що для виконання транзакції будь-який S_InputAccount має бути S_OutputAccount'ом якоїсь попередньої транзакції. Це дозволяє нам посилатися на останню транзакцію в ланцюжку, яка створила даний вхідний обліковий запис, замість того, щоб надавати свідчення Меркла до глобального дерева станів. В результаті нашої розробки ми ввели додаткові типи звинувачень у шахрайстві, такі як посилання на те, що попередня транзакція не є дійсною, або що вхідний рахунок вже "витрачено" якоюсь пізнішою транзакцією. Нижче ми опишемо цей процес більш детально:
Крім того, пакети даних про транзакції, розміщені в Celestia, мають зобов'язання, що передаються в контракт Ethereum. Зобов'язання складаються з наступного:
Як пояснювалося вище, є кілька способів, як можна виявити, що партія є некоректною:
Якщо будь-яка партія зобов'язань буде визнана неправильною, бридж-контракт Eclipse відкотиться до останньої достовірно правильної партії зобов'язань. Зауважте, що транзакції ніколи не видаляються з ланцюжка, навіть у випадку шахрайства, тому переобчислювати потрібно лише зобов'язання.
Ця стаття має на меті надати високорівневе керівництво по мінімізованому мосту довіри Eclipse на Ethereum і пояснити деякі деталі нашого дизайну, що захищає від шахрайства. Враховуючи модульну природу нашого L2 і зародження нашого технологічного стеку, ми продовжимо випускати статті та документацію про різні аспекти Eclipse в найближчі тижні.
Щоб долучитися до Eclipse Testnet, будь ласка, дотримуйтесь наших інструкцій тут. Ви можете зв'язатися з нами через Twitter або Discord з конкретними запитами про нашу Testnet, міст або технічними питаннями.
[1]: Вузол, який обчислює результати SVM-транзакцій і застосовує кінцевий результат до нового стану Eclipse
[2]: Оператор, який передає події в ланцюжку між Ethereum та Eclipse
[3]: Зверніть увагу, що це робить виконавець, а не секвенсор. Якби він був включений до даних, що надсилаються секвенсором, це б ускладнило роботу, оскільки секвенсор міг би пропустити якийсь такт, що унеможливило б правильне виконання роботи виконавцем. Це можна було б компенсувати захистом від шахрайства, але це додало б додаткової складності. Друга перевага того, що тільки виконавець публікує підрахунок, полягає в тому, що це дозволяє легко дозволити перевизначення транзакцій, якщо потрібно, публікувати їх у Celestia.
[4]: Облікові записи SVM можуть бути представлені унікальним хешем. Єдиний спосіб змінити цей хеш - через транзакцію.
[5]: Щоб зробити це без надмірного хешування, ми будемо запускати трасування кожної виконуваної програми, щоб побачити, до яких частин кожного використовуваного sysvar насправді відбувається доступ. Це можливо, але потребуватиме модифікації інтерпретатора BPF Solana.
[6]: Сюди входять дані про спроби транзакцій, які не були виконані.
*Переслати оригінальну назву: Вивчення канонічного мосту і системи доведення Eclipse в Ethereum
Eclipse складається з трьох шарів:
На діаграмі нижче показано, як ці модулі взаємодіють між собою:
Решта статті буде присвячена мосту Ethereum в Eclipse, як показано на схемі. Blobstream буде передавати підтвердження, підписані валідатором Celestia, який засвідчує Ethereum, що дані про партію слотів Eclipse були опубліковані коректно. Це дозволяє мосту Eclipse звіряти дані, надані для перевірки на шахрайство, з підписаними кореневими даними від Celestia. У решті частини цього розділу ми опишемо процеси, за допомогою яких:
Потік, коли користувач вносить кошти на Eclipse через власний міст Ethereum, виглядає наступним чином:
На діаграмі нижче показано взаємодію між Ethereum, Celestia та Виконавцем SVM під час потоку депозитів, описаного вище:
Нижче показано процес публікації партій слотів Eclipse до Celestia у вигляді блоків даних:
Наведена нижче діаграма з Celestia пояснює, як зобов'язання щодо даних у певному блоці Celestia зберігаються в заголовку блоку:
Подібно до інших L2, які використовують докази шахрайства (Arbitrum, Fuel і багато інших), виведення коштів з Eclipse вимагає періоду оскарження, протягом якого верифікатори можуть надати докази шахрайства в разі недійсного переходу в інший стан:
У цьому останньому розділі ми детально розглянемо дизайн системи захисту від шахрайства Eclipse, натхненний Анатолієм Яковенком та Джоном Адлером. Як правило, для будь-якого доказу шахрайства потрібен верифікатор:
У випадку Eclipse, (1) Celestia мерклізує блоки партій блоків, які відправляє SVM-виконавець Eclipse, забезпечуючи докази включення транзакцій через свідків Меркла. Для (2), на відміну від L2 на основі EVM, які розміщують корінь Меркла у глобальному дереві станів, з міркувань продуктивності Eclipse не оновлює глобальне дерево станів для кожної транзакції, але ми пояснимо, як ми забезпечуємо коректність вхідних даних більш детально нижче. Нарешті, у випадку (3), верифікатор Eclipse генерує zk-доказ виводу (виводів) для даної транзакції, на відміну від інтерактивного ігрового підходу до верифікації, поширеного в L2 на основі EVM.
Всі транзакції Eclipse можна представити як отримання списку вхідних рахунків, виконання транзакції та створення списку результуючих вихідних рахунків:
Критично важливим спостереженням для нашого дизайну захисту від шахрайства є те, що для виконання транзакції будь-який S_InputAccount має бути S_OutputAccount'ом якоїсь попередньої транзакції. Це дозволяє нам посилатися на останню транзакцію в ланцюжку, яка створила даний вхідний обліковий запис, замість того, щоб надавати свідчення Меркла до глобального дерева станів. В результаті нашої розробки ми ввели додаткові типи звинувачень у шахрайстві, такі як посилання на те, що попередня транзакція не є дійсною, або що вхідний рахунок вже "витрачено" якоюсь пізнішою транзакцією. Нижче ми опишемо цей процес більш детально:
Крім того, пакети даних про транзакції, розміщені в Celestia, мають зобов'язання, що передаються в контракт Ethereum. Зобов'язання складаються з наступного:
Як пояснювалося вище, є кілька способів, як можна виявити, що партія є некоректною:
Якщо будь-яка партія зобов'язань буде визнана неправильною, бридж-контракт Eclipse відкотиться до останньої достовірно правильної партії зобов'язань. Зауважте, що транзакції ніколи не видаляються з ланцюжка, навіть у випадку шахрайства, тому переобчислювати потрібно лише зобов'язання.
Ця стаття має на меті надати високорівневе керівництво по мінімізованому мосту довіри Eclipse на Ethereum і пояснити деякі деталі нашого дизайну, що захищає від шахрайства. Враховуючи модульну природу нашого L2 і зародження нашого технологічного стеку, ми продовжимо випускати статті та документацію про різні аспекти Eclipse в найближчі тижні.
Щоб долучитися до Eclipse Testnet, будь ласка, дотримуйтесь наших інструкцій тут. Ви можете зв'язатися з нами через Twitter або Discord з конкретними запитами про нашу Testnet, міст або технічними питаннями.
[1]: Вузол, який обчислює результати SVM-транзакцій і застосовує кінцевий результат до нового стану Eclipse
[2]: Оператор, який передає події в ланцюжку між Ethereum та Eclipse
[3]: Зверніть увагу, що це робить виконавець, а не секвенсор. Якби він був включений до даних, що надсилаються секвенсором, це б ускладнило роботу, оскільки секвенсор міг би пропустити якийсь такт, що унеможливило б правильне виконання роботи виконавцем. Це можна було б компенсувати захистом від шахрайства, але це додало б додаткової складності. Друга перевага того, що тільки виконавець публікує підрахунок, полягає в тому, що це дозволяє легко дозволити перевизначення транзакцій, якщо потрібно, публікувати їх у Celestia.
[4]: Облікові записи SVM можуть бути представлені унікальним хешем. Єдиний спосіб змінити цей хеш - через транзакцію.
[5]: Щоб зробити це без надмірного хешування, ми будемо запускати трасування кожної виконуваної програми, щоб побачити, до яких частин кожного використовуваного sysvar насправді відбувається доступ. Це можливо, але потребуватиме модифікації інтерпретатора BPF Solana.
[6]: Сюди входять дані про спроби транзакцій, які не були виконані.