Transaction-Fees

給定一個比特幣區塊,確定該區塊中交易的最低淨費率(包括祖先)的最簡單方法是什麼?

  • October 8, 2020

給定一個比特幣區塊,確定該區塊中交易的最低淨費率(包括祖先)的最簡單方法是什麼?

一種天真的方法是只找到單筆交易的最低費率,但這並沒有考慮祖先鍊和後代鏈。我想知道考慮到完整的祖先/後代鏈的區塊的最低清算費率

我一直在查看交易選擇算法以嘗試理解邏輯,並認為我可以嘗試對其進行逆向工程以解碼現有塊……但我想知道是否有人已經完成了這項工作並創造了一個好的可以解析現有區塊並確定區塊交易的最低淨費率的工具/腳本/api

首先,即使你在一個區塊中找到最低有效費率的交易,也不一定意味著記憶體池已清空至該級別。在他們最近的論文“關於區塊鏈送出時間:礦工如何選擇比特幣交易的分析”中,Messias 等人觀察到區塊組成與預期標準 ( GetBlockTemplate ) 的偏差高達 22%。他們推測這可能是由帶外優先級或使用其他算法引起的。

事實是,我們不知道礦工正在執行什麼軟體來建構區塊,他們多久更新一次模板,他們多久收到一次加速請求或有自己的興趣來包含交易,以及他們可能執行的是哪個版本的比特幣核心他們甚至只是簡單地使用 GetBlockTemplate (GBT)。

假設區塊通常由 Bitcoin Core 的GetBlockTemplate方法產生,並應用區塊組合的一般規則,我們知道以下內容:

  • 交易必須在塊中按拓撲排序

如果交易花費在同一塊中創建的 UTXO,則子交易必須在塊的交易列表中跟隨父交易

  • GBT按有效費率排序
  • GBT 將選擇完整的交易祖先組

這意味著如果不存在子交易,則為單個交易,或者後代具有較低的有效費率,或者從具有最高有效費率的後代派生的完整組。

  • 當區塊不適合時,可能會跳過組

如果交易組需要的塊空間多於剩餘的塊空間,則將包含具有較低有效費率的較小交易組。這意味著較大的交易組可能會錯過一個區塊,即使具有較低費率的交易進入。

  • 只有最好的同級計算

同級事務不計算形成一個共享的祖先組,除非祖先組是從一個共享的後代開始的。即,如果兩個兄弟姐妹都具有比父級更高的費率,則它們各自在候選列表中形成一個單獨的祖先組,並根據其各自組的有效費率獲得優先級。當選擇具有較高有效費率的祖先組時,將重新計算所有剩餘的祖先組,並且兄弟交易現在可能會立即具有最高的有效費率(因為它高於單獨的父組)。因此,即使兄弟姐妹和父母都出現在一個塊中,它們也會被定位在各個祖先組中的最高有效費率,父母不會從並行多次 CPFP 中獲得特殊好處,

總而言之,預計交易應該按其在區塊中的費率的降序出現(使用 GBT 時),除非拓撲受到干擾,或者交易已通過PrioritiseTransaction充滿“虛擬高費率” 。**即,您可以查看區塊中最後幾筆交易的有效費率並從中進行猜測。**取一個較低的百分位數可能會給你一個更具代表性的價值。

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