本说明书实施例属于区块链,尤其涉及一种收据数据的存储方法、节点和区块链系统。
背景技术:
1、区块链(blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。用户可以通过区块链节点参与实现区块链的相关事务,例如,区块链系统中分别对应不同用户的多个区块链节点,可以基于同态加密、零知识证明等隐私技术针对某一节点的私有数据进行安全多方计算(secure multi-party computation,smpc)。再例如,基于区块链网络可以在不同用户账户之间实现转账;再例如,还可以基于区块链网络发行数字画作、数字头像、gif等数字藏品对应的nft(non-fungible token,非同质化代币),以便nft所承载的数字藏品的所有权能够在区块链网络的用户之间流通,从而产生对应于数字藏品的价值。
2、在相关技术中,区块链系统中的节点在执行任一区块中的各笔交易时,为加快该区块的整体执行速度(即减少该区块中全部交易的整体执行耗时),会对所述各笔交易进行分组以得到多个交易组,并由控制进程将各个交易组调度至相应的计算进程并行执行。执行各笔交易得到的收据(receipt,或称回执)数据需要提交至存储进程进行存储。具体而言,各个计算进程会分别将自身执行交易得到的收据数据发送至存储进程,并由后者将收集到的该区块对应的全部收据数据集中提交,以完成存储。
3、在上述存储方案中,同一区块中各笔交易的收据数据需要集中至控制进程,并由该进程在收集到全部交易的收据数据之后再提交存储。可以理解的是,不同计算进程接收到的交易互不相同,而不同交易执行过程的耗时也可能不同,再考虑到不同计算进程的可用资源也可能存在差异,上述原因可能导致多个计算进程无法在同一时刻执行完成自身接收到的交易,从而控制进程需要等待各个计算进程分别执行完毕后才能够采集到全部收据数据,影响了收据数据存储过程的整体效率。另外,由于待存储的所有收据数据都需要集中至控制进程,所以在收据数据的数据量较多的情况下,会导致控制进程的数据处理负担较重,不利于收据数据的高效存储。
技术实现思路
1、本发明的目的在于提供一种收据数据的存储方法、节点和区块链系统。
2、第一方面,提供了一种收据数据的存储,应用于区块链系统中的第一节点,第一节点中包含控制进程、存储进程和n个计算进程,所述方法包括:
3、所述控制进程将获取到的m个交易组分别发送至所述n个计算进程中相应的计算进程,所述m个交易组基于第一区块中的多笔交易各自的预执行读写集对所述多笔交易进行分组得到,n和m均大于1;
4、任一计算进程在接收到任一交易组的情况下,执行所述任一交易组中的各笔交易,并将所述各笔交易的收据数据提交至所述存储进程;
5、所述存储进程将接收到的所述收据数据存储至第一节点的预设存储空间。
6、第二方面,提供了一种区块链系统中的第一节点,第一节点中包含控制进程、存储进程和n个计算进程,其中:
7、所述控制进程用于将获取到的m个交易组分别发送至所述n个计算进程中相应的计算进程,所述m个交易组基于第一区块中的多笔交易各自的预执行读写集对所述多笔交易进行分组得到,n和m均大于1;
8、任一计算进程用于在接收到任一交易组的情况下,执行所述任一交易组中的各笔交易,并将所述各笔交易的收据数据提交至所述存储进程;
9、所述存储进程用于将接收到的所述收据数据存储至第一节点的预设存储空间。
10、第三方面,提供了一种区块链系统,所述区块链系统包括第一节点和第二节点,第一节点中包含控制进程、存储进程和n个计算进程,其中:
11、第二节点用于预执行第一区块中的多笔交易得到所述多笔交易各自的预执行读写集;以及,根据所述预执行读写集对所述多笔交易进行分组得到m个交易组,并将所述m个交易组发送至第一节点,或者将所述多笔交易和所述预执行读写集发送至第一节点,以由第一节点根据所述预执行读写集对所述多笔交易进行分组得到m个交易组,n和m均大于1;
12、第一节点中的控制进程用于将所述m个交易组分别发送至所述n个计算进程中相应的计算进程;任一计算进程用于在接收到任一交易组的情况下,执行所述任一交易组中的各笔交易,并将所述各笔交易的收据数据提交至所述存储进程;所述存储进程用于将接收到的所述收据数据存储至第一节点的预设存储空间。
13、根据本说明书一个或多个实施例的第四方面,提出了一种电子设备,包括:
14、处理器;
15、用于存储处理器可执行指令的存储器;
16、其中,所述处理器通过运行所述可执行指令以实现如第一方面中任一项所述的方法。
17、根据本说明书一个或多个实施例的第五方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面中任一项所述方法的步骤。
18、在上述实施例中,对于基于第一区块中的多笔交易各自的预执行读写集对所述多笔交易进行分组得到的m个交易组,第一节点中的控制进程将其分别发送至所述n个计算进程中相应的计算进程;其中任一计算进程在接收到任一交易组的情况下,执行所述任一交易组中的各笔交易,并将所述各笔交易的收据数据提交至所述存储进程,以由后者将其存储至第一节点的预设存储空间。
19、可见,本方案在将各个交易组分别调度至相应的计算进程执行,而各个计算进程在执行交易组中的交易完成后,分别独立提交自身执行得到的收据数据。显然,相对于相关技术中由控制进程集中提交的存储方案,本方案实现了同一区块中不同交易组所对应收据数据的多方并行提交,既无需控制进程等待计算进程返回收据数据,不仅节省了提交时间而且减轻了控制进程的数据处理负担,从而有效提升了区块所对应收据数据的提交和存储效率。
1.一种收据数据的存储方法,应用于区块链系统中的第一节点,第一节点中包含控制进程、存储进程和n个计算进程,所述方法包括:
2.根据权利要求1所述的方法,所述控制进程将获取到的m个交易组分别发送至所述n个计算进程中相应的计算进程,包括:
3.根据权利要求2所述的方法,所述控制进程确定任一交易组的分组预期耗时指标,包括下述之一:
4.根据权利要求1所述的方法,所述控制进程获取所述m个交易组,包括:
5.根据权利要求1所述的方法,在接收到的任一交易组包含多笔交易的情况下,所述任一计算进程执行该交易组中的各笔交易,包括:
6.根据权利要求1所述的方法,所述任一计算进程执行所述任一交易组中的各笔交易,包括:
7.根据权利要求1所述的方法,所述任一计算进程将所述各笔交易的收据数据提交至所述存储进程,包括:
8.根据权利要求1所述的方法,还包括:
9.根据权利要求1所述的方法,还包括:
10.根据权利要求1所述的方法,还包括:
11.根据权利要求10所述的方法,所述执行相关数据包括收据数据、状态数据和交易费用,所述存储进程根据所述执行相关数据确定第一区块的区块头部,包括:
12.一种区块链系统中的第一节点,第一节点中包含控制进程、存储进程和n个计算进程,其中:
13.一种区块链系统,所述区块链系统包括第一节点和第二节点,第一节点中包含控制进程、存储进程和n个计算进程,其中:
14.一种电子设备,包括:
15.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-11中任一项所述方法的步骤。