CN109460593A - 一种区块链虚拟仿真系统 - Google Patents
一种区块链虚拟仿真系统 Download PDFInfo
- Publication number
- CN109460593A CN109460593A CN201811256027.1A CN201811256027A CN109460593A CN 109460593 A CN109460593 A CN 109460593A CN 201811256027 A CN201811256027 A CN 201811256027A CN 109460593 A CN109460593 A CN 109460593A
- Authority
- CN
- China
- Prior art keywords
- block
- block chain
- network
- calculate node
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/02—CAD in a network environment, e.g. collaborative CAD or distributed simulation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种区块链虚拟仿真系统,该系统能在单台计算机上虚拟仿真完整的共有区块链实验与应用环境,包括应用接口模块、区块链仿真模块及网络与数据模块;所述应用接口模块,包括P2P网络接口和区块应用接口,用于初始化区块链网络、驱动并控制区块链虚拟仿真过程,并在计算机上仿真为一个功能模块;区块链仿真模块,包括P2P网络和Block模块,用于仿真区块链的交易过程,区块验证与维护及PoW共识;网络与数据模块,用于仿真区块链的网络通信与数据存储。本发明提供的系统能够在一台计算机上仿真大规模的公有区块链应用环境,既能用于区块链领域科学技术研究的仿真实验,又能用于区块链行业的应用仿真,降低区块链研究与开发的成本。
Description
技术领域
本发明涉及计算机、网络与仿真技术领域,尤其涉及一种区块链虚拟仿真系统。
背景技术
区块链是一种分布式账本,也是一种新型应用模式;区块链技术覆盖了分布式存储、网络、信息安全、数据容错等计算机技术;区块链应用具有去中心、开放、自治等特点,可划分为公有区块链、联合区块链和私有区块链。一般而言,公有区块链的任何节点都能够参与交易和共识过程。当前区块链典型应用还较少,区块链技术研究(例如共识算法、智能合约以及安全与隐私等)吸引了众多学者的研究热情。
区块链技术研究需要搭建实验环境,主要有两种做法。第一种是以小型虚拟币为主,利用开源的虚拟币工程项目搭建一个或多个封闭的实验环境。在这些实验环境中研究开发共识算法、智能合约、信息安全等。这种做法通常需要更多的物理设备,例如多台计算机,需要部署专用的物理网络等,而且规模有限,难以形成大规模的区块链应用环境。
第二种是利用现有的区块链平台,例如以太坊(Ethereum)、超级账本(Hyperledger)等搭建实验与开发环境。这2个平台主要面向行业应用,构建各行业的区块链应用案例;只能使用以太坊本身的智能合约创建业务应用,但不能研究开发新的智能合约。因此区块链各类算法等基础构件研究的空间是非常有限的。
本发明面向区块链技术研究开发的需要,提供一种公有区块链虚拟仿真方法及系统,解决上述存在的问题。
发明内容
为解决上述技术问题,本发明的目的是提供一种区块链虚拟仿真系统。
本发明的目的通过以下的技术方案来实现:
一种区块链虚拟仿真系统,该系统能在单台计算机上虚拟仿真完整的共有区块链实验与应用环境,包括应用接口模块、区块链仿真模块及网络与数据模块;所述
应用接口模块,包括P2P网络接口和区块应用接口,用于初始化区块链网络、驱动并控制区块链虚拟仿真过程,并在计算机上仿真为一个功能模块;
区块链仿真模块,包括P2P网络和Block模块,用于仿真区块链的交易过程,区块验证与维护及PoW共识;
网络与数据模块,用于仿真区块链的网络通信与数据存储。
与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
能够在单台计算机上虚拟仿真大规模的公有区块链应用环境,不需要额外的物理设备,能够降低区块链研究开发的成本;所述方法与系统具备模块化,可以根据研究开发需要更换其中的构件,例如将PoW更换成股权证明(PoS)、添加智能合约等,实验研究范围覆盖区块链各个环节,不受现有区块链平台的制约。
既能用于区块链领域科学技术研究的仿真实验,又能用于区块链行业的应用仿真,降低区块链研究与开发的成本。
附图说明
图1是区块链虚拟仿真系统结构图;
图2是启动区块链虚拟仿真后整个系统的快照示意图;
图3是Chord工作线程和Block Chain工作线程构成图;
图4是区块链网络初始化流程图;
图5是节点加入网络流程图;
图6是交易过程流程图;
图7是区块维护流程图;
图8是区块同步示意图;
图9是应用接口模块的实施示例图;
图10是区块链仿真模块的实施示例图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合实施例及附图对本发明作进一步详细的描述。
如图1所示,是区块链虚拟仿真系统结构,所述系统能在单台计算机上虚拟仿真完整的共有区块链实验与应用环境,包括应用接口模块、区块链仿真模块及网络与数据模块;所述
应用接口模块,包括P2P网络接口和区块应用接口,用于初始化区块链网络、驱动并控制区块链虚拟仿真过程,并在计算机上仿真为一个功能模块;P2P网络接口子模块用于实现P2P网络的接口调用,调用区块链仿真模块的功能接口;区块应用接口子模块用于实现区块链的应用层,调用区块链仿真模块与区块相关的功能接口。在所述仿真方法与系统中,应用接口模块是唯一的,仅存在一个实体,在单台计算机上虚拟仿真为一个功能模块。
区块链仿真模块,包括P2P网络和Block模块,用于仿真区块链的交易过程,区块验证与维护及PoW共识;实现一个计算节点的区块链仿真模块。一个区块链应用存在数量巨大的计算节点,每个计算节点实现1个图1所示的区块链仿真模块。在所述仿真方法与系统中,存在多少个计算节点,就产生多少个区块链仿真模块实体,1个计算节点在单台计算机上虚拟仿真为1个对象。
网络与数据模块,用于仿真区块链的网络通信与数据存储,包括区块链数据存储和基础数据存储。在所述仿真方法与系统,每个计算节点有独立的网络与数据模块实体,在单台计算机上虚拟仿真为计算节点对象的成员。
应用接口模块、区块链仿真模块、网络与数据模块之间的关系见图2所示。在所述仿真方法与系统中,应用接口模块仅存在一个实体,通过图1所示的Chord API检索到指定的计算节点,并获得图1所示的Block Chain API,从而对该节点发出操作指令,例如初始化、节点加入、节点退出等。区块链仿真模块、网络与数据模块存在于每个计算节点,见图2所示。
所述应用接口模块,包含P2P网络接口子模块。P2P网络接口子模块提供“初始化”、“节点加入”、“节点退出”、“网络维护”和“节点检索”部件。启动区块链仿真时,“初始化”部件用于建立初始化节点、初始化P2P网络等;“节点加入”部件用于向P2P网络新增计算节点;“节点退出”部件用于仿真计算节点正常退出以及崩溃等现象;“网络维护”部件用于实现P2P网络的维护与管理;“节点检索”部件用于检索区块链仿真模块中的计算节点。
所述应用接口模块,还包含区块应用接口子模块。区块应用接口子模块提供“初始化”、“区块校验”、“发布交易”、“区块统计”和“挖矿设置”部件。启动区块链仿真时,“初始化”部件用于创建创世区块等;“发布交易”部件调用指定计算节点,向P2P网络发布交易区块;“挖矿设置”部件用于设置指定计算节点的挖矿行为(例如关闭挖矿,则该节点不参与挖矿,但可以参与共识过程);“区块校验”部件用于校验指定计算节点的区块链完整性和合法性;“区块统计”部件用于统计网络内的统计量,例如有效区块数量、网络流量、节点资源消耗等。
图1列出了P2P网络接口子模块和区块应用接口子模块的构成部分,但不限于图1所述的构成部分。
所述区块链仿真模块,包含一个P2P网络。每个计算节点的P2P网络层采用Chord协议与其他计算节点构成1个环状网,见图2所示。每个计算节点的P2P网络层提供“ChordAPI”部件供应用接口模块调用;“数据区”部件用于存储计算节点的前驱、后继节点数据以及Finger table等;“Chord工作线程”部件主要包含4个线程,分别用于维护后续节点、维护Finger table数据、检查前驱节点的存活性、发布并接收区块链数据,见图3所示。
所述区块链仿真模块,还包含一个Block子模块。每个计算节点的Block层提供“Block Chain API”、“区块存取”、“Block Chain工作线程”、“基础算法”部件,见图1所示。“Block Chain API”部件供应用接口模块调用;“区块存取”部件供计算节点存取各自的区块链数据;“基础算法”部件提供基础函数与算法,包括Hash计算、密码算法、数字签名、时间戳等;“Block Chain工作线程”主要包含“区块确权线程”、“广播线程”、“区块维护线程”、“挖矿线程”、“PoW共识线程”,见图3所示。
广播线程,用于向Finger table指向的计算节点广播新交易区块、待确认区块(是指某节点成功挖矿后,等待其他节点确认并达成共识的区块)、已确认区块(某节点完成待确认区块的PoW共识确认后发送的区块)。
区块维护线程,用于计算节点维护各自的区块链数据,包括区块分叉维护和区块同步。当计算节点新增或重新加入到区块链网络时,区块维护线程实现计算节点与网络中最新区块链数据的同步;当计算节点的区块链出现分叉现象时,区块维护线程负责消除区块分叉现象。
PoW共识线程,用于待确认区块达成共识,当计算节点收到其他节点广播的待确认区块时,对该区块进行共识确认,并回复确认结果;也用于区块同步时的区块共识确认,将经过共识确认的区块,加入到自己的区块链中。
挖矿线程,用于计算下一个有效区块,争夺区块记账权。当计算节点收到其他节点广播的新交易时,启动挖矿线程,计算下一个有效区块。
区块确权线程,用于计算节点确认自己的记账权。当计算节点收到来自其他节点的共识确认,共识确认超过一定数量时,计算节点获得区块记账权,并将新区块加入到区块链中。
本实施例提供的区块链虚拟仿真系统能够实现的区块链操作包括区块链网络初始化、节点加入网络、交易、区块维护,但不仅限于此。
算法1:
区块链网络初始化算法
简述:启动区块链仿真,初始化P2P网络,创建创世区块,见图4所示。
输入:无
输出:无
步骤:
A1:应用接口模块新增一定数量的计算节点,构建1个P2P网络,Chord工作线程构建各自计算节点的数据区,包括Finger table、前驱后续节点信息;
A2:应用接口模块初始化每个计算节点的Block,准备区块链数据和基础数据的存储空间;
A3:应用接口模块创建1个有效区块,作为创世区块,并添加到区块链网络中任意1个计算节点;
A4:计算节点的各个工作线程开始工作,区块维护线程实现网络中各计算节点同步添加新增的创世区块。
A5:区块链网络趋于稳定,算法结束。
算法2:节点加入网络算法
简述:计算节点新增到,或者重新加入到区块链网络,同步区块链数据,见图5所示。
输入:1个计算节点
输出:无
步骤:
B1:新增或重入网络的计算节点按Chord协议更新自己的前驱后续节点信息以及Finger table,所有计算节点的工作线程维护P2P网络趋于稳定;
B2:新增或重入网络的计算节点的Block Chain工作线程开始工作,其中区块维护线程向Finger table所指节点各获取1个区块;
B3:如果获取的区块已经存在于自己的区块链中,则忽略,并转到B6;
B4:如果不存在,且获取的区块是创世区块,则直接加入到自己的区块链中,并转到B6(假如创世区块是伪造的,后面的区块无法通过PoW共识确认);
B5:如果不是创世区块,则请求PoW共识线程进行确认,将得到确认的区块加入到自己的区块链中,否则忽略;然后转到B6;该步骤添加的区块可能会引起区块分叉,在算法4中消除分叉;
B6:再次向Finger table所指节点各获取1个区块,如果有区块,则转到B3,否则转到B7;
B7:算法结束。
算法3:交易算法
简述:从发布新交易到最终记账确权的过程,即新增一个有效区块的过程,见图6所示。
输入:发布交易的计算节点A
输出:无
步骤:
C1:应用接口模块通过“节点检索”定位即将发布交易的计算节点A,调用该节点的Block Chain API发布1个新交易区块;
C2:计算节点A通过“广播线程”向Finger table所指节点广播新交易区块;
C3:接收到新交易区块广播的计算节点,如果是第一次收到该新交易区块,则向自己Fingle table所指节点做下一跳广播,否则不转发;
C4:接收到新交易区块广播的计算节点,如果自身的“挖矿设置”是开启,则启动挖矿线程,争夺区块记账权,否则忽略;
C5:经过步骤C3和C4多次循环后,新交易区块完成全网广播,整个区块链网络存在多个计算节点参与挖矿;
C6:如果计算节点B挖矿成功,则通过自己的“广播线程”向自身Fingertable所指节点广播待确认区块;
C7:接收到待确认区块广播的计算节点,如果是第一次收到该区块,则向自身Finger table所指节点做下一跳广播,如果是重复收到,则不再转发;
C8:接收到待确认区块广播的计算节点,启动PoW共识线程对该待确认区块进行PoW共识确认;
C9:如果PoW共识确认成功,且自身同时也在对同一个新交易区块进行挖矿,则停止挖矿行为;
C10:如果PoW共识确认成功,则向自身Finger table所指节点广播已确认区块,该区块的目的地址是计算节点B,同时将已确认区块添加到自己的区块链中;
C11:接收到已确认区块的计算节点,如果不是计算节点B,经自己PoW共识线程确认后仅做一次广播转发,同时将该区块加到自己的区块链中;
C12:如果计算节点B收到已确认区块,区块确权线程累计次数,当超过半数节点数量时,计算节点B获得记账权,将该区块追加到自己的区块链。
C13:算法结束。
算法4:区块维护算法
简述:计算节点的区块维护线程,解决区块分叉问题,实现区块同步,见图7所示。
输入:计算节点A
输出:无
步骤:
D1:计算节点A的区块维护工作定期启动运行;
D2:如果计算节点A的区块链存在分叉现象,并且两两分叉之间区块数量之差超过一定阀值,则保留最长的分叉,裁剪掉其余的分叉;
D3:遍历计算节点A的Finger table所指向的每个计算节点X逐一执行下述步骤,遍历完毕后转到D8;
D4:如果计算节点X的区块链存在分叉,则转到D3;
D5:对比2个计算节点的区块链,各自找到时间戳最新的区块,使得这2个区块的时间戳相同,见图8所示,t1、t2分别表示2个区块的时间戳,满足条件t1=t2;
D6:如果计算节点X的t2区块还有后续区块,则将后续区块同步到计算节点A;计算节点A对每个同步来的区块进行PoW共识确认后,追加到自己的区块链中,转到D3;该步骤追加区块可能会加剧分叉的程度,在下一次维护工作中消除分叉;
D7:如果计算节点X的t2区块没有后续区块,转到D3;
D8:算法结束。
OMNeT++是一个多协议网络仿真工具,本发明以OMNeT++为工具实施区块链虚拟仿真。上述系统在单台计算机OMNeT++工具上虚拟仿真完整的共有区块链实验与应用环境。
在OMNeT++环境中用1个应用层模块实施本发明的应用接口模块,包括P2P网络接口子模块和区块应用接口子模块,见图9所示。2个子模块的各个功能部件用OMNeT++的类文件进行封装;应用接口模块与区块链仿真模块间的通信数据用OMNeT++的消息进行封装。
用两个OMNeT++的module封装区块链仿真模块的P2P网络和Block,见图10的“P2P网络”和“Block”。同样地,用OMNeT++的类文件封装每个子模块的数据与算法,详见本发明内容所述。最后在OMNeT++中用1个module封装上述的“P2P网络”和“Block”。
用OMNeT++的定时消息实施所有的工作线程,各个计算节点的定时时间服从均匀分布。
利用OMNeT++的开源组件INET Framework仿真计算节点间的TCP/IP通信,用内存仿真区块链和基础数据的存储。
仿真系统采用标准的区块格式,并将区块封装为OMNeT++的消息类型。
启动虚拟仿真时,P2P网络初始建立20个节点,创建1个创世区块。
每个计算节点的网络数据通道存在延时,各个计算节点的延时时间服从截断正态分布。
仿真系统中的计算节点允许发生故障,各个计算节点的平均故障间隔时间服从指数分布。故障的实施方式是关闭指定计算节点的所有工作线程,故障恢复的实施方式是重新打开指定计算节点的所有工作线程。
仿真系统采用SHA1作为安全散列函数,降低挖矿难度,新区块产生的速度控制在2个/分钟左右。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (11)
1.一种区块链虚拟仿真系统,其特征在于,所述系统能在单台计算机上虚拟仿真完整的共有区块链实验与应用环境,包括应用接口模块、区块链仿真模块及网络与数据模块;所述
应用接口模块,包括P2P网络接口和区块应用接口,用于初始化区块链网络、驱动并控制区块链虚拟仿真过程,并在计算机上仿真为一个功能模块;
区块链仿真模块,包括P2P网络和Block模块,用于仿真区块链的交易过程,区块验证与维护及PoW共识;
网络与数据模块,用于仿真区块链的网络通信与数据存储。
2.如权利要求1所述的区块链虚拟仿真系统,其特征在于,所述应用接口模块提供一个区块链网络初始化算法,用于初始化P2P网络,创建创世区块;
所述一个区块链包括多个计算节点,每个计算节点实现一个区块链仿真模块。
3.如权利要求1所述的区块链虚拟仿真系统,其特征在于,所述区块链仿真模块、网络与数据模块在单台计算机上仿真为一个对象。
4.如权利要求1所述的区块链虚拟仿真系统,其特征在于,
每个计算节点的P2P网络采用Chord协议与其他计算节点构成一个环状网,且通过内置的区块链数据收发线程为区块链仿真提供网络数据通道;
所述Block模块包含Block Chain API、区块存取、Block Chain工作线程及基础算法;所述Block Chain API,用于与应用接口模块交换数据与指令;区块存取,用于访问虚拟的区块链数据;Block Chain工作线程,用于仿真区块的交易、维护、PoW共识、挖矿、确权以及网络数据交换;基础算法,用于提供Hash计算、密码算法、数字签名、时间戳计算功能。
5.如权利要求4所述的区块链虚拟仿真系统,其特征在于,所述BlockChain工作线程包含计算节点加入区块链网络的算法、区块链网络交易算法及计算节点区块维护算法;
所述计算节点加入区块链网络的算法,用于实现计算节点新增、重入区块链网络的过程;
所述区块链网络交易算法,用于实现区块链的新交易、挖矿、PoW确认、区块确权以及区块链更新的过程;
计算节点区块维护算法,用于解决区块分叉问题、实现计算节点间区块同步的过程。
6.如权利要求2所述的区块链虚拟仿真系统,其特征在于,区块链网络初始化算法包括:
A1应用接口模块增加数量计算节点,构建一个P2P网络,Chord工作线程构建各自计算节点的数据区,包括Finger table、前驱后续节点信息;
A2通过应用接口模块创建一个有效区块,作为创世区块,并添加到区块链网络中任意一个计算节点;
A3计算节点的各个工作线程开始工作,区块维护线程实现网络中各计算节点同步添加新增的创世区块;
A4在区块链网络稳定时,算法结束。
7.如权利要求5所述的区块链虚拟仿真系统,其特征在于,所述节点加入区块链网络的算法包括:
B1新增或重入网络的计算节点按Chord协议更新自己的前驱后续节点信息以及Fingertable;
B2新增或重入网络的计算节点的Block Chain工作线程开始工作,其中区块维护线程向Finger table所指节点各获取一个区块;
B3如果获取的区块已经存在于自己的区块链中,则忽略,并转到B6;
B4如果获取的区块不存在于自己的区块链中,且获取的区块是创世区块,则直接加入到自己的区块链中,并执行步骤B6;
B5如果不是创世区块,则请求PoW共识线程进行确认,将得到确认后的区块加入到自己的区块链中,否则忽略;然后执行步骤B6;
B6再次向Finger table所指节点各获取一个区块,如果存在区块,则执行步骤B3,否则执行步骤B7;
B7算法结束。
8.如权利要求5所述的区块链虚拟仿真系统,其特征在于,所述区块链网络交易算法包括:
C1应用接口模块通过″节点检索″定位即将发布交易的计算节点A,调用该节点的BlockChain API发布一个新交易区块;
C2计算节点A通过″广播线程″向Finger table所指节点广播新交易区块;
C3接收到新交易区块广播的计算节点,如果是第一次收到该新交易区块,则向自己Fingle table所指节点做下一跳广播,否则不转发;
C4接收到新交易区块广播的计算节点,如果自身的″挖矿设置″是开启,则启动挖矿线程,争夺区块记账权,否则忽略;
C5重复执行步骤C3和C4,直至新交易区块完成全网广播,整个区块链网络存在多个计算节点参与挖矿;
C6计算节点B挖矿,如果计算节点B挖矿成功,则通过自己的″广播线程″向自身Fingertable所指节点广播待确认区块;
C7接收到待确认区块广播的计算节点,如果是第一次收到该区块,则向自身Fingertable所指节点做下一跳广播,如果是重复收到,则不再转发;
C8接收到待确认区块广播的计算节点,启动PoW共识线程对该待确认区块进行PoW共识确认;
C9如果PoW共识确认成功,且自身同时也在对同一个新交易区块进行挖矿,则停止挖矿行为;
C10如果PoW共识确认成功,则向自身Finger table所指节点广播已确认区块,该区块的目的地址是计算节点B,同时将已确认区块添加到自己的区块链中;
C11接收到已确认区块的计算节点,如果不是计算节点B,经自己PoW共识线程确认后仅做一次广播转发,同时将该区块加到自己的区块链中;
C12如果计算节点B收到已确认区块,区块确权线程累计次数,当超过半数节点数量时,计算节点B获得记账权,将该区块追加到自己的区块链;
C13算法结束。
9.如权利要求5所述的区块链虚拟仿真系统,其特征在于,所述区块维护算法包括:
D1计算节点A的区块维护工作定期启动运行;
D2如果计算节点A的区块链存在分叉现象,并且两两分叉之间区块数量之差超过一定阀值,则保留最长的分叉,裁剪掉其余的分叉;
D3遍历计算节点A的Finger table所指向的每个计算节点X逐一执行下述步骤,遍历完毕后执行步骤D8;
D4如果计算节点X的区块链存在分叉,则执行步骤D3;
D5对比两个计算节点的区块链,各自找到时间戳最新的区块,使得这两个区块的时间戳相同,即两个区块的时间戳t1=t2;
D6如果计算节点X的t2区块还有后续区块,则将后续区块同步到计算节点A;计算节点A对每个同步来的区块进行PoW共识确认后,追加到自己的区块链中,则执行步骤D3;
D7如果计算节点X的t2区块没有后续区块,则执行步骤D3;
D8算法结束。
10.如权利要求1所述的区块链虚拟仿真系统,其特征在于,所述系统在单台计算机OMNeT++工具上虚拟仿真完整的共有区块链实验与应用环境。
11.如权利要求10所述的区块链虚拟仿真系统,其特征在于,
用OMNeT++的定时消息仿真所有的工作线程;
用关闭计算节点的所有工作线程的方式仿真计算节点故障;
故障恢复的仿真方式是重新打开计算节点的所有工作线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811256027.1A CN109460593B (zh) | 2018-10-26 | 2018-10-26 | 一种区块链虚拟仿真系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811256027.1A CN109460593B (zh) | 2018-10-26 | 2018-10-26 | 一种区块链虚拟仿真系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109460593A true CN109460593A (zh) | 2019-03-12 |
CN109460593B CN109460593B (zh) | 2023-04-07 |
Family
ID=65608438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811256027.1A Active CN109460593B (zh) | 2018-10-26 | 2018-10-26 | 一种区块链虚拟仿真系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109460593B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110322350A (zh) * | 2019-06-25 | 2019-10-11 | 北京众享比特科技有限公司 | 裁剪共识网络中空区块的方法、装置、设备和存储介质 |
CN110377323A (zh) * | 2019-06-19 | 2019-10-25 | 广东科学技术职业学院 | 一种区块链dapp管理系统 |
CN110474967A (zh) * | 2019-07-23 | 2019-11-19 | 深圳市芯链科技有限公司 | 块链实验系统及方法 |
CN110798535A (zh) * | 2019-11-12 | 2020-02-14 | 金蝶软件(中国)有限公司 | 区块链中实现p2p通信方法、区块链应用系统及相关设备 |
CN111639409A (zh) * | 2020-05-29 | 2020-09-08 | 深圳观点互动网络科技有限公司 | 一种区块链仿真模拟系统 |
CN112256798A (zh) * | 2020-11-03 | 2021-01-22 | 公安部第三研究所 | 基于空间坐标引入实现去中心化区块链数据结构避免产生数据分叉的区块链系统及其方法 |
CN112527647A (zh) * | 2020-12-15 | 2021-03-19 | 浙江大学 | 基于NS-3的Raft共识算法测试系统 |
CN114338711A (zh) * | 2021-12-27 | 2022-04-12 | 上海蜂哈网络科技有限公司 | 基于分布式网络的快速共识方法、系统、电子设备及可读存储介质 |
CN114708773A (zh) * | 2021-10-11 | 2022-07-05 | 深圳市海凌科电子有限公司 | 一种区块链教学系统 |
CN115225529A (zh) * | 2022-06-13 | 2022-10-21 | 广州大学 | 一种支持多类别区块链系统的高仿真平台 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018059334A1 (zh) * | 2016-09-29 | 2018-04-05 | 腾讯科技(深圳)有限公司 | 区块链网络、分支节点、区块链网络应用方法及存储介质 |
CN108023893A (zh) * | 2017-12-18 | 2018-05-11 | 王松山 | 一种区块链数据认证系统的方法 |
CN108170590A (zh) * | 2017-12-12 | 2018-06-15 | 北京大学深圳研究生院 | 一种区块链系统的测试系统和方法 |
CN108230109A (zh) * | 2018-01-02 | 2018-06-29 | 罗梅琴 | 一种基于区块链技术的共享系统及方法 |
-
2018
- 2018-10-26 CN CN201811256027.1A patent/CN109460593B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018059334A1 (zh) * | 2016-09-29 | 2018-04-05 | 腾讯科技(深圳)有限公司 | 区块链网络、分支节点、区块链网络应用方法及存储介质 |
CN108170590A (zh) * | 2017-12-12 | 2018-06-15 | 北京大学深圳研究生院 | 一种区块链系统的测试系统和方法 |
CN108023893A (zh) * | 2017-12-18 | 2018-05-11 | 王松山 | 一种区块链数据认证系统的方法 |
CN108230109A (zh) * | 2018-01-02 | 2018-06-29 | 罗梅琴 | 一种基于区块链技术的共享系统及方法 |
Non-Patent Citations (1)
Title |
---|
房卫东等: "区块链的网络安全:威胁与对策", 《信息安全学报》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110377323A (zh) * | 2019-06-19 | 2019-10-25 | 广东科学技术职业学院 | 一种区块链dapp管理系统 |
CN110377323B (zh) * | 2019-06-19 | 2023-09-29 | 广东科学技术职业学院 | 一种区块链dapp管理系统 |
CN110322350B (zh) * | 2019-06-25 | 2020-03-27 | 北京众享比特科技有限公司 | 裁剪共识网络中空区块的方法、装置、设备和存储介质 |
CN110322350A (zh) * | 2019-06-25 | 2019-10-11 | 北京众享比特科技有限公司 | 裁剪共识网络中空区块的方法、装置、设备和存储介质 |
CN110474967B (zh) * | 2019-07-23 | 2022-02-22 | 深圳市芯链科技有限公司 | 块链实验系统及方法 |
CN110474967A (zh) * | 2019-07-23 | 2019-11-19 | 深圳市芯链科技有限公司 | 块链实验系统及方法 |
CN110798535A (zh) * | 2019-11-12 | 2020-02-14 | 金蝶软件(中国)有限公司 | 区块链中实现p2p通信方法、区块链应用系统及相关设备 |
CN111639409A (zh) * | 2020-05-29 | 2020-09-08 | 深圳观点互动网络科技有限公司 | 一种区块链仿真模拟系统 |
CN112256798A (zh) * | 2020-11-03 | 2021-01-22 | 公安部第三研究所 | 基于空间坐标引入实现去中心化区块链数据结构避免产生数据分叉的区块链系统及其方法 |
CN112527647A (zh) * | 2020-12-15 | 2021-03-19 | 浙江大学 | 基于NS-3的Raft共识算法测试系统 |
CN112527647B (zh) * | 2020-12-15 | 2022-06-14 | 浙江大学 | 基于NS-3的Raft共识算法测试系统 |
CN114708773A (zh) * | 2021-10-11 | 2022-07-05 | 深圳市海凌科电子有限公司 | 一种区块链教学系统 |
CN114338711A (zh) * | 2021-12-27 | 2022-04-12 | 上海蜂哈网络科技有限公司 | 基于分布式网络的快速共识方法、系统、电子设备及可读存储介质 |
CN114338711B (zh) * | 2021-12-27 | 2024-03-26 | 上海简苏网络科技有限公司 | 基于分布式网络的快速共识方法、系统、电子设备及可读存储介质 |
CN115225529A (zh) * | 2022-06-13 | 2022-10-21 | 广州大学 | 一种支持多类别区块链系统的高仿真平台 |
CN115225529B (zh) * | 2022-06-13 | 2024-03-01 | 广州大学 | 一种支持多类别区块链系统的高仿真平台 |
Also Published As
Publication number | Publication date |
---|---|
CN109460593B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109460593A (zh) | 一种区块链虚拟仿真系统 | |
Yu et al. | Virtualization for distributed ledger technology (vDLT) | |
Pustišek et al. | Approaches to front-end IoT application development for the ethereum blockchain | |
CN110868439B (zh) | 一种区块链系统 | |
CN109218079B (zh) | 一种区块链网络、部署方法及存储介质 | |
CN109325854B (zh) | 区块链网络、部署方法及存储介质 | |
CN111598566A (zh) | 基于混合跨链的网络支付系统 | |
Gramoli | On the danger of private blockchains | |
Wang et al. | Performance benchmarking and optimization for blockchain systems: A survey | |
CN110213304A (zh) | 一种区块链网络互联方法与系统 | |
CN102622262B (zh) | 基于modelica建模语言的分布式实时交互仿真系统 | |
CN107948309A (zh) | 一种基于Restful API的服务器资源的集成管理方法和系统 | |
Kobzan et al. | Utilizing blockchain technology in industrial manufacturing with the help of network simulation | |
CN110599175A (zh) | 一种区块处理方法及相关设备 | |
CN103077068B (zh) | 一种基于共享内存的高性能仿真系统实现方法 | |
CN108833610A (zh) | 一种信息更新方法、装置及系统 | |
JP2022553963A (ja) | 同期処理方法及び関連装置 | |
WO2020042929A1 (zh) | 一种区块链系统 | |
CN105488288A (zh) | 一种ns3并行模拟仿真系统 | |
Wang et al. | Chainsim: A p2p blockchain simulation framework | |
Syriani et al. | Modelling and simulation-based design of a distributed devs simulator | |
CN115244526A (zh) | 用于去中心化事务通信协议的方法和系统 | |
Zakariae | A lightweight blockchain framework for IoT integration in smart cities | |
CN102664404B (zh) | 基于网格中间件的异步迭代潮流计算系统 | |
Matos et al. | Distributed Applications and Interoperable Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |