一种区块链共识方法及客户端、背书节点、排序节点技术

技术编号:25528777 阅读:92 留言:0更新日期:2020-09-04 17:17
本发明专利技术公开了一种区块链共识方法及客户端、背书节点、排序节点,该方法包括客户端生成交易提案,从背书节点列表中确定出背书节点,对交易提案进行签名,并将签名后的交易提案发送给背书节点,在接收到背书节点的响应消息且验证响应消息的签名通过后生成交易信息,对交易信息进行签名,向排序节点发送签名后的交易信息。客户端先从背书节点列表中选出背书节点,然后再向被选中的背书节点发送交易提案进行背书,由于每次发送交易提案都是从多个背书节点中随机选取背书节点进行背书,降低了中心化程度,保护了背书节点的身份,增强了系统的安全性。

【技术实现步骤摘要】
一种区块链共识方法及客户端、背书节点、排序节点
本专利技术涉及区块链
,尤其涉及一种区块链共识方法及客户端、背书节点、排序节点。
技术介绍
区块链本质上是一个分布式账本系统,跟其他分布式系统一样,最核心的问题就是如何在去中心、弱信任的系统中让所有节点达成一致,即共识问题。解决区块链共识问题的共识机制便是区块链的核心技术。目前区块链主流的共识机制主要有三种:工作量证明(POW)、权益证明(POS)和实用拜占庭容错(PBFT)。一般来说,共识机制主要考虑三方面问题:安全性、效率和能耗。POW即比特币所使用的共识机制,需要通过“挖矿”产生新区块,效率低、能耗高,POS对其进行了改进,提高了效率,降低了能耗,但安全性略低于POW。PBFT虽然效率极高,但只适用于系统节点数较少的场景。与以上三种不同,HyperledgerFabric采用了一种新的机制来实现共识。Fabric的共识机制主要分三步:背书、排序和验证,其中背书和验证由背书节点(Endorser)执行,确保交易的合法性;排序由排序节点(Orderer)执行,确保区块中交易顺序的一致。为了便于客户端的识别和认证,背书节点在一开始便需明确指定,其身份在链上公开,导致其容易成为攻击目标;而每个背书节点都要对所有交易进行验证,又导致其成为整个系统交易处理速度的瓶颈。因此,当联盟中参与方较多、交易量较高时,原有的共识机制可能会影响系统的交易处理速度,成为联盟扩大的障碍。
技术实现思路
本专利技术实施例提供一种区块链共识方法及客户端、背书节点、排序节点,用以实现对背书节点的身份保护,提高了系统的安全性,提高了交易处理效率。第一方面,本专利技术实施例提供一种区块链共识方法,包括:客户端生成交易提案,所述交易提案包括交易数据;所述客户端从背书节点列表中确定出背书节点;所述客户端对所述交易提案进行签名,并将签名后的所述交易提案发送给所述背书节点,以使所述背书节点对所述交易提案进行背书;所述客户端在接收到所述背书节点的响应消息且验证所述响应消息的签名通过后生成交易信息;所述响应消息包括所述背书节点模拟执行所述交易提案的第一执行结果;所述交易信息包括所述交易提案和所述第一执行结果;所述客户端对所述交易信息进行签名,向排序节点发送签名后的所述交易信息,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。上述技术方案中,客户端先从背书节点列表中选出一个背书节点,然后再向被选中的背书节点发送交易提案进行背书,由于每次发送交易提案都是从多个背书节点中随机选取背书节点进行背书,降低了中心化程度,保护了背书节点的身份,增强了系统的安全性;且由于每笔交易都只发送给一个背书节点进行背书,使得多个背书节点可以并行处理不同的交易,进而使得系统不会因为联盟成员的增加而出现性能瓶颈,提高了交易处理效率。可选的,所述客户端从所述背书节点列表中确定出背书节点,包括:所述背书节点为一个时,所述客户端根据所述交易提案的哈希值、前一个区块的区块内容的哈希值和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。可选的,所述客户端从所述背书节点列表中确定出背书节点,包括:所述客户端根据所述前一个区块的区块内容的哈希值、所述交易提案所属的机构标识和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。可选的,所述客户端从所述背书节点列表中确定出背书节点,包括:所述客户端从所述背书节点列表中确定出预设比例数量的背书节点。可选的,所述第一执行结果为所述背书节点模拟执行所述交易提案后生成的基于当前账本状态读写集。第二方面,本专利技术实施例提供一种区块链共识方法,包括:背书节点获取客户端发送的签名后的交易提案,所述交易提案包括交易数据;所述背书节点为所述客户端从背书节点列表中确定的;所述背书节点在对所述签名验证通过后,确定自身是否为所述客户端确定的背书节点,若是,则模拟执行所述交易提案后得到第一执行结果;所述背书节点生成响应消息并进行签名,向所述客户端发送签名后的所述响应消息,以使所述客户端根据所述响应消息生成交易信息后发送给排序节点,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态;所述响应消息包括所述第一执行结果。可选的,所述背书节点模拟执行所述交易提案后得到第一执行结果,包括:所述背书节点模拟执行所述交易提案,生成基于当前账本状态的读写集;所述背书节点将所述基于当前账本状态的读写集确定为所述第一执行结果。第三方面,本专利技术实施例提供一种区块链共识方法,包括:排序节点获取客户端发送的签名后的交易信息,所述交易信息包括交易提案和第一执行结果;所述交易信息为所述客户端在向确定的背书节点发送交易提案且接收到所述背书节点发送的所述第一执行结果后根据所述交易提案和所述第一执行结果生成的;所述第一执行结果为所述背书节点模拟执行所述交易提案得到的;所述排序节点将所述交易信息放入队列中进行排序;所述排序节点确定将所述交易信息放入所述队列的时间大于时间阈值或所述队列中的交易数量大于数量阈值后,将所述交易信息打包成区块;所述排序节点对所述区块签名后,将签名后的所述区块广播给区块链中的节点进行共识,并在共识完成后使用所述第一执行结果更新账本状态。第四方面,本专利技术实施例提供一种客户端,包括:处理单元,用于生成交易提案,所述交易提案包括交易提案;从背书节点列表中确定出背书节点;对所述交易提案进行签名;发送单元,用于并将签名后的所述交易提案发送给所述背书节点,以使背书节点对所述交易提案进行背书;所述处理单元还用于在接收到所述背书节点的响应消息且验证所述响应消息的签名通过后生成交易信息;所述响应消息包括所述背书节点模拟执行所述交易提案的第一执行结果;所述交易信息包括所述交易提案和所述第一执行结果;对所述交易信息进行签名;所述发送单元还用于向排序节点发送签名后的所述交易信息,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。可选的,所述处理单元具体用于:所述背书节点为一个时,根据所述交易提案的哈希值、前一个区块的区块内容的哈希值和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。可选的,所述处理单元具体用于:根据所述前一个区块的区块内容的哈希值、所述交易提案所属的机构标识和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出本文档来自技高网...

