首页 / 专利库 / 资料储存系统 / 分布式账本 / 区块链 / 区块头 / 基于一致性哈希算法的区块链共识算法和系统

基于一致性哈希算法链共识算法和系统

阅读:1035发布:2020-07-09

专利汇可以提供基于一致性哈希算法链共识算法和系统专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种基于一致性哈希 算法 的 区 块 链 共识算法和系统,包括:哈希环生成步骤,以Th-M时刻区块链网络所有 节点 N的数字证书序列号S所生成的序列号合集Ce(h-M),通过一致性 哈希算法 得到哈希环R(h-M);映射 位置 获取步骤,以Th+Δt时刻的待建区块Bh+1的 区块头 数据获得哈希 摘要 HD(h+1),通过一致性哈希算法得到哈希环R(h-M)上的映射位置Lh+1;创建节点获取步骤,以映射位置Lh+1所对应的数字证书序列号SI得到节点NI,以节点NI创建区块Bh+1并向该区块链网络广播区块Bh+1。,下面是基于一致性哈希算法链共识算法和系统专利的具体信息内容。

1.一种基于一致性哈希算法链共识算法,其特征在于,包括:
哈希环生成步骤,以Th-M时刻区块链网络所有节点N的数字证书序列号S所生成的序列号合集Ce(h-M),通过一致性哈希算法得到哈希环R(h-M);
映射位置获取步骤,以Th+Δt时刻待建的区块Bh+1的区块头数据获得哈希摘要HD(h+1),通过一致性哈希算法得到哈希环R(h-M)上的映射位置Lh+1;
创建节点获取步骤,以映射位置Lh+1所对应的数字证书序列号SI得到节点NI,以节点NI创建区块Bh+1并向该区块链网络广播区块Bh+1;
其中,h、I、M为正整数,M<h,Th-M为区块Bh-M的创建时刻,Th为当前时刻,Δt为一个区块的创建时间。
2.如权利要求1所述的基于一致性哈希算法的区块链共识算法,其特征在于,所述哈希环生成步骤之前还包括:
初始链形成步骤,以区块链共识机制创建区块Bk以形成区块链在区块BM之前的所有区块,其中k为正整数,k<M。
3.如权利要求1所述的基于一致性哈希算法的区块链共识算法,其特征在于,区块Bh+1的区块头数据包括:
区块Bh的哈希值、区块Bh+1的编号、区块Bh+1的时间戳、创建时间Δt内交易的Merkle树根;其中区块Bh为当前区块。
4.如权利要求1所述的基于一致性哈希算法的区块链共识算法,其特征在于,所述创建节点获取之后还包括:
待建区块验证步骤,当节点Nj接收广播的区块Bh+1后,验证区块Bh+1的合法性,通过验证后,节点Nj接受区块Bh+1并将区块Bh+1链入区块链末尾,节点NI获得区块Bh+1的代币奖励Re(h+
1);其中j为正整数,j≠I。
5.如权利要求4所述的基于一致性哈希算法的区块链共识算法,其特征在于,代币奖励Re(h+1)=C*|Ce(h+1)|,其中C为代币系数,|Ce(h+1)|为Th+1时刻的序列号合集Ce(h+1)包含的数字证书总个数,Th+1为区块Bh+1的创建时刻。
6.一种基于一致性哈希算法的区块链共识系统,其特征在于,包括:
哈希环生成模块,用于以Th-M时刻区块链网络所有节点N的数字证书序列号S所生成的序列号合集Ce(h-M),通过一致性哈希算法得到哈希环R(h-M);
映射位置获取模块,用于以Th+Δt时刻待建的区块Bh+1的区块头数据获得哈希摘要HD(h+1),通过一致性哈希算法得到哈希环R(h-M)上的映射位置Lh+1;
创建节点获取模块,用于以映射位置Lh+1所对应的数字证书序列号SI得到节点NI,以节点NI创建区块Bh+1并向该区块链网络广播区块Bh+1;
其中,h、I、M为正整数,M<h,Th-M为区块Bh-M的创建时刻,Th为当前时刻,Δt为一个区块的创建时间。
7.如权利要求6所述的基于一致性哈希算法的区块链共识系统,其特征在于,还包括:
初始链形成模块,用于以区块链共识机制创建区块Bk以形成该区块链在区块BM之前的所有区块,其中k为正整数,k<M。
8.如权利要求6所述的基于一致性哈希算法的区块链共识系统,其特征在于,所述映射位置获取模块中,区块Bh+1的区块头数据包括:
区块Bh的哈希值、区块Bh+1的编号、区块Bh+1的时间戳、间隔时间Δt内交易的Merkle树根;其中区块Bh为当前区块。
9.如权利要求6所述的基于一致性哈希算法的区块链共识系统,其特征在于,还包括:
待建区块验证模块,用于节点Nj验证区块Bh+1;其中当节点Nj接收广播的区块Bh+1后,验证区块Bh+1的合法性,通过验证后,节点Nj接受区块Bh+1并将区块Bh+1链入区块链末尾,NI获得区块Bh+1的代币奖励Re(h+1);其中j为正整数,j≠I。
10.如权利要求9所述的基于一致性哈希算法的区块链共识系统,其特征在于,所述待建区块验证模块中,代币奖励Re(h+1)=C*|Ce(h+1)|,其中C为代币系数,|Ce(h+1)|为Th+1时刻的序列号合集Ce(h+1)包含的数字证书总个数,Th+1为区块Bh+1的创建时刻。

说明书全文

基于一致性哈希算法链共识算法和系统

技术领域

[0001] 本发明属于区块链技术领域,涉及共识协议、一致性哈希算法、CA数字证书管理。

背景技术

[0002] 区块链的一致性共识机制的目标是实现全网参与节点对“交易”合法性和交易顺序的一致确认。并且经过全网确认的历史“交易”将不能被恶意节点篡改(或很难篡改)。区块链的共识机制一直是区块链技术的研究热点。
[0003] 工作量证明(ProofofWork或称POW)共识机制的核心思想源于防止垃圾邮件的研究,之后Back提出了HashCash,首次提出了基于哈希函数的工作量证明方法。由“钟本聪”设计的POW共识可有效解决非信任的匿名节点自由进出而可能出现的女巫攻击(Sybil attack),是目前应用最广的区块链共识机制之一,包括比特币系统在内的很多区块链系统采用工POW或改进的POW。POW机制要求每个节点基于自身算解决求解复杂但验证容易的SHA256计算难题,即寻找一个合适的随机数Nonce,使得区块头部元数据与Nonce组合构成的输入计算两次SHA256哈希值H,使得H小于区块头中难度目标的设定值:即
[0004]
[0005] 其中,两次SHA256哈希计算的输入参数来自当前待建区块的区块头元数据,由于两次SHA256哈希计算的不可逆,节点不得不付出足够的算力进行Nonce的搜索,以便在尽可能短的时间内完成(1)式的计算(即比特币挖矿)。POW共识要求,“诚实”节点创建新区块(挖矿)需要耗费足够的算力,“恶意”节点的“双花”攻击需要耗费全网51%的算力才能获得足够高的攻击成功概率。POW的优点是算法简单,容错达到50%;其缺点是诚实节点的竞争“挖矿”浪费了海量的资源,据可靠数据,比特币的“挖矿”算力早已超过了全球500强计算机算力的总和。为保证比特币系统稳定,难度值被周期(每2016个块)调整,以保证区块间隔平均10分钟,某个交易的可靠确认,通常需要链接6个区块,这造成了交易的确认时间达到60分钟。并且,POW机制导致的大矿池已经威胁到了比特币系统的去中心化。
[0006] 针对POW的缺点,2011年Quantum Mechanic在Bitcointalk论坛首次提出ProofofStake(POS)共识机制,提出以节点当前权益作为该节点挖矿难度的凭证,点点币(peercoin)实现了区块生成难度与节点所占股权成反比的权益证明协议[13],由币龄和币值构成权益证明的两个因子,其核心算法为:
[0007] Hash(T,c)≤d*T.time*T.value…(2)
[0008] T表示节点尚未使用的某个交易单,c表示节点当前状态,T.time表示交易单T的拥有时间,即币龄,T.value表示交易单T可使用的币值。权益证明机制的随机搜索空间是有限的,每秒才能进行一次哈希尝试。公式2可以看出,区块的生成难度与节点拥有的某个交易单币龄成反比,与币值成反比,并且,不再采用暴力搜索的方式。由此可知,POS共识在一定程度上解决了POW共识的能耗问题,并且可以缩短区块的间隔。但是POS共识在网络同步性较差时,每轮区块创建周期会产生多个区块,极易分叉。恶意节点可以控制网络通信,有权生成区块的恶意节点可以向不同的网络分区发送不同的区块,从而形成“双花”攻击。POS共识在区块链形成初期无法保证公平性,因为少数拥有足够币龄和币值的节点更易产生区块。
[0009] Delegated ProofofStake(DPOS)共识在POS共识的基础上,将产生区块的权利进行专业化,首先以各个节点的权益作为投票权值选出一个“委员会”,由“委员会”成员轮流产生新区块,“委员会”成员必须保证90%的在线状态,DPOS共识将区块的创建权利控制在少数的权威节点,可以提高共识的效率,达到秒级确认。缺点也是明显的,当“委员会”成员成为恶意节点,产生“双花”区块时,其它节点将无能为力;DPOS也非完全的去中心化。
[0010] Practical Byzantine FaultTolerance(PBFT)共识是基于消息传递模式的一致性共识机制,在恶意节点数F小于 时可以使得系统就某个值达成共识(N表示节点总数)。所有节点经过三个阶段的网络消息传递,使得诚实节点对某个发起值达成一致。区块链应用PBFT时,每次共识周期都是主节点产生区块,避免了区块链分叉,避免了海量算力的浪费,缩短了区块间隔和交易确认周期。但是,PBFT共识过程无法应对女巫攻击(Sybil attack),恶意节点可以产生多个节点,从而使得整个网络的恶意节点数量超过 破坏一致性和安全性。由于每次的区块周期都由主节点产生,因此,PBFT共识不适合网络节点规模过大的情况,更适用于联盟链。
[0011] 一致性哈希算法于1997年被提出,目标是在动态变化的分布式系统上,实现负载(或副本分布)的均衡性、动态适应性和高效性,一致性哈希算法是在哈希算法的基础上提出的,初衷是解决分布式系统的“热点”问题。一致性哈希算法将整个哈希值空间映射成一个虚拟的圆环,整个哈希空间的取值范围为0到(232-1),哈希空间按顺时针方向组织。0点和232点是重合的。如图1所示。
[0012] 一致性哈希算法解决的经典问题是负载均衡问题,首先将所有服务器集群中的处理节点(node)计算哈希值,将每个node映射到哈希环上的确定位置,然后计算某个需要被处理的负载(data)或某个data的哈希值H(d),将H(d)的值映射到这个哈希环上,从H(d)的值开始顺时针找到的第一个node,该node即为该data的处理node。该方法适用于分布式系统环境下,node自由进出的情况,当node自由进出时,受到影响的只是该node的邻接node。容易发现,由于node哈希值的不确定性和node数量的不确定性,data很难完全在所有node间均衡。对此,提出了改进的一致性哈希算法,基于每个真实node的处理能力,为每个真实node生成对应数量的虚拟node,将虚拟node均衡映射到哈希环上,data在哈希环上的映射对应于某个虚拟node,最终处理该data的是虚拟node对应的真实node。
[0013] 目前,普遍区块链的共识协议,普遍存在以下问题:
[0014] 1、现有的区块链共识机制普遍受制于“不可能三”矛盾,但“去中心化、安全性、低能耗”是区块链技术进行推广的三个核心因素,缺一不可;
[0015] 2、公有链的完全匿名性并不适用于某些严肃应用,交易数据的安全、隐私与监管同样存在矛盾。

