35

从BSV下架风波 揭秘构造区块链分叉的测试方案

 4 years ago
source link: https://www.jinse.com/blockchain/360394.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Z7ryY3E.jpg!web

2018年末,BSV与BCH的算力战牵动了整个数字货币市场的目光,最终以BSV放弃与Bitcoin ABC争夺BCH,转而另起炉灶,并命名bitcoin SV(比特币现金中本聪愿景)而告一段落。

而最近“澳本聪”Dr Craig S Wright和其BSV再次处于风口浪尖之上, 其原因是最近澳本聪再次高调宣称自己就是“中本聪”,因其所提供的“证据”漏洞百出 引发比特币闪电网络支持者、闪电火炬发起人Hodlonaut的不满和抵制

随后冲突产生了规模升级,比特币社区、V神、赵长鹏等纷纷直接或间接的声讨澳本聪,包括币安在内的诸多交易所,开始迅速发布下架BSV的公告,一系列操作让BSV陷入众矢之的。 

Bn2yayu.jpg!web

BSV是BCH硬分叉的产物

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

硬分叉是指,区块链系统有其自己的共识规则,一旦区块链共识规则发生改变,并且旧规则不认同新的规则,导致新规则无法向前兼容,旧的区块不认可新的区块,导致新旧节点在不同的区块链运行 。这种情况就被称为硬分叉。

然而,区块链分叉也有两面性,因为硬分叉一直是一种十分危险和具有争议的区块链升级技术。

从长远来讲,当整个区块链网络面临不可避免的巨大风险时,整个区块链网络将达成共识对系统进行升级,以躲避风险的侵害。

但在没有得到大部分区块链生态参与者的共识同意下 ,强行进行硬分叉,无疑将整个区块链生态拉入分裂的境地,而当生态参与者对未来发展意见不一致时,硬分叉很有可能发生

因为在一个去中心化的系统中,达成共识并不是一件容易的事情。

如何尽可能避免区块数据不一致?

区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确认。

一个基本的区块链系统,首要保证的就是全网络区块的一致性,由于区块链为去中心化系统,实际环境中网络性能、每个节点的不确定性等情况,因此区块中每个节点都需要保持同步状态才能够对自身利益最大化,同时保证区块链整体的安全。

区块链开发当中首先要保证所有节点的链始终工作在主链,或者发现处于非主链的情况下能够快速回退切换到主链中(切换主链速度),以避免不必要的损失。

本文就介绍一种快速模拟真实环境下构造区块链分叉,然后验证区块链是否能够及时消除分叉的测试方案。

该方案的主要特点即在一台机器上就可以完成测试,同时利用自动化脚本部署可以快速搭建测试环境,构造测试中所需要的分叉,以及验证出现分叉之后区块链系统是否能够消除分叉。

请看示意图:

EbEBRfu.jpg!web

区块链测试方案示意图

以上述示意图为例进行说明:

  • 图中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网络中的节点数目进行验证,超时时间可以自行根据实际情况进行设定。

eAVjayz.jpg!web

整体节点控制流程图

结束语

分叉问题是区块链网络不得不面对的问题,一个能够保持全区块一致、交易状态准确的区块链网络,是未来一个安全、稳定的区块链的最基本需求。

希望通过以上案例流程的解析,能够帮助或启发开发者们实现出针对分叉问题更好的优化,及解决方案,让分叉有效可控、异常交易状态快速消除。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK