當他們的父交易過期時,記憶體池中的交易會發生什麼?
我剛剛閱讀了Coin Metrics Newsletter #53,其中包含有關最近記憶體池擁塞的部分。在提到由於網路的未確認交易隊列超過預設記憶體池限製而被驅逐的交易之後,它提到了由於 14 天限製而到期的交易:
其次,在記憶體池中超過兩週的交易過期。預設情況下,如果在過去 336 小時(兩週)內沒有礦工發現交易費用足以將交易包含在一個區塊中,比特幣核心節點會從其記憶體池中刪除交易。
從 5 月 25 日到 5 月 30 日,共有 1,627 筆交易到期。其中只有 35% 的人在記憶體池中停留了兩週。剩下的 65% 可能花費了未經確認的父交易,並在其父交易過期時失效。
在最後一句話(添加了突出顯示)中,時事通訊描述了與過期交易連結的交易也會從記憶體池中刪除。這是對記憶體池行為的準確描述嗎?
如果是,假設
txA
它在記憶體池中待了兩週並被丟棄,並且txB
是一個 CPFP 交易花費了一個輸出txA
,因此也被無效並丟棄了。如果原始發件人重播會發生什麼
txB
?鑑於txB
沒有 的上下文,輸入似乎不存在txA
,發送方的對等方會請求前面的事務txA
還是直接拒絕txB
?那麼這兩個交易會作為一個單元重新傳播嗎?
是的,這是對記憶體池行為的準確描述。當交易從記憶體池中過期時,它的後代也會過期。
當
txA
被丟棄時,也是如此txB
。如果我們稍後重新廣播txB
(並且它不是太大),我們的對等方會將其添加到他們為我們保留的孤立事務的(小)記憶體中。如果我們txA
在接下來的 20 分鐘內廣播(孤兒 tx 記憶體驅逐超時),並且它自己通過了策略檢查,txA
將被添加回記憶體池。請注意,只有當我們向他們發送for時,對等方才會請求它。
inv``txA
但是,目前P2P網路上還沒有“以單元為單位傳播”的說法(這裡討論的是包中繼設計)。這就是為什麼在您的範例中
txA
必須自行通過策略檢查的原因。這對具有預簽名交易的 L2 協議有影響,例如在交易中繼至關重要的閃電網路中。即使在支付高額費用(1)(2)的情況下,也不會接受
txA
在廣播時恰好低於大多數網路記憶體池最低費用的預簽名。txB
(1) 這就是閃電協議在錨點輸出
update_fee
後保留消息的原因。 (2) 這對其他 L2 協議也有影響。例如,在 Revault 中,它可能會阻止一個人在處理記憶體池積壓工作之前取消保管庫。