Synchronization

如何用 testrpc 測試鏈重組?

  • November 28, 2019

我正在研究區塊鏈同步腳本。為了測試目的,我需要一種以程式方式進行重組的方法。在某些 testrpc 中有這樣的功能嗎?

我不知道用 TestRPC 來實現這一點的方法。可能有比下面描述的更好的方法。

我想我會用 Geth 和創世塊中的低難度/快速塊創建一條私有鏈。

  1. 將兩個節點相互連接,並確保兩者都在探勘和同步。部署你的合約,設置賬戶和余額(他們每個人都將獲得挖礦獎勵),否則為測試做好準備——通常,創建初始測試條件。
  2. 然後,斷開節點之間的連接。要以程式方式執行此操作,您可以考慮踩踏網路配置。這個想法是創建一個“裂腦”。然後,您可以開始向一個節點或另一個節點送出交易,甚至兩者都送出。localhost您可以安排它,以便即使與其他節點的連接失去,Geth on仍會響應。

由於兩個節點都將進行探勘,它們將各自形成區塊歷史,但它們將是不同的歷史。 3. 恢復節點之間的連接並期待重組,直到兩個節點上都出現一個規範的歷史。

希望能幫助到你。

ps 作為事後的想法,一個粗略的變化是使用三個節點並強制一個退出,而兩個保持連接,所有三個探勘。這幾乎可以保證聯合節點的鏈更長,而退出的節點將成為重組的受害者。提前知道這一點可能會簡化您對結果的探索。

測試 rpc 不可能做到這一點,因為它只在事務到達時生成塊,並且不連接到其他遠端節點,因此節點之間永遠不會有差異。

我們最近使用私有鍊和一些混亂工具.. pumba完成了這項工作。Pumba 將允許您殺死節點、重新啟動它們並引入延遲和丟棄數據包。

一旦節點重新上線,任何這些不利情況都將導致重組

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