ビットコインの核心技術:トランザクションとブロックチェーン構造の深層
目录
こんにちは。東京大学のブロックチェーンイノベーション寄付講座の第3回講義内容を基に、ビットコインの核心技術であるトランザクションとブロックチェーン構造について、より詳細に解説していきます。
1. トランザクションの仕組み
UTXOモデル
ビットコインのUTXO(Unspent Transaction Output)モデルは、銀行の残高システムとは大きく異なります。
具体例:
アリスが10BTCを持っていて、ボブに2BTC送金する場合:
- 入力:アリスの10BTC UTXO
- 出力1:ボブへの2BTC
- 出力2:アリス自身への8BTC(おつり)
この取引後、アリスの10BTC UTXOは使用済みとなり、新たに8BTC UTXOが生成されます。アリスの「残高」は、この新しい8BTC UTXOとなります。
トランザクションの構造
実際のトランザクションデータを見てみましょう:
{
"version": 1,
"locktime": 0,
"vin": [
{
"txid": "7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18",
"vout": 0,
"scriptSig": "3045022100884d142d86652a3f47ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e3813[ALL] 0484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adf",
"sequence": 4294967295
}
],
"vout": [
{
"value": 0.01500000,
"scriptPubKey": "OP_DUP OP_HASH160 ab68025513c3dbd2f7b92a94e0581f5d50f654e7 OP_EQUALVERIFY OP_CHECKSIG"
},
{
"value": 0.08450000,
"scriptPubKey": "OP_DUP OP_HASH160 7f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a8 OP_EQUALVERIFY OP_CHECKSIG"
}
]
}
このトランザクションでは、1つの入力から2つの出力が生成されています。
トランザクション手数料
上記の例では、入力の合計額から出力の合計額を引いた差額が手数料となります:
入力:不明(前のトランザクションの出力額)
出力1:0.015 BTC
出力2:0.0845 BTC
手数料:入力 – (0.015 + 0.0845) BTC
手数料は、トランザクションサイズに基づいて計算されることが多く、1サトシ/バイト単位で設定されます。
2. スクリプトと署名
ロッキングスクリプトとアンロッキングスクリプト
P2PKH(Pay-to-Public-Key-Hash)トランザクションの例:
ロッキングスクリプト:
OP_DUP OP_HASH160 <Public Key Hash> OP_EQUALVERIFY OP_CHECKSIG
アンロッキングスクリプト:
<Signature> <Public Key>
これらのスクリプトが結合されて実行され、条件が満たされればトランザクションが有効となります。
マルチシグネチャの例
2-of-3のマルチシグトランザクションの場合:
ロッキングスクリプト:
2 <PublicKey1> <PublicKey2> <PublicKey3> 3 OP_CHECKMULTISIG
アンロッキングスクリプト:
OP_0 <Signature1> <Signature2>
このスクリプトは、3つの公開鍵のうち少なくとも2つに対応する有効な署名が必要であることを示しています。
3. ブロックチェーンの構造
マークルツリーの具体例
トランザクションID:
- TX1: e9623f9e8637d1ffd26c6815ac3581577cc6376d2a7d7d4d6fed813df5f4b09f
- TX2: 5a47195b6f29ee5fa84b47adccc0037c875eeef95039e63e1cab0fa588b1ab53
- TX3: 40c047626b4e87dda92b4bb0b09dca3d1d8bdb94077d80dd092d97dd13e72a01
- 各トランザクションIDをハッシュ化
- TX1とTX2のハッシュを連結してさらにハッシュ化:H12
- TX3のハッシュを自身と連結してハッシュ化(奇数の場合):H33
- H12とH33を連結してハッシュ化:マークルルート
最終的なマークルルート:
7ad0fd2cd0a3a916f2ca9c6606cabae0db7729aede38df65a2e9091f5e846fcd
このマークルルートがブロックヘッダーに含まれます。
ブロックの連鎖
ブロックヘッダーの構造:
- バージョン(4バイト)
- 前ブロックのハッシュ(32バイト)
- マークルルート(32バイト)
- タイムスタンプ(4バイト)
- 難易度ターゲット(4バイト)
- ナンス(4バイト)
これらの情報を含むブロックヘッダーがハッシュ化され、次のブロックの「前ブロックのハッシュ」フィールドに格納されます。この連鎖により、1つのブロックを変更すると後続のすべてのブロックが無効になります。
4. Genesisブロック
Genesisブロックの具体的な内容:
- ブロックハッシュ: 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
- マークルルート: 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
- タイムスタンプ: 2009-01-03 18:15:05
- 難易度: 1
- ナンス: 2083236893
Coinbaseトランザクションに含まれるメッセージ:
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks
このメッセージは、ビットコインの創設が2009年1月3日以降であることを証明し、同時に従来の銀行システムへの批判を込めています。
まとめ
ビットコインの核心技術は、暗号技術とデータ構造の巧みな組み合わせによって成り立っています。UTXOモデル、スクリプト言語、ブロックチェーン構造が相互に作用し、分散型で改ざん耐性の高い取引システムを実現しています。
これらの技術を理解することは、単にビットコインの仕組みを知るだけでなく、ブロックチェーン技術全般の基礎を築くことにもつながります。今後、これらの基本原理がどのように発展し、新たな応用を生み出すのか、注目していきたいと思います。
ビットコインの基礎情報
- Bitcoin.org
ビットコインの公式ウェブサイト。基本的な概要、ビットコインウォレットの選択方法、セキュリティに関するガイドなどを提供。 - ビットコイン日本語Wiki
日本語で書かれたビットコインのWiki。ビットコインの仕組み、技術詳細、関連用語の解説を網羅。