发明内容

[0016] 针对上述问题,本发明涉及一种基于一致性哈希算法的区块链共识算法,包括:
[0017] 初始链形成步骤,以区块链共识机制创建区块Bk以形成区块链在区块BM之前的所有区块;其中k为正整数,k<M。
[0018] 哈希环生成步骤,以Th-M时刻区块链网络所有节点N的数字证书序列号S所生成的序列号合集Ce(h-M),通过一致性哈希算法得到哈希环R(h-M);
[0019] 映射位置获取步骤,以Th+Δt时刻待建的区块Bh+1的区块头数据获得哈希摘要HD(h+1),通过一致性哈希算法得到哈希环R(h-M)上的映射位置Lh+1;
[0020] 创建节点获取步骤,以映射位置Lh+1所对应的数字证书序列号SI得到节点NI,以节点NI创建区块Bh+1并向该区块链网络广播区块Bh+1;
[0021] 待建区块验证步骤,当节点Nj接收广播的区块Bh+1后,验证区块Bh+1的合法性,通过验证后,节点Nj接受区块Bh+1并将区块Bh+1链入区块链末尾,NI获得区块Bh+1的代币奖励Re(h+1);
[0022] 其中,h、j、k、I、M为正整数,M<h,k<M,j≠I,Th-M为区块Bh-M的创建时刻,Th为当前时刻,Δt为一个区块的创建时间。
[0023] 其中区块Bh+1的区块头数据包括:区块Bh的哈希值、区块Bh+1的编号、区块Bh+1的时间戳、创建时间Δt内交易的Merkle树根,区块Bh为当前区块;代币奖励Re(h+1)=C*|Ce(h+1)|,C为代币系数,|Ce(h+1)|为Th+1时刻的序列号合集Ce(h+1)包含的数字证书总个数,Th+1为区块Bh+1的创建时刻。
[0024] 本发明还涉及一种基于一致性哈希算法的区块链共识系统,包括:
[0025] 初始链形成模块,用于以区块链共识机制创建区块Bk以形成该区块链在区块BM之前的所有区块;
[0026] 哈希环生成模块,用于以Th-M时刻区块链网络所有节点N的数字证书序列号S所生成的序列号合集Ce(h-M),通过一致性哈希算法得到哈希环R(h-M);
[0027] 映射位置获取模块,用于以Th+Δt时刻待建的区块Bh+1的区块头数据获得哈希摘要HD(h+1),通过一致性哈希算法得到哈希环R(h-M)上的映射位置Lh+1;
[0028] 创建节点获取模块,用于以映射位置Lh+1所对应的数字证书序列号SI得到节点NI,以节点NI创建区块Bh+1并向该区块链网络广播区块Bh+1;
[0029] 待建区块验证模块,用于节点Nj验证区块Bh+1;其中当节点Nj接收广播的区块Bh+1后,验证区块Bh+1的合法性,通过验证后,节点Nj接受区块Bh+1并将区块Bh+1链入区块链末尾,NI获得区块Bh+1的代币奖励Re(h+1);
[0030] 其中,h、j、k、I、M为正整数,M<h,k<M,j≠I,Th-M为区块Bh-M的创建时刻,Th为当前时刻,Δt为一个区块的创建时间。
[0031] 其中区块Bh+1的区块头的数据结构包括:区块Bh的哈希值、区块Bh+1的编号、区块Bh+1的时间戳、间隔时间Δt内交易的Merkle树根,区块Bh为当前区块;代币奖励Re(h+1)=C*|Ce(h+1)|,C为代币系数,|Ce(h+1)|为Th+1时刻的序列号合集Ce(h+1)包含的数字证书总个数,Th+1为区块Bh+1的创建时刻。
[0032] 本发明所述的基于一致性哈希算法的区块链共识系统,实现了基于一致性哈希算法的区块链共识机制,使得诚实节点产生新区块时不用耗费算力,没有牺牲去中心化和安全性优势,与比特币系统基于同样的安全性假设,解决了类似比特币系统哈希算力共识的资源浪费问题。附图说明
[0033] 图1是一致性哈希算法的原理图。
[0034] 图2是本发明的区块链数据结构的示意图。
[0035] 图3是本发明的一致性哈希计算过程的示意图。
[0036] 图4是本发明的一致性哈希计算过程的流程图

