Вывод средств в тестовой сети занимает около часа. В основной сети — не менее 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.
Более подробная информация о canonical bridge, а также о том, в каких случаях его следует использовать, а в каких – нет, приведена в следующей статье.