1.本发明涉及区块链的技术领域,具体而言,涉及区块链账本的生成方法、装置、区块链节点以及存储介质。
背景技术:2.区块链是一种分布式数据存储的数据系统,其中包括多个节点,每个节点各自具有独立的区块链账本,常规形态的区块链账本由不断生成的区块组成链式结构的数据表构成。每个区块由区块号、前区块的哈希值、时间戳、默克尔树等构成,每个区块的默克尔树由树根、中间节点和叶子节点组成,叶子节点存储记录数据,中间节点和根节点为子节点的哈希值。通过默克尔树的树根、中间节点的哈希值,系统可以快速验证叶子节点的记录数据是否一致,以判断记录数据是否被修改。
3.在区块链的运行过程中,随着交易数量的增加,区块链账本也在不断的膨胀。然而,每个节点可能难以负担大规模区块链账本的存储,特别是诸如智能手机、平板电脑等的app用户端,无法保存大量的区块链账本数据。将区块链账本存储到一个或多个区块存储节点,虽然能够在一定程度上解决节点存储空间不足的问题,但是,当区块存储节点同时受到攻击时,将导致该区块存储节点提供的区块或区块链账本不可靠。
技术实现要素:4.本发明的主要目的在于提供区块链账本的生成方法、装置、区块链节点以及存储介质,以解决现有技术中节点存储空间不足的技术问题。
5.为了实现上述目的,根据本发明的第一个方面,提供了区块链账本的生成方法,技术方案如下:
6.区块链账本的生成方法,区块链网络包括多个节点,每个节点上依附有一个或多个用户,生成方法包括以下步骤:
7.step100,在区块链网络中基于指定资产选择与设定的共识算法适配的用户生成创始区块;
8.step200,为区块链网络中的所有节点生成各自的子网络;
9.step300,区块链网络中需要发生所述指定资产交易的两个用户加入彼此所在的子网络中;
10.step400,在双方的子网络中完成交易,并将交易写进双方的区块链账本中,形成新的区块链账本;
11.然后重复步骤step300~step400。
12.作为本发明第一方面的进一步改进:所述的共识算法为pow、pos、dpos、bft类或dag类。
13.作为本发明第一方面的进一步改进:在步骤300中,区块链网络中的任意一个用户可以加入其它用户的子网络。
14.作为本发明第一方面的进一步改进:加入其它用户的子网络后,同步此子网络的所有历史账本;并且,加入其它用户的子网络后,监听新的区块数据,参与到该子网络的区块链共识的生成。
15.作为本发明第一方面的进一步改进:step400具体包括以下步骤:
16.step410,第一用户对交易做签名;
17.step420,将交易写进第一用户的区块链账本中;
18.step430,第一用户的第一子网络向第二用户的第二子网络广播此交易;
19.step440,第二子网络收到广播后,第二子网络的所有用户对交易进行验证;
20.step450,验证通过,则接收该交易并将该交易写进第二用户的区块链账本中;验证不通过,则不接收该交易。
21.作为本发明第一方面的进一步改进:
22.step410还包括:第一用户向第一子网络广播已做签名的交易;
23.step420还包括:第一子网络的其他用户验证交易的正确性,并生成此交易的合法性证明;
24.step430还包括:第一子网络向第二子网络广播所述合法性证明;
25.step440还包括:第二子网络的所有用户对合法性证明进行验证。
26.作为本发明第一方面的进一步改进:step420中,还包括将交易与合法性证明根据所述的共识算法打包成区块并写进第一用户的区块链账本中;step450中,还包括将验证通过的交易与合法性证明根据所述的共识算法打包成区块并写进第二用户的区块链账本中。
27.为了实现上述目的,根据本发明的第二个方面,提供了存储上述第一方面所述的生成方法所生成的区块链账本的装置,技术方案如下:
28.存储区块链账本的装置,所述存储区块链账本的装置针对每个节点执行以下操作:存储单元,存储区块链中的区块,形成当前节点的区块链账本的存储池;建表单元,建立联系表,其中,所述联系表包括与当前节点连接的联系节点的区块链账本的区块存储信息。
29.为了实现上述目的,根据本发明的第三个方面,提供了区块链节点,技术方案如下:
30.区块链节点,包括:存储器;处理器;以及计算机程序;其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现上述第一方面所述的区块链账本的生成方法。
31.为了实现上述目的,根据本发明的第四个方面,提供了计算机可读的存储介质,技术方案如下:
32.计算机可读的存储介质,所述计算机可读的存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的区块链账本的生成方法。
33.在本发明的区块链账本的生成方法、装置、区块链节点以及存储介质中,节点不再需要存储全网所有用户的数据,而是只需要存储与交易有关系的用户的数据,因此,可以显著节约账本存储空间。
34.下面结合附图和具体实施方式对本发明做进一步的说明。本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
35.构成本发明的一部分的附图用来辅助对本发明的理解,附图中所提供的内容及其在本发明中有关的说明可用于解释本发明,但不构成对本发明的不当限定。在附图中:
36.图1为本发明的区块链账本的生成方法的第一实施例的流程图。
37.图2为本发明的区块链账本的生成方法的第一实施例中step400的流程图。
38.图3为本发明的区块链账本的生成方法的第二实施例中step400的流程图。
39.图4为本发明的存储区块链账本的装置的实施例的示意性框图。
40.图5为本发明的区块链节点的实施例的示意性框图。
具体实施方式
41.下面结合附图对本发明进行清楚、完整的说明。本领域普通技术人员在基于这些说明的情况下将能够实现本发明。在结合附图对本发明进行说明前,需要特别指出的是:
42.本发明中在包括下述说明在内的各部分中所提供的技术方案和技术特征,在不冲突的情况下,这些技术方案和技术特征可以相互组合。
43.此外,下述说明中涉及到的本发明的实施例通常仅是本发明一部分的实施例,而不是全部的实施例。因此,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
44.关于本发明中术语和单位。本发明的说明书和权利要求书及有关的部分中的术语“包括”、“具有”以及它们的任何变形,意图在于覆盖不排他的包含。
45.图1为本发明的区块链账本的生成方法的第一实施例的流程图。
46.如图1所示,区块链网络包括多个节点,每个节点上依附有一个或多个用户,区块链账本的生成方法包括以下步骤:
47.step100,在区块链网络中基于指定资产选择与设定的共识算法适配的用户生成创始区块;
48.step200,为区块链网络中的所有节点生成各自的子网络;
49.step300,区块链网络中需要发生所述指定资产交易的两个用户加入彼此所在的子网络中;
50.step400,在双方的子网络中完成交易,并将交易写进双方的区块链账本中,形成新的区块链账本;
51.然后重复步骤step300~step400;
52.步骤step100中,所述的共识算法可以但是不限于为pow(proof of work)、pos(proof of stake)、dpos(delegated proof os stake)、bft类(bft:byzantine fault tolerance)或dag类(dag:directed acyclic graph)。
53.图2为本发明的区块链账本的生成方法的第一实施例中step400的流程图。
54.如图2所示,当一个交易为第一用户的某一项指定资产向第二用户转移时,step400具体包括以下步骤:
55.step410,第一用户对交易做签名;
56.step420,将交易写进第一用户的区块链账本中;
57.step430,第一用户的第一子网络向第二用户的第二子网络广播此交易;
58.step440,第二子网络收到广播后,第二子网络的所有用户对交易进行验证;
59.step450,验证通过,则接收该交易并将该交易写进第二用户的区块链账本中;验证不通过,则不接收该交易。
60.进一步地是,本发明还提供了区块链账本的生成方法的第二实施例,在第二实施例中,区块链网络中的任意一个用户可以加入其它用户的子网络,加入其它用户的子网络后,同步此子网络的所有历史账本,并且,监听新的区块数据,参与到该子网络的区块链共识的生成。
61.图3为本发明的区块链账本的生成方法的第二实施例中step400的流程图。
62.如图3所示,step400具体包括以下步骤:
63.step410,第一用户对交易做签名,向第一用户的第一子网络广播此交易;
64.step420,第一用户的第一子网络的所有其他用户验证交易的正确性,并生成此交易的合法性证明;将交易与合法性证明根据所述的共识算法打包成区块并写进第一用户的区块链账本中;
65.step430,第一用户的第一子网络向第二用户的第二子网络广播此交易及其合法性证明;
66.step440,第二用户的第二子网络收到广播后,第二子网络的所有用户对此交易及其合法性证明进行验证;
67.step450,验证通过,则接收该交易并将该交易和合法性证明根据所述的共识算法打包成区块并写进第二用户的区块链账本中;验证不通过,则不接收该交易。
68.图4为本发明的存储区块链账本的装置的实施例的示意性框图。
69.如图4所示,存储区块链账本的装置包括存储单元210和建表单元220。存储单元210存储区块链中的区块,形成当前节点的区块链账本的存储池。建表单元220建立联系表,使得当前节点能够基于存储池中存储的区块以及联系节点的区块链账本中存储的区块读取区块链中的所有区块,其中,联系表包括与当前节点连接的联系节点的区块链账本的区块存储信息。
70.存储区块链账本的装置还可包括更新单元230,更新单元230通过更新联系表来更新存储池中存储的区块。
71.存储单元210、建表单元220和更新单元230可以根据如上述的方法实施例中的区块链账本的生成方法执行所述方法中的相应步骤,例如通过存储单元210、建表单元220和更新单元230可执行的机器可读指令来实现,存储单元210、建表单元220和更新单元230的具体实现方式可参见上面描述的方法实施例,在此不再赘述。
72.图5为本发明的区块链节点的实施例的示意性框图。
73.如图5所示,区块链节点包括处理器120和存储器110,存储器110存储有计算机程序111。当所述计算机程序111被处理器执行时,区块链节点可以执行如上述的方法实施例中的区块链账本的生成方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
74.本发明实施例提供的区块链节点可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
75.其中,处理器120可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器120可以采用dsp(digital signal processing,数字信号处理)、fpga(field-
programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器120也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器120可以再集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器120还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
76.存储器110可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器110还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器110至少用于存储以下计算机程序111,其中,该计算机程序被处理器120加载并执行之后,能够实现前述任一实施例公开的区块链账本的生成方法的相关步骤。另外,存储器110所存储的资源还可以包括操作系统112和数据113等,存储方式可以是短暂存储或者永久存储。其中,操作系统112可以包括windows、unix、linux等。数据113可以包括但不限于调用数据、热点数据等。
77.在一些实施例中,区块链节点还可包括有显示屏130、输入输出接口140、通信接口150、电源160以及通信总线170。
78.本技术领域的技术人员可以理解,图5中示出的结构并不构成对区块链节点的限定,可以包括比图示更多或更少的组件。
79.可以理解的是,如果上述实施例中的区块链账本的生成方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、磁碟或者光盘等各种可以存储程序代码的介质。
80.基于此,本发明实施例还提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序被处理器执行时可以执行如上述图1至图3所示的方法实施例中的区块链账本的生成方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
81.本发明实施例所述计算机可读存储介质的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
82.在本发明所提供的几个实施例中,应该理解到,所揭露的区块链账本的生成方法、装置、区块链节点及存储介质,可以通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,其中的单元的划分仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口、装置或单元的间接耦合或通信连接,可以是电性、机械或其他的形式。
83.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
84.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
85.根据本发明的区块链账本的生成方法、装置、区块链节点及存储介质,可以将区块链账本动态分布式存储在节点中,从而在保证区块链网络有效工作的同时,减轻节点的负担,提升工作效率。
86.此外,根据本发明的区块链账本的生成方法、装置、区块链节点及存储介质,可以根据网络活跃节点的状况,在确保区块链账本有足够冗余度的情况下,在确保证区块链系统去中心化(decentralized)、去信任(trustless)、集体维护(collectively maintained)、可靠数据库(reliable database)等要求的同时,动态调整各节点存储的账本大小,减少节点负担,提高工作效率。
87.此外,根据本发明的区块链账本的生成方法、装置、区块链节点及存储介质,节点的存储池可根据网络中节点数量和自身的存取频率而动态变化,存储的区块也是在原有的基础上作有限增加或减少,不会出现大规模的数据变更,从而减少网络查询和数据传输的工作效率。
88.以上对本发明实施例所提供的区块链账本的生成方法、装置、区块链节点及存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
89.本技术领域的技术人员还可以进一步意识到,结合本发明说明书中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本技术领域的技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
90.应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本技术。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
91.还应当理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。需要说明的是,在本发明说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
92.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。以上所述,仅为本发
明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
93.以上对本发明的有关内容进行了说明。本发明说明书中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
技术特征:1.区块链账本的生成方法,区块链网络包括多个节点,每个节点上依附有一个或多个用户,其特征在于:生成方法包括以下步骤:step100,在区块链网络中基于指定资产选择与设定的共识算法适配的用户生成创始区块;step200,为区块链网络中的所有节点生成各自的子网络;step300,区块链网络中需要发生所述指定资产交易的两个用户加入彼此所在的子网络中;step400,在双方的子网络中完成交易,并将交易写进双方的区块链账本中,形成新的区块链账本;然后重复步骤step300~step400。2.如权利要求1所述的区块链账本的生成方法,其特征在于:所述的共识算法为pow、pos、dpos、bft类或dag类。3.如权利要求1所述的区块链账本的生成方法,其特征在于:在步骤300中,区块链网络中的任意一个用户可以加入其它用户的子网络。4.如权利要求3所述的区块链账本的生成方法,其特征在于:加入其它用户的子网络后,同步此子网络的所有历史账本;并且,加入其它用户的子网络后,监听新的区块数据,参与到该子网络的区块链共识的生成。5.如权利要求3所述的区块链账本的生成方法,其特征在于:step400具体包括以下步骤:step410,第一用户对交易做签名;step420,将交易写进第一用户的区块链账本中;step430,第一用户的第一子网络向第二用户的第二子网络广播此交易;step440,第二子网络收到广播后,第二子网络的所有用户对交易进行验证;step450,验证通过,则接收该交易并将该交易写进第二用户的区块链账本中;验证不通过,则不接收该交易。6.如权利要求5所述的区块链账本的生成方法,其特征在于:step410还包括:第一用户向第一子网络广播已做签名的交易;step420还包括:第一子网络的其他用户验证交易的正确性,并生成此交易的合法性证明;step430还包括:第一子网络向第二子网络广播所述合法性证明;step440还包括:第二子网络的所有用户对合法性证明进行验证。7.如权利要求6所述的区块链账本的生成方法,其特征在于:step420中,还包括将交易与合法性证明根据所述的共识算法打包成区块并写进第一用户的区块链账本中;step450中,还包括将验证通过的交易与合法性证明根据所述的共识算法打包成区块并写进第二用户的区块链账本中。8.存储由权利要求1-7之一所述的生成方法所生成的区块链账本的装置,其特征在于:所述存储区块链账本的装置针对每个节点执行以下操作:存储单元,存储区块链中的区块,形成当前节点的区块链账本的存储池;建表单元,建立联系表,其中,所述联系表包括与当前节点连接的联系节点的区块链账
本的区块存储信息。9.区块链节点,其特征在于,包括:存储器;处理器;以及计算机程序;其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现权利要求1-7之一所述的区块链账本的生成方法。10.计算机可读的存储介质,其特征在于:所述计算机可读的存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7之一所述的区块链账本的生成方法。
技术总结本发明公开了区块链账本的生成方法、装置、区块链节点以及存储介质。区块链网络包括多个节点,每个节点上依附有一个或多个用户,生成方法包括以下步骤:Step100,在区块链网络中基于指定资产选择与设定的共识算法适配的用户生成创始区块;Step200,为区块链网络中的所有节点生成各自的子网络;Step300,区块链网络中需要发生所述指定资产交易的两个用户加入彼此所在的子网络中;Step400,在双方的子网络中完成交易,并将交易写进双方的区块链账本中,形成新的区块链账本;然后重复步骤Step300~Step400。在本发明中,节点只需要存储与交易有关系的用户的数据,因此,可以显著节约账本存储空间。存储空间。存储空间。
技术研发人员:吴小平
受保护的技术使用者:吴小平
技术研发日:2022.07.13
技术公布日:2022/11/1