CN111629039B - 一种区块链共识方法及客户端、背书节点、排序节点 - Google Patents

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

Info

Publication number
CN111629039B
CN111629039B CN202010427983.2A CN202010427983A CN111629039B CN 111629039 B CN111629039 B CN 111629039B CN 202010427983 A CN202010427983 A CN 202010427983A CN 111629039 B CN111629039 B CN 111629039B
Authority
CN
China
Prior art keywords
endorsement node
transaction
endorsement
execution result
client
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
CN202010427983.2A
Other languages
English (en)
Other versions
CN111629039A (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.)
China Unionpay Co Ltd
Original Assignee
China Unionpay Co Ltd
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 China Unionpay Co Ltd filed Critical China Unionpay Co Ltd
Priority to CN202010427983.2A priority Critical patent/CN111629039B/zh
Publication of CN111629039A publication Critical patent/CN111629039A/zh
Application granted granted Critical
Publication of CN111629039B publication Critical patent/CN111629039B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • General Business, Economics & Management (AREA)
  • Technology Law (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Marketing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Computer And Data Communications (AREA)

Abstract

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

Description

一种区块链共识方法及客户端、背书节点、排序节点
技术领域
本发明涉及区块链技术领域,尤其涉及一种区块链共识方法及客户端、背书节点、排序节点。
背景技术
区块链本质上是一个分布式账本系统,跟其他分布式系统一样,最核心的问题就是如何在去中心、弱信任的系统中让所有节点达成一致,即共识问题。解决区块链共识问题的共识机制便是区块链的核心技术。
目前区块链主流的共识机制主要有三种:工作量证明(POW)、权益证明(POS)和实用拜占庭容错(PBFT)。一般来说,共识机制主要考虑三方面问题:安全性、效率和能耗。POW效率低、能耗高,POS对其进行了改进,提高了效率,降低了能耗,但安全性略低于POW。PBFT虽然效率极高,但只适用于系统节点数较少的场景。
与以上三种不同,Hyperledger Fabric采用了一种新的机制来实现共识。Fabric的共识机制主要分三步:背书、排序和验证,其中背书和验证由背书节点(Endorser)执行,确保交易的合法性;排序由排序节点(Orderer)执行,确保区块中交易顺序的一致。为了便于客户端的识别和认证,背书节点在一开始便需明确指定,其身份在链上公开,导致其容易成为攻击目标;而每个背书节点都要对所有交易进行验证,又导致其成为整个系统交易处理速度的瓶颈。
因此,当联盟中参与方较多、交易量较高时,原有的共识机制可能会影响系统的交易处理速度,成为联盟扩大的障碍。
发明内容
本发明实施例提供一种区块链共识方法及客户端、背书节点、排序节点,用以实现对背书节点的身份保护,提高了系统的安全性,提高了交易处理效率。
第一方面,本发明实施例提供一种区块链共识方法,包括:
客户端生成交易提案,所述交易提案包括交易数据;
所述客户端从背书节点列表中确定出背书节点;
所述客户端对所述交易提案进行签名,并将签名后的所述交易提案发送给所述背书节点,以使所述背书节点对所述交易提案进行背书;
所述客户端在接收到所述背书节点的响应消息且验证所述响应消息的签名通过后生成交易信息;所述响应消息包括所述背书节点模拟执行所述交易提案的第一执行结果;所述交易信息包括所述交易提案和所述第一执行结果;
所述客户端对所述交易信息进行签名,向排序节点发送签名后的所述交易信息,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。
上述技术方案中,客户端先从背书节点列表中选出一个背书节点,然后再向被选中的背书节点发送交易提案进行背书,由于每次发送交易提案都是从多个背书节点中随机选取背书节点进行背书,降低了中心化程度,保护了背书节点的身份,增强了系统的安全性;且由于每笔交易都只发送给一个背书节点进行背书,使得多个背书节点可以并行处理不同的交易,进而使得系统不会因为联盟成员的增加而出现性能瓶颈,提高了交易处理效率。
可选的,所述客户端从所述背书节点列表中确定出背书节点,包括:
所述背书节点为一个时,所述客户端根据所述交易提案的哈希值、前一个区块的区块内容的哈希值和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。
可选的,所述客户端从所述背书节点列表中确定出背书节点,包括:
所述客户端根据所述前一个区块的区块内容的哈希值、所述交易提案所属的机构标识和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。
可选的,所述客户端从所述背书节点列表中确定出背书节点,包括:
所述客户端从所述背书节点列表中确定出预设比例数量的背书节点。
可选的,所述第一执行结果为所述背书节点模拟执行所述交易提案后生成的基于当前账本状态读写集。
第二方面,本发明实施例提供一种区块链共识方法,包括:
背书节点获取客户端发送的签名后的交易提案,所述交易提案包括交易数据;所述背书节点为所述客户端从背书节点列表中确定的;
所述背书节点在对所述签名验证通过后,确定自身是否为所述客户端确定的背书节点,若是,则模拟执行所述交易提案后得到第一执行结果;
所述背书节点生成响应消息并进行签名,向所述客户端发送签名后的所述响应消息,以使所述客户端根据所述响应消息生成交易信息后发送给排序节点,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态;所述响应消息包括所述第一执行结果。
可选的,所述背书节点模拟执行所述交易提案后得到第一执行结果,包括:
所述背书节点模拟执行所述交易提案,生成基于当前账本状态的读写集;
所述背书节点将所述基于当前账本状态的读写集确定为所述第一执行结果。
第三方面,本发明实施例提供一种区块链共识方法,包括:
排序节点获取客户端发送的签名后的交易信息,所述交易信息包括交易提案和第一执行结果;所述交易信息为所述客户端在向确定的背书节点发送交易提案且接收到所述背书节点发送的所述第一执行结果后根据所述交易提案和所述第一执行结果生成的;所述第一执行结果为所述背书节点模拟执行所述交易提案得到的;
所述排序节点将所述交易信息放入队列中进行排序;
所述排序节点确定将所述交易信息放入所述队列的时间大于时间阈值或所述队列中的交易数量大于数量阈值后,将所述交易信息打包成区块;
所述排序节点对所述区块签名后,将签名后的所述区块广播给区块链中的节点进行共识,并在共识完成后使用所述第一执行结果更新账本状态。
第四方面,本发明实施例提供一种客户端,包括:
处理单元,用于生成交易提案,所述交易提案包括交易提案;从背书节点列表中确定出背书节点;对所述交易提案进行签名;
发送单元,用于并将签名后的所述交易提案发送给所述背书节点,以使背书节点对所述交易提案进行背书;
所述处理单元还用于在接收到所述背书节点的响应消息且验证所述响应消息的签名通过后生成交易信息;所述响应消息包括所述背书节点模拟执行所述交易提案的第一执行结果;所述交易信息包括所述交易提案和所述第一执行结果;对所述交易信息进行签名;
所述发送单元还用于向排序节点发送签名后的所述交易信息,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。
可选的,所述处理单元具体用于:
所述背书节点为一个时,根据所述交易提案的哈希值、前一个区块的区块内容的哈希值和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。
可选的,所述处理单元具体用于:
根据所述前一个区块的区块内容的哈希值、所述交易提案所属的机构标识和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。
可选的,所述处理单元具体用于:
从所述背书节点列表中确定出预设比例数量的背书节点。
可选的,所述第一执行结果为所述背书节点模拟执行所述交易提案后生成的基于当前账本状态读写集。
第五方面,本发明实施例提供一种背书节点,包括:
获取单元,用于获取客户端发送的签名后的交易提案,所述交易提案包括交易数据;所述背书节点为所述客户端从背书节点列表中确定的;
处理单元,用于在对所述签名验证通过后,确定自身是否为所述客户端确定的背书节点,若是,则模拟执行所述交易提案后得到第一执行结果;生成响应消息并进行签名;
发送单元,用于向所述客户端发送签名后的所述响应消息,以使所述客户端根据所述响应消息生成交易信息后发送给排序节点,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态;所述响应消息包括所述第一执行结果。
可选的,所述处理单元具体用于:
模拟执行所述交易提案,生成基于当前账本状态的读写集;
将所述基于当前账本状态的读写集确定为所述第一执行结果。
第六方面,本发明实施例提供一种排序节点,包括:
获取单元,用于获取客户端发送的签名后的交易信息,所述交易信息包括交易提案和第一执行结果;所述交易信息为所述客户端在向确定的背书节点发送交易提案且接收到所述背书节点发送的所述第一执行结果后根据所述交易提案和所述第一执行结果生成的;所述第一执行结果为所述背书节点模拟执行所述交易提案得到的;
处理单元,用于将所述交易信息放入队列中进行排序;确定将所述交易信息放入所述队列的时间大于时间阈值或所述队列中的交易数量大于数量阈值后,将所述交易信息打包成区块;对所述区块签名后;
发送单元,用于将签名后的所述区块广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。
第七方面,本发明实施例还提供一种计算设备,包括:
存储器,用于存储计算机程序;
处理器,用于调用所述存储器中存储的计算机程序,按照获得的计算机程序执行上述区块链共识方法。
第八方面,本发明实施例还提供一种计算机可读非易失性存储介质,包括计算机程序,当计算机读取并执行所述计算机程序时,使得计算机执行上述区块链共识方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构的示意图;
图2为本发明实施例提供的一种区块链共识方法的流程示意图;
图3为本发明实施例提供的一种区块链共识方法的流程示意图;
图4为本发明实施例提供的一种区块链共识方法的流程示意图;
图5为本发明实施例提供的一种客户端的结构示意图;
图6为本发明实施例提供的一种背书节点的结构示意图;
图7为本发明实施例提供的一种排序节点的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1示例性的示出了本发明实施例所适用的一种系统架构,该系统架构可以包括客户端100、多个背书节点200和排序节点300。
其中,客户端100可以分别与背书节点200和排序节点300进行通信,用于生成交易提案,并交易提案发送给背书节点200进行背书,发送给排序节点300进行排序。背书节点200和排序节点300位于区块链中,该区块链可以是联盟链。
需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。
目前基于Fabric现有的共识机制主要分三步:背书、排序和验证。
具体步骤可以如图2所示,其中Ender表示背书节点、Orderer表示排序节点,具体流程如下:
(1)、客户端生成提案proposal<req>sig并发给联盟中所有背书节点。其中req为交易提案,包括交易调用的链码函数及其参数;sig表示客户端节点对提案的签名。
(2)、背书节点收到客户端的提案后,首先验证签名,确保提案的合法性。然后模拟提案交易,生成交易的执行结果rw_set并对其签名,最后生成响应信息response<rw_set>sig发回给客户端。sig表示背书节点对响应信息的签名。
值得注意的是,背书节点模拟提案交易是生成一个基于当前账本状态的读写集来表示交易的执行结果,并不会改变目前的账本状态。
(3)、客户端收到背书节点的响应信息,同样先验证背书节点的签名,确保信息合法。当收到背书策略要求的背书节点数(通常是超过半数的背书节点)的合法响应后,确认响应结果中的读写集是否一致,如果一致,则生成交易tx<rw_set>sig发送给排序节点。sig表示客户端节点对交易的签名。
(4)、排序节点将收到的交易放入kafka队列中排序,当超过一定时间或队列中的交易达到一定数量后便会被取出打包成区块block<txs>sig,由排序节点广播给联盟中所有的节点。txs表示区块中打包的交易,sig表示排序节点对区块的签名。
(5)、联盟中的节点收到区块后,首先验证签名,然后验证每笔交易执行结果是否与读写集一致。如果均一致,则区块合法,使用读写集更新账本状态。
所有节点完成以上操作后,整个系统便达成了共识。
基于上述描述,图3详细的示出了本发明实施例提供的一种区块链共识方法的流程,下面将通过客户端、背书节点和排序节点交互的方式来描述上述共识流程。
如图3所示,该流程具体包括:
步骤301,客户端生成交易提案,从所述背书节点列表中确定出背书节点。
该客户端为产生交易提案的客户端,例如联盟内的机构间相互查询所需的信息,此时查询方用私钥对查询信息签名,被查询方收到查询信息后将查询信息上链,此时被查询方的客户端即为客户端。该交易提案可以包括交易数据,例如交易数据req,可以包含交易调用的链码函数及其参数。
客户端生成交易提案后就可以使用自身的私钥对该交易提案进行签名,例如交易提案proposal<req>sig,其中,sig表示客户端对交易提案的签名。
客户端可以从背书节点列表中随机确定出一个背书节点进行背书,具体的,可以通过下述方式来实现:
方式一
当背书节点为一个时,客户端可以根据交易提案的哈希值、前一个区块的区块内容的哈希值和背书节点列表中的节点的数量,从背书节点列表中确定出背书节点。一般可以通过如下公式(1)来从背书节点列表中确定出第m个背书节点。
该公式(1)为:
Figure GDA0004118983320000091
其中,req为交易提案;blockprev表示前一个区块的区块内容,n为背书节点列表中背书节点的数量。
方式二
当背书节点为一个时,客户端可以根据前一个区块的区块内容的哈希值、交易提案所属的机构标识和背书节点列表中的节点的数量,从背书节点列表中确定出背书节点。一般可以通过如下公式(2)来从背书节点列表中确定出第m个背书节点。
该公式(1)为:
Figure GDA0004118983320000092
其中,instID为交易提案所属的机构标识;blockprev表示前一个区块的区块内容,n为背书节点列表中背书节点的数量。
方式三
当背书节点为多个时,客户端从背书节点列表中确定出预设比例数量的背书节点。该预设比例数量可以依据经验设置。
例如,可以随机选取背书节点列表中节点数量的十分之一的背书节点。
具体可以为先通过上述公式(1)或公式(2)选取一个背书节点,然后取n=n-1,重复使用上述公式(1)或公式(2)选取一个背书节点,直到选取背书节点的数量为n/10为止,总共选取n/10个背书节点。
通过上述方式确定的背书节点,可以降低背书节点的中心化程度,保护了背书节点的身份,增强了系统的安全性。
步骤302,客户端向背书节点发送签名后的交易提案。
当客户端确定出背书节点之后,就可以将签名后的交易提案发送给该背书节点。
步骤303,背书节点在对所述签名验证通过后,确定自身是否为所述客户端确定的背书节点,若是,则模拟执行所述交易提案后得到第一执行结果。
当客户端确定的背书节点接收到客户端发送的签名后的交易提案后,先对使用客户端的公钥对签名进行验证,验证客户端的身份合法性,在验证通过后,需要计算上述实施例中的m,确定自身是否为客户端确定的背书节点,如果确实无误,则可以模拟执行交易提案得到第一执行结果。
具体的,背书节点模拟执行交易提案,生成基于当前账本状态的读写集,然后将基于当前账本状态的读写集确定为第一执行结果。例如读写集rw_set。该读写集是基于当前账本状态的读写集,即当前账本状态执行所发请求后的状态,例如,请求为A支出10元,基于当前账本的读写集即为A现有余额-10。
步骤304,背书节点向客户端发送签名后响应消息。
背书节点得到第一执行结果之后,就可以基于第一执行结果生成响应消息,然后对响应消息进行签名。该响应消息中包括了该第一执行结果。例如响应消息为response<rw_set>sig
步骤305,客户端生成交易信息。
客户端在接收到背书节点发送的签名后的响应消息后,使用该背书节点的公钥对签名进行验证,验证该背书节点的合法性,验证通过后就可以生成交易信息,该交易信息包括交易提案和第一执行结果,例如签名后的交易信息为tx<rw_set>sig
步骤306,客户端向排序节点发送签名后的交易信息。
客户端生成签名后的交易信息后,就向排序节点发送该签名后的交易信息进行排序。
步骤307,排序节点在对所述签名验证通过后将所述交易信息放入队列中进行排序;确定将所述交易信息放入所述队列的时间大于时间阈值或所述队列中的交易数量大于数量阈值后,将所述交易信息打包成区块。
该时间阈值和数量阈值可以依据经验设置。排序节点使用客户端的公钥对签名进行验证通过后,就可以将交易信息放入kafka队列中进行排序。当超过一定时间或队列中的交易达到一定数量后便会被取出打包成区块。
步骤308,排序节点对所述区块签名后,将签名后的所述区块广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。
排序节点对区块签名后,得到签名后的区块block<txs>sig,txs表示区块中打包的交易,sig表示排序节点对区块的签名。排序节点可以广播给区块链中的节点。该区块链中的节点包括所有的背书节点以及区块链中其他联盟机构的节点。
当区块链中的节点接收到签名后的区块后先验证签名,确认区块合法。然后依次验证每笔交易提案的第二执行结果是否与读写集一致,同时验证。如果验证通过,则使用读写集更新账本状态。
为了更好的解释本发明实施例,下面将在具体实施场景下来描述上述区块链共识的过程。
如图4所示,本发明实施例是基于hyperledger fabric搭建的一个机构间的信息共享的区块链系统,可以实现联盟成员机构之间共享敏感信息,而又能保证数据的安全。
其中,联盟内机构间可以互相查询所需的信息,查询方用私钥对查询信息签名,被查询方收到查询信息后将查询信息上链,上链过程中共识机制如下:
(1)、被查询方客户端生成提案proposal<req>sig,签名后发送给背书节点列表中第m个背书节点,m的计算方式可如上述方式一和方式二。
(2)、被选中的背书节点收到请求后,先验证签名合法性,然后计算m,确定自己是否为选中的背书节点,如果确定无误,则模拟执行交易提案,生成一个基于当前账本状态的读写集rw_set,随后生成响应信息response<rw_set>sig发回给客户端。
(3)、客户端收到指定背书节点的响应信息后使用选定背书节点的公钥验证签名,验证通过后生成交易tx<rw_set>sig,发送给排序节点。
(4)、排序节点将收到的交易放入kafka队列中排序,当超过一定时间或队列中的交易达到一定数量后便会被取出打包成区块block<txs>sig,由排序节点广播给联盟中所有节点。txs表示区块中打包的交易,sig表示排序节点对区块的签名。
(5)、联盟中的节点收到区块后先验证签名,确认区块合法。然后依次验证每笔交易执行结果是否与读写集一致,同时验证。如果验证通过,则使用读写集更新账本状态。
上述实施例表明,客户端生成交易提案,交易提案包括交易数据;从背书节点列表中确定出背书节点,对交易提案进行签名,并将签名后的交易提案发送给背书节点,以使背书节点对交易提案进行背书,在接收到背书节点的响应消息且验证响应消息的签名通过后生成交易信息,响应消息包括背书节点模拟执行交易提案的第一执行结果,交易信息包括交易提案和第一执行结果,对交易信息进行签名,向排序节点发送签名后的交易信息,以使排序节点将交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。客户端先从背书节点列表中选出一个背书节点,然后再向被选中的背书节点发送交易提案进行背书,由于每次发送交易提案都是从多个背书节点中随机选取背书节点进行背书,降低了中心化程度,保护了背书节点的身份,增强了系统的安全性;且由于每笔交易都只发送给一个背书节点进行背书,使得多个背书节点可以并行处理不同的交易,进而使得系统不会因为联盟成员的增加而出现性能瓶颈,提高了交易处理效率。
基于相同的技术构思,图5示例性的示出了本发明实施例提供的一种客户端的结构,该客户端可以执行区块链共识的流程。
如图5所示,该客户端具体包括:
处理单元501,用于生成交易提案,所述交易提案包括交易数据;从背书节点列表中确定出背书节点;对所述交易提案进行签名;
发送单元502,用于并将签名后的所述交易提案发送给所述背书节点,以使所述背书节点对所述交易提案进行背书;
所述处理单元501还用于在接收到所述背书节点的响应消息且验证所述响应消息的签名通过后生成交易信息;所述响应消息包括所述背书节点模拟执行所述交易提案的第一执行结果;所述交易信息包括所述交易提案和所述第一执行结果;对所述交易信息进行签名;
所述发送单元502还用于向排序节点发送签名后的所述交易信息,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。
可选的,所述处理单元501具体用于:
所述背书节点为一个时,根据所述交易提案的哈希值、前一个区块的区块内容的哈希值和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。
可选的,所述处理单元具体用于:
根据所述前一个区块的区块内容的哈希值、所述交易提案所属的机构标识和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。
可选的,所述处理单元具体用于:
从所述背书节点列表中确定出预设比例数量的背书节点。
可选的,所述第一执行结果为所述背书节点模拟执行所述交易提案后生成的基于当前账本状态读写集。
基于相同的技术构思,图6示例性的示出了本发明实施例提供的一种背书节点的结构,该背书节点可以执行区块链共识的流程。
如图6所示,该背书节点具体包括:
获取单元601,用于获取客户端发送的签名后的交易提案,所述交易提案包括交易数据;所述背书节点为所述客户端从背书节点列表中确定的;
处理单元602,用于在对所述签名验证通过后,确定自身是否为所述客户端确定的背书节点,若是,则模拟执行所述交易提案后得到第一执行结果;生成响应消息并进行签名;
发送单元603,用于向所述客户端发送签名后的所述响应消息,以使所述客户端根据所述响应消息生成交易信息后发送给排序节点,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态;所述响应消息包括所述第一执行结果。
可选的,所述处理单元603具体用于:
模拟执行所述交易提案,生成基于当前账本状态的读写集;
将所述基于当前账本状态的读写集确定为所述第一执行结果。
基于相同的技术构思,图7示例性的示出了本发明实施例提供的一种排序节点的结构,该排序节点可以执行区块链共识的流程。
如图7所示,该排序节点具体包括:
获取单元701,用于获取客户端发送的签名后的交易信息,所述交易信息包括交易提案和第一执行结果;所述交易信息为所述客户端在向确定的背书节点发送交易提案且接收到所述背书节点发送的所述第一执行结果后根据所述交易提案和所述第一执行结果生成的;所述第一执行结果为所述背书节点模拟执行所述交易提案得到的;
处理单元702,用于将所述交易信息放入队列中进行排序;确定将所述交易信息放入所述队列的时间大于时间阈值或所述队列中的交易数量大于数量阈值后,将所述交易信息打包成区块;对所述区块签名后;
发送单元703,用于将签名后的所述区块广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。
基于相同的技术构思,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用存储器中存储的程序指令,按照获得的程序执行上述区块链共识方法。
基于相同的技术构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行计算机可读指令时,使得计算机执行上述区块链共识方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (14)

1.一种区块链共识方法,其特征在于,包括:
客户端生成交易提案,所述交易提案包括交易数据;
所述客户端根据所述交易提案的哈希值、前一个区块的区块内容的哈希值和背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点;或者,根据所述前一个区块的区块内容的哈希值、所述交易提案所属的机构标识和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点;
所述客户端对所述交易提案进行签名,并将签名后的所述交易提案发送给所述背书节点,以使所述背书节点对所述交易提案进行背书;
所述客户端在接收到所述背书节点的响应消息且验证所述响应消息的签名通过后生成交易信息;所述响应消息包括所述背书节点模拟执行所述交易提案的第一执行结果;所述交易信息包括所述交易提案和所述第一执行结果;
所述客户端对所述交易信息进行签名,向排序节点发送签名后的所述交易信息,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。
2.如权利要求1所述的方法,其特征在于,所述客户端从所述背书节点列表中确定出背书节点,包括:
所述客户端从所述背书节点列表中确定出预设比例数量的背书节点。
3.如权利要求1至2任一项所述的方法,其特征在于,所述第一执行结果为所述背书节点模拟执行所述交易提案后生成的基于当前账本状态读写集。
4.一种区块链共识方法,其特征在于,包括:
背书节点获取客户端发送的签名后的交易提案,所述交易提案包括交易数据;所述背书节点为所述客户端根据所述交易提案的哈希值、前一个区块的区块内容的哈希值和所述背书节点列表中的节点的数量,从所述背书节点列表中确定的;或者,根据所述前一个区块的区块内容的哈希值、所述交易提案所属的机构标识和所述背书节点列表中的节点的数量,从所述背书节点列表中确定的;
所述背书节点在对所述签名验证通过后,确定自身是否为所述客户端确定的背书节点,若是,则模拟执行所述交易提案后得到第一执行结果;
所述背书节点生成响应消息并进行签名,向所述客户端发送签名后的所述响应消息,以使所述客户端根据所述响应消息生成交易信息后发送给排序节点,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态;所述响应消息包括所述第一执行结果。
5.如权利要求4所述的方法,其特征在于,所述背书节点模拟执行所述交易提案后得到第一执行结果,包括:
所述背书节点模拟执行所述交易提案,生成基于当前账本状态的读写集;
所述背书节点将所述基于当前账本状态的读写集确定为所述第一执行结果。
6.一种区块链共识方法,其特征在于,包括:
排序节点获取客户端发送的签名后的交易信息,所述交易信息包括交易提案和第一执行结果;所述交易信息为所述客户端在向确定的背书节点发送交易提案且接收到所述背书节点发送的所述第一执行结果后根据所述交易提案和所述第一执行结果生成的;所述第一执行结果为所述背书节点模拟执行所述交易提案得到的;所述背书节点为所述客户端根据所述交易提案的哈希值、前一个区块的区块内容的哈希值和所述背书节点列表中的节点的数量,从所述背书节点列表中确定的;或者,根据所述前一个区块的区块内容的哈希值、所述交易提案所属的机构标识和所述背书节点列表中的节点的数量,从所述背书节点列表中确定的;
所述排序节点在对所述签名验证通过后将所述交易信息放入队列中进行排序;
所述排序节点确定将所述交易信息放入所述队列的时间大于时间阈值或所述队列中的交易数量大于数量阈值后,将所述交易信息打包成区块;
所述排序节点对所述区块签名后,将签名后的所述区块广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。
7.一种客户端,其特征在于,包括:
处理单元,用于生成交易提案,所述交易提案包括交易数据;根据所述交易提案的哈希值、前一个区块的区块内容的哈希值和背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点;或者,根据所述前一个区块的区块内容的哈希值、所述交易提案所属的机构标识和所述背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点;对所述交易提案进行签名;
发送单元,用于并将签名后的所述交易提案发送给所述背书节点,以使所述背书节点对所述交易提案进行背书;
所述处理单元还用于在接收到所述背书节点的响应消息且验证所述响应消息的签名通过后生成交易信息;所述响应消息包括所述背书节点模拟执行所述交易提案的第一执行结果;所述交易信息包括所述交易提案和所述第一执行结果;对所述交易信息进行签名;
所述发送单元还用于向排序节点发送签名后的所述交易信息,以使所述排序节点将所述交易信息打包为区块后广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。
8.如权利要求7所述的客户端,其特征在于,所述处理单元具体用于:
从所述背书节点列表中确定出预设比例数量的背书节点。
9.如权利要求7至8任一项所述的客户端,其特征在于,所述第一执行结果为所述背书节点模拟执行所述交易提案后生成的基于当前账本状态读写集。
10.一种背书节点,其特征在于,包括:
获取单元,用于获取客户端发送的签名后的交易提案,所述交易提案包括交易数据;所述背书节点为所述客户端根据所述交易提案的哈希值、前一个区块的区块内容的哈希值和所述背书节点列表中的节点的数量,从所述背书节点列表中确定的;或者,根据所述前一个区块的区块内容的哈希值、所述交易提案所属的机构标识和所述背书节点列表中的节点的数量,从所述背书节点列表中确定;
处理单元,用于在对所述签名验证通过后,确定自身是否为所述客户端确定的背书节点,若是,则模拟执行所述交易提案后得到第一执行结果;生成响应消息并进行签名;
发送单元,用于向所述客户端发送签名后的所述响应消息,以使所述客户端根据所述响应消息生成交易信息后发送给排序节点进行上链操作;所述响应消息包括所述第一执行结果。
11.如权利要求10所述的背书节点,其特征在于,所述处理单元具体用于:
模拟执行所述交易提案,生成基于当前账本状态的读写集;
将所述基于当前账本状态的读写集确定为所述第一执行结果。
12.一种排序节点,其特征在于,包括:
获取单元,用于获取客户端发送的签名后的交易信息,所述交易信息包括交易提案和第一执行结果;所述交易信息为所述客户端在向确定的背书节点发送交易提案且接收到所述背书节点发送的所述第一执行结果后根据所述交易提案和所述第一执行结果生成的;所述第一执行结果为所述背书节点模拟执行所述交易提案得到的;所述背书节点为所述客户端根据所述交易提案的哈希值、前一个区块的区块内容的哈希值和所述背书节点列表中的节点的数量,从所述背书节点列表中确定的;或者,根据所述前一个区块的区块内容的哈希值、所述交易提案所属的机构标识和所述背书节点列表中的节点的数量,从所述背书节点列表中确定;
处理单元,用于将所述交易信息放入队列中进行排序;确定将所述交易信息放入所述队列的时间大于时间阈值或所述队列中的交易数量大于数量阈值后,将所述交易信息打包成区块;对所述区块签名后;
发送单元,用于将签名后的所述区块广播给区块链中的节点,以使所述区块链中的节点根据执行所述交易提案后得到的第二执行结果对所述第一执行结果验证通过后,使用所述第一执行结果更新账本状态。
13.一种计算设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于调用所述存储器中存储的计算机程序,按照获得的计算机程序执行权利要求1至6任一项所述的方法。
14.一种计算机可读非易失性存储介质,其特征在于,包括计算机程序,当计算机读取并执行所述计算机程序时,使得计算机执行如权利要求1至6任一项所述的方法。
CN202010427983.2A 2020-05-20 2020-05-20 一种区块链共识方法及客户端、背书节点、排序节点 Active CN111629039B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010427983.2A CN111629039B (zh) 2020-05-20 2020-05-20 一种区块链共识方法及客户端、背书节点、排序节点

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010427983.2A CN111629039B (zh) 2020-05-20 2020-05-20 一种区块链共识方法及客户端、背书节点、排序节点

Publications (2)

Publication Number Publication Date
CN111629039A CN111629039A (zh) 2020-09-04
CN111629039B true CN111629039B (zh) 2023-04-18

Family

ID=72260983

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010427983.2A Active CN111629039B (zh) 2020-05-20 2020-05-20 一种区块链共识方法及客户端、背书节点、排序节点

Country Status (1)

Country Link
CN (1) CN111629039B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112398640B (zh) * 2020-11-13 2024-02-13 华南农业大学 一种优化的区块链共识算法
CN112564919A (zh) * 2020-12-04 2021-03-26 广东投盟科技有限公司 一种身份认证方法、设备及计算机可读存储介质
CN112995167B (zh) * 2021-02-20 2023-05-26 国网冀北电力有限公司计量中心 基于Kafka机制的用电信息采集方法、区块链网络及用户端
CN112732799B (zh) * 2021-03-30 2021-11-02 支付宝(杭州)信息技术有限公司 查询Fabric区块链账本数据的方法和装置
CN112732801B (zh) * 2021-03-30 2021-08-20 支付宝(杭州)信息技术有限公司 查询Fabric区块链账本数据的方法和装置
CN112737782B (zh) * 2021-03-30 2021-06-25 支付宝(杭州)信息技术有限公司 提供跨链消息的方法和装置
CN112732800B (zh) * 2021-03-30 2021-07-13 支付宝(杭州)信息技术有限公司 提供跨链消息的方法和装置
CN112734431B (zh) * 2021-03-30 2021-06-25 支付宝(杭州)信息技术有限公司 查询Fabric区块链账本数据的方法和装置
CN113256427B (zh) * 2021-06-28 2021-09-14 北京航空航天大学 一种基于联合签名的联盟区块链共识方法及系统
CN113810378B (zh) * 2021-08-19 2023-04-07 广东中科智能区块链技术有限公司 一种基于共识排序的交易预处理方法
CN115065526A (zh) * 2022-06-10 2022-09-16 网络通信与安全紫金山实验室 基于区块链的动态背书方法、装置、电子设备和存储介质
CN115345618B (zh) * 2022-10-19 2022-12-20 确信信息股份有限公司 基于混合后量子数字签名的区块链交易验证方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108376368A (zh) * 2018-03-07 2018-08-07 物数(上海)信息科技有限公司 背书策略确定方法、装置、电子设备、存储介质
CN110414979A (zh) * 2019-06-21 2019-11-05 深圳壹账通智能科技有限公司 线上背书签名方法、装置、设备和存储介质
CN111047319A (zh) * 2019-09-03 2020-04-21 腾讯科技(深圳)有限公司 区块链网络的交易处理方法及区块链网络
CN111127005A (zh) * 2019-11-18 2020-05-08 远光软件股份有限公司 区块链的交易背书方法、电子设备和存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11494344B2 (en) * 2018-03-06 2022-11-08 International Business Machines Corporation Customized endorsement logic for blockchain
US10880072B2 (en) * 2018-06-20 2020-12-29 Verizon Patent And Licensing Inc. Systems and methods for controlled random endorsement in a blockchain network
US11521202B2 (en) * 2018-08-30 2022-12-06 International Business Machines Corporation Distributed computing and storage network implementing high integrity, high bandwidth, low latency, secure processing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108376368A (zh) * 2018-03-07 2018-08-07 物数(上海)信息科技有限公司 背书策略确定方法、装置、电子设备、存储介质
CN110414979A (zh) * 2019-06-21 2019-11-05 深圳壹账通智能科技有限公司 线上背书签名方法、装置、设备和存储介质
CN111047319A (zh) * 2019-09-03 2020-04-21 腾讯科技(深圳)有限公司 区块链网络的交易处理方法及区块链网络
CN111127005A (zh) * 2019-11-18 2020-05-08 远光软件股份有限公司 区块链的交易背书方法、电子设备和存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Endorsement in Hyperledger Fabric;E. Androulaki, A. De Caro, M. Neugschwandtner and A. Sorniotti;《2019 IEEE International Conference on Blockchain (Blockchain)》;20200102;全文 *
Hyperledger_Fabric共识机制优化方案;孟吴同,张大伟;《自动化学报》;20200104;全文 *
企业级区块链技术综述;邵奇峰,张召,朱燕超,周傲英;《软件学报》;20190409;全文 *

Also Published As

Publication number Publication date
CN111629039A (zh) 2020-09-04

Similar Documents

Publication Publication Date Title
CN111629039B (zh) 一种区块链共识方法及客户端、背书节点、排序节点
Galal et al. Verifiable sealed-bid auction on the ethereum blockchain
US11522706B2 (en) Method and system for publicly verifiable proofs of retrievability in blockchains
CN109493204B (zh) 基于区块链的业务记账方法及终端设备
CN110442652B (zh) 一种基于区块链的跨链数据处理方法及装置
CN108848055B (zh) 一种区块链共识方法、记账节点及节点
CN110599177A (zh) 一种交易验证方法及相关设备
CN110557403B (zh) 基于区块链的资源分配方法、装置、存储介质及节点设备
CN112600664B (zh) 延时交易生成方法、延时交易执行方法、设备和存储介质
CN110706106B (zh) 一种信息处理方法及设备
CN110458673A (zh) 基于区块链的投标方法、设备及计算机可读存储介质
CN113645278B (zh) 一种区块链的跨链消息传输方法、设备、存储介质
CN111047330A (zh) 区块的验证分红奖励方法和装置
CN112995167A (zh) 基于Kafka机制的用电信息采集方法、区块链网络及用户端
CN111222885B (zh) 数据处理请求背书方法、装置、计算机设备及存储介质
CN109698750A (zh) 区块链的区块生成方法、装置、设备及可读存储介质
US20220060332A1 (en) Energized identity powered blockchain
CN103927497B (zh) Ndm文件保护方法及装置
CN113064899A (zh) 资产类证券型通证交易凭证的存储方法、装置和电子设备
CN111563096B (zh) 一种创建实体画像的方法、装置、节点及存储介质
CN117560161B (zh) 区块链的共识节点轮换方法及装置、可读存储介质
CN117579633B (zh) 区块竞选方法、装置、设备及存储介质
CN114338728B (zh) 一种基于共享数据的共识方法及系统
CN115701078B (zh) 跨链交易处理方法、装置、电子设备以及存储介质
Shi et al. MuSelect Chain: trusted decentralized mutual selection through blockchain

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