Mempool
如何避免點對點拓撲(比特幣)中的衝突?
例如在比特幣中,如果我想讓一個礦工在從他的記憶體池中刪除之前驗證其他礦工是否儲存了一筆交易。
多位礦工同時進行驗證的情況如何處理?
是否可以使用退避算法?
記憶體池只是未確認交易的臨時儲存。每個節點的記憶體池是不同步的,實際上一個節點可以選擇根本不保留記憶體池。因此,在從他們的記憶中刪除之前,沒有節點需要驗證其他人是否有交易。礦工將從他們的記憶體池中選擇交易,以建構他們將在其上探勘的新塊模板。
重要的是區塊鏈。每個新的有效區塊將(可能)包含一些交易,因此當節點聽到該區塊時,它將相應地更新其記憶體池(刪除已在區塊中確認的交易)。
因此,礦工都可以嘗試探勘包含相同(或不同)交易的區塊,並且它只是第一個找到將“獲勝”的有效區塊的礦工,他們的區塊被附加到區塊鏈中。所有其他礦工都會看到這個新區塊,並開始在它之上進行探勘,相應地調整他們的記憶體池(以及他們在新嘗試尋找區塊時包含的交易)。