すべての人へ / 仕組み
決済と記録
すべてのブロックの内容が、ブロック 0 を含めて順番に公開され、Ethereum は常にデータそのものか、別の場所で入手可能なデータへのコミットメントを保持します。これが、チェーンを単に主張されるものではなく検証可能なものにしています。
二段階の公開
| 段階 | 保持するもの |
|---|---|
| データ可用性レイヤー | ブロックごとの完全なペイロードコンテンツアドレス方式で、そのハッシュをキーとします。シーケンサーは依拠する前に受領ダイジェストを検証します |
| Ethereum のインボックス契約 | ペイロードを名指しする小さなエンベロープ60 秒のスケジューリング目標ごとに一つのコミットメント。blob か calldata かは計測した価格から選ばれます |
| 代替経路 | Ethereum 上の calldata としての完全なペイロードデータ可用性の経路が失敗したときに常に取られるので、障害の間もチェーンは導出可能なままです |
すべてのレシートを保管室に保存し、一分に一度、銀行に「今保管したレシートの指紋はこれです」という封印済みの要約を送る店を想像してください。銀行は指紋からレシートを読むことはできませんが、保管室に入れる人なら誰でも、何も変えられていないことを確かめられます。そして保管室に届かなくなったときには、店はその代わりにレシートそのものを銀行に送ります。Pickle のシーケンサーが店、データ可用性レイヤーが保管室、Ethereum が銀行です。
封印された各ブロックは、その完全なトランザクション一覧を運ぶ導出ペイロードを生成します。ペイロードはコンテンツアドレス方式のデータ可用性レイヤーにそのハッシュをキーとして保存され、シーケンサーは依拠する前に受領を検証します。そのペイロードを名指しする小さなエンベロープが、次に Ethereum 上のインボックス契約にコミットされます。何らかの理由でデータ可用性の経路が失敗した場合は、代わりに完全なペイロードが calldata として Ethereum に投稿されます。
すべてのブロックが、ブロック 0 を含めて順番に投稿されます。インボックス契約は指定されたバッチャー鍵からの追記のみを受け付け、バッチごとにインデックス付きのイベントを発行します。そのインデックスが、すべての検証者が従う全順序です。
ペイロードは、ブロックの完全なトランザクション一覧とともに、ブロック範囲、親ハッシュ、ブロックハッシュ、コミットされたタイムスタンプを運びます。タイムスタンプが含まれるのは、それがヘッダーだけでなく実行環境の一部であり、レプリカが同じハッシュを封印するには同じ時計に対して実行しなければならないからです。公開は二段階です。ペイロードはそのハッシュの下でコンテンツアドレス方式のストアへ、受領時にダイジェスト検証を伴って送られ、エンベロープは集約ウィンドウごとに L1 のインボックス契約へ送られます。インボックス契約はバッチャーに限定され、追記ごとにインデックス付きのイベントを発行します。コミットメントの手段、blob か calldata かは、計測した価格から送信ごとに選ばれます。このペイロードサイズでは、blob 手数料が低いときは実行ガスが支配的になり、高いときは素の calldata が有利になるからです。
ペイロードが運ぶもの
- ブロックの完全なトランザクション一覧。これにより、ブロックについて何も信頼する必要がありません。
- ブロック範囲、親ハッシュ、ブロックハッシュ。これにより、レプリカは自分がどこに位置し、何を再現しなければならないかを知ります。
- コミットされたタイムスタンプ。時計を読んだトランザクションはその値を見たのであり、異なる時計に対して実行するレプリカは異なるハッシュを封印してしまうからです。
ウィンドウごとに一つのコミットメントである理由
Ethereum は、封印されたブロックごとに一つのトランザクションを受け取るわけではありません。完全なデータはブロックごとにデータ可用性レイヤーへ行き、Ethereum へは集約ウィンドウごとに、60 秒のスケジューリング目標で一つのコミットメントが行きます。集約こそが、モデル上の決済費用を、ブロックごとに投稿する設計なら生じる年間数千万から数億ドルではなく、年間数百万ドル台前半に抑えているものです。制約のページが、モデル上の範囲とそれが依拠するものを示しています。
独立した検証
どの運営者でも、同じバイナリをレプリカとして動かせます。レプリカは何も生成しません。最後に適用したインデックスから Ethereum のインボックス契約を読み、各ペイロードをコンテンツアドレスで取得するか、インラインの calldata 代替経路をデコードし、コミットされたタイムスタンプに対してすべてのトランザクションを順番に再実行し、ブロックをローカルで封印し、そのハッシュをシーケンサーがコミットしたものと比較します。
不一致があれば、レプリカは恒久的に停止する
乖離は設計上、終端的です。再試行すればさらにブロックを封印して正規のチェーンから離れていき、原因を埋もれさせてしまいます。停止したレプリカは、公開データとコミットされたハッシュが食い違っているという信号です。この食い違いをオンチェーンで裁定するものは何もありません。信頼モデルのページが、そこから何が導かれるかを述べています。
同期済みのレプリカは、独立して導出した自身の状態から標準的な読み取り RPC を提供します。その残高、レシート、ヘッダーはローカルで再導出されたもので、シーケンサーの回答を信頼して写したものではありません。トランザクションの送信はシーケンサーへ転送され、レプリカはローカルのメンプールに何も受け入れません。
履歴はどこから読まれるか
シーケンサーは現在について答えることに最適化されており、最近のブロックを短い期間だけ保持します。完全な履歴はエクスプローラーのデータベースにインデックスされ、そこはシーケンサーから継続的に供給されて、履歴に関するあらゆる問いに答える場所です。どちらも同じ公開ペイロードの下流にあり、レプリカは Ethereum とデータ可用性レイヤーだけからどちらも再構築できます。