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