raw transaction


raw transaction概要

参考: bitcoin API (JSON-RPC) を 使って raw transaction で送金する(signrawtransaction)

Bitcoinのversion0.7より生のトランザクションにサインをして送金することができるようになった。
詳しい説明は https://en.bitcoin.it/wiki/Raw_Transactions にある。

まず、createtransactionで取引のIDと自分宛のvoutの索引をいれて、そのあとアドレス:金額を入れてrawtransactionを生成する
それをsignrawtransactionに入れて、あとから秘密鍵を後からつける
署名済みのraw transactionが出来たらsendrawtransactionで送信

お釣りに気をつける

気をつけるところはお釣り。createrawtransactionだと、使用する入力と出力の計算を自分で行わないといけない。
10bitcoinの入力を5bitcoinを誰かに送って手数料を0.01bitcoinにしたい時は、手数料は入力と出力の差額だから、ちゃんと[送金先アドレス:500000000, お釣りのアドレス:499000000]の出力を入れないといけない。

raw transactionの実行

参考 BitcoinWiki Raw Transactions

raw transactionの生成

createrawtransactionを使用する

createrawtransaction [{"txid":txid,"vout":n},...] {address:amount,...}

署名

signrawtransaction <hex string> [{"txid":txid,"vout":n,"scriptPubKey":hex},...] [<privatekey1>,...] [sighash="ALL"]

raw transactionの送信

sendrawtransaction <hex string>

bitcoin-cliによりトランザクションを送信

sendrawtransaction $(getrawtransaction $TXID)