錢包設計:如何處理變化中的灰塵量?
我正在研究我正在開發的錢包的一些怪癖,其中一個問題是如何處理大於灰塵約 600 聰的零錢,但小於實際需要再次發送的費用。我應該將接近塵埃的數量作為零錢返還,還是只是將其作為額外的採礦費?
例如,假設使用者花費了一筆金額,在支付給輸出並且足夠的費用後,只剩下 1,000 聰作為零錢。即使 1,000 satoshis 太小而無法再次支付足夠的費用,我是否應該將這 1,000 satoshis 作為零錢發送?
即使費用低至每字節 10 satoshis 和一個輸入和輸出 (P2PKH),您也需要至少 2,000 satoshis 的費用。
我認為,如果更改金額低於某個門檻值(例如 3,000 聰),則將剩餘部分用於額外的採礦費可能會更好。一個只有 1,000 聰的地址大多是無用的,只會增加可能永遠不會被使用的不斷增長的 UTXO 集合。這種方法看起來合適嗎,還是我“搶”了使用者的灰塵?
我已經對一個相關主題進行了一些研究*,我想說這取決於你的假設,從長遠來看,比特幣的價值、費用率和創建交易的成本會發生什麼。
假設費率(以 [sat/B] 為單位)將保持大致相同的水平或增加,當變化小於創建一個輸出和支出的成本時,它可以節省使用者將變化添加到費用中的費用一個輸入:
change ≤ (bytesOutput + bytesInput) × feePerByte ⇒ add to fee
例如,對於每字節 150 聰的 P2PKH
change ≤ 27,300 satoshis = (34 bytes + 148 bytes) × 150 satoshis per byte
您可能還需要考慮將更改添加到交易費用會導致交易更快地確認,佔用更少的塊空間並減少 UTXO 集。
但是,如果費用率會大幅下降,或者支出投入的成本會顯著降低,那麼將來可能會花費較少的金額。前者可能是由於區塊大小增加或引入第二層支付系統而發生,而後者可能是由新的交易格式、簽名聚合或降低
minRelayTxFee
.或者,您可以嘗試直接匹配您嘗試花費的金額,或者只選擇足夠大的金額來創建有用的更改輸出。謝謝你,彼得,提醒。