レッスン1 — Batch 投稿と data availability
問い
2024 年 3 月以前、Ethereum に rollup data を 1MB 投稿するコストは batch あたり約 $300。EIP-4844 後、同じ 1MB が $3〜$30 に下がった。10 倍のコスト低下は rollup 史上最大の改善で、Base の tx 手数料がセント単位で済む理由。そもそもなぜ rollup は L1 に data を投稿しなければならないのか?
原理(最小モデル)
- State root(32 byte)だけでは L2 state を再構築できない. Tx data がなければ sequencer が嘘をつけて誰も検知できない。
- Data availability = 「tx data が皆の読める場所に公開」. 誰でも tx 再実行 + 同 state root 検証可能。
- 4 つの DA モデル. Rollup(L1 calldata / blob)/ Validium(DA 委員会)/ Volition(tx ごと選択)/ Optimium(DA 委員会 + fraud proof)。
- EIP-4844 blob 革命. 専用 fee market + 18 日 prune(fraud proof window 十分)+ 1 block 最大 768KB(128KB × 6)+ byte コスト 0.1-1 gas(vs calldata 16 gas)。
- 3 サービスが異なる頻度. Sequencer(block ごと ~2s)+ Batcher(~60s)+ Proposer(~1h)。
- 圧縮が静かなる勝者. zlib 3-5×、カスタム 5-10×。スループット倍増。
- DA 代替. Celestia(専用 DA、~$0.0001/byte)/ EigenDA(restaker)/ Avail。Ethereum セキュリティ vs コスト trade。
具体例
DA モデル:
| モデル | Data の場所 | Trust | 例 |
|---|---|---|---|
| Rollup | L1 calldata or blob 投稿 | L1 コンセンサス | Optimism、Arbitrum、すべての「真の」rollup |
| Validium | 別の DA 委員会 投稿 | Multisig / PoS | StarkEx、dYdX v3 |
| Volition | ユーザが tx ごと選択 | 混合 | dYdX v4 系ハイブリッド |
| Optimium | Fraud proof 付き DA 委員会 | DA 委員会 + fraud proof | より新しい設計 |
Calldata vs Blob:
| 性質 | Calldata | Blob (4844) |
|---|---|---|
| byte あたりコスト | 約 16 gas | 可変、典型的 0.1〜1 gas |
| L1 上の寿命 | 永久 | 約 18 日(その後 prune) |
| 検証 | 誰でも読める | 18 日間は誰でも読める |
| ブロックあたり最大 | 実用 ~125KB | 128KB × 6 = 768KB |
Batch 投稿フロー:
sequenceDiagram
participant Seq as Sequencer
participant Batcher
participant L1 as Ethereum
participant Proposer
Note over Seq: 多くの L2 ブロック構築
Seq->>Batcher: L2 ブロック生成済
Note over Batcher: 圧縮 + batch
Batcher->>L1: Batch data 付き blob tx 提出
Note over L1: Blob が L1 ブロックに含まれる
Note over Seq: Batch の新 state root 計算
Seq->>Proposer: 最新 state root
Proposer->>L1: State root を OutputOracle に提出
Note over L1: チャレンジ期間開始 (7 日)
3 サービス頻度:
| サービス | 頻度 | 目的 |
|---|---|---|
| Sequencer | L2 block ごと(~2s) | ブロック構築 |
| Batcher | ~60s | 圧縮 batch を L1 提出 |
| Proposer | ~1h | State root commitment 提出 |
op-batcher コアループ(ethereum-optimism/optimism/op-batcher、Go):
// 明確さのため擬似 Go
for {
// 1. 最後 batch 以降の新 L2 ブロック取得
blocks := fetchL2BlocksSince(lastBatchEnd)
// 2. zlib で圧縮
compressed := zlib.Compress(blocks)
// 3. blob サイズチャンクに分割 (~128KB each)
chunks := chunk(compressed, BLOB_SIZE)
// 4. L1に blob tx 提出
for _, chunk := range chunks {
submitBlobTx(chunk)
}
// 5. ローカル状態更新
lastBatchEnd = blocks.LastBlock
}
圧縮率:
| Data | 圧縮率 |
|---|---|
| 生 transaction | 1.0× |
| RLP エンコード | 1.0× |
| Batch 単位 zlib | 3〜5× |
| カスタム(zlib + アドレス圧縮など) | 5〜10× |
DA 代替:
- Celestia — 専用 DA layer、~$0.0001/byte(blob ~$0.001 vs)
- EigenDA — EigenLayer restaker、Ethereum 経済 security 部分継承
- Avail — Polygon の DA、Celestia 風構造
失敗例(誤解)
「State root だけあれば L2 state 復元可能」— 間違い。State root は 32 byte の identifier、L2 state の中身は教えない。tx data がなければ sequencer は state について嘘をつき放題、誰も検知不能。両方 が必要。
「Blob は永久に L1 上に残る」— 間違い。18 日後に prune。長期保存は別途アーカイブ(IPFS / 専用ノード)。18 日は fraud proof window として十分。
「全 rollup が blob に移行すれば全員 10× 安くなる」— 間違い。Blob は ブロックスペース競合。投稿 rollup 増 → blob ガス価格上昇 → 3-5× まで圧縮される均衡。Celestia / EigenDA / Avail が代替(セキュリティ trade)。
🛑 予測。 Rollup が 12 分ごとに L1 に 1MB の transaction data を投稿。Ethereum mainnet ガス価格で 1 日あたりいくらかかるか? EIP-4844 前と後でコスト差は?(答え: calldata 時代 = 16 gas/byte × 50 gwei × 1024×1024 byte × (1440 / 12) min/day = ~$36k/day。EIP-4844 blob = ~0.5 gas/byte 平均で ~$1k/day(30-40× 削減)。EIP-4844 が rollup を経済的に viable にした。)
ステップで組み立てる
Step 1: なぜ DA が必要か
State root(32 byte commitment)+ tx data(実体) = L2 state 復元可能。tx data なし → sequencer 嘘つけて誰も検知不能。
Step 2: 4 DA モデルを即答
Rollup / Validium / Volition / Optimium。
Step 3: Calldata vs Blob trade
Calldata: 永久 + 16 gas/byte / Blob: 18 日 prune + 0.1-1 gas/byte + 1 block 768KB。fraud proof window には 18 日で十分。
Step 4: 3 サービス頻度
Sequencer 2s / Batcher 60s / Proposer 1h。コスト大半が batcher + proposer。
Step 5: 圧縮の効き
zlib 3-5×、カスタム 5-10×。本番 rollup は vanilla zlib より 2-3× 高い圧縮率。
Step 6: DA 代替を理解
Celestia / EigenDA / Avail = Ethereum より安いがセキュリティ trade。chain ごとに「Ethereum DA vs 代替」選択。
答え合わせ
- State root 単独で sequencer が嘘つける理由: state root は 32 byte の Merkle commitment、tx 内容を明かさない → sequencer が「block 100 の state は X」と主張 + 嘘の X を提出 → 検証者は実 tx を持たない → 嘘を検知不能。両方が L1 上にあって初めて再実行 + verification 可能。
- Blob 18 日 prune が問題ない理由: 18 日は fraud proof window(OP Stack 7 日、ZK の場合は数時間で proof 出る)として十分。Window 過ぎたら state root 最終確定 → past data L1 必要なし。長期保存は別途(IPFS、専用 archive node)で「歴史」用途。
- 全 rollup blob 移行で 3-5× 圧縮の均衡: blob は block 毎 6 blob limit → 投稿者増 → ガス価格上昇 → 現在の 10× 削減から圧縮。完全均衡では rollup は Ethereum 以外(Celestia / EigenDA)に分散 → セキュリティ vs コスト trade を chain ごと選択。
合格基準
- DA の必要性(state root + tx data)を 1 文で言える。
- 4 DA モデルを即答できる。
- Calldata vs Blob の 4 性質比較を言える。
- 3 サービス頻度(Sequencer / Batcher / Proposer)を即答できる。
- 圧縮率と DA 代替(Celestia / EigenDA / Avail)を言える。
まとめ(3行)
- Data availability = 「tx data が皆の読める場所に公開」、state root + tx data で L2 state 復元 + sequencer 嘘検知可能。
- EIP-4844 blob(18 日 prune + 0.1-1 gas/byte + 1 block 768KB)が rollup コスト 10× 削減、3 サービス(Sequencer 2s / Batcher 60s / Proposer 1h)が異なる頻度。
- 圧縮(zlib 3-5×、カスタム 5-10×)が静かなる勝者、DA 代替(Celestia / EigenDA / Avail)は Ethereum より安いがセキュリティ trade。