ichou1のブログ

主に音声認識、時々、データ分析のことを書く

ビットコインの仕組みを追いかけてみる(4)

トランザクションの構造を確認する。
適当なトランザクションを選ぼうとしたが、testnetは、Generationトランザクション1つだけのブロックが続く。

いくつか数字を飛ばして、

bitcoin-cli -testnet getblockhash 120002
bitcoin-cli -testnet getblock 00000000029764dee2166c84d2b7446f5162b02b0c0882f9fbc6bb9531f474a3

ブロック高「120002」のブロックは、トランザクション2つから構成されているので、これを掘り下げてみる。
インプットが「0.0872」BTCで、アウトプットが「0.02606」BTCと「0.06104」BTC、feeは「0.0001」BTC

    "tx" : [
        "3c86b96918cf2acb74edc8bd1003c1b9cf3d8a35069a7f34625a43e7bc27df4d",
        "86db6d2f4d27632562c8276a11be9aca89a076e70e9eed9a2086074ad4819f6b"
    ],

まずは、最初のgenerationトランザクションから。

bitcoin-cli -testnet getrawtransaction 3c86b96918cf2acb74edc8bd1003c1b9cf3d8a35069a7f34625a43e7bc27df4d

JSON形式で見たければ末尾に"1"を追加する。

出力結果。

generationトランザクション
01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1303c2d40106525ef8d510000000000000000056ffffffff011019062a010000001976a914af1f991d0f033337ebe136b46b88b81aac2bd81488ac00000000
generationトランザクション(全体)

人が見やすいように区切りを入れたものが以下。
緑枠がインプット、ピンク枠がアウトプット。
f:id:ichou1:20171216123912p:plain

generationトランザクション(インプット)

インプットを区切ったものが以下。
緑枠がCoinbase Data。
generationトランザクションのインプット構造は通常トランザクションのインプット構造と異なる。
f:id:ichou1:20171216124135p:plain

generationトランザクション(アウトプット)

アウトプットを区切ったものが以下。
緑枠がLocking-Script。
アウトプット構造はgenerationでも通常トランザクションでも同じ。
f:id:ichou1:20171216124231p:plain

generationトランザクション(全体、JSON形式)

JSON形式で出力したものは以下。

{
    "hex" : "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1303c2d40106525ef8d510000000000000000056ffffffff011019062a010000001976a914af1f991d0f033337ebe136b46b88b81aac2bd81488ac00000000",
    "txid" : "3c86b96918cf2acb74edc8bd1003c1b9cf3d8a35069a7f34625a43e7bc27df4d",
    "version" : 1,
    "locktime" : 0,
    "vin" : [
        {
            "coinbase" : "03c2d40106525ef8d510000000000000000056",
            "sequence" : 4294967295
        }
    ],
    "vout" : [
        {
            "value" : 50.00010000,
            "n" : 0,
            "scriptPubKey" : {
                "asm" : "OP_DUP OP_HASH160 af1f991d0f033337ebe136b46b88b81aac2bd814 OP_EQUALVERIFY OP_CHECKSIG",
                "hex" : "76a914af1f991d0f033337ebe136b46b88b81aac2bd81488ac",
                "reqSigs" : 1,
                "type" : "pubkeyhash",
                "addresses" : [
                    "mwUvQ6gcDQidP8kYAEPtZa7xY4nW38d2Th"
                ]
            }
        }
    ],
    "blockhash" : "00000000029764dee2166c84d2b7446f5162b02b0c0882f9fbc6bb9531f474a3",
    "confirmations" : 342893,
    "time" : 1381955806,
    "blocktime" : 1381955806
}


続けて、通常トランザクション

bitcoin-cli -testnet getrawtransaction 86db6d2f4d27632562c8276a11be9aca89a076e70e9eed9a2086074ad4819f6b
通常トランザクション(インプット)

緑枠がインプットとなるトランザクションハッシュ、青枠がUnlocking-Script。
f:id:ichou1:20171216125635p:plain
このトランザクションのアウトプット番号[3]を確認してみると、「0.0872BTC」。

通常トランザクション(アウトプット)

青枠がbitcoin額(satoshi単位)、緑枠がLocking-Script。
f:id:ichou1:20171216125748p:plain
bitcoin額は「0.02606BTC」、「0.06104BTC」

通常トランザクション(全体、JSON形式)

JSON形式で出力したものは以下。

{
    "hex" : "0100000001c0230e02a4d3cd7c302f8058cd6759b5249954a68af759ac7fbe01a139e79fd0030000006a473044022031b43fd65161be600e7f2384828fa4778fc4a24ef5d9cb5a67a2944c7007cd0b0220227aa7af25830d776ff9e91a6d9fb9597d2840de7a479f8175a181ce1457f6860121021814a2a0a85a6652e986aa2fe7744518d44c2e01997fd8c20d0876ec3bd101c1ffffffff02b0c32700000000001976a914d17e73153c3c104902089d08f3bd2b068670ffeb88acc0235d00000000001976a91473af61d64bed4fc41aca2c22dfddf646b629e29c88ac00000000",
    "txid" : "86db6d2f4d27632562c8276a11be9aca89a076e70e9eed9a2086074ad4819f6b",
    "version" : 1,
    "locktime" : 0,
    "vin" : [
        {
            "txid" : "d09fe739a101be7fac59f78aa6549924b55967cd58802f307ccdd3a4020e23c0",
            "vout" : 3,
            "scriptSig" : {
                "asm" : "3044022031b43fd65161be600e7f2384828fa4778fc4a24ef5d9cb5a67a2944c7007cd0b0220227aa7af25830d776ff9e91a6d9fb9597d2840de7a479f8175a181ce1457f68601 021814a2a0a85a6652e986aa2fe7744518d44c2e01997fd8c20d0876ec3bd101c1",
                "hex" : "473044022031b43fd65161be600e7f2384828fa4778fc4a24ef5d9cb5a67a2944c7007cd0b0220227aa7af25830d776ff9e91a6d9fb9597d2840de7a479f8175a181ce1457f6860121021814a2a0a85a6652e986aa2fe7744518d44c2e01997fd8c20d0876ec3bd101c1"
            },
            "sequence" : 4294967295
        }
    ],
    "vout" : [
        {
            "value" : 0.02606000,
            "n" : 0,
            "scriptPubKey" : {
                "asm" : "OP_DUP OP_HASH160 d17e73153c3c104902089d08f3bd2b068670ffeb OP_EQUALVERIFY OP_CHECKSIG",
                "hex" : "76a914d17e73153c3c104902089d08f3bd2b068670ffeb88ac",
                "reqSigs" : 1,
                "type" : "pubkeyhash",
                "addresses" : [
                    "mzcf11pAc2Y7SrF4iU8aeMYxh93TtgPsfP"
                ]
            }
        },
        {
            "value" : 0.06104000,
            "n" : 1,
            "scriptPubKey" : {
                "asm" : "OP_DUP OP_HASH160 73af61d64bed4fc41aca2c22dfddf646b629e29c OP_EQUALVERIFY OP_CHECKSIG",
                "hex" : "76a91473af61d64bed4fc41aca2c22dfddf646b629e29c88ac",
                "reqSigs" : 1,
                "type" : "pubkeyhash",
                "addresses" : [
                    "mr4e6t6TZpZ3z3TTpAmLEszonH1e3gBZLw"
                ]
            }
        }
    ],
    "blockhash" : "00000000029764dee2166c84d2b7446f5162b02b0c0882f9fbc6bb9531f474a3",
    "confirmations" : 343174,
    "time" : 1381955806,
    "blocktime" : 1381955806
}