トランザクションモデル(UTXO と Account)
Bitcoin の UTXO モデルと Ethereum のアカウントモデルの構造・並列性・プライバシー・表現力のトレードオフ、手数料モデル(gas / EIP-1559 base fee・priority fee・バーン / sat/vB)、トランザクションのライフサイクルと実行を体系化。
article technology ja Bitcoin の UTXO モデルと Ethereum のアカウントモデルの構造・並列性・プライバシー・表現力のトレードオフ、手数料モデル(gas / EIP-1559 base fee・priority fee・バーン / sat/vB)、トランザクションのライフサイクルと実行を体系化。トランザクションモデル(UTXO と Account)
「誰がいくら送ったか」をブロックチェーンがどう表現・追跡するかは、設計の根幹を左右する選択だ。現在の主流はビットコインが採用するUTXO(未使用トランザクション出力)モデルと Ethereum が採用するアカウント(残高)モデルの二方式であり、並列性・プライバシー・スマートコントラクト表現力でそれぞれ異なるトレードオフを持つ。本記事では両モデルの仕組み・比較・手数料設計・トランザクションのライフサイクルを体系化する。ブロックの状態管理構造は tech-208、ネットワーク伝播は tech-210 を参照。情報カットオフ ~2025-08、confidence: medium 固定(2026-06 時点での外部再検証は未実施)。
UTXO モデル — Bitcoin の設計
UTXO(Unspent Transaction Output): ビットコインの台帳は「誰がいくら持っている」という残高ではなく、「使われていないコインの出力の集合(UTXO セット)」として状態を表現する。
構造: トランザクションは複数の**入力(input)と複数の出力(output)**からなる。各入力は以前のトランザクションの未使用出力を参照し、「この UTXO の所有者の秘密鍵で署名した」ことを証明する。各出力は新たな UTXO を生成し、特定の公開鍵(またはスクリプト)に支払う。
コイン選択(Coin Selection): ウォレットソフトが支払いのために使う UTXO を選ぶ作業。目標金額ぴったりの UTXO がない場合はおつり出力(change output)を自分のアドレスに戻す。コイン選択アルゴリズム(Branch and Bound 等)は手数料最適化とプライバシーに影響する。
UTXO モデルの特性:
- 並列検証: 互いに独立した UTXO を使うトランザクションは並列に検証できる(状態依存がない)。Cardano の eUTXO はこれをスマートコントラクトに拡張している。
- ステートレス性: UTXO はそれ自体で完結しており、アカウント状態データベースを参照しなくても検証できる。
- プライバシー: 異なるアドレスから UTXO を受け取れるため、使い捨てアドレス戦略と組み合わせてトランザクショングラフの追跡を困難にできる。
- スマートコントラクト表現力の制限: 単純な所有権移転には適しているが、複雑な状態を持つプログラムの表現は困難(Bitcoin Script は意図的に非チューリング完全)。
アカウントモデル — Ethereum の設計
アカウントモデル(Account-based model): Ethereum は銀行口座に近いモデルを採用する。台帳は「アドレス → アカウント状態」のマッピング(world state)で表現される。
アカウント種別:
- EOA(Externally Owned Account): 秘密鍵に紐づく外部アカウント。残高(ETH)と nonce を持つ。ユーザが保持するウォレットアドレスがこれにあたる。
- Contract Account: スマートコントラクトのアカウント。コードハッシュ・ストレージルート(MPT)を追加で持つ。EOA からのトランザクション、または別のコントラクトから呼ばれることで実行される。
Nonce: EOA のトランザクション連番カウンタ。送信者の nonce がアカウント状態の nonce と一致しなければトランザクションは無効になる。リプレイ攻撃防止と順序保証に使われる。同一送信者の並列トランザクションは nonce の昇順でのみ処理される。
アカウントモデルの特性:
- プログラマビリティ: 複雑な状態機械(スマートコントラクト)を自然に表現できる。EVM(Ethereum Virtual Machine)はチューリング完全で、DeFi・NFT・DAO など豊富なユースケースを実現している。
- シンプルな残高照会: 特定アドレスの残高は world state を一度参照するだけでわかる(UTXO のように全出力を走査しなくてよい)。
- 直列処理の要求: 同一アドレスへの並列トランザクションは nonce 順に直列化される。これが EVM の並列化を困難にしている(Monad・Sei が解決を試みている)。
- フロントランニングリスク: メンプールの透明性と手数料競争が MEV(Maximal Extractable Value)/ フロントランニングを可能にする。
両モデルの比較 — トレードオフの整理
| 観点 | UTXO モデル(Bitcoin 等) | アカウントモデル(Ethereum 等) |
|---|---|---|
| 状態管理 | UTXO セット(未使用出力の集合) | World state(アドレス→残高/コードのマップ) |
| 並列検証 | 独立 UTXO は完全並列可 | 同一アカウント Tx は直列化が必要 |
| プライバシー | 使い捨てアドレスで高い匿名性 | アドレス再利用が多く追跡しやすい |
| スマートコントラクト | 表現力に制限(Bitcoin Script) | チューリング完全 EVM で高表現力 |
| ウォレット実装 | コイン選択の実装が必要 | 残高照会がシンプル |
| ストレージ効率 | 大量 UTXO でセット肥大化のリスク | スマートコントラクトのストレージ爆発のリスク |
| 採用例 | Bitcoin・Litecoin・Cardano(eUTXO) | Ethereum・Solana・BNB Chain・Avalanche C-Chain |
手数料モデル — gas・EIP-1559・sat/vB
ブロックチェーンの手数料設計はリソース配分とユーザ体験の核心だ。
Bitcoin の手数料(sat/vB): トランザクションサイズ(virtual byte)に対して支払う Satoshi 単位の手数料。ブロックが満杯に近いと手数料市場が形成され、高い sat/vB を提示したトランザクションが優先される。SegWit 以降はトランザクションの「重み(weight)」で計算し、witness データを割引することで SegWit トランザクションが低コストになる。Bitcoin のブロック報酬は半減期ごとに半分になり、最終的には手数料のみが採掘インセンティブとなる設計だ(次の半減期は 2028 年予定)。
Ethereum の手数料(EIP-1559 / gas): EIP-1559(2021 年 8 月、London HF)が導入した二層手数料モデル。
- Base fee: プロトコルが各ブロックの充填率に応じて自動設定(±12.5% / ブロック)。支払われた base fee はバーン(消却)され、ETH のデフレ圧力となる。
- Priority fee(tip): マイナー / バリデータへの追加チップ。ユーザが設定し、高い priority fee で優先される。
- Max fee: ユーザが「最大支払い意思額」として設定。
base fee + priority fee ≤ max feeでなければ Tx は無効。
EIP-1559 により手数料の予測可能性が大幅に向上し、過払い分はユーザに返金される(base fee が max fee を下回った場合)。2025 年時点でのバーン累計は数百万 ETH に達している。
トランザクションのライフサイクルと実行
ライフサイクル: 署名 → ブロードキャスト → メンプール(tech-210 参照)→ ブロック採択 → 状態遷移 → ファイナリティ
署名検証: ノードはトランザクションを受け取ると、まず署名が正しいか(送信者の秘密鍵で署名されているか)・nonce が正しいか・残高 / UTXO が十分かを検証する。不正なトランザクションはメンプールに入れず破棄する。
State 遷移と Atomicity: Ethereum のトランザクション実行は EVM の bytecode 実行として行われる。トランザクション全体が成功(success)か失敗(revert)かの二択であり、途中で失敗してもガス代は消費される(atomicity の保証)。UTXO の Bitcoin では「部分的実行」の概念がなく、スクリプトが unlock できれば完全実行、できなければ拒否だ。
ファイナリティ: Bitcoin は確率的ファイナリティ(N 確認で 51% 攻撃のコストが現実的でなくなる)、Ethereum(Gasper / Casper FFG)は約 6.4 分(2 エポック)で経済的ファイナリティが確定する。ファイナリティの詳細は tech-203 を参照。
Backlinks
- has_parts Layer-1 Blockchains(L1 チェーン総覧)
- related 分散台帳とブロック構造
- related ブロックチェーンのネットワークとノード
- related アカウント抽象化(Account Abstraction)