CN108011741B - 用于模拟和测试分布式网络的区块链的方法和*** - Google Patents
用于模拟和测试分布式网络的区块链的方法和*** Download PDFInfo
- Publication number
- CN108011741B CN108011741B CN201610971458.0A CN201610971458A CN108011741B CN 108011741 B CN108011741 B CN 108011741B CN 201610971458 A CN201610971458 A CN 201610971458A CN 108011741 B CN108011741 B CN 108011741B
- Authority
- CN
- China
- Prior art keywords
- node
- distributed network
- index
- random number
- threshold
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0817—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Debugging And Monitoring (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提出了用于模拟和测试分布式网络的区块链的方法和***。根据本公开的用于模拟和测试分布式网络的区块链的方法包括:第一步骤,确定分布式网络中的每个节点是否是矿工节点;第二步骤,确定分布式网络中的每个节点是否是交易节点;第三步骤,基于第一步骤和第二步骤的确定结果以及分布式网络中的每个节点的参数,生成用于描述区块链的性能的指标。
Description
技术领域
这里讨论的实施例涉及用于模拟和测试分布式网络的区块链的方法和***。
背景技术
区块链技术起源于比特币。区块链可被视为一种以去中心化方式进行操作的分布式数据库。区块链技术通过使用数据加密、时间戳、分布式共识和经济激励等手段,在分布式***中的交易节点无需互相信任的情况下,实现基于去中心化的点对点交易、协调与协作,从而解决中心化机构普遍存在的高成本、低效率和数据存储不安全等问题。
随着近年来比特币的发展和普及,区块链作为一种新形式的具有普适性的分布式底层架构,可以应用于金融、经济、科技甚至政治等各个领域。
发明内容
在下文中将给出关于本公开的简要概述,以便提供关于本公开的某些方面的基本理解。应当理解,这个概述并不是关于本公开的穷举性概述。它并不是意图确定本公开的关键或重要部分,也不是意图限定本公开的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
目前,不存在用于模拟和测试分布式网络的区块链的有效手段。为了解决这一问题,本公开提出了如下方法和***,其能够模拟基于分布式网络构造区块链的过程,并且基于构成分布式网络的每个节点的参数,生成用于描述区块链的性能的指标,从而对区块链进行测试。
根据本公开的一个方面,提供了一种用于模拟和测试分布式网络的区块链的方法,其包括:第一步骤,确定分布式网络中的每个节点是否是矿工节点;第二步骤,确定分布式网络中的每个节点是否是交易节点;第三步骤,基于第一步骤和第二步骤的确定结果以及分布式网络中的每个节点的参数,生成用于描述区块链的性能的指标。
根据本公开的另一方面,提供了一种用于模拟和测试分布式网络的区块链的***,其包括:第一确定单元,确定分布式网络中的每个节点是否是矿工节点;第二确定单元,确定分布式网络中的每个节点是否是交易节点;生成单元,基于第一确定单元和第二确定单元的确定结果以及分布式网络中的每个节点的参数,生成用于描述区块链的性能的指标。
附图说明
参照下面结合附图对本公开实施例的说明,会更加容易地理解本公开的以上和其它目的、特点和优点。附图中的部件不是成比例绘制的,而只是为了示出本公开的原理。在附图中,相同的或类似的技术特征或部件将采用相同或类似的附图标记来表示。
图1是示出了根据本公开的一个实施例的分布式网络和相关联的区块链的示意图;
图2是示出了根据本公开的实施例的用于模拟和测试分布式网络的方法的流程图;
图3是示出了根据本公开的一个实施例的用于确定分布式网络中的每个节点是否是矿工节点的方法的流程图;
图4是示出了根据本公开的一个实施例的用于确定分布式网络中的每个节点是否是交易节点的方法的流程图;
图5是示出了根据本公开的实施例的生成区块链的新的区块的挖矿过程的示意图;
图6是示出了根据本公开的实施例的新生成的区块在分布式网络中传播的示意图;
图7是示出了对区块链的支链进行剪枝的示意图;
图8是示出了基于区块链执行智能合约的过程的示意图;以及
图9是示出了根据本公开的一个实施例的用于模拟和测试分布式网络的区块链的***的框图。
具体实施方式
在下文中将结合附图对本公开的示例性实施例进行描述。为了清楚和简明起见,在说明书中并未描述实际实施方式的所有特征。然而,应该了解,在开发任何这种实际实施方式的过程中可以做出很多特定于实施方式的决定,以便实现开发人员的具体目标,并且这些决定可能会随着实施方式的不同而有所改变。
在此,还需要说明的一点是,为了避免因不必要的细节而模糊了本公开,在附图中仅仅示出了与根据本公开的方案密切相关的部件,而省略了与本公开关系不大的其他细节。
应当注意,这里以区块链技术在比特币方面的应用为背景描述了根据本公开的用于模拟和测试分布式网络的方法和***,然而本公开不限于区块链在比特币方面的应用。在不偏离本公开的范围的情况下,本领域技术人员根据本公开的教导,可以将这里公开的方法和***应用于其他领域。
区块链是基于点对点(peer to peer)的分布式网络而构建的。以比特币应用为例,分布式网络中的节点共同参与被称为工作量证明(Proof of work,PoW)的共识过程以完成比特币交易的验证与记录。PoW共识过程通常被称为挖矿过程。事实上,挖矿过程是分布式网络中的矿工节点通过利用其自身的计算资源解决一个数学问题找到新的区块的过程。该数学问题通常是哈希计算。首先解决该数学问题的矿工节点将获得新生成的区块的记账权,将当前时间段的所有比特币交易记录在区块链中,并且将新生成的区块链接到区块链中。同时,比特币***会发行一定数量的比特币作为对该矿工节点的奖励,这样也会激励其他矿工节点继续利用其自身的计算资源进行挖矿过程。因此,比特币在某种意义上可以被理解为反映了计算资源的成本代价。
此外,在挖矿过程中,矿工节点在生成新的区块时需要将新生成的区块向分布式网络的全部节点进行广播,在分布式网络中的全部节点接收到该新生成的区块并且对该新生成的区块达成共识之后,该新生成的区块方能被有效地链接到区块链上。
此外,对于比特币***,每次比特币交易经过分布式网络中的全体节点验证之后被记录在区块链中。区块链可以具有被称为智能合约的脚本代码。智能合约是可编程的,可用于实现比特币的流通。
图1是示出了根据本公开的一个实施例的分布式网络和相关联的区块链的示意图。图2是示出了根据本公开的实施例的用于模拟和测试分布式网络的方法200的流程图。
根据本公开的实施例,用于模拟和测试分布式网络的区块链的方法200开始于步骤S201。
随后,方法200前往第一步骤S202。在第一步骤S202中,确定分布式网络中的每个节点是否是矿工节点。
随后,方法200前往第二步骤S203。在第二步骤S203中,确定分布式网络中的每个节点是否是交易节点。
随后,方法200前往第三步骤S204。在第三步骤S204中,基于第一步骤S202和第二步骤S203的确定结果以及分布式网络中的每个节点的参数,生成用于描述所述区块链的性能的指标。
该方法200结束于步骤S205。
下面针对方法200的第一步骤S202、第二步骤S203和第三步骤S204分别进行详细描述。
第一步骤S202
如图1所示,分布式网络中的矿工节点执行挖矿过程以生成新的区块,用于收集和存储交易数据。作为对矿工节点执行挖矿过程的激励,不仅在生成新的区块时向矿工节点提供挖矿奖励,例如比特币,同时在利用新生成的区块完成交易时,交易所牵涉的节点也会向矿工节点支付交易费用。因此,分布式网络中的节点会将挖矿过程的成本代价与完成挖矿过程所带来的挖矿奖励和交易费用二者的收益进行比较来确定是否成为矿工节点。
根据本公开的一个实施例,为了模拟上述过程,在第一步骤S202中,在时间t针对分布式网络中的每个节点,根据挖矿奖励和交易费用来确定该节点是否是矿工节点。
如图1所示,分布式网络中的节点集合由非矿工节点集合和矿工节点集合构成,随着时间的消逝,矿工节点集合中的矿工节点有可能变换成非矿工节点,同时非矿工节点集合中的非矿工节点也有可能变换成矿工节点。
图3是示出了根据本公开的一个实施例的用于确定分布式网络中的每个节点是否是矿工节点的方法300的流程图。
方法300开始于步骤S301。在步骤S302中,确定当前时间t的挖矿奖励和交易费用。时间t的挖矿奖励可以由下式(1)表示:
其中Reward valuet表示在时间t的挖矿奖励,Reward value0表示初始挖矿奖励,Block numbert表示在时间t的区块数目,Base number是表示预先设定的基本区块数量的常数,并且k是大于1的常数。对于比特币应用,k取值为2。
这里有必要对常数Base number进行说明。为了模拟区块链,以比特币应用为例,为了保证比特币***的通缩性质,有必要使得随着区块链的长度的增加,即区块数目的增加,挖矿奖励将逐渐减小。因此,常数Base number的取值将影响挖矿奖励逐渐减小的速度。例如,假设Basenumber取值为1000,在区块链长度超过1000之后,挖矿奖励将成指数形式阶梯下降。
此外,假设时间t的交易费用占交易总额的比例,即交易费率在区间[0,0.1]中随机取值。在时间t的交易费用可由Feet表示。
随后,在步骤S303中,根据时间t的挖矿奖励和交易费用根据下式(2)确定在时间t的第一阈值αt和第二阈值βt。
βt=1-αt
如图1中所示,第一阈值αt可被视为反映在时间t非矿工节点变换成矿工节点的概率,而第二阈值βt可被视为反映在时间t矿工节点变换成非矿工节点的概率。
随后,方法300前往步骤S304。在步骤S304中,针对分布式网络中的每个节点生成区间[0,1]中的第一随机数bt和第二随机数ct。
随后,方法300前往步骤S305和S306。在步骤S305中,将第一随机数bt与第一阈值αt进行比较。如果在步骤S305中确定第一随机数bt小于或等于第一阈值αt,则在步骤S307中,在该节点是非矿工节点的情况下,将该节点变换为矿工节点。
此外,在步骤S306中,将第二随机数ct与第二阈值βt进行比较。如果在步骤S306中确定第二随机数ct小于或等于第二阈值βt,则在步骤S308中,在该节点是矿工节点的情况下,将该节点变换为非矿工节点。
方法300结束于步骤S309。
通过方法300,可以实时地模拟分布式网络中各个节点作为矿工节点和非矿工节点的网络状态。
第二步骤S203
为了模拟区块链,需要考虑分布式网络中的节点有可能进行交易。因此,需要确定分布式网络中的每个节点是否是交易节点。
图4是示出了根据本公开的一个实施例的用于确定分布式网络中的每个节点是否是交易节点的方法400的流程图。
方法400开始于步骤S401。在步骤S402中,设定用于进行模拟的时间段T和在该时间段内的平均交易数量tx_numavg。
考虑到分布式网络中的节点发起交易的过程是一个随机过程,因此假设对于每个节点,特定时间段内的交易数量符合泊松分布。
随后,方法400前往步骤S403。在步骤S403中,基于时间段T和在该时间段T内的平均交易数量tx_numavg根据泊松分布计算第三阈值θt。该计算可由下式(3)表示。
如图1所示,第三阈值θt可被视为在时间段T内的任一时间点t的分布式网络中的节点变换成交易节点的概率。
在步骤S404中,针对分布式网络中的每个节点根据轮盘赌的方式生成第三随机数dt。根据泊松分布的方差与均值相等的特性,以3倍方差设定第三随机数dt的取值范围如下式(4)表示。
随后,方法400前往步骤S405。在步骤S405中,将第三随机数dt与第三阈值θt进行比较。如果在步骤S405中确定第三随机数dt小于或等于第三阈值θt,则在步骤S406中,确定该节点为交易节点。
该方法400结束于步骤S407。
通过方法400,可以实时地模拟分布式网络中各个节点作为交易节点的网络状态。
第三步骤S204
通过第一步骤S202和第二步骤S203,模拟了区块链所基于的分布式网络。一方面,该分布式网络中的节点可以划分成矿工节点和非矿工节点,矿工节点执行挖矿过程并且生成新的区块,在将新生成的区块向分布式网络的全网进行广播并且取得分布式网络中的所有节点的共识之后,该新生成的区块被链接到区块链上。另一方面,该分布式网络中的节点(不论是矿工节点还是非矿工节点)可以进行交易,进行交易的交易节点需要将与交易相关的信息存储在区块链上以完成交易。
为了测试基于如上文所述构造的分布式网络的区块链,有必要根据某些指标评估区块链的性能。因此,在用于模拟和测试分布式网络的区块链的方法200的第三步骤S204中,基于第一步骤S202和第二步骤S203的确定结果,即分布式网络中的每个节点是否是矿工节点以及节点是否是交易节点,以及该节点的参数,生成用于描述区块链的性能的指标。
在对描述区块链的性能的指标进行说明之前,有必要对区块链的挖矿过程进行说明。
图5是示出了根据本公开的实施例的生成区块链的新的区块的挖矿过程的示意图。
分布式网络中的矿工节点的挖矿过程是通过解决一个数学问题(通常是哈希计算)找到新的区块的过程。首先对区块链的最后一个区块的块头(block header)进行哈希计算,如果所得到的哈希值小于给定的目标值,则生成一个新的区块并且将其链接到区块链中。
例如,目标值的取值如下式(5)所示。
其中Targett表示在时间t的目标值,并且Difficultyt表示在时间t的挖矿困难度,其是大于0的自然数。显然,目标值的大小和挖矿困难度成反比,挖矿困难度越大,目标值就越小,就越需要付出较大的计算代价以生成新的区块。
挖矿困难度取决于所有节点的哈希率和挖矿时间。例如,挖矿困难度的取值如下式(6)所示。
其中Mining time表示挖矿时间,Hash ratet表示在时间t的全网哈希率。全网哈希率是分布式网络中的所有节点的哈希率的总和,其可由下式(7)表示。
其中hash ratet,nodei表示分布式网络中的节点i在时间t的哈希率,i=1,2,3,…m,m是分布式网络中的节点数目。哈希率反映了节点的挖矿计算能力,挖矿计算能力越强,哈希率就越高。
如图5所示,每个区块包含报头和区块体两部分。报头可以封装有当前的版本号、前一区块的哈希值、Merkle根、时间戳、挖矿困难度、随机数(Nonce)等。区块体包括当前区块的交易数量以及经过验证的、区块创建过程中生成的所有交易记录。
如图5所示,在矿工节点执行的挖矿过程中,矿工节点利用其自身的计算资源基于报头中包含的前一区块的哈希值和随机数进行哈希计算,将通过计算得到的哈希值与目标值进行比较。如果计算的哈希值小于目标值,则生成新的区块。否则生成新的随机数,并且基于新的随机数继续进行哈希计算直至生成新的区块。
所生成的新的区块被广播给分布式网络中的全部节点。
图6是示出了根据本公开的实施例的新生成的区块在分布式网络中传播的示意图。
如图6所示,在矿工节点生成新的区块的情况下,受到挖矿奖励和交易费用的收益的激励,该矿工节点会向分布式网络的全网广播该新生成的区块,以保证该矿工节点是首个发现该区块的节点。
如图6所示,节点6在时间t通过挖矿过程找到新的区块并且将该新生成的区块向全网进行广播。如图6所示,节点6生成的新区块在时间t7,node6到达节点7,节点7对该区块进行验证并且继续向其他节点进行广播。此外,节点6生成的新区块在时间t5,node6到达节点5,节点5对该区块进行验证并且继续向其他节点进行广播。
新生成的区块在作为点对点网络的分布式网络中的传播需要耗用时间。所耗用的时间可被称为区块传播时间,其可以用矿工节点生成新的区块的时间与分布式网络中的其他节点最晚接收到该新生成的区块的时间之间的差来表示。
例如,区块传播时间可以由下式(8)表示。
Block spread time=max(ti,nodej-t) (8)
其中Block spread time表示区块传播时间,ti,nodej表示节点i接收到矿工节点j生成的区块的时间,t表示矿工节点j生成区块的时间,其中i,j=1,2,3,…m,m是分布式网络中的节点数目。
根据本公开的一个实施例,用于评估区块链的性能的指标可以包括第一指标、第二指标、第三指标和第四指标。
根据本公开的实施例,第一指标是用于指示共识延迟的指标,第二指标是用于指示分布式网络中的全体节点的公平性的指标,第三指标是用于指示剪除区块链的支链的时间的指标,以及第四指标是用于指示执行智能合约的准确性的指标。
下面对这些指标进行详细说明。
反映共识延迟的第一指标是反映从分布式网络中的矿工节点发现新的区块并且将该新的区块向全网进行广播以取得全网共识的时间相关指标。根据本公开的实施例,在分布式网络中的某一节点生成新的区块的情况下,确定从该节点生成新区块到分布式网络中的其他节点最晚接收到该新区块之间的时间,作为区块传播时间,并且根据所述挖矿时间和所述区块传播时间来确定共识延迟。
例如,可以将共识延迟确定为挖矿时间与区块传播时间的和。
用于指示分布式网络中的全体节点的公平性的第二指标用于反映分布式网络中的节点之间的交易公平性和挖矿公平性。如果分布式网络中的节点之间的挖矿计算能力差距过大,则有可能导致具有极大挖矿计算能力的节点生成过多的区块,导致对区块链进行篡改的可能性增加,因此有必要设定公平性指标以进行评估。
如上文所述,分布式网络中的节点的哈希率反映了该节点挖矿计算能力。因此,根据本公开的一个实施例,可以确定分布式网络中的具有最大哈希率的节点,以及确定该节点生成的所有区块中的交易数目的总和,并且根据该节点的最大哈希率、该节点生成的所有区块中的交易数目的总和以及全网哈希率来确定第二指标。
例如,假设在时间t节点k被确定为分布式网络中具有最大哈希率的节点。则第二指标可以由交易公平性比值Tx_ratiot和挖矿公平性比值Mine_ratiot表示。交易公平性比值Tx_ratiot和挖矿公平性比值Mine_ratiot可以根据下式(9)确定。
其中Tx_numt,nodek表示由在区块链中由节点k生成的所有区块中记录的交易数量,Tx_numt,blocki表示区块链中的所有区块中记录的交易数量。因此,Tx_ratiot反映了具有最大哈希率的节点k所完成的交易在区块链全部交易中所占的比例。
此外,hash ratet,nodek表示具有最大哈希率的节点k的哈希率,Hashratet表示全网哈希率。因此,Mine_ratiot反映了具有最大哈希率的节点k通过挖矿所找到的区块在区块链的全部区块中所占的比例。
如果分布式网络中的两个或更多个矿工节点同时生成新的区块,导致区块链可能出现支链。为了解决这一问题,后续生成新的区块的矿工节点总是将新生成的区块链接到累计挖矿工作量最大的区块链支链上,从而剪除其他支链。因而,在出现区块链支链时,需要耗用剪枝时间用于剪除区块链的支链。显然,在不存在区块链支链的情况下,剪枝时间等于零。
用于指示剪除区块链的支链的时间的第三指标是反映如上文所述的剪枝时间的时间相关指标。
图7是示出了对区块链的支链进行剪枝的示意图。
如图7所示,例如,假设分布式网络中的两个矿工节点通过挖矿过程同时生成新的区块Block 2和Block 2’并且都将新生成的区块连接到区块链上,导致区块链出现了支链。此后,分布式网络中的矿工节点继续进行挖矿过程以生成新的区块Block 3和Block 3’并且分别链接到区块Block 2和Block 2’。此时,可以对与区块链的支链Block 2’-Block 3’和Block 2-Block 3相关的挖矿工作量分别进行评估以确定具有最大工作量的支链,从而剪除其他支链。例如,该评估也可以基于生成Block 2、Block 2’、Block 3和Block 3’的矿工节点的哈希率来进行,随后可以剪除由哈希率较大的矿工节点生成的支链,从而保证分布式网络的各节点之间的公平性。
通过剪枝过程,当分布式网络中的某一矿工节点继续进行挖矿过程,使得生成新的区块Block 4时,该区块被链接到已被剪除支链的区块链。
根据本公开的一个实施例,在区块链中出现支链的情况下,根据生成支链上的区块的矿工节点的哈希率来剪除区块链的支链,其中第三指标是根据生成支链的各个区块的时间来确定的。
例如,第三指标可由剪枝时间表示。在图7的情况下,剪枝时间为生成区块Block 4的时间与生成区块Block 2’的时间之间的时间差,其可由下式(10)表示。
Time to pruning=tBlock4-tBlock2' (10)
其中Time to pruning表示剪枝时间,tBlock4和tBlock2’分别表示生成区块Block 4和区块Block 2’的时间。
智能合约作为区块链上的应用逻辑层,是构建Dapp应用的基础,为了测试智能合约的输出结果,本文以Ethereum的虚拟机为基础运行智能合约,计算交易输出
智能合约作为区块链上的应用逻辑层,是构建去中心化应用(Dapp)的基础。具体来说,智能合约是一组情景-应对型的程序化规则和逻辑,是部署在区块链上的去中心化、可信共享的程序代码。本公开的第四指标是用于指示执行智能合约的准确性的指标。
为了测试应用于区块链的智能合约的输出结果,根据本公开的一个实施例,可以使用以太坊(Ethereum)虚拟机来运行智能合约,针对区块链中的所有区块中存储的交易数据计算交易输出。随后,确定交易结果正确的交易数量,从而确定反应执行智能合约的准确性的第四指标。
图8是示出了基于区块链执行智能合约的过程的示意图。
根据本公开的一个实施例,反应执行智能合约的准确性的第四指标是根据区块链中的所有区块中的交易数量以及所述交易结果正确的交易数量来确定的。例如,可以根据下式(11)确定执行智能合约的准确性。
准确性=所有区块中的交易结果正确的交易的数量/所有区块中的交易数量 (11)
本公开还提出了一种用于模拟和测试分布式网络的区块链的***。图9是示出了根据本公开的一个实施例的用于模拟和测试分布式网络的区块链的***900的框图。
如图9所示,用于模拟和测试分布式网络的区块链的***900可以包括第一确定单元901,其用于确定分布式网络中的每个节点是否是矿工节点。第一确定单元901可以执行如上文所述的第一步骤S202的操作。
此外,***900可以包括第二确定单元902,其用于确定分布式网络中的每个节点是否是交易节点。第二确定单元902可以执行如上文所述的第二步骤S203的操作。
此外,***900可以包括生成单元903,其用于基于第一确定单元901和第二确定单元902的确定结果以及分布式网络中的每个节点的参数,生成用于描述区块链的性能的指标,例如上文所述的第一至第四指标。生成单元903可以执行如上文所述的第三步骤S204的操作。
根据本公开,通过模拟来构造分布式网络并且生成相应的区块链,并且使用第一至第四指标来评估所生成的区块链,可以实时地了解并调整分布式网络及相关联的区块链的动态状况。因此,根据本公开的用于模拟和测试分布式网络的区块链的方法和***可以广泛地应用于分布式网络模拟、区块链性能分析和测试以及分布式应用程序测试等领域。
在上面对本公开的具体实施例的描述中,针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。涉及序数的术语“第一”,“第二”等并不表示这些术语所限定的特征、要素、步骤或组件的实施顺序或者重要性程度,而仅仅是为了描述清楚起见而用于在这些特征、要素、步骤或组件之间进行标识。
此外,本公开的各实施例的方法不限于按照说明书中描述的或者附图中示出的时间顺序来执行,也可以按照其他的时间顺序、并行地或独立地执行。因此,本说明书中描述的方法的执行顺序不对本公开的技术范围构成限制。
综上,在根据本公开的实施例中,本公开提供了如下方案,但不限于此:
方案1.一种用于模拟和测试分布式网络的区块链的方法,包括:
第一步骤,确定分布式网络中的每个节点是否是矿工节点;
第二步骤,确定分布式网络中的每个节点是否是交易节点;
第三步骤,基于所述第一步骤和第二步骤的确定结果以及所述分布式网络中的每个节点的参数,生成用于描述所述区块链的性能的指标。
方案2.根据方案1所述的方法,其中所述第一步骤进一步包括:
针对分布式网络中的每个节点,根据挖矿奖励和交易费用来确定该节点是否是矿工节点。
方案3.根据方案2所述的方法,其中所述第一步骤进一步包括:
针对分布式网络中的每个节点生成第一随机数b和第二随机数c,
在第一随机数b小于或等于第一阈值α时,确定该节点是矿工节点,
在第二随机数c小于或等于第二阈值β时,确定该节点是非矿工节点,
其中,第一阈值α是根据挖矿奖励和交易费用确定的,第二阈值β=1-α。
方案4.根据方案1所述的方法,其中第二步骤进一步包括:
针对分布式网络中的每个节点生成第三随机数d,
在第三随机数d小于或等于第三阈值θ时,确定该节点是交易节点,
其中,第三阈值θ是根据单位时间内的平均交易数量的泊松分布确定的。
方案5.根据方案1至4中任一项所述的方法,其中所述指标包括第一指标、第二指标、第三指标和第四指标中的一个或更多个,其中,
所述第一指标是用于指示共识延迟的指标;
所述第二指标是用于指示所述分布式网络中的全体节点的公平性的指标;
所述第三指标是用于指示剪除所述区块链的支链的时间的指标;以及
所述第四指标是用于指示执行智能合约的准确性的指标。
方案6.根据方案5所述的方法,其中所述第三步骤进一步包括:
在所述分布式网络中的某一节点生成新的区块的情况下,确定从该节点生成新区块到所述分布式网络中的其他节点最晚接收到所述新区块之间的时间,作为区块传播时间,
其中所述第一指标是根据挖矿时间和所述区块传播时间来确定的。
方案7.根据方案5所述的方法,其中所述第三步骤进一步包括:
确定所述分布式网络中的具有最大哈希率的节点,以及
确定该节点生成的所有区块中的交易数目的总和,
其中所述第二指标是根据该节点的最大哈希率、该节点生成的所有区块中的交易数目的总和以及全网哈希率来确定的。
方案8.根据方案5所述的方法,其中所述第三步骤进一步包括:
在所述区块链中出现支链的情况下,根据生成支链上的区块的矿工节点的哈希率来剪除所述区块链的支链,
其中所述第三指标是根据生成所述支链的各个区块的时间来确定的。
方案9.根据方案5所述的方法,其中所述第三步骤进一步包括:
使用所述区块链通过以太坊虚拟机执行智能合约,确定交易结果正确的交易数量,
其中所述第四指标是根据所述区块链中的所有区块中的交易数量以及所述交易结果正确的交易数量来确定的。
方案10.一种用于模拟和测试分布式网络的区块链的***,包括:
第一确定单元,被配置成确定分布式网络中的每个节点是否是矿工节点;
第二确定单元,被配置成确定分布式网络中的每个节点是否是交易节点;
生成单元,被配置成基于所述第一确定单元和所述第二确定单元的确定结果以及所述分布式网络中的每个节点的参数,生成用于描述所述区块链的性能的指标。
方案11.根据方案10所述的***,其中所述第一确定单元被进一步配置成:
针对分布式网络中的每个节点,根据挖矿奖励和交易费用来确定该节点是否是矿工节点。
方案12.根据方案11所述的***,其中所述第一确定单元被进一步配置成:
针对分布式网络中的每个节点生成第一随机数b和第二随机数c,
在第一随机数b小于或等于第一阈值α时,确定该节点是矿工节点,
在第二随机数c小于或等于第二阈值β时,确定该节点是非矿工节点,
其中,第一阈值α是根据挖矿奖励和交易费用确定的,第二阈值β=1-α。
方案13.根据方案10所述的***,其中所述第二确定单元被进一步配置成:
针对分布式网络中的每个节点生成第三随机数d,
在第三随机数d小于或等于第三阈值θ时,确定该节点是交易节点,
其中,第三阈值θ是根据单位时间内的平均交易数量的泊松分布确定的。
方案14.根据方案10至13中任一项所述的***,其中所述指标包括第一指标、第二指标、第三指标和第四指标中的一个或更多个,其中,
所述第一指标是用于指示共识延迟的指标;
所述第二指标是用于指示所述分布式网络中的全体节点的公平性的指标;
所述第三指标是用于指示剪除所述区块链的支链的时间的指标;以及
所述第四指标是用于指示执行智能合约的准确性的指标。
方案15.根据方案14所述的***,其中所述生成单元被进一步配置成:
在所述分布式网络中的某一节点生成新的区块的情况下,确定从该节点生成新区块到所述分布式网络中的其他节点最晚接收到所述新区块之间的时间,作为区块传播时间,
其中所述第一指标是根据挖矿时间和所述区块传播时间来确定的。
方案16.根据方案14所述的***,其中所述生成单元被进一步配置成:
确定所述分布式网络中的具有最大哈希率的节点,以及
确定该节点生成的所有区块中的交易数目的总和,
其中所述第二指标是根据该节点的最大哈希率、该节点生成的所有区块中的交易数目的总和以及全网哈希率来确定的。
方案17.根据方案14所述的***,其中所述生成单元被进一步配置成:
在所述区块链中出现支链的情况下,根据生成支链上的区块的矿工节点的哈希率来剪除所述区块链的支链,
其中所述第三指标是根据生成所述支链的各个区块的时间来确定的。
方案18.根据方案14所述的***,其中所述生成单元被进一步配置成:
使用所述区块链通过以太坊虚拟机执行智能合约,确定交易结果正确的交易数量,
其中所述第四指标是根据所述区块链中的所有区块中的交易数量以及所述交易结果正确的交易数量来确定的。
尽管上面已经通过对本公开的具体实施例的描述对本公开进行了披露,但是,应该理解,本领域的技术人员可在所附权利要求的精神和范围内设计对本公开的各种修改、改进或者等同物。这些修改、改进或者等同物也应当被认为包括在本公开的保护范围内。
Claims (7)
1.一种用于模拟和测试分布式网络的区块链的方法,包括:
第一步骤,针对分布式网络中的每个节点,根据挖矿奖励和交易费用来确定该节点是否是矿工节点,
其中所述第一步骤进一步包括:
针对分布式网络中的每个节点生成第一随机数b和第二随机数c,
在第一随机数b小于或等于第一阈值α时,确定该节点是矿工节点,
在第二随机数c小于或等于第二阈值β时,确定该节点是非矿工节点,
其中,第一阈值α是根据挖矿奖励和交易费用确定的,第二阈值β=1-α;
第二步骤,确定分布式网络中的每个节点是否是交易节点,
其中所述第二步骤进一步包括:
针对分布式网络中的每个节点生成第三随机数d,
在第三随机数d小于或等于第三阈值θ时,确定该节点是交易节点,
其中,第三阈值θ是根据单位时间内的平均交易数量的泊松分布确定的;
第三步骤,基于所述第一步骤和第二步骤的确定结果以及所述分布式网络中的每个节点的参数,生成用于描述所述区块链的性能的指标,从而对所述区块链进行测试。
2.根据权利要求1所述的方法,其中所述指标包括第一指标、第二指标、第三指标和第四指标中的一个或更多个,其中,
所述第一指标是用于指示共识延迟的指标;
所述第二指标是用于指示所述分布式网络中的全体节点的公平性的指标;
所述第三指标是用于指示剪除所述区块链的支链的时间的指标;以及
所述第四指标是用于指示执行智能合约的准确性的指标。
3.根据权利要求2所述的方法,其中所述第三步骤进一步包括:
在所述分布式网络中的某一节点生成新的区块的情况下,确定从该节点生成新区块到所述分布式网络中的其他节点最晚接收到所述新区块之间的时间,作为区块传播时间,
其中所述第一指标是根据挖矿时间和所述区块传播时间来确定的。
4.根据权利要求2所述的方法,其中所述第三步骤进一步包括:
确定所述分布式网络中的具有最大哈希率的节点,以及
确定该节点生成的所有区块中的交易数目的总和,
其中所述第二指标是根据该节点的最大哈希率、该节点生成的所有区块中的交易数目的总和以及全网哈希率来确定的。
5.根据权利要求2所述的方法,其中所述第三步骤进一步包括:
在所述区块链中出现支链的情况下,根据生成支链上的区块的矿工节点的哈希率来剪除所述区块链的支链,
其中所述第三指标是根据生成所述支链的各个区块的时间来确定的。
6.根据权利要求2所述的方法,其中所述第三步骤进一步包括:
使用所述区块链通过以太坊虚拟机执行智能合约,确定交易结果正确的交易数量,
其中所述第四指标是根据所述区块链中的所有区块中的交易数量以及所述交易结果正确的交易数量来确定的。
7.一种用于模拟和测试分布式网络的区块链的***,包括:
第一确定单元,被配置成针对分布式网络中的每个节点,根据挖矿奖励和交易费用来确定该节点是否是矿工节点,
其中所述第一确定单元还被配置成:
针对分布式网络中的每个节点生成第一随机数b和第二随机数c,
在第一随机数b小于或等于第一阈值α时,确定该节点是矿工节点,
在第二随机数c小于或等于第二阈值β时,确定该节点是非矿工节点,
其中,第一阈值α是根据挖矿奖励和交易费用确定的,第二阈值β=1-α;
第二确定单元,被配置成确定分布式网络中的每个节点是否是交易节点,
其中所述第二确定单元还被配置成:
针对分布式网络中的每个节点生成第三随机数d,
在第三随机数d小于或等于第三阈值θ时,确定该节点是交易节点,
其中,第三阈值θ是根据单位时间内的平均交易数量的泊松分布确定的;
生成单元,被配置成基于所述第一确定单元和所述第二确定单元的确定结果以及所述分布式网络中的每个节点的参数,生成用于描述所述区块链的性能的指标,从而对所述区块链进行测试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610971458.0A CN108011741B (zh) | 2016-10-28 | 2016-10-28 | 用于模拟和测试分布式网络的区块链的方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610971458.0A CN108011741B (zh) | 2016-10-28 | 2016-10-28 | 用于模拟和测试分布式网络的区块链的方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108011741A CN108011741A (zh) | 2018-05-08 |
CN108011741B true CN108011741B (zh) | 2020-07-17 |
Family
ID=62047539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610971458.0A Active CN108011741B (zh) | 2016-10-28 | 2016-10-28 | 用于模拟和测试分布式网络的区块链的方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108011741B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108768700B (zh) * | 2018-05-11 | 2021-09-03 | 北京奇虎科技有限公司 | 一种区块链中奖励分配方法、装置及*** |
CN108776890A (zh) * | 2018-06-04 | 2018-11-09 | 青岛大学 | 一种基于区块链的可信智能工资发放方法和*** |
WO2020003131A1 (en) * | 2018-06-25 | 2020-01-02 | Blocktest Global | Systems and methods to automatically evaluate blockchain-based solution performance |
SG11201903544SA (en) | 2018-11-30 | 2019-05-30 | Alibaba Group Holding Ltd | Testing platform for blockchain networks |
US11184446B2 (en) * | 2018-12-05 | 2021-11-23 | Micron Technology, Inc. | Methods and apparatus for incentivizing participation in fog networks |
CN109902015A (zh) * | 2019-03-01 | 2019-06-18 | 北京大学 | 一种智能合约仿真测试方法、装置、***及存储介质 |
CN110162470B (zh) * | 2019-04-28 | 2023-08-18 | 创新先进技术有限公司 | 一种区块链的测试方法和装置 |
CN110113172B (zh) * | 2019-04-29 | 2022-04-15 | 深圳市元征科技股份有限公司 | 一种难度调整的方法及相关设备 |
CN110474818B (zh) * | 2019-07-11 | 2023-02-28 | 福州博泉网络科技有限公司 | 区块链网络嗅探器、网络嗅探方法和优化方法 |
CN110474967B (zh) * | 2019-07-23 | 2022-02-22 | 深圳市芯链科技有限公司 | 块链实验***及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10340038B2 (en) * | 2014-05-13 | 2019-07-02 | Nant Holdings Ip, Llc | Healthcare transaction validation via blockchain, systems and methods |
US20160203477A1 (en) * | 2015-01-14 | 2016-07-14 | Modernity Financial Holdings, Ltd. | Cryptographic security for electronic transactions |
-
2016
- 2016-10-28 CN CN201610971458.0A patent/CN108011741B/zh active Active
Non-Patent Citations (2)
Title |
---|
Bitcoin Portfolio hedging using protective put options;PHILIP DUNAY等;《the WINNOWER》;20151222;第1-10页 * |
BitFed,A Centralized Cryptocurrency with Distributed Miners;Shruti Sharma;《San Jose State University》;20151231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108011741A (zh) | 2018-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108011741B (zh) | 用于模拟和测试分布式网络的区块链的方法和*** | |
CN109426952B (zh) | 一种区块链架构 | |
CN110535836B (zh) | 一种基于角色分类的信任区块链共识方法 | |
US10997125B2 (en) | Proof of lottery (PoL) blockchain | |
US20210243007A1 (en) | Maintaining blocks of a blockchain in a partitioned blockchain network | |
US20210049715A1 (en) | Blockchain-based data procesing method, apparatus, and electronic device | |
Wang et al. | Performance benchmarking and optimization for blockchain systems: A survey | |
KR20190070163A (ko) | 네트워크를 통해 서로 통신하는 노드들 각각의 자원 운영 방법, 그리고 그러한 노드들 중 어느 하나로 동작하는 컴퓨터 장치 | |
CN112597240B (zh) | 一种基于联盟链的联邦学习的数据处理方法与*** | |
Gaba et al. | Impact of block data components on the performance of blockchain-based VANET implemented on hyperledger fabric | |
Artés et al. | Relieving the effects of uncertainty in forest fire spread prediction by hybrid mpi-openmp parallel strategies | |
Chitra et al. | Agent-based simulations of blockchain protocols illustrated via kadena’s chainweb | |
Forestier et al. | Blockclique: scaling blockchains through transaction sharding in a multithreaded block graph | |
CN112559635B (zh) | 以太坊联盟链节点的业务处理方法、装置、设备及介质 | |
CN115358856A (zh) | 一种基于区块链的电力交易数据存储、溯源方法及*** | |
CN112598132A (zh) | 模型训练方法及装置、存储介质、电子装置 | |
CN110517135A (zh) | 一种区块生成方法及装置 | |
Baniata et al. | Distributed scalability tuning for evolutionary sharding optimization with Random-equivalent security in permissionless Blockchain | |
Wang et al. | PoTA: A hybrid consensus protocol to avoid miners’ collusion for BaaS platform | |
CN113392164A (zh) | 构建纵向联邦树的方法、主服务器、业务平台和*** | |
CN110910091A (zh) | 一种数据处理方法、设备及介质 | |
CN113222744A (zh) | 一种数据可信处理的方法、装置、存储介质及电子设备 | |
Lee | Blockchain and Cryptocurrency Distributed Testing Methods | |
CN116823272B (zh) | 一种基于区块链共识机制的智能合约管理*** | |
Marmsoler et al. | On the impact of architecture design decisions on the quality of blockchain-based applications |
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 |