← ビットコイン技術 上級コース
6/10
ビットコイン技術 中級
UTXOモデル (Unspent Transaction Output)
ビットコインは口座残高ではなく、未使用トランザクション出力(UTXO)の合計で残高を管理する。コインモデルの原理とプライバシー・セキュリティ上の利点。
· 1分
**UTXO(Unspent Transaction Output、未使用トランザクション出力)**は、ビットコインが残高を管理する根本的な方式である。銀行のように「口座残高」を記録するのではなく、まだ使用されていない個々の出力値の合計で残高を計算する。
graph LR
subgraph 入力
U1["UTXO A
0.5 BTC"]
U2["UTXO B
0.3 BTC"]
end
subgraph トランザクション
TX["トランザクション"]
end
subgraph 出力
O1["受取人
0.7 BTC"]
O2["お釣り
0.0999 BTC"]
end
U1 --> TX
U2 --> TX
TX --> O1
TX --> O2
FEE["手数料: 0.0001 BTC"]
TX -.-> FEE
style TX fill:#f7931a,stroke:#f7931a,color:#000
style FEE fill:none,stroke:none,color:#8b949e コインモデル
現金取引を思い浮かべると理解しやすい。財布に1万円札2枚と5千円札1枚があれば、残高は「25,000円」という数字ではなく、3枚の個別紙幣の合計である。ビットコインも同様だ。
ビットコイントランザクションが発生すると:
- 入力(Input):以前に受け取ったUTXOの一つ以上を「消費」する
- 出力(Output):新しいUTXOを生成する — 受信者への送金額と自分に戻るお釣り
- 消費されたUTXOは永久に消滅し、新しいUTXOが誕生する
例えば、0.7 BTCのUTXOを持つ人が0.3 BTCを送金する場合:
- 0.7 BTC UTXOが消費され
- 0.3 BTC UTXOが受信者に生成され
- 約0.3999 BTC UTXOがお釣りとして自分に戻り
- 残りの0.0001 BTCがマイナーへの手数料となる
なぜアカウントモデルではないのか
イーサリアムは銀行のようなアカウント残高モデルを使用する。ビットコインが一見複雑に見えるUTXOモデルを選択した理由:
- 並列検証:各UTXOは独立しているため、トランザクションを同時に検証できる。アカウントモデルでは順序依存性が生じる
- 二重支払い防止:UTXOは「消費済み」または「未消費」の二つの状態しか存在しない。部分的な使用は不可能なため、二重支払いの検出が単純
- プライバシー:取引ごとに新しいアドレス(新しいUTXO)を生成すれば、取引追跡が困難になる
UTXO管理の実践
UTXOの数とサイズは手数料に直接影響する:
- ダストUTXO:極少額のUTXOが多いと、それを消費する手数料が金額を上回ることがある
- UTXO統合(Consolidation):手数料が低い時期に複数の少額UTXOを一つにまとめる戦略
- コインコントロール(Coin Control):どのUTXOを入力として使用するかを手動で選択し、プライバシーと手数料を最適化
Sparrow Walletのようなデスクトップウォレットは、UTXOを個別に確認・管理できる機能を提供する。
関連する概念
- ビットコインウォレットガイド — UTXOを実際に管理するツール
- マルチシグ — 複数署名でUTXOのセキュリティを強化
- SegWit — 署名データを分離してUTXO処理効率を改善
- ライトニングネットワーク — UTXOを基盤としたオフチェーン決済チャネル