Blockchain.infoのpushtxはnon-standard txをブロードキャストするのか
はじめに
過去数回にわたってReality Keysについて調べてみましたが、Reality Keysのclaim時のブロードキャストはBlockchain.infoのpushtxからはできないため、Eligiusというminine pool?に対してブロードキャストすると理解していました。
ただし未確認情報によると、最近はBlockchain.infoでもnon-standardトランザクションを受けつけると聞いたので、今回はその辺りを調べてみます。
目次
Blockchain.infoのpushtxについて
Broadcast Transactionにサイン済みトランザクションを入力することでブロードキャストすることができます。これを利用することでオフラインのPCでサインして、それをUSB(紙でもOK)でコピーして、Broadcast Transactionのサイトからブロードキャストするといったことが可能になります。
Broadcast Transactionの画面に直接入力しなくてもPOSTリクエストを送れば同じことができます。pybitcointoolsがそうしています
またDecode Raw TransactionではRawトランザクションの内容を確認することができます。
これから通常のトランザクションと、P2SHトランザクションのそれぞれを試してみます。
通常トランザクションでの確認
(1)サイン済みトランザクション作成
pybitcointoolsを使ってRawトランザクションを作成します。
>>> from bitcoin import * >>> h = history('1DbUhHwFL6gEqCQUcKciy4SUbYjFsh3qc7') >>> h [{'output': u'f5edd697298a4594f87bb91642347efd8ab90766bd22203b1beb58b917c29b0e:0', 'block_height': 342044, 'value': 80000, 'address': u'1DbUhHwFL6gEqCQUcKciy4SUbYjFsh3qc7'}] >>> outs = [{'value': 10000, 'address': '1Fcyh3T6zsQtwBpwpTADf6M24GY5CC4vbx'}] >>> tx = mktx(h,outs) >>> tx '01000000010e9bc217b958eb1b3b2022bd6607b98afd7e344216b97bf894458a2997d6edf50000000000ffffffff0110270000000000001976a914a05fa4734f5d4b7b821b2f9379246eac2678787a88ac00000000' >>> sign_tx = sign(tx,0,'[ビットコインアドレス1DbUhHwFL6gEqCQUcKciy4SUbYjFsh3qc7の秘密鍵]') >>> sign_tx '01000000010e9bc217b958eb1b3b2022bd6607b98afd7e344216b97bf894458a2997d6edf5000000006b4830450220255040338b4f15adee91cf40df9122f2f5a999135d0585950b06420f37f0eade02210087b3f346beede40cae4f4ffd17d3fbec39bee511605020e0741ef383db46ded1012102a3595dd20267e7cb7a329e5d22160beef1ad9a3b08866444268fc966000ea037ffffffff0110270000000000001976a914a05fa4734f5d4b7b821b2f9379246eac2678787a88ac00000000'
(2)Blockchain.infoでDecode Raw Transaction実行
Decode Raw Transactionからトランザクションの中身を見ます。
{ "lock_time":0, "size":192, "inputs":[ { "prev_out":{ "index":0, "hash":"f5edd697298a4594f87bb91642347efd8ab90766bd22203b1beb58b917c29b0e" }, "script":"4830450220255040338b4f15adee91cf40df9122f2f5a999135d0585950b06420f37f0eade02210087b3f346beede40cae4f4ffd17d3fbec39bee511605020e0741ef383db46ded1012102a3595dd20267e7cb7a329e5d22160beef1ad9a3b08866444268fc966000ea037" } ], "version":1, "vin_sz":1, "hash":"4d11bf337bb22960b15b63341c1a19bcdcc08b8dcfe81ef87ef3ba2129971497", "vout_sz":1, "out":[ { "script_string":"OP_DUP OP_HASH160 a05fa4734f5d4b7b821b2f9379246eac2678787a OP_EQUALVERIFY OP_CHECKSIG", "address":"1Fcyh3T6zsQtwBpwpTADf6M24GY5CC4vbx", "value":10000, "script":"76a914a05fa4734f5d4b7b821b2f9379246eac2678787a88ac" } ] }
(3)Blockchain.infoでDecode Raw Transaction実行
Broadcast Transactionの画面からブロードキャストした後、以下成功のメッセージが表示されます。
Transaction Submitted
PS2Hトランザクションの場合
(1)サイン済みトランザクション作成
前回のrealitykeysdemo.py実行時に作成されたmulti_txは以下です。
01000000018ef7d75fc510e9ecf4272a152fa0fcf8c96bf98d1b9943e142db2c2dd032024200000000fd790100483045022100ad2ddb0cfe51e51a7628302b96c8070796de4887071d213257790ecf6bbbfae602202935347c9d375ab8737c24a06af00bf1f166a765162c4f2062b6024c146a62f00147304402202039f48dbaeee0be741c64e6b9870b791b49c8f966b4b1b4a9f86c16d4928cc802202ca2a7c50f0bd1f8a99aa6e96b6db0d4e526bb246f4836923f5d34e3b8df098601004ce45b39395d5241043e90a622f851754b83c0d28bc0d4a4c619b13c70c174658a0b0dd7480a32631629734a00ba16434e6f64060ec6e3837b5d148134cd6522302b5243b34ad375432103ea19d70a96a072a1881a6177ab47144168f19f9648675eb189e35e4bde4b16cd525b3137345d5b3130335d5241040190c6e169d2aaadb45cae2964db48d48c16b42a9cf963aceda3644068a73f3d23a33a4efd87f2e73e9482bb7425a8500a2ca19124f1c2930df2aa5e726ff11921036d4f24332e9c49861591558f074a112f9718e47383c394106325ac5b65b9cd30525b3137345d5b3130345dffffffff01e8030000000000001976a914a05fa4734f5d4b7b821b2f9379246eac2678787a88ac00000000
(2)Blockchain.infoでDecode Raw Transaction実行
Decode Raw Transactionからトランザクションの中身を見ます。
{ "lock_time":0, "size":464, "inputs":[ { "prev_out":{ "index":0, "hash":"420232d02d2cdb42e143991b8df96bc9f8fca02f152a27f4ece910c55fd7f78e" }, "script":"00483045022100ad2ddb0cfe51e51a7628302b96c8070796de4887071d213257790ecf6bbbfae602202935347c9d375ab8737c24a06af00bf1f166a765162c4f2062b6024c146a62f00147304402202039f48dbaeee0be741c64e6b9870b791b49c8f966b4b1b4a9f86c16d4928cc802202ca2a7c50f0bd1f8a99aa6e96b6db0d4e526bb246f4836923f5d34e3b8df098601004ce45b39395d5241043e90a622f851754b83c0d28bc0d4a4c619b13c70c174658a0b0dd7480a32631629734a00ba16434e6f64060ec6e3837b5d148134cd6522302b5243b34ad375432103ea19d70a96a072a1881a6177ab47144168f19f9648675eb189e35e4bde4b16cd525b3137345d5b3130335d5241040190c6e169d2aaadb45cae2964db48d48c16b42a9cf963aceda3644068a73f3d23a33a4efd87f2e73e9482bb7425a8500a2ca19124f1c2930df2aa5e726ff11921036d4f24332e9c49861591558f074a112f9718e47383c394106325ac5b65b9cd30525b3137345d5b3130345d" } ], "version":1, "vin_sz":1, "hash":"3da69aebb48d947316f4e59b575fbccf9f5b872da10126a510f648b4fc8ddb57", "vout_sz":1, "out":[ { "script_string":"OP_DUP OP_HASH160 a05fa4734f5d4b7b821b2f9379246eac2678787a OP_EQUALVERIFY OP_CHECKSIG", "address":"1Fcyh3T6zsQtwBpwpTADf6M24GY5CC4vbx", "value":1000, "script":"76a914a05fa4734f5d4b7b821b2f9379246eac2678787a88ac" } ] }
(3)Blockchain.infoでDecode Raw Transaction実行
ダメっぽいレスポンスが返ってきます。
Push of data element that is larger than remaining data
まとめ
もっと詳しく調べてみます..
参考
https://blockchain.info/pushtx
わからないこと
Push of data element that is larger than remaining data