Bitcoin-Core

如何在每筆交易中設置特定的 satoshis 費用?

  • February 4, 2021

我目前正在開發一個小型比特幣交易網站的個人項目,我已經弄清楚如何創建原始交易並將其廣播(createrawtransaction -> fundrawtransaction -> signrawtransactionwithwallet -> sendrawtransaction)。

fundrawtransaction中有一個選項可讓您設置費用,但以 BTC/kB 為單位。有沒有關於如何發送交易的選項,以 satoshis 指定最終費用?或者我如何知道交易的最終規模來計算費用?我希望使用者選擇以 satoshis 為單位的費用,而不是 BTC/kB 的費用。

我不知道這是否有關係,但我使用的是 bech32 地址。謝謝你的幫助!

如何設置絕對費用

交易費用由輸入總和與輸出總和之間的差值隱含定義。

fee = Σ(inputs) - Σ(outputs)

由於您正在明確建構交易,因此您可以通過為接收者和更改輸出定義相應的特定輸出數量來設置確切的交易費用。由於輸入和輸出的權重是可預測的,因此您可以通過提前了解輸入和輸出的數量和類型來計算適當的費用。

為什麼這是個壞主意

雖然您的錢包可以在交易建構期間確定輸入計數,但您的使用者不會事先知道需要多少輸入來為他們的交易提供資金。由於交易是按照費用而不是絕對費用的順序處理的,因此使用者將無法在不知道交易權重的情況下就絕對費用做出明智的決定。根據我的經驗,使用者經常會錯誤地收取絕對費用(大多數使用者甚至會錯誤地支付費用),這會導致大量支持流量,並抱怨多付或少付。這就是為什麼提款界面通常會給出預先確定的選擇(例如快遞、普通、節儉)或收取一定的費用而不是絕對費用。

如果您希望收件人支付費用,您可能需要考慮使用subtractfeefromamount.

引用自:https://bitcoin.stackexchange.com/questions/102232