CN109842606B - 基于一致性哈希算法的区块链共识算法和系统 - Google Patents

基于一致性哈希算法的区块链共识算法和系统 Download PDF

Info

Publication number
CN109842606B
CN109842606B CN201810157280.5A CN201810157280A CN109842606B CN 109842606 B CN109842606 B CN 109842606B CN 201810157280 A CN201810157280 A CN 201810157280A CN 109842606 B CN109842606 B CN 109842606B
Authority
CN
China
Prior art keywords
block
node
hash
algorithm
consistent
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
Application number
CN201810157280.5A
Other languages
English (en)
Other versions
CN109842606A (zh
Inventor
于雷
赵晓芳
金岩
胡斌
王晓诗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201810157280.5A priority Critical patent/CN109842606B/zh
Publication of CN109842606A publication Critical patent/CN109842606A/zh
Application granted granted Critical
Publication of CN109842606B publication Critical patent/CN109842606B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本发明涉及一种基于一致性哈希算法的区块链共识算法和系统,包括:哈希环生成步骤,以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

Description

基于一致性哈希算法的区块链共识算法和系统
技术领域
本发明属于区块链技术领域,涉及共识协议、一致性哈希算法、CA数字证书管理。
背景技术
区块链的一致性共识机制的目标是实现全网参与节点对“交易”合法性和交易顺序的一致确认。并且经过全网确认的历史“交易”将不能被恶意节点篡改(或很难篡改)。区块链的共识机制一直是区块链技术的研究热点。
工作量证明(ProofofWork或称POW)共识机制的核心思想源于防止垃圾邮件的研究,之后Back提出了HashCash,首次提出了基于哈希函数的工作量证明方法。由“钟本聪”设计的POW共识可有效解决非信任的匿名节点自由进出而可能出现的女巫攻击(Sybilattack),是目前应用最广的区块链共识机制之一,包括比特币系统在内的很多区块链系统采用工POW或改进的POW。POW机制要求每个节点基于自身算力解决求解复杂但验证容易的SHA256计算难题,即寻找一个合适的随机数Nonce,使得区块头部元数据与Nonce组合构成的输入计算两次SHA256哈希值H,使得H小于区块头中难度目标的设定值:即
Figure BDA0001581831780000011
其中,两次SHA256哈希计算的输入参数来自当前待建区块的区块头元数据,由于两次SHA256哈希计算的不可逆,节点不得不付出足够的算力进行Nonce的搜索,以便在尽可能短的时间内完成(1)式的计算(即比特币挖矿)。POW共识要求,“诚实”节点创建新区块(挖矿)需要耗费足够的算力,“恶意”节点的“双花”攻击需要耗费全网51%的算力才能获得足够高的攻击成功概率。POW的优点是算法简单,容错达到50%;其缺点是诚实节点的竞争“挖矿”浪费了海量的资源,据可靠数据,比特币的“挖矿”算力早已超过了全球500强计算机算力的总和。为保证比特币系统稳定,难度值被周期(每2016个块)调整,以保证区块间隔平均10分钟,某个交易的可靠确认,通常需要链接6个区块,这造成了交易的确认时间达到60分钟。并且,POW机制导致的大矿池已经威胁到了比特币系统的去中心化。
针对POW的缺点,2011年Quantum Mechanic在Bitcointalk论坛首次提出ProofofStake(POS)共识机制,提出以节点当前权益作为该节点挖矿难度的凭证,点点币(peercoin)实现了区块生成难度与节点所占股权成反比的权益证明协议[13],由币龄和币值构成权益证明的两个因子,其核心算法为:
Hash(T,c)≤d*T.time*T.value…(2)
T表示节点尚未使用的某个交易单,c表示节点当前状态,T.time表示交易单T的拥有时间,即币龄,T.value表示交易单T可使用的币值。权益证明机制的随机搜索空间是有限的,每秒才能进行一次哈希尝试。公式2可以看出,区块的生成难度与节点拥有的某个交易单币龄成反比,与币值成反比,并且,不再采用暴力搜索的方式。由此可知,POS共识在一定程度上解决了POW共识的能耗问题,并且可以缩短区块的间隔。但是POS共识在网络同步性较差时,每轮区块创建周期会产生多个区块,极易分叉。恶意节点可以控制网络通信,有权生成区块的恶意节点可以向不同的网络分区发送不同的区块,从而形成“双花”攻击。POS共识在区块链形成初期无法保证公平性,因为少数拥有足够币龄和币值的节点更易产生区块。
Delegated ProofofStake(DPOS)共识在POS共识的基础上,将产生区块的权利进行专业化,首先以各个节点的权益作为投票权值选出一个“委员会”,由“委员会”成员轮流产生新区块,“委员会”成员必须保证90%的在线状态,DPOS共识将区块的创建权利控制在少数的权威节点,可以提高共识的效率,达到秒级确认。缺点也是明显的,当“委员会”成员成为恶意节点,产生“双花”区块时,其它节点将无能为力;DPOS也非完全的去中心化。
Practical Byzantine FaultTolerance(PBFT)共识是基于消息传递模式的一致性共识机制,在恶意节点数F小于
Figure BDA0001581831780000021
时可以使得系统就某个值达成共识(N表示节点总数)。所有节点经过三个阶段的网络消息传递,使得诚实节点对某个发起值达成一致。区块链应用PBFT时,每次共识周期都是主节点产生区块,避免了区块链分叉,避免了海量算力的浪费,缩短了区块间隔和交易确认周期。但是,PBFT共识过程无法应对女巫攻击(Sybilattack),恶意节点可以产生多个节点,从而使得整个网络的恶意节点数量超过破坏一致性和安全性。由于每次的区块周期都由主节点产生,因此,PBFT共识不适合网络节点规模过大的情况,更适用于联盟链。
一致性哈希算法于1997年被提出,目标是在动态变化的分布式系统上,实现负载(或副本分布)的均衡性、动态适应性和高效性,一致性哈希算法是在哈希算法的基础上提出的,初衷是解决分布式系统的“热点”问题。一致性哈希算法将整个哈希值空间映射成一个虚拟的圆环,整个哈希空间的取值范围为0到(232-1),哈希空间按顺时针方向组织。0点和232点是重合的。如图1所示。
一致性哈希算法解决的经典问题是负载均衡问题,首先将所有服务器集群中的处理节点(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。
目前,普遍区块链的共识协议,普遍存在以下问题:
1、现有的区块链共识机制普遍受制于“不可能三角”矛盾,但“去中心化、安全性、低能耗”是区块链技术进行推广的三个核心因素,缺一不可;
2、公有链的完全匿名性并不适用于某些严肃应用,交易数据的安全、隐私与监管同样存在矛盾。
发明内容
针对上述问题,本发明涉及一种基于一致性哈希算法的区块链共识算法,包括:
初始链形成步骤,以区块链共识机制创建区块Bk以形成区块链在区块BM之前的所有区块;其中k为正整数,k<M。
哈希环生成步骤,以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
待建区块验证步骤,当节点Nj接收广播的区块Bh+1后,验证区块Bh+1的合法性,通过验证后,节点Nj接受区块Bh+1并将区块Bh+1链入区块链末尾,NI获得区块Bh+1的代币奖励Re(h+1);
其中,h、j、k、I、M为正整数,M<h,k<M,j≠I,Th-M为区块Bh-M的创建时刻,Th为当前时刻,Δt为一个区块的创建时间。
其中区块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的创建时刻。
本发明还涉及一种基于一致性哈希算法的区块链共识系统,包括:
初始链形成模块,用于以区块链共识机制创建区块Bk以形成该区块链在区块BM之前的所有区块;
哈希环生成模块,用于以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
待建区块验证模块,用于节点Nj验证区块Bh+1;其中当节点Nj接收广播的区块Bh+1后,验证区块Bh+1的合法性,通过验证后,节点Nj接受区块Bh+1并将区块Bh+1链入区块链末尾,NI获得区块Bh+1的代币奖励Re(h+1);
其中,h、j、k、I、M为正整数,M<h,k<M,j≠I,Th-M为区块Bh-M的创建时刻,Th为当前时刻,Δt为一个区块的创建时间。
其中区块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的创建时刻。
本发明所述的基于一致性哈希算法的区块链共识系统,实现了基于一致性哈希算法的区块链共识机制,使得诚实节点产生新区块时不用耗费算力,没有牺牲去中心化和安全性优势,与比特币系统基于同样的安全性假设,解决了类似比特币系统哈希算力共识的资源浪费问题。
附图说明
图1是一致性哈希算法的原理图。
图2是本发明的区块链数据结构的示意图。
图3是本发明的一致性哈希计算过程的示意图。
图4是本发明的一致性哈希计算过程的流程图。
具体实施方式
本发明利用一致性哈希算法,使得区块链网络在记账节点的竞争过程,不再消耗额外的哈希算力,而是实现了可全网验证的、随机的记账节点产生机制,记账节点产生的区块同样是受到哈希算力保护的,任何恶意节点的攻击行为,需要耗费海量哈希算力。本算法解决了区块链共识协议中的“去中心化、安全性、低能耗”矛盾问题。
本算法引入了CA机制(CA,CertificateAuthority),也称为电子商务认证中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。CA是证书的签发机构。CA是负责签发证书、认证证书、管理已颁发证书的机关。它负责验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。通过CA避免了可能存在的女巫攻击(Sybil attack)行为。同时,CA使得区块链网络的参与节点使用经过实名注册的数字证书参与交易行为,经过CA授权的机构,可以监视区块链网络节点的交易行为。由共识协议保证,CA不会对区块链数据安全构成威胁,因此,CA的引入,结合本发明所公开的共识机制,解决了公有链技术领域的“隐私、数据安全、监管”之间的矛盾问题。如图2所示,本发明沿用交易类型区块链的基本结构(类似比特币交易单的数据结构和区块结构),包含区块头、区块体,区块头的数据结构见表1,区块体的数据结构见表2:
名称 描述
Pre-Hash 上一区块哈希
No.X 当前区块编号
Timestamp 区块时间戳
TransMerkleRoot 交易的Merkle树根
CertMerkleRoot CA数字证书的Merkle树根
BaseCoinSig 代币奖励的数字签名
表1区块头的数据结构
名称 描述
Transaction-num 包含的交易数量
Transaction 依据交易时间戳排序的交易单信息
Cert-num CA数字证书个数
Cert-serialNums 包含的所有CA数字证书的序列号
CoinBase-Trans 代币奖励交易单
表2区块体的数据结构
本发明构成的区块链沿用P2P的网络结构,采用广播的方式发布、传递交易单和区块。为避免女巫攻击(Sybil attack)影响公平性,本发明要求区块链网络参与节点采用唯一的公私钥地址参与交易,摒弃比特币交易采用的随机公私钥,唯一的公私钥地址采用PKI/CA体系管理,即区块链参与节点首先在CA中心注册获得合法的数字证书(数字证书中包含公钥,私钥在证书之外由参与节点采用本地隐私管理的方式保存),CA中心提供基于数字证书的查询功能,并可验证数字证书合法性。
本发明通过算法保证了CA中心对形成的区块链网络及区块链数据结构不具有任何特殊管理和控制权限,CA机制不会引入任何额外的区块链方面的安全问题。
竞争模式的共识机制,为区块链技术体系提供了算法之外的稳定性和健壮性,基于此,本共识机制依然采用竞争模式的共识,但是并非依靠“算力”竞争,而是以伪随机的方式参与竞争,与“博彩”的思想接近,竞争的目标依然是“建块权利”及内含的“代币奖励”,获得代币奖励的方式是基于一致性哈希算法的随机的“博彩”中奖机制。
每个参与节点通过CA中心注册获得唯一的数字证书,用该证书对应的公私钥完成交易过程的签名及验签。
本算法的安全性建立在以下假设的基础之上:
假设1:非对称秘钥算法是公开的,在已知公钥的情况下,通过算法求逆破解私钥或随机尝试破解私钥都是不可行的,伪造数字签名是不可行的。
假设2:原文通过公开的哈希摘要算法生成原文摘要,通过原文哈希摘要,推算原文是不可行的。
假设3:区块链网络内诚实节点的数量超过50%,如果非诚实节点数量小于50%时,整个区块链系统将会是无价值、无意义的,这对非诚实节点也是不利的。
假设4:最长的区块链是最安全且正确的。
假设5:一致性哈希算法哈希环有足够的空间容纳足够多的“节点”,并且保证任何节点在哈希环上的映射不会重叠,且一致性哈希的计算过程求逆是不可行的。
其中,前4个假设也是比特币安全性保证的基石,第5个假设是一致性哈希算法的基本要素,因此,本算法的安全性是没有苛刻的前提条件的,建立在基于密码学安全性的基本保障之上,本算法中提到的所有相关名称的算法都是建立在以上四个假设基础之上。在以上5个安全性假设的基础上,本发明不对CA进行任何安全性假设。本发明引入CA,不会由此带来任何额外的区块链数据安全性问题。通过算法及协议保证了CA管理机构对区块链不具有任何特殊的控制或操作权限。
一、新区块的创建
以当前时刻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的创建过程包括如下步骤:
步骤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的区块头和区块体数据结构中。
步骤S12,在Th时刻结束后的创建时间Δt内,每个节点Ni可以发布新交易单并广播,每个节点Ni接收网络上的新交易单,验证新交易单的正确性并转发。在创建时间Δt结束时,即Th+1时刻时,每个节点Ni将收集到的所有新交易单依据交易单的哈希摘要进行排序,生成Trans Merkle树,写入待建区块Bh+1的区块头和区块体的数据结构中。
步骤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)环。
步骤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
步骤S15,以数字证书序列号SI对应的节点NI为区块Bh+1的创建节点,获得区块Bh+1的创建权利,进入创建区块Bh+1的过程,将代币奖励交易单的输出地址指向其数字证书序列号SI对应的公钥地址,将代币奖励交易单数据写入区块Bh+1的区块体,通过哈希摘要运算获得该代币奖励交易单的哈希摘要Hm,并用数字证书序列号SI对应的私钥形成哈希摘要Hm的数字签名SIGI(Hm),将SIGI(Hm)写入区块Bh+1的区块头,节点NI将区块Bh+1广播到整个区块链网络。
步骤S16,其它节点Nj接收到广播的区块Bh+1,执行以下独立验证:
验证1:验证区块Bh+1包含的交易单的正确性;
验证2:验证区块Bh+1的区块头、区块体其它数据项的正确性和完整性;
验证3:验证区块Bh+1中包含的代币奖励交易单的输出指向地址与当前区块链末尾的区块Bh中包含的代币奖励交易单输出指向地址不相同(为了避免攻击行为,不允许连续两个区块的奖励交易单发送给同一个数字证书上的公钥地址);
验证4:重新计算区块Bh+1的哈希摘要HD(h+1)和R(h-M)环,以及对应的哈希环上的映射位置L(h-M),验证L(h-M)与本节点在待建区块计算的L(h-M)是否一致;
验证5:验证该区块Bh+1的代币奖励交易单输出指向公钥地址与L(h-M)对应节点数字证书序列号SI的公钥地址是否一致;
验证6:验证本节点的数字证书序列号Sj是否包含在新建区块的区块体内;
验证7:验证区块Bh+1的代币奖励交易单的数字签名正确性;
当以上所有验证通过后,该节点Nj接受新区块Bh+1并将区块Bh+1链入区块链末尾,并开始下一个区块Bh+2的竞争创建过程。
步骤S17,节点NI获得区块Bh+1的代币奖励Re(h+1),其中代币奖励Re(h+1)通过公式3获得:
Re(h+1)=C*|Ce(h+1)| (3)
公式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),但本发明并不以此为限。
为叙述方便,以上步骤S11至步骤S17的一致性哈希计算过程称为AW计算。
二、初始链的形成
从上述区块创建过程可知,最初的编号是1至M的区块内是无法产生代币奖励交易单的,所以编号1至M的区块体内无法包含其它的任何交易单,也就是说,编号1至M的区块无法实现一致性哈希的共识过程,这些区块的区块体内只能包含所有节点的数字证书序列号集合,因此在产生区块编号1至M之间的区块时,需要采用其它的共识机制,例如采用POW共识,每个节点通过对确定难度值哈希值的随机碰撞,产生全网共识,将每个节点广播的数字证书列表在编号1至M的区块内形成一致的记录过程。当然也可采用其它的共识机制,如POS共识、DPOS共识、PBFT共识等,或者采用线下的共识方式,但本发明并不以此为限。
编号第M+1号的区块BM+1只包含一个代币奖励交易单,一致性哈希算法计算的输入为区块BM的哈希值(Pre-Hash)、区块BM+1的编号(No.M+1)、区块BM+1的时间戳(Timestamp)、区块BM+1创建时间内的交易的Merkle树根(Transaction Merkle Root),其中TransactionMerkle Root包含的交易数据为空。此后,从第M+2号区块BM+2开始,每个区块应用上述AW计算的创建过程和验证过程。
三、验证4的副作用及可选的改进策略
不难发现,步骤S16中的区块验证4是一个“过分”严格的验证,该验证的存在,可能会造成区块Bh+1不能成功创建。
当区块链的整体网络环境不稳定时,不能保证每个节点在时间Δt内收到完全一致的交易单,但是每个节点收到的交易单都是合法的。此时,可能会造成任何一个节点在进行AW计算时,其结果都是指向某个对手节点,造成了当前区块Bh+1没有任何一个节点能作为创建节点。对于该问题,可以考虑的方式包括:
1、整个系统放弃区块验证4,当区块链网络规模足够大,诚实节总数占比50%以上时,造成的风险是可控的。在没有验证4的情况下,恶意节点对新区块的创建权利进行攻击(在新区块中,恶意节点自己的交易单中加入随机值,进行暴力碰撞)需要耗费海量算力,且区块链网络节点数量越大,恶意节点耗费的算力就会越多,但是诚实节点产生新区块却不需要耗费算力。这种情况下,诚实节点的新区块会更快的在区块链网络内广播,更容易被区块链网络中的多数节点接受。由此可知,恶意节点攻击成功率仍是极低的。
但是,如果没有验证4,在一个新区块的创建时间Δt内,多个节点可能会生成多个合法的新区块,这将导致区块链的临时分叉。由于每个分叉在每个时间Δt都会固定产生一个新的区块,因此,与POW共识不同的是,在CBH-Consensus共识机制下,多个分叉是不能通过竞争长度来“获胜”的。因此,在没有验证4的情况下,在新块创建过程的步骤5中需加入验证8以合并多个分支。
验证8:当节点Nj从区块链网络接收到区块Bh+1时,将验证是否发生分叉。如果发生分叉,节点Nj将会下载多个分叉,当前节点对每个分叉进行以下计算:
Figure BDA0001581831780000111
b表示分支块的数量,i表示当前区块编号,NumTi表示当前区块中包含的交易的总数量,ownTi表示在当前区块中由代币奖励获得者“签名转发”的交易单总数量,Re(i)表示当前块中的“代币”奖励交易单中包含的“代币”数量。比较每个分支的BranchWeight值,最高值的分支是成为当前多个分叉的获胜者,如果BranchWeight最高的分叉多于一个,则当前节点随机选择其中的一个分叉作为获胜分叉,此时网络中仍然暂时存在多个分叉。在下一个区块创建周期中,节点将继续按公式4比较每个分叉的BranchWeight值,直到只有一个分支为止。
2、保留验证4,这在小规模网络环境及节点数量较少时是可行的。通过调整区块的创建时间Δt,调整网络的运行参数,可以使得每个节点在每个创建时间Δt内收到的交易单数据不一致的概率降低。如果发生异常情况,仍然造成了某个新区块创建者不能确定时,可以延长创建时间Δt,然后,每个节点随机将部分自己收到的交易单进行广播或转发,这样,每个节点将会最终获得一致的交易单数据。这在小规模的网络环境是可行的,当区块链节点数超过某个阈值时,此算法将会造成网络通信负载提高。
四、公平性改进
为了叙述方便,本算法在叙述过程中忽略了一致性哈希算法存在的公平性问题。将所有的序列号集合Ce{S1,S2,……,Sn}映射到一致性哈希环上后,不能保证每个数字证书分得的哈希区间长度完全一致,而每个哈希区间长度代表了节点的竞争获胜概率。因此,本算法无法保证每次的哈希区间长度完全公平,但是,通过引入确定的、变化的“扰动”,可以避免持续的不公平性。例如,将每个数字证书序列号附加上当前所在区块的时间戳构成一个新的集合Ce{S1+T,S2+T,……,Sn+T},将该集合的每个元素哈希值作为一致性哈希的node,可以使得每次计算获得的哈希环节点映射发生不可预测的随机变化,这样就避免了持续的“中奖”概率不均衡性,显然,这样的确定“扰动”不会影响本发明所涉及的算法的正确性和可验证性。

