• Home
  • ビットコインのトランザクションの構造

ビットコインのトランザクションの構造

トランザクション

Bitcoinトランザクション

トランザクションとは、取引の履歴(価値の転移を表した署名されたデータ構造)のこと。トランザクションはインプットからアウトプットに価値を移動する。通常インプット(どこからbitcoinが来たか)は、前のトランザクションのアウトプットとなっている。

参考:Bitcoinトランザクション(VIN VOUTの流れ)

generation トランザクション

ブロックに最初の追加された特別なトランザクション。generation または coinbase トランザクションと呼ばれる。マイニングに成功したマイナーに提供されるブロック生成報酬として使用される。

トランザクションの相違点

通常のトランザクションとは異なり、generation トランザクションはインプットとしてのトランザクションを持たない。これは、使用する前のUTXOを特定するトランザクションインプットとは違い、coinbase と呼ばれる特別なフォーマットをした、たった1つのインプットを持つ。これが何もないところから bitcoin を生み出す唯一の方法となる。

Table 1.”通常”のトランザクションインプットの構造
サイズ フィールド名 説明
32byte Transaction Hash 使われるUTXOを含むトランザクションハッシュ
4byte Output Index 使われるUTXOのトランザクション内インデックス、一番最初のアウトプットの場合は0
1-9byte (VarInt) Unlocking-Script Size unlocking-scriptのbyte長
可変サイズ Unlocking-Script UTXOのlocking script を満たすscript
4byte Sequence Number 現在トランザクション置換は使用不可になっていて、0xFFFFFFFFに固定
Table 2. generationトランザクションインプットの構造
サイズ フィールド名 説明
32byte Transaction Hash 全てのbitが0であり、他のトランザクションハッシュの参照はしていない
4byte Output Index 全てのbitが1: 0xFFFFFFFF
1-9byte (VarInt) Coinbase Data Size Coinbase Dataサイズの長さ(2から100byte)
可変サイズ Coinbase Data バージョン2 ブロックのextranonceやminingtagのために使われる任意のデータであり、ブロック高から始まらなければならないscript
4byte Sequence Number 0xFFFFFFFF に固定
  • generationトランザクションでは、最初の2つのフィールドはUTXOへの参照を表現していない値が設定されている。
  • 通常のトランザクションの”Transaction Hash”の代わりに、最初のフィールドは全てが0の32byteで埋められている。
  • “Output Index”は全てが 0xFF(10進数で255)に設定された4byteで埋められている。
  • “Unlocking Script”は CoinbaseData で置き換えられており、マイナーによって使われる任意のデータを入れられるフィールドになっている。

ご相談・お見積もり

03-5207-2689