【技术保护点】
1.一种区块链共识方法,其特征在于,包括:/n客户端生成交易提案,所述交易提案包括交易数据;/n所述客户端从背书节点列表中确定出背书节点;/n所述客户端对所述交易提案进行签名,并将签名后的所述交易提案发送给所述背书节点,以使所述背书节点对所述交易提案进行背书;/n所述客户端在接收到所述背书节点的响应消息且验证所述响应消息的签名通过后生成交易信息;所述响应消息包括所述背书节点模拟执行所述交易提案的第一执行结果;所述交易信息包括所述交易提案和所述第一执行结果;/n所述客户端对所述交易信息进行签名,向排序节点发送签名后的所述交易信息,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。/n

【技术特征摘要】
1.一种区块链共识方法,其特征在于,包括:
客户端生成交易提案,所述交易提案包括交易数据;
所述客户端从背书节点列表中确定出背书节点;
所述客户端对所述交易提案进行签名,并将签名后的所述交易提案发送给所述背书节点,以使所述背书节点对所述交易提案进行背书;
所述客户端在接收到所述背书节点的响应消息且验证所述响应消息的签名通过后生成交易信息;所述响应消息包括所述背书节点模拟执行所述交易提案的第一执行结果;所述交易信息包括所述交易提案和所述第一执行结果;
所述客户端对所述交易信息进行签名,向排序节点发送签名后的所述交易信息,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。


2.如权利要求1所述的方法,其特征在于,所述客户端从所述背书节点列表中确定出背书节点,包括:
所述客户端根据所述交易提案的哈希值、前一个区块的区块内容的哈希值和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。


3.如权利要求1所述的方法,其特征在于,所述客户端从所述背书节点列表中确定出背书节点,包括:
所述客户端根据所述前一个区块的区块内容的哈希值、所述交易提案所属的机构标识和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。


4.如权利要求1所述的方法,其特征在于,所述客户端从所述背书节点列表中确定出背书节点,包括:
所述客户端从所述背书节点列表中确定出预设比例数量的背书节点。


5.如权利要求1至4任一项所述的方法,其特征在于,所述第一执行结果为所述背书节点模拟执行所述交易提案后生成的基于当前账本状态读写集。


6.一种区块链共识方法,其特征在于,包括:
背书节点获取客户端发送的签名后的交易提案,所述交易提案包括交易数据;所述背书节点为所述客户端从背书节点列表中确定的;
所述背书节点在对所述签名验证通过后,确定自身是否为所述客户端确定的背书节点,若是,则模拟执行所述交易提案后得到第一执行结果;
所述背书节点生成响应消息并进行签名,向所述客户端发送签名后的所述响应消息,以使所述客户端根据所述响应消息生成交易信息后发送给排序节点,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态;所述响应消息包括所述第一执行结果。


7.如权利要求6所述的方法,其特征在于,所述背书节点模拟执行所述交易提案后得到第一执行结果,包括:
所述背书节点模拟执行所述交易提案,生成基于当前账本状态的读写集;
所述背书节点将所述基于当前账本状态的读写集确定为所述第一执行结果。


8.一种区块链共识方法,其特征在于,包括:
排序节点获取客户端发送的签名后的交易信息,所述交易信息包括交易提案和第一执行结果;所述交易信息为所述客户端在向确定的背书节点发送交易提案且接收到所述背书节点发送的所述第一执行结果后根据所述交易提案和所述第一执行结果生成的;所述第一执行结果为所述背书节点模拟执行所述交易提案得到的;
所述排序节点在对所述签名验证通过后将所述交易信息放入队列中进行排序;
所述排序节点确定将所述交易信息放入所述队列的时间大于时间阈值或所述队列中的交易数量大于数量阈值后,将所述交易信息打包成区块;
所述排序节点对所述区块签名后,将签名后的所述区块广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。


9.一种客...

【专利技术属性】
技术研发人员:王立邹勇林芃杨帆
申请(专利权)人:中国银联股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1