Claims (8)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810157280.5A CN109842606B (zh) 2018-02-24 2018-02-24 基于一致性哈希算法的区块链共识算法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810157280.5A CN109842606B (zh) 2018-02-24 2018-02-24 基于一致性哈希算法的区块链共识算法和系统

Publications (2)

Publication Number Publication Date
CN109842606A CN109842606A (zh) 2019-06-04
CN109842606B true CN109842606B (zh) 2020-08-18

Family

ID=66882941

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810157280.5A Active CN109842606B (zh) 2018-02-24 2018-02-24 基于一致性哈希算法的区块链共识算法和系统

Country Status (1)

Country Link
CN (1) CN109842606B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110493198A (zh) * 2019-07-26 2019-11-22 北京工业大学 一种基于改进PBFT算法防御区块链中Sybil攻击的方法
CN111083105B (zh) * 2019-11-05 2021-06-25 湖南大学 一种基于区块链的云数据持有性验证方法及系统
CN111339089B (zh) * 2020-02-21 2023-09-22 联动优势科技有限公司 一种应用于区块链的数据存储与获取方法及装置
CN111311414B (zh) * 2020-02-27 2023-12-08 杭州云象网络技术有限公司 一种基于一致性哈希算法的区块链多方共识方法
CN111510427B (zh) * 2020-03-06 2022-02-11 杜晓楠 在i2p网络系统中缓解路径创建攻击的方法、计算机可读存储介质和i2p网络系统
CN111563277A (zh) * 2020-04-03 2020-08-21 上海坤振集成电路有限公司 一种区块链网络中的工作量证明方法以及一种区块链
CN111626735B (zh) * 2020-05-28 2020-12-22 上海逐鲨智能科技有限公司 一种数据交互系统、方法和模块
CN111866066B (zh) * 2020-06-04 2023-11-07 江苏理工学院 基于DPoS的车联网共识算法
CN111770149B (zh) * 2020-06-23 2023-02-14 江苏荣泽信息科技股份有限公司 基于分布式存储的新型联盟链系统
CN112069169B (zh) * 2020-07-30 2023-08-15 北京奇艺世纪科技有限公司 区块数据存储方法、装置、电子设备及可读存储介质
CN112257095B (zh) * 2020-11-23 2022-03-22 中电万维信息技术有限责任公司 一种联盟链共识节点的选择方法
CN112702323B (zh) * 2020-12-14 2022-06-03 杭州溪塔科技有限公司 一种区块链软件的许可签发验证方法、装置和电子设备
CN112883338B (zh) * 2021-03-01 2024-03-22 奥科塞尔控股公司 一种基于带权重的随机洗牌算法的抽签方法
CN113535849B (zh) * 2021-07-08 2023-03-07 电子科技大学 一种区块链的可扩展共识方法
CN113592656B (zh) * 2021-09-27 2021-12-28 杭州宇链科技有限公司 联盟链交易同步优化方法、计算机可读介质和电子设备
CN113610531B (zh) * 2021-10-09 2021-12-14 支付宝(杭州)信息技术有限公司 一种共识方法、区块链系统和共识节点
CN113965566B (zh) * 2021-10-11 2024-05-14 浪潮云信息技术股份公司 一种基于Header-Sig流的BFT共识算法实现方法及系统
CN114845041B (zh) * 2021-12-30 2024-03-15 齐之明光电智能科技(苏州)有限公司 一种用于纳米颗粒成像的对焦方法、装置及存储介质
CN114500046B (zh) * 2022-01-26 2024-03-15 南京晓庄学院 一种基于场域网和iota的共识方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106452785A (zh) * 2016-09-29 2017-02-22 财付通支付科技有限公司 区块链网络、分支节点及区块链网络应用方法
CN107045518A (zh) * 2016-10-18 2017-08-15 北京天德科技有限公司 一种区块链的扩展设计方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9860316B2 (en) * 2014-09-19 2018-01-02 Facebook, Inc. Routing network traffic based on social information
CN106548349B (zh) * 2016-11-02 2020-09-29 江苏通付盾科技有限公司 交易信息验证方法及系统
CN106789095B (zh) * 2017-03-30 2020-12-08 腾讯科技(深圳)有限公司 分布式系统及消息处理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106452785A (zh) * 2016-09-29 2017-02-22 财付通支付科技有限公司 区块链网络、分支节点及区块链网络应用方法
CN107045518A (zh) * 2016-10-18 2017-08-15 北京天德科技有限公司 一种区块链的扩展设计方法

