Bitcoind
如何使用自定義費用創建原始交易?
我有一個網站,使用者可以使用比特幣發送和提取資金。我想讓他們可以使用不同的費用(低、中、高)而不是固定費用,或者讓 bitcoind 選擇費用。我無法設置預設費用或在執行時更改它,因為如果使用者決定使用高費用和較低費用,則可能會將費用高的使用者分配為低費用,反之亦然。
因此,經過研究,我得出的結論是,有必要從我的節點擁有的 UTXOS 建構交易。但是,我很難完全理解如何執行這項任務。我舉個例子來解釋一下我的問題:如果節點UTXOS是1BTC,一個使用者在服務錢包裡有0.1 BTC,想提取0.07 BTC。我了解要採取的步驟如下:
- 列出所有未使用的交易
- 選擇一個或多個輸入來創建交易
- 費用計算為輸入和輸出總和之間的減法
我此刻的疑問是:
- 如果我理解正確,對於我們收到的每一筆交易,我們都會有一筆未使用的交易,這將使我們能夠花費可用的資金;那麼,只要你在數據庫中有每個使用者的正確餘額(在提款時用相應的費用更新那個餘額),所以我應該只使用每個使用者在存入 btcs 時生成的相同 UTXO 或者是否可以使用其他 UTXO 只要數量相同?
- 我在 bitcointalk 中讀到原始交易的輸入必須小於或等於該交易的輸出。是否不能使用高於出局的輸入並將剩餘資金再次“返還”到我節點的錢包中?
- 如何計算使用的費用?我的意思是,我可以決定我想使用 X satoshis/kb,但是我如何計算交易在創建之前需要的費用?因為如果我理解正確的話,一旦我創建了這樣的交易,我得到的交易的大小。我不知道是否有辦法執行交易將佔用字節/千字節的計算
我沒有找到太多關於它的資訊,所以如果有人可以幫助我,我將不勝感激。
- 所以我應該只使用每個使用者在存入btcs時產生的相同UTXO 或者只要數量相同,是否可以使用其他UTXO?
這取決於您,儘管只花費使用者存入 UTXO 以確保沒有任何問題(例如私鑰洩漏並且硬幣已經準備好花費)可能會更安全。但只要使用者最終獲得適量的比特幣,這並不重要。
- 我在 bitcointalk 中讀到原始交易的輸入必須小於或等於該交易的輸出。是否不能使用高於出局的輸入並將剩餘資金再次“返還”到我節點的錢包中?
我相信您誤讀了您找到的資訊,或者它是錯誤的。交易的輸入必須大於或等於輸出,否則你會以某種方式生成新幣。如果輸入嚴格來說更大,則將差額作為費用提供給交易的礦工。要“返還”剩餘資金,您只需進行交易輸出,將硬幣送回給您,稱為找零。
如果您使用比特幣 RPC 呼叫手動生成新交易,它將自動估算費用本身。要使用自定義費率,您可以在FundRawTransaction呼叫中設置 feeRate。您還可以在錢包使用SetTxFee執行時為所有未來交易設置交易費率。