“待處理(Pending)”真的是全網事實嗎?
一個錢包可以把 Dusk 上的某筆交易標記爲“待處理”,而另一節點卻根本沒有相應的 mempool 記錄。
這不一定是不一致。原因在於 Dusk 會在交易尚未成爲賬本狀態之前,以特定方式對其進行處理。
每個對等節點都會執行自己的准入檢查,並維護自身的 mempool。因此,Dusk 的 mempoolTxs 查詢展示的是被查詢節點的真實 mempool——而不是由每個節點共同共享的、全網範圍的隊列。
Boreas 時代的 Moonlight 處理方式讓這一點更加不直觀:當某個 nonce 比賬戶當前序號更靠前時,一筆有效交易可能會在缺失的 nonce 到達之前被暫時推遲。在這段時間裏,它並不出現在節點可見的“真實 mempool”中。於是,即便是接收了該交易的那個節點,也可能還未在 mempoolTxs 中顯示它。
過期(Expiry)還引入了另一個本地維度:這是節點策略,而不是把“壽命”直接編碼進交易本身。
這也改變了我對“待處理(pending)”這個詞的理解:在達成共識之前,Dusk 並不會爲所有人提供一個唯一的、權威的全局交易狀態供觀察。不同節點對同一筆交易可以合理地持有不同信息。
因此,錢包狀態本質上是某個觀察點的彙報,而不是在宣稱網絡已經就某個共享的中間事實達成一致。
當進入共識階段時,這些支離的本地視圖纔開始逐步匯聚成共同的賬本歷史。
@Dusk $DUSK #dusk
一個錢包可以把 Dusk 上的某筆交易標記爲“待處理”,而另一節點卻根本沒有相應的 mempool 記錄。
這不一定是不一致。原因在於 Dusk 會在交易尚未成爲賬本狀態之前,以特定方式對其進行處理。
每個對等節點都會執行自己的准入檢查,並維護自身的 mempool。因此,Dusk 的 mempoolTxs 查詢展示的是被查詢節點的真實 mempool——而不是由每個節點共同共享的、全網範圍的隊列。
Boreas 時代的 Moonlight 處理方式讓這一點更加不直觀:當某個 nonce 比賬戶當前序號更靠前時,一筆有效交易可能會在缺失的 nonce 到達之前被暫時推遲。在這段時間裏,它並不出現在節點可見的“真實 mempool”中。於是,即便是接收了該交易的那個節點,也可能還未在 mempoolTxs 中顯示它。
過期(Expiry)還引入了另一個本地維度:這是節點策略,而不是把“壽命”直接編碼進交易本身。
這也改變了我對“待處理(pending)”這個詞的理解:在達成共識之前,Dusk 並不會爲所有人提供一個唯一的、權威的全局交易狀態供觀察。不同節點對同一筆交易可以合理地持有不同信息。
因此,錢包狀態本質上是某個觀察點的彙報,而不是在宣稱網絡已經就某個共享的中間事實達成一致。
當進入共識階段時,這些支離的本地視圖纔開始逐步匯聚成共同的賬本歷史。
@Dusk $DUSK #dusk
