Ripple 如何同步其賬本?
比特幣通過區塊鏈決定一個全球時鐘——每一個挖出的區塊都是那個時鐘的另一個滴答聲。
在 Ripple 中,有一個全域的賬本隨著時間的推移不斷前進——賬本的數量一直在不斷增加,賬本代表了系統在時間 t 的狀態。
什麼同步這個賬本?不同的 Ripple 節點如何知道何時應該推進他們的賬本計數器?
有兩個不同的問題。一種是初始同步,假設您什麼都不知道。另一個是伺服器如何同步推進分類帳。
對於初始同步,您監控網路並觀察您信任的驗證者的簽名驗證。您檢查它們的時間戳,如果它們是最新的,您就可以開始跟踪分類帳鏈。一旦你知道他們聲稱目前分類帳是什麼,你就可以獲取你失去的任何數據,遍歷雜湊鍊和交易,並說服自己他們聲稱有效的分類帳實際上是由附加到它的交易證明的並且它連接到你的最後一個分類帳,如果你有一個。
同步後,您可以參與共識過程。你會看到實時交易被轉發,你會看到提議的交易集,你可以發送自己的提議。當您看到交易集的共識時,您將其應用於最後一個分類帳,然後您擁有下一個分類帳。然後,您可以對其進行簽名並發送驗證。
賬本關閉的實際時間有點複雜。如果沒有交易,賬本通常每 20 秒關閉一次。如果有任何未確認的交易,賬本將在打開兩秒鐘後關閉,網路將嘗試對其形成共識。這兩秒鐘讓節點有機會在需要開始處理新分類帳之前完成對前一個分類帳的處理。
實際同步使用複雜的增量算法進行。賬本是一棵樹,所以如果一個分支沒有改變,你會發現不需要遍歷那個分支。您需要的分類帳節點可以從網路中獲取,伺服器還將根據您說您確實需要的節點預測性地返回他們認為您需要的節點。
對於大量歷史的初始獲取,伺服器可以從任何具有歷史的伺服器請求“獲取包”。這包含伺服器知道的那些分類帳節點對於該特定分類帳是唯一的,並有助於減少所需的查詢數量。
所有經過驗證的交易、所有賬本和網路曾經擁有的所有狀態都形成了一個巨大的雜湊樹。一旦你知道了目前賬本的雜湊值,你就可以遍歷雜湊樹來安全且可證明地找到這些東西。但是,驗證不在此雜湊鏈中。它們單獨儲存並單獨簽名。