Bitcoin-Cli
在簽署原始交易之前計算礦工費?
我正在嘗試使用 createrawtransaction 將硬幣從多個交易發送到單個輸出和單個更改地址的過程自動化
不過我有點迷茫,因為我如何在不知道簽名交易的總大小的情況下計算更改地址的輸出量來計算礦工費……
例如
我有 3 個輸入交易,它們總計 0.1 BTC。
我有 1 個輸出地址,我想向其發送 0.05 BTC。
我有 1 個輸出更改地址,我想將其餘的 BTC 發送到該地址。
在不知道礦工費多少的情況下,如何計算更改地址的金額?
通常,您不必這樣做。
正常的工作流程是:
- 使用 listunspent 來辨識您想要使用的輸出(如果有的話)。
- 使用 createrawtransaction 建構原始交易,其中包含您要創建的輸出(不包括更改)和您要使用的輸入(如果有)。
- 使用 fundrawtransaction 讓 bitcoind 將零錢輸出添加回自身(以及額外的輸入,如果需要),同時考慮交易的預期總規模和網路上的目前費率。
- 如果您對結果感到滿意,請使用 signrawtransaction(withwallet/withkey) 將簽名添加到原始交易中。
- 使用 sendrawtransaction 在網路上廣播交易。
Fundrawtransaction 是這裡的關鍵。它將對交易進行規模估算和費用估算,並建構反映輸入和輸出之間差異減去費用的變化。
通常,您不關心要花費哪些輸入,您也可以只將輸入列表保留為 createrawtransaction 為空。在這種情況下,funddrawtransaction 將為您完成完整的硬幣選擇。
更現代的 PSBT 格式也可以做到這一點。然後相關的 RPC 是 walletcreatefundedpsbt、walletprocesspsbt、finalizepsbt、sendrawtransaction。