一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种提升联盟链性能的可信合约共识方法、装置及其设备与流程

2021-11-05 22:56:00 来源:中国专利 TAG:


1.本发明涉及区块链技术领域,尤其涉及一种提升联盟链性能的可信合约共识方法、装置及其设备。


背景技术:

2.联盟链设计初衷是为了实现企业级应用,但实际上每一笔根据智能合约生成的交易仍然需要所有记账节点进行共识认证,这在一定程度上保持了交易记录的去中心化,但也大大降低了交易完成的效率。而又因为联盟链中智能合约的独立性,使其执行过程及所生成的交易信息,在联盟链上并不会被外界“恶意污染”,所以交易信息的可信度远远超过公链,但目前联盟链根据智能合约生成的每一笔交易仍然需要所有记账节点的一系列检验及验证,只有所有认证全部通过才会被记录为有效,一定程度上降低了效率。
3.为保证有效交易为最新版本链码所生成。在链码实例化或更新时,背书节点都会调用lscc系统链码(为内置的系统链码,全称为生命周期管理系统链码,主要功能是管理部署在背书节点上的链码)将链码相关数据保存到lscc命名空间中。当发生一笔交易,所有记账节点都会对每一个交易提取交易执行的链码信息对比lscc命名空间的链码信息进行校验。当交易数量过多时会影响性能。
4.记账节点针对每一笔交易都会进行了大量的交易验证,包括交易参数合法性、交易格式正确性、交易内容是否篡改、检验读写集等,同样影响记账节点效率。


技术实现要素:

5.本发明的目的是提供一种提升联盟链性能的可信合约共识方法、装置及其设备,旨在解决现有技术中,联盟链交易效率低下的问题。
6.第一方面,本发明实施例提供了一种提升联盟链性能的可信合约共识方法,包括:
7.客户端通过sdk调用证书服务获取身份证书;
8.所述客户端根据所述身份证书构造并提交交易提案到背书节点;
9.所述背书节点根据交易提案进行模拟执行交易,得到交易结果;
10.所述背书节点比对模拟执行交易所使用的链码数据与lscc命名空间中的链码数据是否一致;如是,对所述交易结果进行签名并向所述sdk返回对比一致的标记;如否,则向所述sdk返回对比不一致的标记;
11.所述客户端通过所述sdk对背书节点的比对结果进行共识决策,如判断交易达成共识,则进入下一步骤,否则,返回共识失败,中止处理;
12.所述客户端通过所述sdk发送交易提案至排序节点;
13.所述排序节点进行交易排序并构建区块,并发送所述区块至记账节点;
14.所述记账节点检查交易是否符合背书策略,如是,则通过账本提交器对交易进行验证、准备和提交,并通过账本提交器更新状态数据库,如否,则中止处理。
15.第二方面,本发明实施例提供了一种提升联盟链性能的可信合约共识装置,包括:
16.客户端获取证书单元,用于通过sdk调用证书服务获取身份证书;
17.第一客户端交易提案发送单元,用于根据所述身份证书构造并提交交易提案到背书节点;
18.背书节点模拟执行交易单元,用于根据交易提案进行模拟执行交易,得到交易结果;
19.背书节点比对单元,用于比对模拟执行交易所使用的链码数据与lscc命名空间中的链码数据是否一致;如是,对所述交易结果进行签名并向所述sdk返回对比一致的标记;如否,则向所述sdk返回对比不一致的标记;
20.客户端共识决策单元,用于通过所述sdk对背书节点的比对结果进行共识决策,如判断交易达成共识,则进入下一步骤,否则,返回共识失败,中止处理;
21.第二客户端交易提案发送单元,用于通过所述sdk发送交易提案至排序节点;
22.排序节点区块构建单元,用于进行交易排序并构建区块,并发送所述区块至记账节点;
23.记账节点检查单元,用于检查交易是否符合背书策略,如是,则通过账本提交器对交易进行验证、准备和提交,并通过账本提交器更新状态数据库,如否,则中止处理。
24.第三方面,本发明实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的提升联盟链性能的可信合约共识方法。
25.第四方面,本发明实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的提升联盟链性能的可信合约共识方法。
26.本发明实施例在交易发起时通过背书节点达成合约(链码)内容及版本共识,意味着背书节点根据合约(链码)生成的该笔交易在版本、内容、合法性上一定都符合标准,后续所有记账节点只需进行背书策略认证即可证明该交易为合法,省去了所有记账节点重新调用1scc命名空间检验版本、名称、交易内容、参数等等的检验时间,在保证交易有效的前提下缩短了联盟链完成交易的时间,提高了联盟链的性能。
附图说明
27.为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
28.图1为本发明实施例提供的提升联盟链性能的可信合约共识方法的流程示意图;
29.图2为本发明实施例提供的提升联盟链性能的可信合约共识方法的步骤s103之前的子流程示意图;
30.图3为本发明实施例提供的提升联盟链性能的可信合约共识方法的步骤s105之前的子流程示意图;
31.图4为本发明实施例提供的提升联盟链性能的可信合约共识方法的步骤s105的子流程示意图;
32.图5为本发明实施例提供的提升联盟链性能的可信合约共识方法的步骤s108的子
流程示意图;
33.图6为本发明实施例提供的提升联盟链性能的可信合约共识装置的结构框图。
具体实施方式
34.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
36.还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
37.还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
38.请参阅图1,一种提升联盟链性能的可信合约共识方法,包括以下步骤s101

