web-dev-qa-db-ja.com

Bitcoin-cliコマンドを使用して生のトランザクションBTCを送信する方法は次のとおりです

シナリオ:

MichaelはPabloから0.05000000 BTCを、Kuradangから0.01000000 BTCを受け取ります。 Michaelは、Bertengに0.02500000 BTCを送信することも望んでいます。 Michaelが受け取る各金額には、対応するtxidおよびその他の詳細があります。 listunspentコマンドを使用してチェックアウトし、createrawtransactionを使用して署名した後、signrawtransactionを使用して生のトランザクションを作成し、sendrawtransactionを使用して生のトランザクションを送信します。

Given:

  • マイケルのビットコインアドレス:mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe
  • Bertengのビットコインアドレス:mxh3H416KCRoBDiweSESew5YJyAk1nxLrN
  • Bertengに送信:0.02500000 mBTC

ステップ1)

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を割り当てた結果です。この出力を使用するために、新しいトランザクションを作成します。

ステップ2)

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コマンドを使用します。

ステップ3)

signrawtransaction

ウォレットに格納された、または呼び出しで提供された秘密鍵を使用して、シリアル化されたトランザクション形式でトランザクションに署名します。

形式:

$ bitcoin-cli signrawtransaction <hex_createrawtransaction>

実行:

$ bitcoin-cli signrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000

結果:

{
   "hex" : "0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000",
   "complete" : true
}

これで、signrawtransactionコマンドは別の16進エンコードされた生のトランザクションを返します。

ステップ4)

sendrawtransaction

RPCはトランザクションを検証し、ピアツーピアネットワークにブロードキャストします。

形式:

$ bitcoin-cli sendrawtransaction <hex_signrawtransaction>

実行:

$ bitcoin-cli sendrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000

結果:

ae74538baa914f3799081ba78429d5d84f36a0127438e9f721dff584ac17b346

コマンドsendrawtransactionは、ネットワーク上でトランザクションを送信すると、トランザクションハッシュ(txid)を返します。トランザクションハッシュを確認するには、 tbtc.blockr.io に移動します

詳細については、このサイトを参照してください マスタリングビットコイン

22
Michael Blanza

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
3
cryptoKTM

余分なfundrawtransactionを使用したさらに簡単な方法。ドキュメントには、すべての必須フィールドを入力および出力する内容が記載されています。しかし、空のリストもオブジェクトであることを忘れないでください:

ステップ1)

$ bitcoin-cli createrawtransaction '[]' \
    '{"mxh3H416KCRoBDiweSESew5YJyAk1nxLrN": 0.025}'

ステップ2)

$ bitcoin-cli fundrawtransaction <hex_createrawtransaction> \
    '{"changeAddress": "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe"}'

2番目のステップの後、ウォレットで発生した料金を確認できます。そして、feeRateコマンドのfundrawtransactionオプションで変更します。これはすべて、署名してネットワークに送信する前に実行できます。

1