[英]BitCoin - how to build raw transaction?
根據其他問題的列表,我需要構建一個原始事務:
listunspent
- 您將獲得所有未使用的交易的列表 createrawtransaction
來創建輸入/輸出,從正在播放的事務列表中獲取txid和vout,以及構成“貨幣供應”的事務列表。 signrawtransaction
對創建的事務進行簽名 sendrawtransaction
發送已簽名的事務 但是有一個大問題 - listunspent
顯示實際已經花費的未花費的金額,因此,我將來沒有足夠的資金錯誤或負余額......
例如:
創建地址15d8uY8uubNFnn3DXaoGN123ZCRkm3HJK9。
發送給它0.01 BTC。
后來從這個地址發送0.00400000,費用為0.00010714:
[
{
"account": "login_67",
"address": "15d8uY8uubNFnn3DXaoGN123ZCRkm3HJK9",
------> "category": "receive",
"amount": 0.01000000,
"label": "login_67",
"vout": 0,
"confirmations": 628,
"blockhash": "0000000000000000006bf20ac85a50d3e014a636b51231c78c6b27fe0a8e9223",
"blockindex": 2,
"blocktime": 1463753010,
"txid": "f37679b68c8ee3cd362b5bb15b2d8007af4eab173eee2d6269a132b9491a55ad",
"walletconflicts": [
],
"time": 1463752690,
"timereceived": 1463752690,
"bip125-replaceable": "no"
},
{
"account": "login_67",
"address": "1BeqRNunznfwuFHnufXLFRhaCDm1mrvMS6",
------> "category": "send",
"amount": -0.00400000,
"vout": 1,
"fee": -0.00010714,
"confirmations": 609,
"blockhash": "000000000000000000699cd44c4aed1eeb9c66181f6260bfe41473e66e1ece06",
"blockindex": 1614,
"blocktime": 1463767099,
"txid": "9a39b070d8f21ddf9bd16e641c4b252c2da701336fd36b707ca072fd1ca11d58",
"walletconflicts": [
],
"time": 1463766747,
"timereceived": 1463766747,
"bip125-replaceable": "no",
"abandoned": false
}
]
Getbalance顯示正確的余額0.00589286
並且listunspent顯示有關可用資金的錯誤信息:
[
{
"txid": "f37679b68c8ee3cd362b5bb15b2d8007af4eab173eee2d6269a132b9491a55ad",
"vout": 0,
"address": "15d8uY8uubNFnn3DXaoGN123ZCRkm3HJK9",
"account": "login_67",
"scriptPubKey": "76a91432b613c311d4c9c72f3ed1ba5e2c1d96645bd2da88ac",
"amount": 0.01000000,
"confirmations": 628,
"spendable": true
}
]
就像沒有任何發送交易一樣。
那么如何從TX收集所有未花費的資金呢?
謝謝你的回答。
邁克爾從Pablo獲得了0.05億BTC,從Kuradang獲得了另外0.01億BTC。 邁克爾還希望向貝騰發送0.02500000 BTC。 邁克爾收到的每筆金額都有相應的T和其他細節。 讓我們檢查出使用
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
的結果中選擇一些具有足夠數量的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
命令生成一個原始十六進制字符串,用於對我們提供的事務詳細信息進行編碼。 如果要解碼十六進制,只需使用decoderawtransaction
命令。
signrawtransaction
使用存儲在錢包中或在呼叫中提供的私鑰以序列化交易格式簽署交易。
格式:
$ bitcoin-cli signrawtransaction <hex_createrawtransaction>
執行:
$ bitcoin-cli signrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
結果:
{
"hex" : "0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000",
"complete" : true
}
現在,
signrawtransaction
命令返回另一個十六進制編碼的原始事務。
sendrawtransaction
RPC驗證事務並將其廣播到對等網絡。
格式:
$ bitcoin-cli sendrawtransaction <hex_signrawtransaction>
執行:
$ bitcoin-cli sendrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
結果:
ae74538baa914f3799081ba78429d5d84f36a0127438e9f721dff584ac17b346
sendrawtransaction
命令在網絡上提交事務時返回事務哈希(TXID)。 為了檢查交易哈希值,你可以去blockchain.info或testnet.blockchain.info為Testnet網絡。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.