Transaction(基本構成編)
1. トランザクションの基本構成
https://gyazo.com/e4ee4d3e22fed55dd95d53a424ddd3a5
図1:インプット-アウトプットの接続関係
table:Tx全体
フィールド名 バイト数 フォーマット
version 4 32bit符号なし整数(リトルエンディアン)
tx_in_count 1~9 可変長整数
tx_in 可変 TxIn
tx_out_count 1~9 可変長可変長整数
tx_out 可変 TXOut
locktime 4 32bit符号なし整数(リトルエンディアン)
<説明>
version
通常は1(OP_CSVの場合は2)
tx_in_count
インプットに含まれるアイテム数
tx_in
インプットのリスト
tx_out_count
アウトプットに含まれるアイテム数
tx_out
アウトプットのリスト
locktime
適用する場合は00000001 適用しない場合は00000000
table:OutPut
フィールド名 バイト数 フォーマット
value 8 6bit符号なし整数(リトルエンディアン)
ScriptPubey bytes 可変 可変長整数
ScriptPubkey 可変 char[]
<説明>
value
送付するsatoshiの量
ScriptPubey bytes
公開鍵スクリプトのバイト数
ScriptPubkey
このアウトプットのsatoshiを利用する際の条件を定義する公開鍵スクリプト
table:InPut(not coinbase)
フィールド名 バイト数 フォーマット
index 4 32bit符号なし整数(リトルエンディアン)
script bytes 可変 可変長整数
ScriptSig 可変 char[]
seaquence 4 32bit符号なし整数(リトルエンディアン)
<説明>
hash
使用するUTXOのハッシュ
index
使用するUTXOのインデックス番号(最初の出力は0)
script bytes
署名スクリプトのバイト数
ScriptSig
UTXOに使用できるか判定する署名スクリプト.Txoutに含まれる公開鍵スクリプトと合わせて検証する
seaquence
ようわからんけど、0xffffffff
table:InPut(coinbase)
フィールド名 バイト数 フォーマット
index 4 32bit符号なし整数(リトルエンディアン)
coinbase data bytes 可変 可変長整数
coinbase data 可変 char[]
seaquence 4 32bit符号なし整数(リトルエンディアン)
<説明>
hash
全てのbitが0(UTXOは参照しないため)
index
0xffffffff
coinbase data bytes
コインベースデータのバイト数(2-100の間の値を取る)
coinbase data
任意のデータを設定。
seaquence
ようわからんけど、0xffffffff
まとめ
インプットは二種類に大別される
アウトプットに含まれるのがScriptPubkey
インプット(not coinbase)に含まれるのが ScriptSig