使用 CPFP 的礦工是否會查看所有可能的後代組合以找到費用最高的組合?
當有更多後代的交易時,CPFP 策略是否會通過所有可能的後代組合來考慮“一起”,以找出哪個具有最佳費用?
例如,當有依賴圖時,看起來像這樣
A 有 6 種可能性需要考慮 - {A}、{A、B}、{A、B、C}、{A,C}、{A,C,D}、{A,B,C,D} . CPFP 礦工是否查看所有這些?
在這張圖中,如果我數正確的話,會有 25 種這樣的組合。比特幣核心會瀏覽所有這些嗎?
如果我們執行
getrawmempool true
RPC,我們可以查看比特幣核心的每個記憶體池交易的數據。這是一個例子:
"3a0af489e500322159db85ad95174ffa3dd9924dbd0b68b041364a8c8eac03cc": { "size": 226, "fee": 0.00001130, "modifiedfee": 0.00001130, "time": 1507465582, "height": 488876, "descendantcount": 24, "descendantsize": 5412, "descendantfees": 27120, "ancestorcount": 2, "ancestorsize": 451, "ancestorfees": 2260, "depends": [ "3da9c837b8560eadea2f8c48a050e9dd3f4d7637b5209bdf98c19175906529bb" ] },
注意
ancestorsize
和ancestorfees
欄位。這些代表此交易及其所有祖先的總字節大小和費用。然後將費用除以字節並生成一個排序列表以查找哪個交易支付最佳費用(每字節費用)很簡單,包括其祖先。然後剩餘的交易可以通過從考慮中刪除添加到上述區塊提案中的任何交易來重新計算其祖先費率,對這些新的費率進行排序,並找到包括其祖先在內的新的最佳費率交易。重複此步驟,直到區塊提議的剩餘空間少於記憶體池中的任何交易。
計算這些祖先的大小和費用非常快:您不需要計算每個祖先的值,您只需從您的直接祖先(已經考慮了所有祖先)中獲取值,然後添加目前交易的值到那個。
此外,為了保持快速,Bitcoin Core 只查看深度為 25 或更少的交易鏈。
有關更多資訊,這是將 CPFP 添加到比特幣核心的更新檔。它相對較短,並且評論很好。