具体实施方式

[0037] 本发明利用一致性哈希算法,使得区块链网络在记账节点的竞争过程,不再消耗额外的哈希算力,而是实现了可全网验证的、随机的记账节点产生机制,记账节点产生的区块同样是受到哈希算力保护的,任何恶意节点的攻击行为,需要耗费海量哈希算力。本算法解决了区块链共识协议中的“去中心化、安全性、低能耗”矛盾问题。
[0038] 本算法引入了CA机制(CA,CertificateAuthority),也称为电子商务认证中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。CA是证书的签发机构。CA是负责签发证书、认证证书、管理已颁发证书的机关。它负责验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。通过CA避免了可能存在的女巫攻击(Sybil attack)行为。同时,CA使得区块链网络的参与节点使用经过实名注册的数字证书参与交易行为,经过CA授权的机构,可以监视区块链网络节点的交易行为。由共识协议保证,CA不会对区块链数据安全构成威胁,因此,CA的引入,结合本发明所公开的共识机制,解决了公有链技术领域的“隐私、数据安全、监管”之间的矛盾问题。如图2所示,本发明沿用交易类型区块链的基本结构(类似比特币交易单的数据结构和区块结构),包含区块头、区块体,区块头的数据结构见表1,区块体的数据结构见表2:
[0039]名称 描述
Pre-Hash 上一区块哈希
No.X 当前区块编号
Timestamp 区块时间戳
TransMerkleRoot 交易的Merkle树根
CertMerkleRoot CA数字证书的Merkle树根
BaseCoinSig 代币奖励的数字签名
[0040] 表1区块头的数据结构
[0041]名称 描述
Transaction-num 包含的交易数量
Transaction 依据交易时间戳排序的交易单信息
Cert-num CA数字证书个数
Cert-serialNums 包含的所有CA数字证书的序列号
CoinBase-Trans 代币奖励交易单
[0042] 表2区块体的数据结构
[0043] 本发明构成的区块链沿用P2P的网络结构,采用广播的方式发布、传递交易单和区块。为避免女巫攻击(Sybil attack)影响公平性,本发明要求区块链网络参与节点采用唯一的公私钥地址参与交易,摒弃比特币交易采用的随机公私钥,唯一的公私钥地址采用PKI/CA体系管理,即区块链参与节点首先在CA中心注册获得合法的数字证书(数字证书中包含公钥,私钥在证书之外由参与节点采用本地隐私管理的方式保存),CA中心提供基于数字证书的查询功能,并可验证数字证书合法性。
[0044] 本发明通过算法保证了CA中心对形成的区块链网络及区块链数据结构不具有任何特殊管理和控制权限,CA机制不会引入任何额外的区块链方面的安全问题。
[0045] 竞争模式的共识机制,为区块链技术体系提供了算法之外的稳定性和健壮性,基于此,本共识机制依然采用竞争模式的共识,但是并非依靠“算力”竞争,而是以伪随机的方式参与竞争,与“博彩”的思想接近,竞争的目标依然是“建块权利”及内含的“代币奖励”,获得代币奖励的方式是基于一致性哈希算法的随机的“博彩”中奖机制。
[0046] 每个参与节点通过CA中心注册获得唯一的数字证书,用该证书对应的公私钥完成交易过程的签名及验签。
[0047] 本算法的安全性建立在以下假设的基础之上:
[0048] 假设1:非对称秘钥算法是公开的,在已知公钥的情况下,通过算法求逆破解私钥或随机尝试破解私钥都是不可行的,伪造数字签名是不可行的。
[0049] 假设2:原文通过公开的哈希摘要算法生成原文摘要,通过原文哈希摘要,推算原文是不可行的。
[0050] 假设3:区块链网络内诚实节点的数量超过50%,如果非诚实节点数量小于50%时,整个区块链系统将会是无价值、无意义的,这对非诚实节点也是不利的。
[0051] 假设4:最长的区块链是最安全且正确的。
[0052] 假设5:一致性哈希算法哈希环有足够的空间容纳足够多的“节点”,并且保证任何节点在哈希环上的映射不会重叠,且一致性哈希的计算过程求逆是不可行的。
[0053] 其中,前4个假设也是比特币安全性保证的基石,第5个假设是一致性哈希算法的基本要素,因此,本算法的安全性是没有苛刻的前提条件的,建立在基于密码学安全性的基本保障之上,本算法中提到的所有相关名称的算法都是建立在以上四个假设基础之上。在以上5个安全性假设的基础上,本发明不对CA进行任何安全性假设。本发明引入CA,不会由此带来任何额外的区块链数据安全性问题。通过算法及协议保证了CA管理机构对区块链不具有任何特殊的控制或操作权限。
[0054] 一、新区块的创建
[0055] 以当前时刻Th时的区块链高度为h,区块链的当前区块(即末尾区块)为区块Bh,其编号为h,经过时间Δt后达到Th+1时刻,将在区块Bh后链接的编号为h+1的区块Bh+1,以区块Bh+1为待建区块,即在Th+1时刻创建新区块Bh+1,这里Th+1=Th+Δt,其中Δt为区块的创建时间,Δt的大小可以进行调整,Δt的取值由网络带宽、单位时间的申请交易量等因素确定。如图3、图4所示,区块Bh+1的创建过程包括如下步骤:
[0056] 步骤S11,假设Th时刻结束时区块链网络的节点总数为n,在Th时刻结束后的创建时间Δt内,每个节点Ni广播自己的数字证书序列号Si,并收集区块链网络内的其它节点N的数字证书序列号S,每个节点Ni验证数字证书序列号S的正确性并转发,这里转发的目的是使得所有节点尽可能完全的收集其它节点广播的数字证书序列号,每个节点收到别的节点广播的数字证书序列号之后,会与本节点已经保存的数字证书序列号进行匹配,如果发现新的序列号在本地没有保存,就会保存在本地的待建区块中并广播出去,反之就不再保存而只是广播出去;在创建时间Δt结束时,即Th+1时刻时,每个节点N将收集到的所有数字证书序列号S依据数字顺序排序,生成序列号集合Ce(h+1){S1,S2,……,Sn},使用序列号集合Ce(h+1)生成Cert Merkle树,写入待建区块Bh+1的区块头和区块体数据结构中。
[0057] 步骤S12,在Th时刻结束后的创建时间Δt内,每个节点Ni可以发布新交易单并广播,每个节点Ni接收网络上的新交易单,验证新交易单的正确性并转发。在创建时间Δt结束时,即Th+1时刻时,每个节点Ni将收集到的所有新交易单依据交易单的哈希摘要进行排序,生成Trans Merkle树,写入待建区块Bh+1的区块头和区块体的数据结构中。
[0058] 步骤S13,假设Th-M时刻结束时区块链网络的节点总数为m,这里的Th-M时刻是创建第h-M个区块Bh-M的时刻;在创建时间Δt结束时,即Th+1时刻时,每个节点Ni以当前区块链高度h之前的第h-M个区块Bh-M的区块体内记录的序列号合集Ce(h-M){S1,S2,……,Sm},利用一致性哈希算法计算集合Ce(h-M)中所有节点N在哈希环上的映射位置,将每个Si视为一致性哈希算法中的服务器集群中的处理节点(node),形成集合Ce(h-M)在哈希环上的映射,记为R(h-M)环。
[0059] 步骤S14,在Th+1时刻结束时,每个区块链节点Ni以当前待建区块Bh+1区块头所包含的区块Bh的哈希值(Pre-Hash)、区块Bh+1的编号(No.h+1)、区块Bh+1的时间戳(Timestamp)、创建时间Δt内交易的Merkle树根(Trans Merkle Root)作为输入,计算区块Bh+1的哈希摘要HD(h+1),将哈希摘要HD(h+1)视为一致性哈希算法中需要被处理的负载(data),通过一致性哈希算法计算data在哈希环R(h-M)的映射位置L(h-M),找到该映射位置L(h-M)对应的处理node的数字证书序列号SI。
[0060] 步骤S15,以数字证书序列号SI对应的节点NI为区块Bh+1的创建节点,获得区块Bh+1的创建权利,进入创建区块Bh+1的过程,将代币奖励交易单的输出地址指向其数字证书序列号SI对应的公钥地址,将代币奖励交易单数据写入区块Bh+1的区块体,通过哈希摘要运算获得该代币奖励交易单的哈希摘要Hm,并用数字证书序列号SI对应的私钥形成哈希摘要Hm的数字签名SIGI(Hm),将SIGI(Hm)写入区块Bh+1的区块头,节点NI将区块Bh+1广播到整个区块链网络。
[0061] 步骤S16,其它节点Nj接收到广播的区块Bh+1,执行以下独立验证:
[0062] 验证1:验证区块Bh+1包含的交易单的正确性;
[0063] 验证2:验证区块Bh+1的区块头、区块体其它数据项的正确性和完整性;
[0064] 验证3:验证区块Bh+1中包含的代币奖励交易单的输出指向地址与当前区块链末尾的区块Bh中包含的代币奖励交易单输出指向地址不相同(为了避免攻击行为,不允许连续两个区块的奖励交易单发送给同一个数字证书上的公钥地址);
[0065] 验证4:重新计算区块Bh+1的哈希摘要HD(h+1)和R(h-M)环,以及对应的哈希环上的映射位置L(h-M),验证L(h-M)与本节点在待建区块计算的L(h-M)是否一致;
[0066] 验证5:验证该区块Bh+1的代币奖励交易单输出指向公钥地址与L(h-M)对应节点数字证书序列号SI的公钥地址是否一致;
[0067] 验证6:验证本节点的数字证书序列号Sj是否包含在新建区块的区块体内;
[0068] 验证7:验证区块Bh+1的代币奖励交易单的数字签名正确性;
[0069] 当以上所有验证通过后,该节点Nj接受新区块Bh+1并将区块Bh+1链入区块链末尾,并开始下一个区块Bh+2的竞争创建过程。
[0070] 步骤S17,节点NI获得区块Bh+1的代币奖励Re(h+1),其中代币奖励Re(h+1)通过公式3获得:
[0071] Re(h+1)=C*|Ce(h+1)|    (3)
[0072] 公式3中C为代币系数,|Ce(h+1)|为区块Bh+1的序列号合集Ce(h+1)包含的数字证书的总个数;在通常情况下,区块Bh+1中包含的代币奖励,需要再链接多个区块(6个或6个以上)之后,才能被全网确认生效并使用,这样做的目的是避免恶意节点的作弊行为,以及避免区块链短暂分叉造成的奖励失效;新区块之后链接的区块数越多,发生以上两种情况的概率就越低;即节点NI在创建区块Bh+6时才获得区块Bh+1的代币奖励Re(h+1),也就是节点NI在Th+6时刻才获得区块Bh+1的代币奖励Re(h+1),但本发明并不以此为限。
[0073] 为叙述方便,以上步骤S11至步骤S17的一致性哈希计算过程称为AW计算。
[0074] 二、初始链的形成
[0075] 从上述区块创建过程可知,最初的编号是1至M的区块内是无法产生代币奖励交易单的,所以编号1至M的区块体内无法包含其它的任何交易单,也就是说,编号1至M的区块无法实现一致性哈希的共识过程,这些区块的区块体内只能包含所有节点的数字证书序列号集合,因此在产生区块编号1至M之间的区块时,需要采用其它的共识机制,例如采用POW共识,每个节点通过对确定难度值哈希值的随机碰撞,产生全网共识,将每个节点广播的数字证书列表在编号1至M的区块内形成一致的记录过程。当然也可采用其它的共识机制,如POS共识、DPOS共识、PBFT共识等,或者采用线下的共识方式,但本发明并不以此为限。
[0076] 编号第M+1号的区块BM+1只包含一个代币奖励交易单,一致性哈希算法计算的输入为区块BM的哈希值(Pre-Hash)、区块BM+1的编号(No.M+1)、区块BM+1的时间戳(Timestamp)、区块BM+1创建时间内的交易的Merkle树根(Transaction Merkle Root),其中Transaction Merkle Root包含的交易数据为空。此后,从第M+2号区块BM+2开始,每个区块应用上述AW计算的创建过程和验证过程。
[0077] 三、验证4的副作用及可选的改进策略
[0078] 不难发现,步骤S16中的区块验证4是一个“过分”严格的验证,该验证的存在,可能会造成区块Bh+1不能成功创建。
[0079] 当区块链的整体网络环境不稳定时,不能保证每个节点在时间Δt内收到完全一致的交易单,但是每个节点收到的交易单都是合法的。此时,可能会造成任何一个节点在进行AW计算时,其结果都是指向某个对手节点,造成了当前区块Bh+1没有任何一个节点能作为创建节点。对于该问题,可以考虑的方式包括:
[0080] 1、整个系统放弃区块验证4,当区块链网络规模足够大,诚实节总数占比50%以上时,造成的险是可控的。在没有验证4的情况下,恶意节点对新区块的创建权利进行攻击(在新区块中,恶意节点自己的交易单中加入随机值,进行暴力碰撞)需要耗费海量算力,且区块链网络节点数量越大,恶意节点耗费的算力就会越多,但是诚实节点产生新区块却不需要耗费算力。这种情况下,诚实节点的新区块会更快的在区块链网络内广播,更容易被区块链网络中的多数节点接受。由此可知,恶意节点攻击成功率仍是极低的。
[0081] 但是,如果没有验证4,在一个新区块的创建时间Δt内,多个节点可能会生成多个合法的新区块,这将导致区块链的临时分叉。由于每个分叉在每个时间Δt都会固定产生一个新的区块,因此,与POW共识不同的是,在CBH-Consensus共识机制下,多个分叉是不能通过竞争长度来“获胜”的。因此,在没有验证4的情况下,在新块创建过程的步骤5中需加入验证8以合并多个分支。
[0082] 验证8:当节点Nj从区块链网络接收到区块Bh+1时,将验证是否发生分叉。如果发生分叉,节点Nj将会下载多个分叉,当前节点对每个分叉进行以下计算:
[0083]
[0084] b表示分支块的数量,i表示当前区块编号,NumTi表示当前区块中包含的交易的总数量,ownTi表示在当前区块中由代币奖励获得者“签名转发”的交易单总数量,Re(i)表示当前块中的“代币”奖励交易单中包含的“代币”数量。比较每个分支的BranchWeight值,最高值的分支是成为当前多个分叉的获胜者,如果BranchWeight最高的分叉多于一个,则当前节点随机选择其中的一个分叉作为获胜分叉,此时网络中仍然暂时存在多个分叉。在下一个区块创建周期中,节点将继续按公式4比较每个分叉的BranchWeight值,直到只有一个分支为止。
[0085] 2、保留验证4,这在小规模网络环境及节点数量较少时是可行的。通过调整区块的创建时间Δt,调整网络的运行参数,可以使得每个节点在每个创建时间Δt内收到的交易单数据不一致的概率降低。如果发生异常情况,仍然造成了某个新区块创建者不能确定时,可以延长创建时间Δt,然后,每个节点随机将部分自己收到的交易单进行广播或转发,这样,每个节点将会最终获得一致的交易单数据。这在小规模的网络环境是可行的,当区块链节点数超过某个阈值时,此算法将会造成网络通信负载提高。
[0086] 四、公平性改进
[0087] 为了叙述方便,本算法在叙述过程中忽略了一致性哈希算法存在的公平性问题。将所有的序列号集合Ce{S1,S2,……,Sn}映射到一致性哈希环上后,不能保证每个数字证书分得的哈希区间长度完全一致,而每个哈希区间长度代表了节点的竞争获胜概率。因此,本算法无法保证每次的哈希区间长度完全公平,但是,通过引入确定的、变化的“扰动”,可以避免持续的不公平性。例如,将每个数字证书序列号附加上当前所在区块的时间戳构成一个新的集合Ce{S1+T,S2+T,……,Sn+T},将该集合的每个元素哈希值作为一致性哈希的node,可以使得每次计算获得的哈希环节点映射发生不可预测的随机变化,这样就避免了持续的“中奖”概率不均衡性,显然,这样的确定“扰动”不会影响本发明所涉及的算法的正确性和可验证性。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