Transaction-Fees

minRelayTxFee 和 rollingMinimumFeeRate 有什麼區別?

  • July 10, 2022

CTxMemPool有一個名為rollingMinimumFeeRate

   mutable double rollingMinimumFeeRate GUARDED_BY(cs); //!< minimum fee to get into the pool, decreases exponentially

該評論解釋說,這是進入游泳池的最低費用。但是我們在程式碼庫中有另一個變數,稱為minRelayTxFee

CFeeRate minRelayTxFee = CFeeRate(DEFAULT_MIN_RELAY_TX_FEE);
/** Default for -minrelaytxfee, minimum relay fee for transactions */
static const unsigned int DEFAULT_MIN_RELAY_TX_FEE = 1000;

兩個問題:

  1. 這兩個變數有什麼區別?哪個用於什麼案例?
  2. 為什麼rollingMinimumFeeRate呈指數下降?

這兩個變數有什麼區別?哪個用於什麼案例?

rollingMinimumFeeRate是將交易添加到記憶體池並進一步中繼的最低費用。這是一個動態值——它隨著記憶體池的填滿和清空而變化。

minRelayTxFee是絕對最小費率。它是一個靜態值。rollingMinimumFeeRate從 的值開始,minRelayTxFee當記憶體池滿時它會增加。隨著記憶體池清空和rollingMinimumFeeRate減少,它不會減少到小於 minRelayTxFee. (這實際上是發生的事情,而不是程式碼的實際作用。)

為什麼rollingMinimumFeeRate呈指數下降?

rollingMinimumFeeRate當記憶體池填滿時增加。費用低於此值的交易將從記憶體池中逐出。增加它是為了保持最大記憶體池大小 - 如果記憶體池大於最大值,則最低費率交易將被驅逐,直到達到最大大小,並rollingMinimumFeeRate設置為被驅逐的最高費率交易。

由於交易是按塊從記憶體池中刪除的,因此需要一種減少費用的方法rollingMinimumFeeRate以允許重新進入較低費用的交易。但是,由於它不再有這些交易,它不知道將其設置為什麼值。所以它以指數方式向後走,直到它達到 0 或再次增加,然後指數減少被重置。

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