アウトプットは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)