s108。
39.s101:客户端通过sdk调用证书服务获取身份证书;
40.在本实施例中,客户端通过sdk调用证书服务进行注册登记(通过ca认证,获取身份证书),以便使用区块链。
41.其中ca为数字认证,sdk为一种软件开发工具包。
42.s102:所述客户端根据所述身份证书构造并提交交易提案到背书节点;
43.在本实施例中,交易提案也可以理解为交易提案,客户端通过sdk构造交易提案,并使用用户的私匙对交易提案进行签名。
44.签名后的交易提案会被打包并提交给通道中的背书节点,而具体为那些背书节点会接收到这些交易提案,是由背书策略定义的,客户端会根据背书策略将交易提案发送给相应的背书节点。
45.s103:所述背书节点根据交易提案进行模拟执行交易,得到交易结果;
46.在本实施例中,背书节点按照交易提案调用链码模拟执行交易;链码执行时,读取的数据(键值对)是背书节点中本地的状态数据库,链码读取过的数据会被归总到读取集(read set);链码对状态数据库的写操作并不会对账本进行更改,所有的写操作将归总到一个写入集(write set)中记录下来;读取集和写入集将在记账节点中用于确定交易是否最终写入区块链。
47.在链码执行完成后,背书节点把链码模拟执行后得到的读取集(read

write set)等信息签名后发回给客户端。此时,交易信息只在客户端和单个背书节点之间达成共识,并没有完成全网共识。
48.在一实施例中,所述背书节点根据交易提案进行模拟执行交易,得到交易结果,之前包括:所述背书节点校验proposal签名。
49.在本实施例中,使用msp模块验证构造交易提案时的签名,并确定该用户是否被合
理授权进行交易提案的操作。
50.其中proposal签名为用户签名。
51.请参考图2,在一实施例中,所述背书节点根据交易提案进行模拟执行交易,之前包括:
52.s201:所述背书节点判断接收到的交易提案是否为进行客户端实例化或升级的签名交易提案;
53.s202:如是,对lscc命名空间的内容进行更新并写入相应的链码数据,返回等待交易提案,如否,则不更新lscc内容及不写入相应链码数据。
54.在本实施例中,当背书节点接收到的交易提案是进行客户端实例化或升级的签名交易提案时,背书节点不会进行模拟执行交易,而是进行对lscc命名空间中的内容进行更新,写入相应的链码数据,以便在后续进行模拟执行交易后对lscc命名空间中的智能合约内容、版本及名称的校验,确保在此次模拟执行交易中是最新链码执行的结果,且链码内容无发生篡改,链码版本及名称也同样一致。
55.在一实施例中,链码数据包括链码组合哈希,所述链码组合哈希为链码哈希与链码版本、链码名称拼接后再哈希的结果。
56.在本实施例中,采用链码组合哈希,确保了足够高的安全性。
57.其中,链码组合哈希包括首先对链码进行哈希,并将哈希后的链码、链码版本和链码名称进行拼接,最后对拼接后的数据进行哈希。
58.s104:所述背书节点比对模拟执行交易所使用的链码数据与lscc命名空间中的链码数据是否一致;如是,对所述交易结果进行签名并向所述sdk返回对比一致的标记;如否,则向所述sdk返回对比不一致的标记;
59.在本实施例中,背书节点通过模拟执行交易并得到交易结果后,将会对链码数据进行校验(即将模拟执行交易时所使用的链码数据与lscc命名空间中的链码数据进行比较),如果校验通过(即链码数据一致),在背书节点向sdk发回交易结果并签名时,还会向sdk发送相应的校验结果。
60.s105:所述客户端通过所述sdk对背书节点的比对结果进行共识决策,如判断交易达成共识,则进入下一步骤,否则,返回共识失败,中止处理;
61.在本实施例中,对比结果即为校验结果,在sdk收集到所有背书节点的对比结果后会进行统计,如果所有的背书节点都得到了对比一致的标记,那么可以得出达成共识,并证明该交易有效。
62.通过此种判断方式,只要在交易发起时通过背书节点达成合约(链码)内容及版本共识,则意味着背书节点根据合约(链码)生成的该笔交易在版本、内容、合法性上一定都符合标准,后续所有记账节点只需进行背书策略认证即可证明该交易为合法,省去了所有记账节点重新调用lscc命名空间检验版本、名称、交易内容、参数等等的检验时间,在保证交易有效的前提下缩短了联盟链完成交易的时间,提高了联盟链的性能。
63.请参考图3,在一实施例中,所述客户端通过所述sdk对背书节点的比对结果进行共识决策,如判断交易达成共识,则进入下一步骤,否则,返回共识失败,中止处理,之前包括:
64.s301:对交易结果进行背书签名,并连同标记返回所述sdk;
65.s302:所述客户端通过所述sdk校验背书签名,得到校验结果;
66.s303:所述sdk统计收到的背书签名对应的所述背书节点的数量,得到统计结果;
67.s304:根据所述校验结果和统计结果判断交易是否初步背书成功;
68.s305:如是,则进入下一步骤,如否,返回校验背书失败,中止处理。
69.在本实施例中,客户端在验证是否达成共识之前,收到背书节点的签名背书结果后,校验背书签名并统计返回了背书签名的对应的背书节点的数量,在校验成功并且背书节点的数量达到预设的值时,进入下一步骤,否则,返回校验背书失败,中止处理。
70.请参考图4,在一实施例中,所述客户端所述通过所述sdk对背书节点的比对结果进行共识决策,如判断交易达成共识,则进入下一步骤,否则,返回共识失败,中止处理,包括:
71.s401:所述客户端根据所述sdk接收到的对比一致的标记所对应的背书节点数量判断交易是否达成共识;
72.s402:如是,则进入下一步骤,如否,返回共识失败,中止处理。
73.在本实施例中,为存在背书节点对比结果不一致的情况,此时可根据实际应用需求,设定大于多少的背书节点达成一致后可认为该交易达成共识。
74.s106:所述客户端通过所述sdk发送交易提案至排序节点;
75.在本实施例中,客户端在收到背书节点的签名背书结果后,检查背书节点的签名并比较不同背书节点的结果是否一致,在得到达成共识的结果后将会通过sdk向排序节点发送交易提案。
76.具体的,如果交易提案是查询账本的提案,则客户端无需提交交易给排序节点。如果交易提案是更新账本的提案,客户端在收集到满足背书策略的足够多背书节点的签名背书结果后(即达成共识),把背书节点返回的读取集、写入集、所有背书节点的签名和通道号发给排序节点。
77.s107:所述排序节点进行交易排序并构建区块,并发送所述区块至记账节点;
78.在本实施例中,排序节点并不检查交易提案的全部内容,而是根据通道号对交易提案进行分类排序,然后把相同通道的交易提案批量打包成区块,并将排序后的交易提案发送至记账节点。
79.s108:所述记账节点检查交易是否符合背书策略,如是,则通过账本提交器对交易进行验证、准备和提交,并通过账本提交器更新状态数据库,如否,则中止处理。
80.在本实施例中,记账节点只需进行背书策略,并通过账本提交器对交易进行验证、准备(包括对读集合(读取集)进行校验),验证通过后,将通过账本提交器对交易进行提交和对状态数据库进行更新,完成交易。
81.其中,验证背书策略主要是验证该交易是否由背书签名;验证读集合主要是验证状态数据库是否一致,防止双花。
82.请参考图5,在一实施例中,所述记账节点检查交易是否符合背书策略,如是,则通过账本提交器对交易进行验证、准备和提交,并通过账本提交器更新状态数据库,包括:
83.s501:所述记账节点检查写集合的合法性及调用vscc验证交易背书策略;
84.s502:所述记账节点通过账本提交器对交易进行验证和准备;
85.s503:所述记账节点通过账本提交器提交交易和更新状态数据库。
86.在本实施例中,记账节点会对写集合的合法性进行检查,调用vscc验证交易背书策略,通过账本提交器对交易进行验证、准备和提交,并通过账本提交器更新状态数据库。
87.请参考图6,一种提升联盟链性能的可信合约共识装置,包括:
88.客户端获取证书单元601,用于通过sdk调用证书服务获取身份证书;
89.第一客户端交易提案发送单元602,用于根据所述身份证书构造并提交交易提案到背书节点;
90.背书节点模拟执行交易单元603,用于根据交易提案进行模拟执行交易,得到交易结果;
91.背书节点比对单元604,用于比对模拟执行交易所使用的链码数据与lscc命名空间中的链码数据是否一致;如是,对所述交易结果进行签名并向所述sdk返回对比一致的标记;如否,则向所述sdk返回对比不一致的标记;
92.客户端共识决策单元605,用于通过所述sdk对背书节点的比对结果进行共识决策,如判断交易达成共识,则进入下一步骤,否则,返回共识失败,中止处理;
93.第二客户端交易提案发送单元606,用于通过所述sdk发送交易提案至排序节点;
94.排序节点区块构建单元607,用于进行交易排序并构建区块,并发送所述区块至记账节点;
95.记账节点检查单元608,用于检查交易是否符合背书策略,如是,则通过账本提交器对交易进行验证、准备和提交,并通过账本提交器更新状态数据库,如否,则中止处理。
96.本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如上所述的提升联盟链性能的可信合约共识方法。
97.在本发明的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质。该计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如上所述的提升联盟链性能的可信合约共识方法。
98.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
99.在本发明所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形
式连接。
100.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
101.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
102.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、磁碟或者光盘等各种可以存储程序代码的介质。
103.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献