【发布时间】:2021-07-07 12:06:39
【问题描述】:
我需要知道交易规模来计算用户将通过发送 BTC 花费的费用。我使用bitcoind 钱包和许多帐户,并使用sendtoaddress 调用发送BTC。有没有办法知道bitcoind 将使用多少输出来创建交易?或者在bitcoind 执行之前通过其他方式了解事务大小...
【问题讨论】:
我需要知道交易规模来计算用户将通过发送 BTC 花费的费用。我使用bitcoind 钱包和许多帐户,并使用sendtoaddress 调用发送BTC。有没有办法知道bitcoind 将使用多少输出来创建交易?或者在bitcoind 执行之前通过其他方式了解事务大小...
【问题讨论】:
这种情况你需要自己创建交易
有没有办法知道 bitcoind 将使用多少输出来创建交易?
输出由您定义,我猜,您在这里寻找的是输入 (UTXO),示例 sendtoaddress 定义为创建具有一个输出的事务,而 sendmany 将创建一个具有您在参数中提供的多个输出。
使用 RPC,您可以通过以下示例跳过输入选择:
// creates a rawtransaction with no inputs
bitcoin-cli createrawtransaction "[]" "{\"btc01...receiveraddress\":0.01}"
// fund the transaction with the missing inputs and calculate the fee
bitcoin-cli fundrawtransaction ...hash_response_from_createrawtransaction
fundrawtransaction 将添加任何缺失的输入并计算您将在响应中看到的费用。
如果您仍然想要交易大小,可以通过使用您生成的哈希调用decoderawtransaction 来获取它,或者只是通过哈希本身计算它,只需将哈希大小除以二。
为了在创建交易时进行更多控制,我建议您使用listunspent 并自行选择输入
值得看看这个transaction size calculator,以了解如何根据(输入/输出)输入计算交易大小。
【讨论】: