mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
交易所 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

技术分享:构造区块链分叉的测试方法

收藏
分享

区块链技术是基于去中心化的对等网络,用开源软件把密码学原理、时序数据和共识机制相结合,来保障分布式数据库中各节点的连贯和持续,使信息能即时验证、可追溯、难以篡改,从而创造了一套高效、安全的共享价值体系。

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

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

区块链开发当中首先要保证所有节点的链始终工作在主链,或者发现处于非主链的情况下能够快速回退切换到主链中(切换主链速度),以避免不必要的损失。本文是由复杂美区块链开发工程师的技术分享,主要介绍一种快速模拟真实环境下构造区块链分叉,然后验证区块链是否能够及时消除分叉的测试方案。

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


复杂美区块链测试方案示意图

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

(1)图中A1、B1、C1、A2、B2、C2为部署在测试机上的docker容器;

(2)将该六个容器分成两组,一组为A1、B1、C1,另外一组为A2、B2、C2;

(3)两组中每个容器运行的区块链节点间都可以进行P2P通信。

(4)其中A1、A2节点分别为挖矿节点,其余节点为普通节点。

(5)通过控制两组容器的启动停止即可构造分叉。

(6)通过获取所有测试节点同一区块block哈希值即可以验证是否存在分叉以及分叉是否消失。

该方案的整体节点控制流程图如下图所示,将上述A1、B1、C1、A2、B2、C2分为A、B两组,A组包括A1、B1、C1,B组包括A2、B2、C2。其中一些步骤中需要统计当前P2P网络中的节点数目进行验证,超时时间可以自行根据实际情况进行设定。


整体节点控制流程图(复杂美区块链提供)


免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。