UTXOモデルを理解する
ビットコインが残高を記録する仕組みであるUTXO(未使用トランザクション出力)モデルを実践的に解説。イーサリアムのアカウントモデルと比較し、UTXOと手数料の関係も詳しく説明する。
ビットコインはどのように残高を記録するのか。銀行のように口座に数字を書き込む方式ではない。ビットコインは**UTXO(Unspent Transaction Output、未使用トランザクション出力)**モデルを使用する。この概念を理解すると、ビットコインのトランザクション、手数料構造、プライバシー特性が一度に明確になる。
ウォレット残高という錯覚
ウォレットアプリを開くと「0.05 BTC」のような残高が表示される。しかしビットコインネットワーク上のどこにも「このアドレスの残高は0.05 BTC」と書かれた台帳は存在しない。
ビットコインネットワークが実際に追跡するのはまだ消費されていないトランザクション出力値のセットだ。ウォレットソフトウェアはこれらを合算して残高として表示しているに過ぎない。
UTXOとは何か
トランザクションが処理されるたびに入力(Input)と出力(Output)が生成される。
- 入力(Input): 以前のトランザクションの出力を消費する。
- 出力(Output): 新しいビットコインのロックを生成する。受取人のアドレスと金額が含まれる。
出力が生成され、まだ他のトランザクションの入力として使用されていない場合、それがUTXOだ。
例:
AliceがBobに1 BTCを送る。
トランザクション TX_A
入力: Aliceの以前のUTXO 2 BTC
出力1: Bobのアドレス 1 BTC ← 新しいUTXO
出力2: Aliceのアドレス 0.999 BTC(お釣り) ← 新しいUTXO
(0.001 BTCはマイナーへの手数料)
このトランザクション以降、二つのUTXOが存在する。Bobの1 BTC UTXOとAliceの0.999 BTC UTXOだ。
硬貨入れで理解する
UTXOを理解する最良の比喩は紙幣と硬貨だ。
財布に5万円札1枚、1万円札2枚、千円札3枚があれば合計73,000円だ。しかしこの「73,000円」は抽象的な概念であり、実際には各紙幣と硬貨の束だ。
ビットコインも同様だ。「0.5 BTCを保有している」という場合、実際には複数のUTXOの合計だ。
| UTXO | 金額 |
|---|---|
| UTXO #1 | 0.3 BTC |
| UTXO #2 | 0.15 BTC |
| UTXO #3 | 0.05 BTC |
| 合計 | 0.5 BTC |
送金時にはこれらのUTXOの中からいくつかを選んで消費する。現金で決済する際に紙幣を選ぶのと同じだ。
実践:UTXOを直接照会する
txid.ukでビットコインアドレスを検索すると、そのアドレスに紐づくUTXOの一覧を確認できる。
照会方法:
- txid.ukにアクセスし、検索欄にビットコインアドレスを入力
- UTXOタブで各UTXOの金額、トランザクションID、確認数を確認
- 個別のTXIDをクリックすると、そのトランザクションの入出力構造を視覚的に確認可能
viz.txid.ukではトランザクションの入出力関係をネットワークグラフで可視化できる。UTXOがどのように生成され消費されるか、流れを視覚的に追跡するのに最適だ。
有名なビットコイン創世記ブロックのアドレスで実践してみよう:
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
このアドレスはサトシ・ナカモトが採掘した最初のブロックで生成されたアドレスだ。このアドレスのUTXOは今日まで一度も消費されていない。
複数のアドレスに散らばるUTXOを一目で把握するには、portfolio.txid.ukのマルチアドレス追跡機能を活用できる。
UTXO選択と手数料の関係
トランザクション手数料は金額ではなく**データサイズ(バイト)**に比例する。これがUTXOの個数と手数料が結びつく理由だ。
トランザクションサイズは入力数に大きく影響される。入力1つあたり約148バイト(P2PKH基準)が追加される。出力は約34バイトだ。
比較例:
| シナリオ | 入力 | 出力 | トランザクションサイズ | 手数料(10 sat/vbyte基準) |
|---|---|---|---|---|
| 大きなUTXO 1個を使用 | 1 | 2 | ~226 vbytes | 2,260 sat |
| 小額UTXO 10個を使用 | 10 | 2 | ~1,496 vbytes | 14,960 sat |
同じ金額を送っても、小額UTXOを多数使うと手数料がはるかに高くなる。
UTXO統合(Consolidation)
手数料が低い時期に小額UTXOを複数まとめて自分のアドレス一つに送る作業をUTXO統合という。その後、高手数料の時期に大きなUTXO1つを使えばより安く送金できる。
ただし、UTXO統合はプライバシーを低下させる。複数のアドレスのUTXOを1つのトランザクションで消費すると、外部からこれらのアドレスが同一人物のものだと推測できる。
UTXOモデル vs アカウントモデル
イーサリアムはアカウントモデルを使用する。各アドレスごとに残高の数値が記録され、トランザクションがその数値を増減させる。銀行口座と同じ概念だ。
| 特性 | ビットコイン(UTXO) | イーサリアム(アカウント) |
|---|---|---|
| 残高表現 | UTXOセットの合計 | アドレスごとの数値 |
| 並列処理 | 有利(独立したUTXO) | 不利(順序依存) |
| プライバシー | 比較的強い | 追跡しやすい |
| 複雑度 | 高い | 低い |
| 二重支払い防止 | UTXO消費の有無を確認 | ノンス(nonce)を確認 |
UTXOモデルは複雑だが、並列トランザクション処理と二重支払い防止に構造的に有利だ。
UTXOセットとブロックチェーン容量
ビットコインのフルノードは**UTXOセット(UTXO set)**をメモリに保持する。このセットは現在存在する全ての未使用出力のリストだ。
2024年基準でUTXOセットのサイズは約4〜5GBだ。全体のブロックチェーン(600GB以上)と比較すると小さい。ノードは新しいトランザクションを検証する際にこのUTXOセットを照会するため、高速なメモリアクセスが重要だ。
小額UTXOが増えるとUTXOセットが肥大化する。これを「UTXO膨張(UTXO bloat)」といい、ノード運営コストを高める問題として議論されている。
まとめ
UTXOモデルはビットコインが残高の概念なしに動作する仕組みだ。各コインは独立した出力として存在し、使用されると消滅して新しい出力が生成される。この構造は二重支払い防止と並列処理に有利だが、小額UTXOの蓄積により手数料負担が増す。UTXO統合戦略とUTXO選択ロジックは上級ビットコインユーザーが手数料を最適化する上で重要なツールだ。
次のステップ:手数料計算 実践ガイドでUTXO選択が実際の手数料にどう影響するか計算してみよう。