UTXOモデル (Unspent Transaction Output)
ビットコインは口座残高ではなく、未使用トランザクション出力(UTXO)の合計で残高を管理する。コインモデルの原理とプライバシー・セキュリティ上の利点。
import Mermaid from '@components/shortcodes/Mermaid.astro'; import InfoBox from '@components/shortcodes/InfoBox.astro'; import CompareTable from '@components/shortcodes/CompareTable.astro'; import ChartBar from '@components/shortcodes/ChartBar.astro'; import ChartLine from '@components/shortcodes/ChartLine.astro'; import KidsQuiz from '@components/shortcodes/KidsQuiz.astro'; import KidsStory from '@components/shortcodes/KidsStory.astro'; import KidsCert from '@components/shortcodes/KidsCert.astro';
UTXO(Unspent Transaction Output、未使用トランザクション出力)は、ビットコインが残高を管理する根本的な方式である。銀行のように「口座残高」を記録するのではなく、まだ使用されていない個々の出力値の合計で残高を計算する。
0.5 BTC"] U2["UTXO B<br/>0.3 BTC"] end subgraph トランザクション TX["トランザクション"] end subgraph 出力 O1["受取人<br/>0.7 BTC"] O2["お釣り<br/>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を基盤としたオフチェーン決済チャネル