從BSV下架風波, 揭祕構造區塊鏈分叉的測試方案

作者 | 複雜美區塊鏈

出品 | 區塊鏈大本營(blockchain_camp)

2018年末,BSV與BCH的算力戰牽動了整個數字貨幣市場的目光,最終以BSV放棄與Bitcoin ABC爭奪BCH,轉而另起爐灶,並命名bitcoin SV(比特幣現金中本聰願景)而告一段落。

而最近“澳本聰”Dr Craig S Wright和其BSV再次處於風口浪尖之上,其原因是最近澳本聰再次高調宣稱自己就是“中本聰”,因其所提供的“證據”漏洞百出引發比特幣閃電網絡支持者、閃電火炬發起人Hodlonaut的不滿和抵制

隨後衝突產生了規模升級,比特幣社區、V神、趙長鵬等紛紛直接或間接的聲討澳本聰,包括幣安在內的諸多交易所,開始迅速發佈下架BSV的公告,一系列操作讓BSV陷入眾矢之的。


從BSV下架風波, 揭秘構造區塊鏈分叉的測試方案 | 技術頭條



BSV是BCH硬分叉的產物


想理解BSV到底是什麼,就要先說說什麼是硬分叉。

硬分叉是指,區塊鏈系統有其自己的共識規則,一旦區塊鏈共識規則發生改變,並且舊規則不認同新的規則,導致新規則無法向前兼容,舊的區塊不認可新的區塊,導致新舊節點在不同的區塊鏈運行。這種情況就被稱為硬分叉。

然而,區塊鏈分叉也有兩面性,因為硬分叉一直是一種十分危險和具有爭議的區塊鏈升級技術。

從長遠來講,當整個區塊鏈網絡面臨不可避免的巨大風險時,整個區塊鏈網絡將達成共識對系統進行升級,以躲避風險的侵害。

但在沒有得到大部分區塊鏈生態參與者的共識同意下

,強行進行硬分叉,無疑將整個區塊鏈生態拉入分裂的境地,而當生態參與者對未來發展意見不一致時,硬分叉很有可能發生

因為在一個去中心化的系統中,達成共識並不是一件容易的事情。

如何儘可能避免區塊數據不一致


區塊鏈作為一個狀態機,則每次交易就是試圖改變一次狀態,而每次共識生成的區塊,就是參與者對於區塊中所有交易內容導致狀態改變的結果進行確認。

一個基本的區塊鏈系統,首要保證的就是全網絡區塊的一致性,由於區塊鏈為去中心化系統,實際環境中網絡性能、每個節點的不確定性等情況,因此區塊中每個節點都需要保持同步狀態才能夠對自身利益最大化,同時保證區塊鏈整體的安全。

區塊鏈開發當中首先要保證所有節點的鏈始終工作在主鏈,或者發現處於非主鏈的情況下能夠快速回退切換到主鏈中(切換主鏈速度),以避免不必要的損失。

本文就介紹一種快速模擬真實環境下構造區塊鏈分叉,然後驗證區塊鏈是否能夠及時消除分叉的測試方案。

該方案的主要特點即在一臺機器上就可以完成測試,同時利用自動化腳本部署可以快速搭建測試環境,構造測試中所需要的分叉,以及驗證出現分叉之後區塊鏈系統是否能夠消除分叉。

請看示意圖:


從BSV下架風波, 揭秘構造區塊鏈分叉的測試方案 | 技術頭條


區塊鏈測試方案示意圖


以上述示意圖為例進行說明:

  • 圖中A1、B1、C1、A2、B2、C2為部署在測試機上的docker容器;
  • 將該六個容器分成兩組,一組為A1、B1、C1,另外一組為A2、B2、C2;
  • 兩組中每個容器運行的區塊鏈節點間都可以進行P2P通信;
  • 其中A1、A2節點分別為挖礦節點,其餘節點為普通節點;
  • 通過控制兩組容器的啟動停止即可構造分叉。
  • 通過獲取所有測試節點同一區塊block哈希值即可以驗證是否存在分叉以及分叉是否消失。


該方案的整體節點控制流程圖如下圖所示,將上述A1、B1、C1、A2、B2、C2分為A、B兩組,A組包括A1、B1、C1,B組包括A2、B2、C2。

其中一些步驟中需要統計當前P2P網絡中的節點數目進行驗證,超時時間可以自行根據實際情況進行設定。


從BSV下架風波, 揭秘構造區塊鏈分叉的測試方案 | 技術頭條


整體節點控制流程圖


結束語


分叉問題是區塊鏈網絡不得不面對的問題,一個能夠保持全區塊一致、交易狀態準確的區塊鏈網絡,是未來一個安全、穩定的區塊鏈的最基本需求。

希望通過以上案例流程的解析,能夠幫助或啟發開發者們實現出針對分叉問題更好的優化,及解決方案,讓分叉有效可控、異常交易狀態快速消除。

複雜美區塊鏈(www.33.cn)成立於2008年,累計申請200多項區塊鏈發明專利,全球排名前10。擁有自主研發的區塊鏈底層架構Chain33,從2018年11月開源至今,其首創的平行鏈架構被百度、阿里、360等機構認可與研究,並登錄微軟azure市場。


分享到:


相關文章: