MichaelはPabloから0.05000000 BTCを、Kuradangから0.01000000 BTCを受け取ります。 Michaelは、Bertengに0.02500000 BTCを送信することも望んでいます。 Michaelが受け取る各金額には、対応するtxidおよびその他の詳細があります。
listunspent
コマンドを使用してチェックアウトし、createrawtransaction
を使用して署名した後、signrawtransaction
を使用して生のトランザクションを作成し、sendrawtransaction
を使用して生のトランザクションを送信します。
listunspent
形式:
$ bitcoin-cli listunspent [misconf=1] [max_number_confirmation=99999999] '''["<wallet_address>"]'''
Michaelのアドレスで使用している未使用のリストを確認しましょう。
実行:
$ bitcoin-cli listunspent 1 99999999 '''["mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe"]'''
結果:
[{
"txid": "12b8e7ede4992f4d30f93idj3085746951d945e39f40becebd7c290af8c2e7ad",
"vout": 1,
"address": "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe",
"account": "micz",
"scriptPubKey": "76a9143aa28e1740a6a5a2190975b6e7f1ad67aaec9a3988ac",
"amount": 0.05000000,
"confirmations": 94,
"spendable": true
}, {
"txid": "8443bc63b65d569ff9ekwm37sy3b67b9c7c6f8f386c3cdf372b260961b64ec9fc",
"vout": 1,
"address": "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe",
"account": "micz",
"scriptPubKey": "76a9143aa28e1740a6a5a2190975b6e7f1ad67aaec9a3988ac",
"amount": 0.01000000,
"confirmations": 93,
"spendable": true
}]
ここで確認できるのは、アドレスmkrz…に50および10 mBTCを割り当てた結果です。この出力を使用するために、新しいトランザクションを作成します。
createrawtransaction
listunspent
の結果から十分な量のブロックを選択する必要があります。 0.02500000 mBTCのみを送信する必要があるため、最初のブロックにはトランザクションを行うのに十分な量があると思います。
形式:
$ bitcoin-cli createrawtransaction
'[{
"txid" : "<txid_of_selected_block>",
"vout" : <vout>
}]'
'{"<recipient_address>": <amount_to_send>, "<sender_address>": <amount_change>}'
以下に示すように、料金を支払うために、変更の出力を0.5ミリビット減らします。
実行:
$ bitcoin-cli createrawtransaction
'[{
"txid" : "12b8e7ede4992f4d30f93idj3085746951d945e39f40becebd7c290af8c2e7ad",
"vout" : 0
}]'
'{"mxh3H416KCRoBDiweSESew5YJyAk1nxLrN": 0.025, "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe": 0.0245}'
結果
0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
Createrawtransactionコマンドは、指定したトランザクションの詳細をエンコードする生の16進文字列を生成します。 16進数をデコードする場合は、decoderawtransactionコマンドを使用します。
signrawtransaction
ウォレットに格納された、または呼び出しで提供された秘密鍵を使用して、シリアル化されたトランザクション形式でトランザクションに署名します。
形式:
$ bitcoin-cli signrawtransaction <hex_createrawtransaction>
実行:
$ bitcoin-cli signrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
結果:
{
"hex" : "0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000",
"complete" : true
}
これで、signrawtransactionコマンドは別の16進エンコードされた生のトランザクションを返します。
sendrawtransaction
RPCはトランザクションを検証し、ピアツーピアネットワークにブロードキャストします。
形式:
$ bitcoin-cli sendrawtransaction <hex_signrawtransaction>
実行:
$ bitcoin-cli sendrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
結果:
ae74538baa914f3799081ba78429d5d84f36a0127438e9f721dff584ac17b346
コマンドsendrawtransactionは、ネットワーク上でトランザクションを送信すると、トランザクションハッシュ(txid)を返します。トランザクションハッシュを確認するには、 tbtc.blockr.io に移動します
詳細については、このサイトを参照してください マスタリングビットコイン
regtest環境でのrawtransaction送信のMultisig実装)
1)rawtransactionを作成します
構文:
bitcoin-cli -regtest createrawtransaction '[{"txid": ""、 "vout":}]' '{"receive_address":amount}'
例:
> bitcoin-cli -regtest createrawtransaction
> '[{"txid":"eee0de90e9878c039f87c9eedbdf5b9a5da157b19e5354a51ff3b2f84c8a901b","vout":0},]'
> '{"2MxieCJNTKiiBj6U3SjghQaatZYbM7Qn6GW":30}'
2)生のトランザクションに署名
構文
<hexstring> [{"txid":txid,"vout":n,"scriptPubKey":hex},...] [<privatekey1>,...]
bitcoin-cli -regtest signrawtransaction "0200000001a1c33ebb12d94f96effc70c9dd4488faf32dc15269d6a41d115ac956033cadbb0100000000ffffffff0100e1f505000000001976a9145768a869521bb01af8bdd787e6e1e65ec3d9870e88ac00000000" '''
[
{
"txid":"bbad3c0356c95a111da4d66952c12df3fa8844ddc970fcef964fd912bb3ec3a1",
"vout":1,
"scriptPubKey":"a91401a8f0509da2396f58d3f9948a76331964524c9687",
"redeemScript": "5221022d6f957dd76773432d2493edb5601b2d0791286e31c83483ab299672c3d44fc921022dd9c36eece99cc308986a8334c3a0bf24d7ef8b842dacebf56f2477b0f6daab21030544c9613bf27c9773e6fcd79c7786a297188a2647d346da0c3305e22d3e28da53ae"
}
]
''' '''
[
"cUdhE3NvePyjqksgJTc5BQfXGDJckPgEKfoRT72x2BRoG2uMS81H"
]
'''
o/pは、として保存する16進数になります
signed_raw_txn = 0200000001a1c33ebb12d94f96effc70c9dd4488faf32dc15269d6a41d115ac956033cadbb01000000fdfe0000483045022100f9561640d9cf6c7fa7decdd2a3e0c40b0f05d167ee96f22dc11b7ef120c8483902201e53915eed3399e07a4e2648ab76c665fca6486d872d10964ad1926e792d2d6001483045022100a0a084182fb84efdf21757b9caa723cb013a469dc47c5bd8007c23f6201260c8022014fa11cb241c2e63ed0a043aceb1c3f89344c22b4ea6662f93da30820ef18796014c695221022d6f957dd76773432d2493edb5601b2d0791286e31c83483ab299672c3d44fc921022dd9c36eece99cc308986a8334c3a0bf24d7ef8b842dacebf56f2477b0f6daab21030544c9613bf27c9773e6fcd79c7786a297188a2647d346da0c3305e22d3e28da53aeffffffff0100e1f505000000001976a9145768a869521bb01af8bdd787e6e1e65ec3d9870e88ac00000000
3)rawtransactionを送信
bitcoin-cli -regtest sendrawtransaction $signed_raw_txn
余分なfundrawtransaction
を使用したさらに簡単な方法。ドキュメントには、すべての必須フィールドを入力および出力する内容が記載されています。しかし、空のリストもオブジェクトであることを忘れないでください:
$ bitcoin-cli createrawtransaction '[]' \
'{"mxh3H416KCRoBDiweSESew5YJyAk1nxLrN": 0.025}'
$ bitcoin-cli fundrawtransaction <hex_createrawtransaction> \
'{"changeAddress": "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe"}'
2番目のステップの後、ウォレットで発生した料金を確認できます。そして、feeRate
コマンドのfundrawtransaction
オプションで変更します。これはすべて、署名してネットワークに送信する前に実行できます。