Як вивести токени з Whitechain у мережу Ethereum використовуючи canonical bridge

Виведення коштів у тестовій мережі займає близько години. У основній мережі — не менше 7 днів. Ця затримка передбачена протоколом Ethereum, і її неможливо обійти, тому плануйте казначейські операції та термінові грошові потоки з урахуванням цього. Виведення коштів не можна скасувати після підтвердження. Якщо спір, у рамках якого було підтверджено вашу заявку на виведення, вирішиться не на користь ініціатора, ваше підтвердження буде визнано недійсним, але ваші кошти не будуть втрачені: вам потрібно буде повторно підтвердити заявку в рамках іншого, чесного спору, і відлік затримки почнеться заново.


Щоб зняти кошти, будь ласка, виконайте такі дії:

  1. Запустіть процес на L2. Викличте L2StandardBridge.bridgeERC20 для токенів ERC20, L2ERC721Bridge.bridgeERC721 для NFT, створених на L1, або L2CrossDomainMessenger.sendMessage для надсилання довільних повідомлень. Токени, що походять з L1, спалюються, а токени, які є нативними для L2, розміщуються на зберігання в «ескроу». NFT, які є нативними для L2, не можуть бути виведені. Canonical bridge не обробляє виведення нативних WBT; для цього використовуйте міст Portal.
  2. Дочекайтеся пропозиції щодо виведення. Ініціатор операції публікує кореневе виведення на L1 через контракт DisputeGameFactory з фіксованою періодичністю (кожні 30 хвилин у тестовій мережі). Ваше виведення можна підтвердити лише в рамках «гри з вирішення спорів», у якій l2BlockNumber більший або дорівнює номеру блоку L2 вашої транзакції виведення. Щоб знайти відповідну гру та її gameIndex, відстежуйте транзакції створення в контракті DisputeGameFactory у блокчейн-браузері.
  3. Підтвердьте виведення коштів на L1. Викличте функцію “OptimismPortal.proveWithdrawalTransaction”, передавши як аргументи “gameIndex” та доказ Меркла зі сховища L2. Такі інструменти, як `viem OP Stack actions` або “op-withdrawer”, можуть автоматично згенерувати доказ за вас.
  4. Вирішіть суперечку в грі. Гра має завершитися з результатом “DEFENDER_WINS”, перш ніж ви зможете завершити транзакцію. Якщо після закінчення терміну оскарження статус, як і раніше, залишається IN_PROGRESS, будь-який користувач може викликати функцію resolveClaim у контракті гри, щоб вирішити суперечку. Цей крок не вимагає дозволу і зазвичай виконується позаланцюговим сервісом. Якщо ж результат гри визначається як CHALLENGER_WINS, ваше підтвердження визнається недійсним, але ваші кошти не втрачаються. Повторно надайте підтвердження в іншій, чесній грі; відлік затримки поновлюється з моменту нової транзакції підтвердження.
  5. Дочекайтеся закінчення затримок щодо вирішення суперечки. Перш ніж буде дозволено фіналізацію, мають минути дві незалежні затримки. “proofMaturityDelaySeconds” — це мінімальний час з моменту підтвердження вашої транзакції. “disputeGameFinalityDelaySeconds” — це мінімальний час з моменту вирішення гри на користь захисника.
  6. Здійсніть фіналізацію на L1. Викличте “OptimismPortal.finalizeWithdrawalTransaction”, щоб перевести кошти на L1.

Більш детальна інформація про канонічний міст та про те, коли його слід використовувати, а коли – ні, наведена в наступній статті.

Чи була ця стаття корисною?

0 з 0 вважають статтю корисною

Маєте ще запитання? Надіслати запит