CN111130790A - 基于区块链节点网络的共识出块方法 - Google Patents
基于区块链节点网络的共识出块方法 Download PDFInfo
- Publication number
- CN111130790A CN111130790A CN201911251592.3A CN201911251592A CN111130790A CN 111130790 A CN111130790 A CN 111130790A CN 201911251592 A CN201911251592 A CN 201911251592A CN 111130790 A CN111130790 A CN 111130790A
- Authority
- CN
- China
- Prior art keywords
- block
- voting
- node
- nodes
- value
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1854—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
-
- 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/30—Decision processes by autonomous network management units using voting and bidding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Abstract
本发明公开了一种基于区块链节点网络的共识出块方法,本发明先进行出块投票节点的选取,得到下一出块的投票节点,然后所有区块链节点将其对应的出块机会值OP分别发送至投票节点,投票节点对接收的出块机会值OP进行优先级的划分和数字签名,最后生成数字签名投票请求,并把数字签名投票请求发送至对应的发送节点,发送节点根据数字签名投票请求得到投票结果,根据投票结果进行出块。本发明采用选取投票节点根据出块机会值OP进行优先级的划分,并返回至发送节点,其实质为根据出块机会值OP进行投票,使得通信的次数与投票节点的个数成线性关系,从而可以降低通信复杂度,同时所有区块链节点均可进行出块机会值OP的发送,保证了去中心化程度,安全性能高。
Description
技术领域
本发明涉及区块链技术领域,具体涉及一种基于区块链节点网络的共识出块方法。
背景技术
区块链网络中的每一个节点,就相当于存储所有区块数据的每一台电脑或者服务器终端,所有新区块的生产以及交易的验证与记账,并将其广播给全网同步,这些都由节点来完成。
节点,就是我们俗称的矿工,每个矿工的不同算力,决定了它能分配到多少记账权,收获多少奖励。
区块链第一代共识机制叫POW,也就是工作量证明共识机制,俗称挖矿,要想生产新的区块,就必须进行成千上万次哈希碰撞运算,而高强度的运算带来了极大的电力资源损耗,且POW共识机制一旦大部分算力被垄断,其去中心化就受到威胁,使得安全性大大的降低。
区块链第二代共识机制叫POS,即权益证明共识机制,它是根据持币数量与时间来决定谁拥有更多的记账权,这种共识介质的优点是可以避免能源消耗,但缺点是话语权都被持币大户所掌握,形成中央集权的特征,与区块链的去中心化初衷背道而驰。
区块链的第三代共识机制叫DPOS,其最大的特征是在POS权益证明的基础上,加入了选举制度,经过所有持币用户投票选举诞生的最终获得记账权的超级节点进行记账,可以极大地降低能源的浪费,但是,由于通过选取一部分节点作为超级节点进行记账,其是通过降低中心化程度实现快速、高效的出块,使得中心化程度大大的降低,安全性能大打折扣。
发明内容
为了解决现有区块链共识出块方法所存在的运算复杂和去中心化程度低的问题,本发明的目的在于提供一种以通信复杂度,且在不降低去中心化程度的前提下,实现节点快速、高效且安全出块的共识出块。
本发明所采用的技术方案为:
一种基于区块链节点网络的共识出块方法,包括出块投票节点选取阶段、出块阶段和出块广播阶段;
所述出块投票节点选取阶段包括以下步骤:
S101.获取一段连续的区块,将此区块定义为时段区块;
S102.所述时段区块利用哈希函数、逻辑距离函数和随机数函数,生成下一时段区块的出块投票节点集合D;
所述出块阶段包括以下步骤:
S201.通过可验证随机函数VRF,得到一个随机数A,根据所述随机数A,在所述出块投票节点集合D中选取若干个出块投票节点,作为下一出块的投票节点;
S202.针对每个区块链节点,根据自身的随机数B和自身能力值,计算得到当前区块链节点的出块机会值OP;
S203.每个区块链节点将其对应的出块机会值OP分别发送至若干个投票节点,定义发送出块机会值OP的区块链节点为发送节点;
S204.针对步骤S201中的每一个投票节点,只接收在规定时间内传入的出块机会值OP,然后对接收的每一个出块机会值OP进行优先级的划分,并对每个优先级对应的出块机会值OP进行数字签名,得到与每个出块机会值OP对应的数字签名投票请求,其中,每个数字签名投票请求包括与其对应的出块机会值OP、出块机会值OP对应的优先级以及数字签名;
S205.针对每一个投票节点,将自身的每一个数字签名投票请求分别发送至每一个数字签名投票请求中出块机会值OP相对应的发送节点;
S206.每个发送节点接收到每个投票节点发送的数字签名投票请求后,根据接收到的数字签名投票请求进行出块广播;
所述出块广播阶段包括以下步骤:
S301.每个发送节点根据接收的数字签名投票请求得出投票结果,并进行区块的出块,利用延时中继广播将区块的区块信息发送至其余区块链节点,定义接收所述区块信息的区块链节点为接收节点;
S302.接收节点接收所述区块信息,并将区块信息合并至自身链中,完成此次出块;
S303.重复所述出块阶段和所述出块广播阶段,直到所有的区块链节点出块完毕为止。
优化的,所述步骤S102中出块投票节点集合D由以下步骤得出:
S102a.获取区块链网络的第一参数min和第二参数max;
S102b.定义包含所有区块链节点的集合为P,其中, P={P1,P2,...,Pi},Pi为第i个区块链节点;
S102c.第i个区块链节点选择任意数字si,根据所述哈希函数,计算数字si的哈希值hi,并将所述哈希值hi发送至每一个区块链节点,其中,hi=sha3(si);
S102d.区块链根据所述随机数函数,计算所述下一时段区块的随机数R,其中,R=f(s1,s2,...,si,a),min<i<max,且a是出块区块链节点的地址;
S102e.利用所述逻辑距离函数,计算所有区块链节点的逻辑距离值,并将每个区块链节点的逻辑距离值从小到大排序,选择第N个逻辑距离值记为dis*,其中,199≤N<min;
S102f.将小于dis*的逻辑距离值对应的区块链节点,作为出块投票节点,组成所述出块投票节点集合D。
优化的,所述步骤S102e中的逻辑距离函数的公式为:
优化的,在所述步骤S102c和所述步骤S102d之间还包括以下步骤:
选择M个区块,在所述M个区块的总时间内,多个区块链节点将自身的哈希值发送至区块链,经过所述M个区块后,多个区块链节点再根据哈希值得到自身对应的实际数字,并将所述实际数字发送至区块链。
优化的,在所述步骤S201中,投票节点的选取具体包括以下步骤:
S201a.通过逻辑距离函数,计算所述出块投票节点集合D中每一个出块投票节点与随机数A的距离值;
S201b.将每个出块投票节点与随机数A的距离值从小到大进行排序,选择前F个距离值对应的出块投票节点,作为决定下一出块的投票节点,其中,49<F<599。
优化的,所述步骤S202中,出块机会值OP由以下公式计算得出:
式中,OPi为第i个区块链节点的出块机会值,Xi为第i个区块链节点的自身能力值,BiR为第i个区块链节点的随机数。
优化的,所述步骤S204中,出块机会值OP的优先级划分根据以下标准进行:
根据出块机会值OP的大小依次进行优先级的划分,其中,出块机会值OP最大的作为第一优先级。
优化的,所述步骤S301中的延时中继传播具体包括以下步骤:
S301a.针对每一个发送节点,将其对应的投票结果和区块体合并成区块,并根据投票结果得到对应区块的权重,根据权重,产生延时时间;
S301b.针对每一个发送节点,判断当前发送节点在其对应的延时时间内是否接收到其它区块链节点发送的区块信息,若在延时时间内未接收到其它区块链节点发送的区块信息,则将当前发送节点对应区块的区块信息发送至接收节点,然后执行步骤S302,否则执行步骤S301c;
S301c.根据接收到的其它区块链节点发送的区块信息,分别得到接收到的区块链节点对应区块的权重,并与当前区块的权重进行比较,保留权重最大的区块,抛弃其余区块,将权重最大的区块的区块信息发送给所述接收节点。
优化的,所述投票结果为当前发送节点接收到的所有数字签名投票请求中出块机会值OP的优先级,所述区块的权重为当前发送节点接收到的所有数字签名投票请求中出块机会值OP优先级的总和。
优化的,所述步骤S302中,在进行区块信息的合并前,还需进行区块信息中数字签名的验证。
本发明的有益效果为:
(1)本发明提供了一种基于区块链节点网络的共识出块方法,本发明先进行出块投票节点的选取,将选取的出块投票节点作为下一出块的区块链的投票节点,然后所有区块链节点将其对应的出块机会值OP分别发送至选取的投票节点,投票节点对接收的出块机会值OP 进行优先级的划分以及进行数字签名,最后生成每个出块机会值OP 对应的数字签名投票请求,并把每一个数字签名投票请求发送至其对应的发送节点,最后发送节点根据返回的数字签名投票请求得到投票结果,根据投票结果进行出块。
通过上述设计,采用本发明提供的共识出块方法:
一方面,本发明采用选取投票节点根据出块机会值OP进行优先级的划分,并返回至发送节点,其实质为根据出块机会值OP进行投票,使得通信的次数与投票节点的个数成线性关系,从而可以降低通信复杂度,也可降低通信宽带的要求,同时所有区块链节点均可进行出块机会值OP的发送,即每个区块链节点均能够参与,保证了去中心化程度,安全性能高。
另一方面,每个区块链节点均可以进行出块机会值OP的发送,其出块机会与自身为网络建设提供的服务能力为正比,同时通过选取投票节点进行投票的方式,使得出块的区块链节点足够随机,既保证了奖励的公平性,同时也保证了出块节点的安全性。
(2)本发明通过投票结果进行出块,而投票结果由收集了全网的区块链节点发送的出块机会值OP得到,所以,投票结果即代表了全网的共识度,而超过50%的投票即意味着全网大部分节点的认可,因此,可快速实现区块的最终确定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的基于区块链节点网络的共识出块方法的步骤流程示意图。
具体实施方式
下面结合具体实施例对本发明作进一步阐述。在此需要说明的是,对于这些实施例方式的说明用于帮助理解本发明,但并不构成对本发明的限定。
文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B三种情况,本文中术语“/和”是描述另一种关联对象关系,表示可以存在两种关系,例如,A/和B,可以表示:单独存在A,单独存在A和B两种情况,另外,本文中字符“/”,一般表示前后关联对象是一种“或”关系。
实施例一
如图1所示,本实施例所提供的基于区块链节点网络的共识出块方法,包括出块投票节点选取阶段、出块阶段和出块广播阶段;
所述出块投票节点选取阶段包括以下步骤:
S101.获取一段连续的区块,将此区块定义为时段区块。
S102.所述时段区块利用哈希函数、逻辑距离函数和随机数函数,生成下一时段区块的出块投票节点集合D。
所述步骤S101和步骤S102即是用于确定出块投票节点,即从所有的区块链节点中选取一部分,作为出块投票节点,即只有出块投票节点具有决定某个区块链节点出块的资格。
在本实施例中,出块投票节点集合D的获取步骤具体如下:
S102a.获取区块链网络的第一参数min和第二参数max。
所述第一参数min和第二参数max是根据安全性和通信复杂度生成。
S102b.定义包含所有区块链节点的集合为P,其中, P={P1,P2,...,Pi},Pi为第i个区块链节点。
所述步骤S102b则是保证区块链所有的节点均能够作为出块投票节点的候选节点,即使得每个区块链节点均有机会成为出块投票节点,保证了出块的公平性。选取所有的区块链节点作为出块投票节点的候选节点后,即进行步骤S102c,获取某个区块链节点的哈希值。
S102c.第i个区块链节点选择任意数字si,根据所述哈希函数,计算数字si的哈希值hi,并将所述哈希值hi发送至每一个区块链节点,其中,hi=sha3(si)。
所述步骤S102c则是根据哈希函数计算第i个区块链节点的哈希值hi。在本实施例中,哈希函数为一种现有函数,可直接在区块链中进行使用。
S102d.区块链根据所述随机数函数,计算所述下一时段区块的随机数R,其中,R=f(s1,s2,...,si,a),min<i<max,且a是出块区块链节点的地址。
所述步骤S102d则是用于计算下一时段区块的随机数R,所述下一时段区块的随机数R由每个区块链节点哈希值对应的数字计算得出,即通过公式R=f(s1,s2,...,si,a),计算得出。
当i=1时,R=f(s1,a),当i=2时,R=f(s1,s2,a),以此类推,即可计算出下一时段区块中的随机数R。
得到下一时段的随机数R后,即可将其作为参数,通过逻辑距离函数得出所有区块链节点的逻辑距离,根据逻辑距离的大小,筛选得到出块投票节点,进而由筛选出的出块投票节点,组成出块投票节点集合D。具体步骤则是步骤S102e和步骤S102f。
在本实施例中,步骤S102e中逻辑距离函数的公式为:
即通过上述公式,选择第i个区块链节点以及其对应的的随机数 R,即可得到第i个区块链节点的逻辑距离函数,而选择不同的区块链节点以及其对应的随机数,即可得到不同的区块链节点的逻辑距离。当将所有的区块链节点以及对应的随机数代入逻辑距离函数公式,即可得到所有区块链节点的逻辑距离,进而实现逻辑距离值的排序,具体如下步骤S102e和步骤S102f。
S102e.利用所述逻辑距离函数,计算所有区块链节点的逻辑距离值,并将每个区块链节点的逻辑距离值从小到大排序,选择第N个逻辑距离值记为dis*,其中,199≤N<min。
S102f.将小于dis*的逻辑距离值对应的区块链节点,作为出块投票节点,组成所述出块投票节点集合D。
所述步骤S102e即是对所有区块链节点的逻辑距离值进行排序,具体过程为:按照逻辑距离值的大小进行排序,即从小到大进行排序,排序完成后,即可将第N个逻辑距离值作为标准值,即进行标记,标记为dis*,作为选择的节点。
在本实施例中,选取排序位于第N个逻辑值前面的逻辑距离值,将选取的逻辑距离值对应的区块链节点作为出块投票节点,组成出块投票节点D。在本实施例中,N的个数要大于199,以保证足够的随机性,同时还要小于第一参数min,保证得到区块链运算的安全性。
通过上述设计,即可在全网的区块链节点中筛选出出块投票节点,组成所述出块投票节点集合D,用于对全网区块链节点发送的续出块机会值OP进行投票,进而根据投票结果进行出块,具体步骤即可参见出块阶段。
在本实施例中,为了增加筛选的可靠性,防止被不法分子入侵,本实施例在所述步骤S102c和所述步骤S102d之间还设置有以下步骤:
选择M个区块,在所述M个区块的总时间内,多个区块链节点将自身的哈希值发送至区块链,经过所述M个区块后,多个区块链节点再根据哈希值得到自身对应的实际数字,并将所述实际数字发送至区块链。
通过本步骤,可防止区块链的安全性,防止更改区块链的数据,具体原因为:在M个区块的最后一个区块的生成者打包前,无法获得随机数的计算结果,到最后一个出块者计算的时候,数据已经固定了,出块者也无法修改了,这样即达到了防止数据更改的功能。
所述出块阶段包括以下步骤:
首先,出块阶段要先确定决定下一出块的出块投票节点,即要在出块投票节点集合D中,选取部分出块投票节点,作为决定下一出块的投票节点,只有选取的投票节点才能进行全网区块链节点发送的出块机会值OP的投票,具体步骤参见S201。
S201.通过可验证随机函数VRF,得到一个随机数A,根据所述随机数A,在所述出块投票节点集合D中选取若干个出块投票节点,作为下一出块的投票节点。
所述步骤S201则是投票节点的选取过程,根据由随机数A获得,其实质为判断出块投票节点集合D中每一个出块投票节点与随机数A之间的距离,根据距离的大小进行筛选,即投票节点的选取具体过程如下:
S201a.通过逻辑距离函数,计算所述出块投票节点集合D中每一个出块投票节点与随机数A的距离值。
S201b.将每个出块投票节点与随机数A的距离值从小到大进行排序,选择前F个距离值对应的出块投票节点,作为决定下一出块的投票节点,其中,49<F<599。
在本实施例中,逻辑距离函数所使用的公式在上述就已说明,在此不多加赘述,利用逻辑距离函数即可得出每一个出块投票节点与随机数A距离,得出每个出块投票节点与随机数A的距离后,即可根据距离值的大小得到投票节点。
而每个出块投票节点与随机数A的距离值进出从小到大进行排序后,选择前F个距离值对应的出块投票节点,作为决定下一出块的投票节点,即选择距离随机数B最近的一部分出块投票节点作为投票节点,其中,49<F<599。
从出块投票节点集合D中筛选出投票节点后,即可进行步骤 S202。
S202.针对每个区块链节点,根据自身的随机数B和自身能力值,计算得到当前区块链节点的出块机会值OP。
在本步骤中,全网的区块链节点均可以计算自己的出块机会值 OP,并发送至筛选出的投票节点,即每一个投票节点均要接收所有区块链节点发送的出块机会值OP。
在本实施例中,所述步骤S202中,出块机会值OP由以下公式计算得出:
式中,OPi为第i个区块链节点的出块机会值,Xi为第i个区块链节点的自身能力值,BiR为第i个区块链节点的随机数。
通过上述公式,要计算某个区块链节点的出块机会值OP,即将公式中的Xi代成其对应的自身能力值,将BiR代成其对应的随机数。所以,使用上述公式,即可得出每一个区块链节点的出块机会值OP。
在本实施例中,区块链节点的自身能力值是全网可以计算的,包括但不限于通过:抵押的通证数(通过基本POS计算法得出)、区块链上实际存储的数量(由POS算法得出)。
每一个区块链节点计算自己的出块机会值OP后,即会发送至每一个投票节点,即进行步骤S203。
S203.每个区块链节点将其对应的出块机会值OP分别发送至若干个投票节点,定义发送出块机会值OP的区块链节点为发送节点。
S204.针对步骤S201中的每一个投票节点,只接收在规定时间内传入的出块机会值OP,然后对接收的每一个出块机会值OP进行优先级的划分,并对每个优先级对应的出块机会值OP进行数字签名,得到与每个出块机会值OP对应的数字签名投票请求,其中,每个数字签名投票请求包括与其对应的出块机会值OP、出块机会值OP对应的优先级以及数字签名。
在本实施例中,举例规定时间为15s,即投票节点只在15s内接收出块机会值OP。
S205.针对每一个投票节点,将自身的每一个数字签名投票请求分别发送至每一个数字签名投票请求中出块机会值OP相对应的发送节点。
每一个区块链节点将其自身的出块机会值OP发送至每个投票节点后,但是,每一个投票节点不一定会全部接收全网区块链节点发送的出块机会值OP。
在本实施例中,每个投票节点只会在规定时间内接收出块机会值 OP,一旦超过规定时间,就不会在接收区块链节点发送的出块机会值OP。
投票节点在规定的时间内接收完毕后,即会对接收的出块机会值 OP进行优先级的划分,以及对优先级划分完毕后的出块机会值OP进行数字签名,进而得到数字签名投票请求,然后投票节点再将数字签名投票请求发送至发送节点。即每一个出块机会值OP都会生成一个数字签名投票请求,而由于一个投票节点会收到所有区块链节点发送的出块机会值OP,所以,反过来,每个发送出块机会值OP的区块链节点,即发送节点会收到每个投票节点发送的数字签名投票请求。
在本实施例中,投票节点根据每个数字签名投票请求中包含的出块机会值OP确定发送节点,由于发送节点会将自己的出块机会值OP 发送给每一个投票节点,所以,反过来,投票节点即可根据出块机会值OP确认其对应的发送节点,以便将数字签名投票请求返回给发送节点,发送节点即可根据数字签名投票请求得到投票结果,然后进行出块,即进行步骤S206。
在本实施例中,步骤S204中,出块机会值OP的优先级划分根据以下标准进行:
根据出块机会值OP的大小依次进行优先级的划分,其中,出块机会值OP最大的作为第一优先级。
通过上述可知,即出块机会值OP越大的,优先级越很高,并将出块机会值OP从大到小进行优先级的划分,并标记,即出块机会值OP最大的作为第一优先级,标记为1,以此类推。
通过上述设计,每个数字签名投票请求中即会包含出块机会值 OP、其对应的优先级以及数字签名。最后投票节点即会将每个数字签名投票请求发送至与出块机会值OP对应的发送节点,然后进行步骤S206。
S206.每个发送节点接收到每个投票节点发送的数字签名投票请求后,根据接收的数字签名投票请求进行出块广播。
经过步骤S206后,整个出块过程就进入出块广播阶段,具体如下:
所述出块广播阶段包括以下步骤:
S301.每个发送节点根据其接收的数字签名投票请求得出投票结果,并进行区块的出块,利用延时中继广播将区块的区块信息发送至其余区块链节点,定义接收所述区块信息的区块链节点为接收节点。
首先,每个发送节点在接收到投票节点的数字签名投票请求后,会根据所有的数字签名投票请求得出投票结果,根据投票结果进行区块的出块,并利用延时中继广播将区块的区块信息发送至其余区块链节点。
在本实施例中,步骤S301中的延时中继传播具体包括以下步骤:
S301a.针对每一个发送节点,将其对应的投票结果和区块体合并成区块,并根据投票结果得到对应区块的权重,根据权重,产生延时时间。
在本实施例中,所述投票结果为当前发送节点接收到的所有数字签名投票请求中出块机会值OP的优先级,所述区块的权重为当前发送节点接收到的所有数字签名投票请求中出块机会值OP优先级的总和。
即每个发送节点接收到所有投票节点发送的数字签名投票请求后,会将所有的数字签名投票请求中的出块机会值OP的优先级作为投票结果,即判断接收节点发送的出块机会值OP处于何等优先级,然后统计所有数字签名投票请求中的出块机会值OP每个优先级的总数,进而得出处于第一优先级的出块机会值OP的个数,将此个数作为权重。
如一个接收节点在接收的所有数字签名投票请求中,第一优先级的对应的出块机会值OP的个数为30,那么接收节点对应的区块的权重就为30。
得到权重后,即可根据权重产生延时时间,进行步骤S301b。
S301b.针对每一个发送节点,判断当前发送节点在其对应的延时时间内是否接收到其它区块链节点发送的区块信息,若在延时时间内未接收到其它区块链节点发送的区块信息,则将当前发送节点对应区块的区块信息发送至接收节点,然后执行步骤S302,否则执行步骤S301c。
S301c.根据接收到的其它区块链节点发送的区块信息,分别得到接收到的区块链节点对应区块的权重,并与当前区块的权重进行比较,保留权重最大的区块,抛弃其余区块,将权重最大的区块的区块信息发送给所述接收节点。
当得到延时时间后,发送节点则只会在其对应的延时时间内接收其它区块链节点发送的区块信息,并判断在延时时间内是否接收到其它区块链节点发送的区块信息,若在延时时间内未接收到其它区块链节点发送的区块信息,则直接将此发送节点对应的区块的区块信息发送至接收节点。
在本实施例中,区块信息包括上一区块的哈希值、本发送节点的交易信息、本节点的投票结果以及数字签名。
若判断在延时时间内还接收有其它区块链节点发送的区块信息,即会进行根据区块信息中的投票结果生成每个区块链节点对应区块的权重,然后进行权重的大小的比较,权重的计算在上述就已经说明,在此不多加赘述。
得到每个区块链节点区块的权重后,保留权重最大的区块,即保留权重最大的区块信息对应的区块,抛弃其余区块,将保留的区块对应的区块信息发送至接收节点,然后进行步骤S302。
S302.接收节点接收所述区块信息,并将区块信息合并至自身链中,完成此次出块。
在步骤S302中,接收节点合并区块信息前还需要对区块信息中数字签名的进行验证。
通过上述设计,可保证区块信息的合法性,防止区块信息被篡改,保证出块的安全性。
通过上述步骤,即完成了一个区块链节点的出块,然后重复出块阶段和所述出块广播阶段,即可进行下一区块链节点的出块,即步骤 S303。
S303.重复所述出块阶段和所述出块广播阶段,直到所有的区块链节点出块完毕为止。
在本实施例中,步骤S301a中采用以下现有公式得出延时时间:
式中,tdelayi为延时时间,weighti为步骤S301a中根据投票结果得出的权重,P为投票节点的总数,Tf是根据区块大小得出在单跳内的平均区块传播时间,这可由区块链网络直接得出。
综上,采用本发明所提供的基于区块链节点网络的共识出块方法,具有如下技术效果:
(1)一方面,本发明采用选取投票节点根据出块机会值OP进行优先级的划分,并返回至发送节点,其实质为根据出块机会值OP进行投票,使得通信的次数与投票节点的个数成线性关系,从而可以降低通信复杂度,也可降低通信宽带的要求,同时所有区块链节点均可进行出块机会值OP的发送,即每个区块链节点均能够参与,保证了去中心化程度,安全性能高。
另一方面,每个区块链节点均可以进行出块机会值OP的发送,其出块机会与自身为网络建设提供的服务能力为正比,同时通过选取投票节点进行投票的方式,使得出块的区块链节点足够随机,既保证了奖励的公平性,同时也保证了出块节点的安全性。
(2)本发明通过投票结果进行出块,而投票结果由收集了全网的区块链节点发送的出块机会值OP得到,所以,投票结果即代表了全网的共识度,而超过50%的投票即意味着全网大部分节点的认可,因此,可快速实现区块的最终确定性。
本发明不局限于上述可选实施方式,任何人在本发明的启示下都可得出其他各种形式的产品,但不论在其形状或结构上作任何变化,凡是落入本发明权利要求界定范围内的技术方案,均落在本发明的保护范围之内。
Claims (10)
1.一种基于区块链节点网络的共识出块方法,其特征在于,包括出块投票节点选取阶段、出块阶段和出块广播阶段;
所述出块投票节点选取阶段包括以下步骤:
S101.获取一段连续的区块,将此区块定义为时段区块;
S102.所述时段区块利用哈希函数、逻辑距离函数和随机数函数,生成下一时段区块的出块投票节点集合D;
所述出块阶段包括以下步骤:
S201.通过可验证随机函数VRF,得到一个随机数A,根据所述随机数A,在所述出块投票节点集合D中选取若干个出块投票节点,作为下一出块的投票节点;
S202.针对每个区块链节点,根据自身的随机数B和自身能力值,计算得到当前区块链节点的出块机会值OP;
S203.每个区块链节点将其对应的出块机会值OP分别发送至若干个投票节点,定义发送出块机会值OP的区块链节点为发送节点;
S204.针对步骤S201中的每一个投票节点,只接收在规定时间内传入的出块机会值OP,然后对接收的每一个出块机会值OP进行优先级的划分,并对每个优先级对应的出块机会值OP进行数字签名,得到与每个出块机会值OP对应的数字签名投票请求,其中,每个数字签名投票请求包括与其对应的出块机会值OP、出块机会值OP对应的优先级以及数字签名;
S205.针对每一个投票节点,将自身的每一个数字签名投票请求分别发送至每一个数字签名投票请求中出块机会值OP相对应的发送节点;
S206.每个发送节点接收到每个投票节点发送的数字签名投票请求后,根据接收到的数字签名投票请求进行出块广播;
所述出块广播阶段包括以下步骤:
S301.每个发送节点根据接收的数字签名投票请求得出投票结果,并进行区块的出块,利用延时中继广播将区块的区块信息发送至其余区块链节点,定义接收所述区块信息的区块链节点为接收节点;
S302.接收节点接收所述区块信息,并将区块信息合并至自身链中,完成此次出块;
S303.重复所述出块阶段和所述出块广播阶段,直到所有的区块链节点出块完毕为止。
2.根据权利要求1所述的一种基于区块链节点网络的共识出块方法,其特征在于,所述步骤S102中出块投票节点集合D由以下步骤得出:
S102a.获取区块链网络的第一参数min和第二参数max;
S102b.定义包含所有区块链节点的集合为P,其中,P={P1,P2,...,Pi},Pi为第i个区块链节点;
S102c.第i个区块链节点选择任意数字si,根据所述哈希函数,计算数字si的哈希值hi,并将所述哈希值hi发送至每一个区块链节点,其中,hi=sha3(si);
S102d.区块链根据所述随机数函数,计算所述下一时段区块的随机数R,其中,R=f(s1,s2,...,si,a),min<i<max,且a是出块区块链节点的地址;
S102e.利用所述逻辑距离函数,计算所有区块链节点的逻辑距离值,并将每个区块链节点的逻辑距离值从小到大排序,选择第N个逻辑距离值记为dis*,其中,199≤N<min;
S102f.将小于dis*的逻辑距离值对应的区块链节点,作为出块投票节点,组成所述出块投票节点集合D。
4.根据权利要求2所述的一种基于区块链节点网络的共识出块方法,其特征在于,在所述步骤S102c和所述步骤S102d之间还包括以下步骤:
选择M个区块,在所述M个区块的总时间内,多个区块链节点将自身的哈希值发送至区块链,经过所述M个区块后,多个区块链节点再根据哈希值得到自身对应的实际数字,并将所述实际数字发送至区块链。
5.根据权利要求1所述的一种基于区块链节点网络的共识出块方法,其特征在于,在所述步骤S201中,投票节点的选取具体包括以下步骤:
S201a.通过逻辑距离函数,计算所述出块投票节点集合D中每一个出块投票节点与随机数A的距离值;
S201b.将每个出块投票节点与随机数A的距离值从小到大进行排序,选择前F个距离值对应的出块投票节点,作为决定下一出块的投票节点,其中,49<F<599。
7.根据权利要求1所述的一种基于区块链节点网络的共识出块方法,其特征在于:所述步骤S204中,出块机会值OP的优先级划分根据以下标准进行:
根据出块机会值OP的大小依次进行优先级的划分,其中,出块机会值OP最大的作为第一优先级。
8.根据权利要求1所述的一种基于区块链节点网络的共识出块方法,其特征在于,所述步骤S301中的延时中继传播具体包括以下步骤:
S301a.针对每一个发送节点,将其对应的投票结果和区块体合并成区块,并根据投票结果得到对应区块的权重,根据权重,产生延时时间;
S301b.针对每一个发送节点,判断当前发送节点在其对应的延时时间内是否接收到其它区块链节点发送的区块信息,若在延时时间内未接收到其它区块链节点发送的区块信息,则将当前发送节点对应区块的区块信息发送至接收节点,然后执行步骤S302,否则执行步骤S301c;
S301c.根据接收到的其它区块链节点发送的区块信息,分别得到接收到的区块链节点对应区块的权重,并与当前区块的权重进行比较,保留权重最大的区块,抛弃其余区块,将权重最大的区块的区块信息发送给所述接收节点。
9.根据权利要求8所述的一种基于区块链节点网络的共识出块方法,其特征在于:所述投票结果为当前发送节点接收到的所有数字签名投票请求中出块机会值OP的优先级,所述区块的权重为当前发送节点接收到的所有数字签名投票请求中出块机会值OP优先级的总和。
10.根据权利要求1所述的一种基于区块链节点网络的共识出块方法,其特征在于,所述步骤S302中,在进行区块信息的合并前,还需进行区块信息中数字签名的验证。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911251592.3A CN111130790B (zh) | 2019-12-09 | 2019-12-09 | 基于区块链节点网络的共识出块方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911251592.3A CN111130790B (zh) | 2019-12-09 | 2019-12-09 | 基于区块链节点网络的共识出块方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111130790A true CN111130790A (zh) | 2020-05-08 |
CN111130790B CN111130790B (zh) | 2022-06-10 |
Family
ID=70497939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911251592.3A Active CN111130790B (zh) | 2019-12-09 | 2019-12-09 | 基于区块链节点网络的共识出块方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111130790B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112258326A (zh) * | 2020-12-24 | 2021-01-22 | 布比(北京)网络技术有限公司 | 一种随机出块方法及系统 |
CN112396423A (zh) * | 2021-01-20 | 2021-02-23 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、设备及存储介质 |
CN112418859A (zh) * | 2020-12-04 | 2021-02-26 | 腾讯科技(深圳)有限公司 | 区块链的共识方法及装置、电子设备和可读存储介质 |
CN112817904A (zh) * | 2021-02-22 | 2021-05-18 | 中国人民解放军93114部队 | 一种MilCAN总线动态数据时序对准方法 |
CN113783708A (zh) * | 2021-08-25 | 2021-12-10 | 山东区块链研究院 | 一种基于可靠广播的可再投票二元共识方法及装置 |
CN113923275A (zh) * | 2021-10-11 | 2022-01-11 | 卓尔智联(武汉)研究院有限公司 | 区块链协商方法、电子设备及计算机可读存储介质 |
CN112817904B (zh) * | 2021-02-22 | 2024-05-17 | 中国人民解放军93114部队 | 一种MilCAN总线动态数据时序对准方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445711A (zh) * | 2016-08-28 | 2017-02-22 | 杭州云象网络技术有限公司 | 一种应用于区块链的拜占庭容错共识方法 |
CN108377206A (zh) * | 2018-03-12 | 2018-08-07 | 众安信息技术服务有限公司 | 用于配置共识算法的方法、装置及计算机可读存储介质 |
WO2018209542A1 (zh) * | 2017-05-16 | 2018-11-22 | 北京大学深圳研究生院 | 一种用于去中心化域名系统的共识方法 |
CN109409887A (zh) * | 2018-10-23 | 2019-03-01 | 深圳区块大陆科技有限公司 | 实现区块链共识机制的方法 |
CN109427012A (zh) * | 2017-08-22 | 2019-03-05 | 汇链丰(北京)科技有限公司 | 一种基于区块链的交易和验证方法 |
CN109543075A (zh) * | 2018-11-14 | 2019-03-29 | 全链通有限公司 | 区块生成方法和系统 |
CN109784885A (zh) * | 2018-12-29 | 2019-05-21 | 杨鉴 | 一种基于权益的区块链投票共识方法及系统 |
CN109951534A (zh) * | 2019-02-28 | 2019-06-28 | 北京柏链基石科技有限公司 | 一种共识方法、装置和系统 |
-
2019
- 2019-12-09 CN CN201911251592.3A patent/CN111130790B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445711A (zh) * | 2016-08-28 | 2017-02-22 | 杭州云象网络技术有限公司 | 一种应用于区块链的拜占庭容错共识方法 |
WO2018209542A1 (zh) * | 2017-05-16 | 2018-11-22 | 北京大学深圳研究生院 | 一种用于去中心化域名系统的共识方法 |
CN109427012A (zh) * | 2017-08-22 | 2019-03-05 | 汇链丰(北京)科技有限公司 | 一种基于区块链的交易和验证方法 |
CN108377206A (zh) * | 2018-03-12 | 2018-08-07 | 众安信息技术服务有限公司 | 用于配置共识算法的方法、装置及计算机可读存储介质 |
CN109409887A (zh) * | 2018-10-23 | 2019-03-01 | 深圳区块大陆科技有限公司 | 实现区块链共识机制的方法 |
CN109543075A (zh) * | 2018-11-14 | 2019-03-29 | 全链通有限公司 | 区块生成方法和系统 |
CN109784885A (zh) * | 2018-12-29 | 2019-05-21 | 杨鉴 | 一种基于权益的区块链投票共识方法及系统 |
CN109951534A (zh) * | 2019-02-28 | 2019-06-28 | 北京柏链基石科技有限公司 | 一种共识方法、装置和系统 |
Non-Patent Citations (2)
Title |
---|
STEFANOS LEONARDOS ET AL: "Weighted Voting on the Blockchain: Improving Consensus in Proof of Stake Protocols", 《 2019 IEEE INTERNATIONAL CONFERENCE ON BLOCKCHAIN AND CRYPTOCURRENCY (ICBC)》, 1 July 2019 (2019-07-01) * |
高政风等: "基于DAG的分布式账本共识机制研究", 《软件学报》, 5 December 2019 (2019-12-05) * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112418859A (zh) * | 2020-12-04 | 2021-02-26 | 腾讯科技(深圳)有限公司 | 区块链的共识方法及装置、电子设备和可读存储介质 |
CN112258326A (zh) * | 2020-12-24 | 2021-01-22 | 布比(北京)网络技术有限公司 | 一种随机出块方法及系统 |
CN112396423A (zh) * | 2021-01-20 | 2021-02-23 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、设备及存储介质 |
CN112817904A (zh) * | 2021-02-22 | 2021-05-18 | 中国人民解放军93114部队 | 一种MilCAN总线动态数据时序对准方法 |
CN112817904B (zh) * | 2021-02-22 | 2024-05-17 | 中国人民解放军93114部队 | 一种MilCAN总线动态数据时序对准方法 |
CN113783708A (zh) * | 2021-08-25 | 2021-12-10 | 山东区块链研究院 | 一种基于可靠广播的可再投票二元共识方法及装置 |
CN113923275A (zh) * | 2021-10-11 | 2022-01-11 | 卓尔智联(武汉)研究院有限公司 | 区块链协商方法、电子设备及计算机可读存储介质 |
CN113923275B (zh) * | 2021-10-11 | 2023-11-28 | 卓尔智联(武汉)研究院有限公司 | 区块链协商方法、电子设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111130790B (zh) | 2022-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111130790B (zh) | 基于区块链节点网络的共识出块方法 | |
CN109544334B (zh) | 一种网络可扩展性区块链实现方法 | |
CN109951474B (zh) | 一种实现区块链共识出块的方法 | |
CN110868441A (zh) | 区块链公链的维护方法、装置、节点及区块链公链 | |
CN109522362A (zh) | 基于区块链数据的非完全数据同步方法、系统及设备 | |
CN113347164B (zh) | 基于区块链的分布式共识系统及方法、设备、存储介质 | |
CN110855432B (zh) | 基于可验证随机函数分配验证者奖励的异步bft&dpos共识机制 | |
CN103781081B (zh) | 基于机会共享的无线虚拟化资源分配方法 | |
CN110599179B (zh) | 一种基于区块链系统的风险控制方法及相关设备 | |
Yu et al. | Efficient link scheduling in wireless networks under Rayleigh-fading and multiuser interference | |
CN110555079B (zh) | 数据处理方法、装置、设备以及存储介质 | |
CN109035011A (zh) | 一种区块链dag宽度的控制方法与系统 | |
WO2022267715A1 (zh) | 一种预言机节点筛选方法、装置、存储介质及电子装置 | |
CN110298657A (zh) | 一种区块链共识方法、相关装置及系统 | |
CN114584577B (zh) | 一种处理数据的区块链分片异步共识方法及系统 | |
CN111131184A (zh) | 一种区块链共识机制的自主调节方法 | |
CN113014635A (zh) | 区块链系统的节点类型划分方法、装置及区块链系统 | |
CN114372589A (zh) | 一种联邦学习方法及相关装置 | |
CN114615281B (zh) | 基于小规模委员会的区块链出块方法及PoS协议确认方法 | |
Messias et al. | Selfish & opaque transaction ordering in the Bitcoin blockchain: the case for chain neutrality | |
CN114745131A (zh) | 一种区块链的pbft改进共识算法 | |
CN113645278B (zh) | 一种区块链的跨链消息传输方法、设备、存储介质 | |
Fadda et al. | Consensus formation on heterogeneous networks | |
CN107113323B (zh) | 一种数据存储方法、装置和系统 | |
CN109391643A (zh) | 区块链轻量化处理方法、区块链节点及存储介质 |
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 |