アウトプットは1つ以上のoutputsを持つことになるので、varint形式でシリアライズする
アウトプットは”額”と”ScriptPubKey”がある。
額はsatoshi, 1億分の1 bitcoinです。64ビット(8bytes)、リトルエンディアンでシリアライズ
ScriptPubKeyはスマートコントラクト言語Scriptで処理される 鍵の所有者のみ開けられる
UTXOはunspent transaction outputの略
UTXOセットを扱いやすくすると、トランザクションの検証に役立つ
トランザクションの検証は、前のトランザクションアウトプットから額とScriptPubKeyを参照する必要がある
tx.py
class TxOut:
def __init__(self, amount, secript_pubkey):
self.amount = amount
self.script_pubkey = script_pubkey
def __repr__(self):
return '{}:{}'.format(self.amount, self.script_pubkey)
@classmethod
def parse(cls, s, testnet=False):
version = little_endian_to_int(s.read(4))
num_inputs = read_varint(s)
inputs = []
for _ in range(num_inputs):
inputs.append(TxIn.parse(s))
num_outs = read_varint(s)
outputs = []
for _ in range(num_outputs):
outputs.append(TxOut.parse(s))
return cls(version, inputs, outputs, None, testnet=testnet)
// omission
@classmethod
def parse(cls, s):
amount = little_endian_to_int(s.read(8))
script_pubkey = Script.parse(s)
return cls(amount, script_pubkey)