L2出金の待ち時間は何日?届くまでの段階表示と高速出金の選び方
約11分で読めます
約11分
目次(タップで折りたたみ)
L2の上で動くあるサービスのサポート窓口に、問い合わせが届きました。「出金したのに、Ethereum(L1)の口座に届かない」。画面には確かに「成功」と出ていました。けれども、それはL2で出金を始めたという意味にすぎません。L1で使えるようになるまでには、方式ごとの待ち時間があります。途中で、利用者自身の操作が必要になることもあります。
この出金画面を作り直すことになったプロダクト責任者は、まず表示を変えることにしました。「7日」と待ち時間だけを出すのではなく、次の3つを出します。
- いまどの段階か
- 次に何が起きるか、その条件は何か
- 利用者が何をすべきか(どのチェーンで受け取るか)
すぐ受け取れる高速出金を選ばせる場合は、待ち時間だけでなく、費用、立て替える資金の有無、失敗したときの扱い、追加で信頼する相手も並べて見せます。
待ち時間が生じる理由は方式によって違います。Optimistic Rollupの標準の出金には、異議申立の期間があります。ZK Rollupでも、証明の作成、L1への反映、プロトコルごとの遅延が残ります。以下では、このプロダクト責任者が画面と運用を作り直す順に、待ち時間を「状態」と運用の目標値(SLO)に置き換える方法を見ていきます。L2の基礎はLayer 2の解説を参照してください。
この記事で使う言葉
- 標準ブリッジ:L2の公式のしくみで出金する方法。前提にするのは正規のコントラクトとL1のセキュリティ
- 異議申立期間:出金の元になったデータに誤りがないか、第三者が異議を出せる待ち時間
- 最終実行(finalize):待ち時間の後、L1で資金を受け取るために送る最後の取引
- 中継実行者(relayer):利用者の代わりに取引を送ったり、先に支払ったりする事業者
- インデクサー:チェーン上の出来事を集めて、検索しやすく整理する仕組み
「成功」の後、出金はどんな段階を通って届くか
出金ボタンを押した直後に出る「成功」は、L2で取引が通ったという意味です。L1で資金を使える状態とは違います。
OP Stackの標準の出金を例にとると、流れは次のとおりです。
- L2で出金を始める
- 出力(L2の状態をL1に記録した要約)に対する証明を出す
- 異議申立期間を待つ
- L1で最終実行する
公式仕様によれば、証明の後に原則7日の異議申立期間があります。その後、中継実行者が最終実行できます(OP Stack Withdrawals specification)。
ただし、途中の証明が後から取り消されると、証明をやり直すことになります。そのため、7日ちょうどで終わるとは限りません。仕組みの詳しい条件は、後半の「開発チーム向けの詳細」にまとめました。待つ長さは、対象チェーンの設定値で確かめます。
そこで画面には、段階ごとに次のことを出します。
| 段階 | 利用者への表示 |
|---|---|
| L2へ送信した | 「送信済み」。受取済みとは表示しない |
| L2のブロックに入った | 出金元の残高、トランザクションハッシュ、取り消せるかどうか |
| 証明を出せる | 「証明できます」と、必要なガス代 |
| 証明済みで、待っている | いちばん早く進める時刻と、遅れている理由 |
| 受け取れる | 「受取操作が必要」、または自動で実行中 |
| L1で受け取った | 完了。受取チェーン・トークン・金額 |
| 対応が必要 | 原因と、1つの復旧の操作 |
段階は、画面の文言として持つのではなく、DBに保存します。保存するのは、どの出金かを特定できる情報です。画面を閉じても元に戻せること、同じ最終実行を二重に送らないことが最低の条件です。保存する項目は後半に載せました。
待ち時間は、方式の名前ではなく区間ごとに見積もる
OP Mainnetの公式ドキュメントは、通常のL2取引の確定と、L2→L1の出金を分けています。7日待つのは、Ethereumへ資金を戻す出金の場合だと説明しています(OP Mainnet Transaction finality)。
一方ZKsyncでは、L2トークンの焼却、L2→L1のメッセージ、バッチの実行、L1での最終実行が必要です(ZKsync Bridging assets)。
2026年9月24日時点のZKsync公式ドキュメントは、安全のため最小3時間の実行遅延を設けていると説明しています。証明の作成やバッチの集約で、さらに1〜2時間以上かかりうるとしています(ZKsync Withdrawal delay)。
このように、どちらの方式も一言ではくくれません。「Optimisticは7日、ZKはすぐ」という比べ方は、採用を判断するには粗すぎます。
ですから、受け取れる時刻は区間ごとの所要時間を足して見積もります。L2への収録、L1への反映、証明や異議申立の条件、プロトコルの遅延、最終実行の送信、混雑の余裕です。計算式は後半に載せました。
実際の出金では、出力の出し直し、証明の遅れ、L1の混雑、最終実行をまだしていない、といったことが起きます。そのため、固定のカウントダウンだけを出すと、ゼロになっても完了しないことがあります。
画面では、「通常の目安」と「いちばん早く実行できる時刻」を分けます。後者は、条件を確かめ直すたびに更新します。期限を過ぎたら「遅延中」に変えるだけでなく、どの区間で止まっているかと、運営側の対応状況も示します。
高速出金は、待ち時間が消えるのではなく誰かが立て替えている
高速ブリッジでは、中継実行者や、資金を用意しておく流動性提供者が、受け取る側のチェーンで利用者に先に支払います。その後、標準の出金などを通して精算を受けます。
ethereum.orgも、Optimistic Rollupの待ち時間を避ける方法として、この仕組みを説明しています。流動性提供者が保留中の出金を引き受け、手数料と引き換えにL1で支払う、というものです(ethereum.org Optimistic rollups)。
2つの出金方法は、次のように違います。
| 判断軸 | 標準ブリッジ | 流動性型の高速ブリッジ |
|---|---|---|
| 受取時刻 | プロトコルの確定・待機条件に従う | 見積もりと中継実行者の入金に依存 |
| 主な費用 | L2/L1のガス代、必要な実行トランザクション | ブリッジ手数料、流動性・受取側のガス代、価格影響 |
| 追加の前提 | 正規コントラクトとL1のセキュリティ | ブリッジコントラクト、中継実行者、流動性、オラクル等の設計 |
| 失敗時 | 再証明・最終実行待ち | 未入金、期限切れ、返金、部分入金への対応 |
| 向く条件 | 時間より保証と費用を優先 | 即時利用価値が追加費用・リスクを上回る |
見積もりの画面には、次の5つを出します。
- 受取額と、全部の手数料
- 見積もりの有効期限と、受け取れる時間の目安
- 返金先のチェーンとアドレス
高速出金も失敗することがあります。Acrossの公式ドキュメント(2026年9月24日確認)では、入金期限(fillDeadline)までに中継実行者が入金せず、一部の入金もなければ、返金の対象になります。返金はすぐではなく、数時間かかるとされています。
状態は、処理中(pending)から入金済み(filled)へ進むか、期限切れ(expired)から返金済み(refunded)へ進みます(Across Refunds)。高速出金でも「失敗=資金がなくなった」とまとめて表示してはいけません。返金されるかどうかと、必要な操作を状態として持ちます。
画面、通知、サポートで同じ状態を使う
出金の履歴、メール・プッシュ通知、サポートの管理画面が別々の言葉を使っているとします。すると、「L2では成功したが、L1ではまだ受け取っていない」状態を、障害や資金の消失として扱ってしまいます。冒頭の問い合わせも、こうして生まれます。すべての窓口で、1つの出金IDと同じ状態を見るようにします。
- 出金の前:出金元と受取先のチェーン、トークンのコントラクト、受取額、経路、取り消せなくなる時点、必要なL1のガス代を確認してもらう。
- 処理中:いまの段階、済んだ段階、次の条件、更新時刻、ブロックエクスプローラーへのリンクを出す。
- 操作待ち:証明の提出や最終実行を利用者がするなら、ウォレットのチェーン切り替えと必要な残高を先に確かめる。中継実行者がするなら、自動で実行する予定と、ほかの手段を示す。
- 期限超過:最後に成功した出来事、RPCだけでなく別のインデクサーでも確かめた結果、再試行のID、サポートに伝える識別子を出す。
- 完了:L1の取引の成功だけでなく、受取アドレス、トークン、金額を突き合わせる。
「完了まで7日」とだけ知らせると、7日後には何の知らせも届きません。利用者は最終実行を忘れてしまいます。ですから通知は、受け取れる段階に移ったときに送ります。操作の後は、L1の取引の結果を追います。
通知のリンク先は、ウォレットをつなぐ前でも状態が見られるようにします。サポート担当が秘密鍵やシードフレーズを求めることはない、という案内もはっきり書きます。
シーケンサーの停止中に出金をどう受け付け、どこまで機能を絞るかはシーケンサー停止時のサービス継続設計、データ可用性の障害で状態を作り直して退出する条件はロールアップのデータ可用性障害で扱っています。
採用の前に、通常の場合と期限超過を同じテスト計画に入れる
- 対象チェーン・トークンごとに、標準経路の全段階と必要な操作を実際に測った
- 最短・通常・期限超過の表示が、固定のカウントダウンに頼っていない
- 高速経路の受取額、全手数料、期限、返金先、追加で信頼する相手を、選ぶ前に表示した
- 証明の提出・最終実行の二重送信、RPCのタイムアウト、再証明、未入金・返金を、わざと起こして試した
- 画面、通知、サポートが同じ出金IDと状態を見ている
- チェーン・ブリッジのアップグレードのとき、進行中の出金を見直す運用手順と責任者がいる
高速経路の流動性が薄い、対応トークンが限られる、少額が中心で待ち時間による事業の損失が小さい。こうした場合は、標準経路だけにした方が安全です。
反対に、すぐ使えることが欠かせないなら、経路をむやみに増やすのではなく、段階的に導入します。資産・金額の上限、見積もりの失効、返金までの目標時間、止める条件を決めてからです。
L1で動くアプリをL2へ移す計画の全体はL1からL2へのアプリ移行で整理しています。
開発チーム向けの詳細
ここからは、さきほどのサービスで出金の仕組みを実装する開発チームの話です。
OP Stackで7日を超えることがある理由
不正証明(fault proof)を使う現在のOP Stackでは、もう1つの条件があります。証明の元になった出力を争う異議申立ゲーム(dispute game)が、有効な結果として確定していることです。
参照したゲームが、後からブラックリスト登録などで無効になることがあります。その場合は別のゲームに対して証明し直す必要があり、7日ちょうどでは終わりません(OP Stack Specification: OptimismPortal)。
内部の状態と保存する項目
前半の段階は、内部では次の状態として持ちます。
| 内部状態 | 成立した事実 | 次の動作 |
|---|---|---|
SUBMITTED_L2 | L2へ送信済み | L2のトランザクション結果を追跡 |
INCLUDED_L2 | L2ブロックへ収録 | L1へコミットされるのを待つ |
PROVABLE | 必要な出力・証明が利用可能 | 利用者または中継実行者が証明を提出 |
WAITING | 証明済み、待機条件は未充足 | 異議・証明・時間制約を監視 |
FINALIZABLE | L1実行条件を充足 | 最終実行を送信 |
RECEIVED_L1 | L1のトランザクション結果と残高を確認 | 通知と監査記録 |
NEEDS_ACTION | 再証明、追加入金、返金等が必要 | 運用手順へ接続 |
通知はFINALIZABLEへの遷移時に送ります。各状態には、チェーンID、トランザクションハッシュ、メッセージハッシュ、ブロック、証明・出力の識別子、受取トークン、受取アドレスを持たせ、DBに永続化します。
受取時刻の見積もり式
estimated_receive_at =
l2_inclusion
+ l1_commit_or_batch
+ proof_or_challenge_requirement
+ protocol_delay
+ l1_finalization_submission
+ congestion_margin
右辺は、すべて秒など同じ単位の所要時間です。L2/L1のブロック・バッチ・証明の状態をインデクサーで観測し、プロトコルの設定から待機の条件を取得して、計算した時刻に加えます。
障害時は「再試行」ボタンより先に冪等性を設計する
| 症状 | 確認する証跡 | 安全な処理 | 利用者表示 |
|---|---|---|---|
| L2トランザクション未収録 | ノンス、トランザクション結果、置換トランザクション | 同一ノンスの競合を確認後に再送 | 未送信と送信済みを区別 |
| 証明・出力が未準備 | L1コミット、バッチ、出力状態 | 再試行間隔を延ばしながら監視。最終実行は送らない | 待機区間と更新時刻 |
| 証明が無効化 | 異議申立ゲーム、出力識別子 | 有効な出力へ再証明 | 完了見込みを再計算 |
| 最終実行に失敗 | 失敗理由、ガス、実行済みメッセージ | 実行済み照合後だけ再送 | 必要な操作と費用 |
| 高速経路が未入金 | 入金ID、期限、部分入金 | 返金対象条件を判定 | 返金先と予定 |
| UIとインデクサーが不一致 | L1/L2のRPC、コントラクトイベント、独立インデクサー | チェーン上の正本から再構築 | 表示遅延と資金状態を分離 |
ノンスは、アカウントごとに取引へ振る通し番号です。
冪等性キー(同じ要求を何度送っても1回分として扱うためのキー)は、少なくとも次のものに結びつけます。出金元チェーン、出金トランザクションまたはメッセージハッシュ、受取チェーン、受取アドレス、トークン、金額です。APIのタイムアウトの後に、同じ出金を新しく作ってはいけません。既存のチェーンのイベントを探して復旧します。
監視の目標値(SLO)は、件数だけでなく次のものを持ちます。各状態の滞留時間のp95/p99(95%・99%が収まる時間)、期限超過の数、最終実行の失敗率、返金にかかる時間、インデクサーの遅れです。
XTELAができること
XTELAは、L2・ブリッジ連携の要件整理から、出金の状態機械、インデクサー、ウォレットの画面設計、監視と復旧の手順、PoCと開発までを行います。貴社の出金画面で「今どこにあり、次に何が起きるか」を正しく見せる仕組みを一緒に作ります。出金の設計について相談する
主要参考資料
- OP Stack Specification: Withdrawals(2026年9月24日確認)
- OP Stack Specification: OptimismPortal(fault proof)(2026年9月24日確認)
- Optimism Docs: Transaction finality
- ethereum.org: Optimistic rollups
- ZKsync Docs: Bridging assets
- ZKsync Docs: Withdrawal delay(2026年9月24日確認)
- Across Docs: Refunds(2026年9月24日確認)
資料の確認日と注意
OP Stack・ZKsync・Acrossの出金と返金の仕様は2026年9月24日に確認し直しました(OP Mainnetのfinality、ethereum.org、ZKsyncのBridging assetsは2026年8月13日確認)。待機時間、ブリッジコントラクト、管理権限、対応資産は更新されるため、本番採用前に対象ネットワークの公式仕様を確かめてください。