迈克尔从Pablo获得了0.05000000 BTC,另外还获得了0.01亿BTC 来自Kuradang。迈克尔还希望向贝腾发送0.02500000 BTC。 迈克尔收到的每笔金额都有相应的txid和其他金额 细节。让我们使用listunspent
命令检查,然后创建一个 使用createrawtransaction
之后的原始交易signrawtransaction
并使用发送原始事务sendrawtransaction
。
listunspent
格式:
$ bitcoin-cli listunspent [misconf=1] [max_number_confirmation=99999999] '''["<wallet_address>"]'''
让我们查看迈克尔未使用的地址清单。
执行:
$ 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
}]
我们在这里看到的是为我们分配50和10 mBTC的结果 地址mkrz ....要花费此输出,我们将创建一个新事务。
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命令生成一个原始十六进制字符串 对我们提供的交易详情进行编码。如果你想解码 hex只需使用decoderawtransaction命令。
signrawtransaction
使用序列化事务格式签署事务 存储在钱包中或在通话中提供的私钥。
格式:
$ bitcoin-cli signrawtransaction <hex_createrawtransaction>
执行:
$ bitcoin-cli signrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
结果:
{
"hex" : "0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000",
"complete" : true
}
现在,signrawtransaction命令返回另一个十六进制编码的raw 事务。
sendrawtransaction
RPC验证事务并将其广播到点对点 网络
格式:
$ bitcoin-cli sendrawtransaction <hex_signrawtransaction>
执行:
$ bitcoin-cli sendrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
结果:
ae74538baa914f3799081ba78429d5d84f36a0127438e9f721dff584ac17b346
命令sendrawtransaction返回事务哈希(txid) 在网络上提交交易。要检查交易哈希,您可以转到tbtc.blockr.io
有关详细信息,请参阅此网站mastering bitcoin
答案 0 :(得分:2)
在regtest环境中发送rawtransaction的Multisig实现)
1)创建rawtransaction
语法:
bitcoin-cli -regtest createrawtransaction'[{“txid”:“”,“vout”:}]' '{ “receive_address”:量}'
示例:
> 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将是一个十六进制,我将其存储为
signed_raw_txn = 0200000001a1c33ebb12d94f96effc70c9dd4488faf32dc15269d6a41d115ac956033cadbb01000000fdfe0000483045022100f9561640d9cf6c7fa7decdd2a3e0c40b0f05d167ee96f22dc11b7ef120c8483902201e53915eed3399e07a4e2648ab76c665fca6486d872d10964ad1926e792d2d6001483045022100a0a084182fb84efdf21757b9caa723cb013a469dc47c5bd8007c23f6201260c8022014fa11cb241c2e63ed0a043aceb1c3f89344c22b4ea6662f93da30820ef18796014c695221022d6f957dd76773432d2493edb5601b2d0791286e31c83483ab299672c3d44fc921022dd9c36eece99cc308986a8334c3a0bf24d7ef8b842dacebf56f2477b0f6daab21030544c9613bf27c9773e6fcd79c7786a297188a2647d346da0c3305e22d3e28da53aeffffffff0100e1f505000000001976a9145768a869521bb01af8bdd787e6e1e65ec3d9870e88ac00000000
3)发送rawtransaction
bitcoin-cli -regtest sendrawtransaction $signed_raw_txn
答案 1 :(得分:1)
另一种更简单的方法,有一些额外的fundrawtransaction
。文档说我们输入和输出所有必填字段。但是不要忘记空列表也是对象:
$ bitcoin-cli createrawtransaction '[]' \
'{"mxh3H416KCRoBDiweSESew5YJyAk1nxLrN": 0.025}'
$ bitcoin-cli fundrawtransaction <hex_createrawtransaction> \
'{"changeAddress": "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe"}'
第二步后,您可以查看钱包产生的费用。并使用feeRate
fundrawtransaction
命令更改它。这一切都可以在签署之前完成,并将您的交易发送到网络。
答案 2 :(得分:0)
我没有 50 个代表点可以对 user3931836 发表评论,但是关于“它如何产生费用?它的优先级是什么?网络拥塞会影响费用吗?”
费用 =(UTXO 的总和)-(发送的总和)
即费用金额没有明确规定;矿工只是保留输出中未指定的任何内容,即剩余数量。所以你应该减少你的“找零”输出,以确保有足够的钱来支付费用。
请记住,如果您的交易使用 50 个 UTXO,那么它有很多字节,因此他们会期待大笔付款。但是如果你的交易只使用 1 个 UTXO,那么它使用的字节数就会少很多,所以你可以少付钱。确保优化您对 UTXO 的选择以减少交易中的字节数 - 然后您可以提供较小的费用而不会影响其队列“优先级”。 目前矿工预计每字节大约 40 satoshis,但请查看在线工具以查看各种数量的估计处理时间。如果你付给他们更少的钱(每字节),那么他们会让你在内存池中停留更长时间(在他们的上下文中作为较低的“优先级”)。