Also Published As

Publication number Publication date
CN109842606A (zh) 2019-06-04

Similar Documents

Publication Publication Date Title
CN109842606B (zh) 基于一致性哈希算法的区块链共识算法和系统
Nguyen et al. A survey about consensus algorithms used in blockchain.
Zhang et al. Double-spending with a sybil attack in the bitcoin decentralized network
CN109451467B (zh) 一种基于区块链技术的车载自组织网络数据安全共享与存储系统
CN110351067B (zh) 针对主从多链的区块链共识方法
CN111988137B (zh) 一种基于门限签名和公平奖励的DPoS共识方法及其系统
CN110855432B (zh) 基于可验证随机函数分配验证者奖励的异步bft&dpos共识机制
CN110289966A (zh) 基于拜占庭容错的抗自适应攻击联盟链共识方法
CN111090892A (zh) 一种基于vrf和门限签名的区块链共识方法和装置
CN101193103B (zh) 一种分配和验证身份标识的方法及系统
CN110892674A (zh) 区块链的交易生成方法和区块链的块验证方法
CN112651830B (zh) 应用于电力资源共享网络的区块链共识方法
CN109831509B (zh) 一种用于实现相同权重随机出块的方法
CN110445603A (zh) 一种去中心化随机数生成方法
CN110445795B (zh) 一种区块链认证唯一性确认方法
Azouvi et al. Winning the caucus race: Continuous leader election via public randomness
Ge et al. Survey of consensus algorithms for proof of stake in blockchain
Yu et al. Low powered blockchain consensus protocols based on consistent hash
CN114463009B (zh) 一种用于提高大规模能源节点交易安全性的方法
CN111046439A (zh) 一种基于区块链的智能合约任务可验证方法和系统
CN114422146A (zh) 一种区块链主节点匿名排序方法
Endurthi et al. Two-tiered consensus mechanism based on proof of work and proof of stake
Liu et al. A blockchain-based cross-domain authentication management system for IoT devices
Wang et al. Consensus algorithm based on verifiable randomness
CN111566681A (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