Synchronization

在數據庫上同步事件 - 處理區塊鏈重組

  • October 13, 2018

我的 Dapp 依賴於集中式數據庫上的實時事件同步。總是有一個伺服器端腳本輪詢區塊鏈中的新事件,然後解析並對數據庫執行相應的操作。區塊鏈重組是一場破局。作為一種常見的做法,我知道建議在同步之前等待 12 個確認塊。

但是,我在 ropsten 上進行測試,我得到了跨越 200 個區塊的重組!!!經過一周的研究,我陷入了困境。它只發生在測試網上嗎?有沒有更真實的測試網,我可以信任 12 個確認?我該如何處理並在數據庫上實現實時同步?

如果你想要一個無需重組的測試網,試試 Kovan。Ropsten 是工作量證明,任何能夠將足夠的雜湊算力指向它的人都可以為相當多的塊重寫鏈。Kovan 是權威的證明,可確保沒有重組。

至於在主網上處理它們,一般的做法是:

在每個新塊上,檢查 prevhash 與 N-1 塊的雜湊值。如果散列不同,則獲取 prevhash 父塊的散列,並將其與 n-1 個塊進行比較。重複這個過程,直到你在你看到的塊和你剛剛收到的塊之間找到一個共同的祖先。然後將所有事件放到該共同祖先上,並使用目前正在播放的更長的塊鏈從那裡重建索引。如果兩條鏈的長度相等,請等到一個新塊進入並使一個更長。

引用自:https://ethereum.stackexchange.com/questions/60517