zkEVMのプロトコルに関する質問
このドキュメントでは、Astar zkEVM のプロトコルに関するよくある質問を解説します。 詳細については、Polygon zkEVM documentationをご覧ください。
How are transactions collected and ordered?
- Astar zkEVMネットワーク上のトランザクションはユーザーのウォレットで作成され、そこで管理されている秘密鍵で署名されます。
- 生成され署名されると、トランザクションは信頼されているシーケンサーのノードに送信されます。その際、JSON-RPCインターフェイスを介してやり取りがなされます。
- それからトランザクションは、保留中のトランザクションプールに保存され、シーケンサーに選択されるのを待ちます。
- シーケンサーはプールからトランザクションを読み取り、それを棄却するか、注文し、実行するかを決めます。
- 最後に、シーケンサーはトランザクションをバッチにまとめ、次にバッチの順序づけを行います。
Rollupバッチを作る前にシーケンサーが待つ時間やトランザクションのインターバルはありますか?
シーケンサーには常にオープンバッチがあります。 トランザクションは、このバッチがいっぱいになるか、長いタイムアウトが発生するまで、このバッチに追加されます。 これらのバッチは128K個のバッチ(または大きなタイムアウト)に達するまで蓄積され、蓄積したらL1へのシーケンシングトランザクションが送信されます。
L2ユーザーの観点からは、新しいL2ブロック(L2バッチとは異なる)がクローズされ、ユーザーに送信されるように見えます。 ユーザーには、L2 バッチがクローズされていない場合でも、トランザクションが確定したように見えます。 1つの L2 トランザクションで1つの L2 ブロックだからです。
L1でファイナライズされるためにトランザクションはどのような過程を通過しますか?
バッチ内の特定のトランザクションを検証するプロセスには、通常、3つのステップが必要です。
-
Trusted State: トランザクションは信頼のあるシーケンサーによってほとんど瞬時にこの状態になります。 L1でのトランザクションは必要ありません。
-
Virtual State: トランザクションはL1にあります。 状態が確定的で、計算が容易なため、この状態のトランザクションとその順番は変更できません。
-
Verified State: virtual stateがスマートコントラクトによって検証されると、資金を引き出すことが可能になります。
シーケンサーは証明を生成するためにどのようにトランザクションを検証しますか?
シーケンサーはトランザクションプールからトランザクションを取得し、それが正しくフォーマットされ、必要なすべての情報を含んでいることを確認します。 シーケンサーは以下の点をチェックします:
-
送金者がトランザクションのガス代とスマートコントラクトにより必要とされる十分な資金を持っていることを確認することで、取引が有効であることを確認します。 もし十分な資金を持っていれば、有効で、正しいバイトコードを生成します。
-
送信者のトランザクションナンスをチェックし、最後に使用されたナンスより1だけ大きいものであることを確認することで、トランザクションが複製されていないことを確認します。
-
送信者の口座残高が別のトランザクションで既に使われていないことを確認して、トランザクションが二重支払いでないことを確認します。