Transactions
為什麼有些交易會從記憶體池中消失?
就在塊 537562 之前,我的記憶體池中有以下交易:
'a4ca904361952c8a27bcf1fd36e5bc8ccdc5d42ceb72cfba60c017fb9cbbb0e5' '69718e60b6e7d20d5e56e097b2de9789007fb230d0205a90a1411ef8086672a0' '346b93674d91bfc5b5568f7e77dc969b5c87351135a1c75d551c1418533164f2' 'e8fddfc634f2e3d535ad81d7dce314e543047bc0281854d9eded4d107fa4f525' 'da2fd9ed1a8ba7612b885377dc7018d8d0c35ad4cdd03a24829b9a0b8edbf123' '3318d59ac00f5dbdd223fcf9ab953e0eee2765b4d1d72285c33c75121e888eee' 'fc4aea4f7f3ae94bf65c6cc23b73e594f7c849ab5f1362ac78d157cf4af8bc8a' '1e7b6ebefd9cd4983f598831ed8082bcdab6b7857f2d302e7d4952e4f145f8e7' 'f0f20dcf5142895d19140b60830bd9f15b664294d8535c3dcc09ebe3398a2fa3'
這些交易後來只是從記憶體池中消失了,而從未被探勘。為什麼會這樣?在費用如此之低的時候,我懷疑它們是替代費用的目標。記憶體池交易消失的可能原因是什麼?有沒有辦法調查這些特定的發生了什麼?
編輯:這些交易的費率高於預設值
minrelayfee
1 satoshi/ByteEDIT2:我承認我不知道事務如何離開記憶體池的問題?,但我的問題仍然不同。我有興趣找出為什麼一個特定的交易在沒有被探勘的情況下就從記憶體池中消失了。現在看看我收集的交易是否可替換有點晚了(nLocktime 等於 4294967294 - 0xffffff-1 - 如果我沒記錯的話),但我會在未來考慮到這一點重複我的分析。
瀏覽原始碼,我發現從記憶體池中刪除事務的原因如下:
- 它被包含在一個塊中
- 一個有衝突的交易(即花費了至少一個相同輸入的交易)被包含在一個塊中
- 已過期:在記憶體池中的停留時間超過了指定的時間
-mempoolexpiry
(預設 336 小時)- 已達到記憶體池大小限制(由 設置
-maxmempool
)。首先刪除最低費用的交易。- 發生了區塊鏈重組(即鏈的不同分支成為最好的),該交易花費了現在不成熟的代幣,即創建這些代幣的區塊不再至少有 100 個區塊深
- 發生了區塊鏈重組,新的鏈變短了,因此該交易的鎖定時間中提到的區塊高度尚未達到
- 發生了區塊鏈重組。來自斷開連接的塊的交易必須添加到記憶體池中。如果它已經滿了,在這種情況下,最舊的交易將被刪除以騰出空間(在這種情況下不是最低費用)。
- 在按費用替換的情況下,它被替換為費用較高的
如果有人知道我錯過的其他人,請編輯以添加他們。
如果我們能自己找到交易,我們或許就能猜出它們被刪除的原因。例如,也許我們可以查看他們的輸入,看看它們是否被其他交易花費了。但是當我在 blockchain.info 上查找這些交易 ID 中的前幾個時,我沒有得到任何結果,因此可能是區塊瀏覽器也刪除了它們。