Doublespend

NBitcoin - 如何將 RBF 設置為 true 以提供更高的交易費用

  • November 8, 2020

我有幾筆交易沒有得到確認——現在已經有幾天了。

我懷疑最低挖礦費已經提高了——15 分鐘前,我仍然以該費用每天進行數百筆交易——但現在還不夠。

所有文件都表明這是一個簡單的過程 - 只需使用與您之前使用的相同的 TX。

我現在感覺這涉及更多。

我拿走了未經確認的 TX - 並獲取了它的 prev_hash。

我載入了這個 prev_hash 的 TX 並將其重新送出給 BlockCypher - 並得到消息:

Error sending transaction: Unable to lock an input of transactions xxx, likely already spent by yyy..   

它在 yyy 佔位符中正確辨識了未確認的交易。

因此,它不想像已經花費的那樣花費它。

現在 NBitcoin.Transaction 類上有一個 Readonly RBF 屬性。

RBF 的意思是“按費用替換”,這是我想要做的 - 但我無法設置它,因為它是只讀的。

我該如何表明這是 RBF?

NBitcoin 只需遵循 BIP125

public bool RBF
{
   get
   {
       return Inputs.Any(i => i.Sequence < 0xffffffff - 1);
   }
}

如果您使用TransactionBuilder創建事務,您有兩種方法:

一種是使用TransactionBuilder.SetLockTime(blockHeight)where 塊高度​​是currentHeight-1(實際上,如果你把 0 也可以)

另一種方法是在不簽名的情況下建構您的交易,首先TransactionBuilder.BuildTransaction(false)更改輸入序列之一,然後使用TransactionBuilder.SignTransaction簽名。

根據BIP 125

顯式信號:如果任何輸入的 nSequence 數小於 (0xffffffff - 1),則認為交易已選擇允許替換自身。

繼承的信號:沒有明確表示可替換性的事務在此策略下是可替換的,只要它們的任何一個祖先發出可替換性信號並且仍未確認。

您的 tx 上的輸入之一的序列號是否小於0xffffffff - 1

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