gpt4 book ai didi

transactions - 比特币 - 如何构建原始交易?

转载 作者:行者123 更新时间:2023-12-02 09:05:34 62 4
gpt4 key购买 nike

根据其他问题的列表,要构建我需要的原始交易:

  1. listunspent - 您可以获得所有未花费交易的列表
  2. 您可以决定要花哪些钱
  3. 您使用createrawtransaction来创建您的输入/输出,txid 和 vout 来自您拥有的交易列表玩,以及构成“金钱”的交易列表为您供应”。
  4. 使用signrawtransaction对创建的交易进行签名
  5. 使用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
}
]

就像没有任何发送交易一样。

那么我怎样才能从交易者那里收集所有未使用的资金呢?

感谢您的回答。

最佳答案

场景:

Michael receives 0.05000000 BTC from Pablo and another 0.01000000 BTC from Kuradang. Michael also wants to send 0.02500000 BTC to Berteng. Each amount that Michael receives has the corresponding T and other details. Lets check that out using listunspent command then create a raw transaction using createrawtransaction after that sign it using signrawtransaction and send that raw transaction using sendrawtransaction.

给定:

  • Michael 的比特币地址:mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe
  • Berteng 的比特币地址:mxh3H416KCRoBDiweSESew5YJyAk1nxLrN
  • 发送至 Berteng:0.02500000 mBTC

步骤 1)

列表未花费

格式:

$ bitcoin-cli listunspent [misconf=1] [max_number_confirmation=99999999] '''["<wallet_address>"]'''

Lets check Michael's list of unspent using his 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
}]

What we see here is the results that assigned 50 and 10 mBTC to our address mkrz…. To spend this output, we will create a new transaction.

步骤 2)

创建原始交易

We need to choose some blocks with sufficient amount from the result of listunspent. Since we only need to send 0.02500000 mBTC I think the first block has enough amount to make the transaction.

格式:

$ bitcoin-cli createrawtransaction
'[{
"txid" : "<txid_of_selected_block>",
"vout" : <vout>
}]'
'{"<recipient_address>": <amount_to_send>, "<sender_address>": <amount_change>}'

To pay the fee, we will reduce the change output by 0.5 millibits as you can see below.

执行:

$ bitcoin-cli createrawtransaction
'[{
"txid" : "12b8e7ede4992f4d30f93idj3085746951d945e39f40becebd7c290af8c2e7ad",
"vout" : 0
}]'
'{"mxh3H416KCRoBDiweSESew5YJyAk1nxLrN": 0.025, "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe": 0.0245}'

结果

0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000

The createrawtransaction command produces a raw hex string that encodes the transaction details we supplied. If you want to decode the hex just use decoderawtransaction command.

步骤 3)

signrawtransaction

signs the transaction in the serialized transaction format using private keys stored in the wallet or provided in the call.

格式:

$ bitcoin-cli signrawtransaction <hex_createrawtransaction>

执行:

$ bitcoin-cli signrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000

结果:

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

Now the signrawtransaction command returns another hex-encoded raw transaction.

步骤 4)

sendrawtransaction

RPC validates a transaction and broadcasts it to the peer-to-peer network.

格式:

$ bitcoin-cli sendrawtransaction <hex_signrawtransaction>

执行:

$ bitcoin-cli sendrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000

结果:

ae74538baa914f3799081ba78429d5d84f36a0127438e9f721dff584ac17b346

The command sendrawtransaction returns a transaction hash (TXID) as it submits the transaction on the network. To check the transaction hash, you can go to blockchain.info or testnet.blockchain.info for Testnet network.

关于transactions - 比特币 - 如何构建原始交易?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38152663/

62 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com