ブロックチェーンのロールアップという言葉を聞くと、「L2の取引をまとめてL1に書き写している」と思いがちです。

でも実際にL2がL1に渡しているものは、取引そのものではありません。
渡しているのは、状態の結果です。

ここを、会計とGitの比喩で整理しようと思います。

ブロックチェーンの取引ログの他に「状態」も持つ

ブロックチェーンは、取引ログの集まりではなく、

  • ある時点の取引ログの結果を状態(state)として持つ
  • その状態がどう変わったか

を連続的に確定していく仕組みです。

stateとは、

  • 口座残高
  • コントラクトの変数
  • アカウント情報

をまとめた「帳簿」です。


L2がやっていることを会計の比喩で考える

L2でやっていることは、

  • 日々の仕訳を処理し
  • 補助元帳を更新し
  • 総勘定元帳を締める

ことに近い。

そう考えると、L2がL1に渡しているのは、

「この期間の帳簿の最終状態はこれです」

という**帳簿の指紋(state root)**です。

さらに、

  • Optimistic Rollupなら
    「仕訳データ全部(圧縮)」+「異議申し立て可能」
  • ZK Rollupなら
    「この帳簿更新は正しいという証明書」

が添えられます。

L1は仕訳処理をやり直さない。
帳簿が会計ルールに従って更新されたかどうかだけを保証する。

このときL2とL1は子会社と親会社の経理部のような関係を持ち、

L2 = 子会社の経理部の持つ会計帳簿
L1 = 親会社の経理部の持つ会計帳簿

という構造に近いです。


L2でやっていることをGitの比喩で考える

L2のやっていることをGitで言うなら、

  • L2はブランチ上で大量コミット
  • L1に渡すのは “差分の結果”

特に近いのは

squashされたcommit + tree hash

です。

L2がやった細かい変更は、
最終的な「状態のハッシュ」に集約される。

L1は

  • tree hash(state root)
  • その変更のデータ
  • または正しさの証明

を受け取るだけ。

中間コミットの詳細を逐一再実行しない。


改めてL2がL1に渡すものは?

整理すると、L2がL1に投稿するのは:

  1. 取引データ(calldata, 圧縮済)
  2. 更新後の state root
  3. (この文章ではあまり触れてないが)正当性を保証する仕組み
    • 不正証明可能性(Optimistic)
    • 暗号証明(ZK)

です。

L1はそれを自分のブロックに含め合意する。

すると、

「このL2の状態は正しい」と
L1の経済的保証のもとで確定する

ことになります。


ロールアップ時にL2がL1に渡さないもの

L2がL1に渡していないものがあります。

それは、

  • L2のブロックそのもの
  • L2の全履歴
  • L2での合意プロセス

L1はL2を“再実行”しません。
L1は「正しい結果かどうか」だけということです。

L1はL2が持っている全履歴を合意しないということです。

だから、L2がL1に渡すものはL2で締めた会計帳簿の結果のみのようだし、
PRのsquash mergeされたようなものです。


ロールアップとはなにか?

ロールアップとは、

状態遷移を外で行い、
その結果を検証可能な形に圧縮してL1に提出する構造

です。

会計で言えば連結決算。
Gitで言えばsquash merge。

渡しているのは「履歴」である取引ログそのものではなく、
状態の結果なのです。