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

具有高效世界状态数据结构的区块链系统的制作方法

2022-02-22 03:05:15 来源:中国专利 TAG:


1.本文涉及具有高效世界状态数据结构的区块链系统。


背景技术:

2.分布式账本系统(dls),也可以被称为共识网络和/或区块链网络,使得参与实体能够安全地且不可篡改地存储数据。区块链网络的类型示例可以包括公有区块链网络、私有区块链网络和联盟区块链网络。联盟区块链网络针对选定的实体组群提供,该实体组群控制共识处理,并且所述联盟区块链网络包括访问控制层。
3.基于区块链的程序可以由分布式计算平台执行。例如,分布式计算平台可以包括提供用于执行智能合约的运行环境的虚拟机。区块链计算平台可以被看作是基于交易的状态机。平台中的状态数据可以组合成被称为世界状态的全局共享状态。世界状态包括账户地址和账户状态之间的映射。世界状态可以被存储在例如默克尔帕特里夏树(merkle patricia tree,mpt)的内容寻址树结构中。
4.内容寻址状态树本质上是增加的。即,通过添加新的树结构而不是更新现有状态树的值来反映账户状态的变化。因此,随着新交易不断进入区块链,内容寻址状态树的大小可能会增长得非常大。在一些dls中,每个节点都存储世界状态的整个副本,这会占用大量存储空间,因为所有区块数据和状态数据都被存储,追溯至记录到区块链的第一笔交易,即使与历史区块相关联的一些状态数据很少被访问。
5.由于每个区块链节点负责处理整个区块链网络的交易量,因此对于具有大量节点的区块链网络,每个区块链节点的计算和存储负担会非常高。
6.在不影响系统性能和数据完整性的情况下,改进默克尔树的处理以使其更快、更高效,这是所希望的。根据所描述的实施例,可以基于用于处理世界状态和默克尔树的高效数据结构来改进默克尔树的处理。


技术实现要素:

7.所描述的主题的实施方案可以包括单独或组合的一个或多个特征。例如,在一个实施例中,提供了一种计算机实现的用于处理与一个或多个区块链相关联的世界状态信息的方法。所述方法包括:提供包括多个分片的群组世界状态,其中,每个分片包括一个或多个世界状态,每个世界状态存储关于与该世界状态相关联的用户账户的状态的信息,并且每个分片与包括一个或多个区块的区块链相关联,所述一个或多个区块存储与关联于所述区块链的用户账户相关联的交易数据。所述方法包括基于一个或多个标准动态修改所述群组世界状态中的分片数量,包括以下至少一项:(i)将所述多个分片之一划分为两个或更多个分片,(ii)将两个或更多个分片合并为一个分片,(iii)将一个或多个分片添加至所述群组世界状态,或(iv)从所述群组世界状态中移除一个或多个分片。所述方法包括生成群组世界状态的根哈希值,其中,所述根哈希值表示与所述群组世界状态中的分片中的世界状态相关联的用户账户的状态的数字指纹。
8.在一些实施例中,这些一般和特定方面可以使用系统、方法或计算机程序,或系统、方法和计算机程序的任何组合来实现。可选地,前述和其他所述的实施例可以各自包括以下一个或多个方面:
9.在一些实施例中,基于一个或多个标准动态地修改所述群组世界状态中的分片数量包括将第一分片划分为第二分片和第三分片,所述第二分片包括所述第一分片的世界状态的第二子集,所述第三分片包括所述第一分片的世界状态的第三子集。
10.在一些实施例中,基于一个或多个标准动态地修改所述群组世界状态中的分片数量包括合并第二分片和第三分片以生成第一分片,其中,所述第一分片包括所述第二分片的一个或多个世界状态和所述第三分片的一个或多个世界状态。
11.在一些实施例中,基于一个或多个标准动态地修改所述群组世界状态中的分片数量包括将一个或多个新分片添加到所述群组世界状态中,其中,所述一个或多个新分片包括先前不包括在所述群组世界状态中的一个或多个世界状态。
12.在一些实施例中,基于一个或多个标准动态地修改所述群组世界状态中的分片数量包括从所述群组世界状态中移除一个或多个分片,包括移除从所述群组世界状态中移除的一个或多个分片中的一个或多个世界状态。
13.在一些实施例中,所述方法包括:在包括处于一个或多个位置的一个或多个计算机的系统处评估所述一个或多个标准,并在确定满足所述一个或多个标准时将所述多个分片之一划分为两个或更多个分片。
14.在一些实施例中,所述方法包括:在包括处于一个或多个位置的一个或多个计算机的系统处评估所述一个或多个标准,并且在确定满足一个或多个标准时将两个或更多个分片合并为一个分片。
15.在一些实施例中,所述方法包括基于所述群组世界状态中的分片数量动态修改分配至所述群组世界状态的资源。
16.在一些实施例中,所述方法包括响应于所述群组世界状态中的分片数量增加,向所述群组世界状态分配更多资源。
17.在一些实施例中,所述方法包括响应于所述群组世界状态中的分片数量减少,向所述群组世界状态分配更少资源。
18.在一些实施例中,所述资源包括算力、存储器、数据存储容量或数据带宽中的至少一个。
19.在一些实施例中,所述一个或多个条件包括服务质量度量、算力要求、存储器容量要求、数据存储容量要求或数据带宽要求中的至少一个。
20.在一些实施例中,所述方法包括确定以下至少一项:(i)服务质量度量低于阈值、(ii)算力要求不满足、(iii)存储器容量要求不满足、(iv)数据存储容量要求不满足、或(v)数据带宽要求不满足。所述方法包括:响应于所述确定,将所述多个分片之一划分为两个或更多个分片,以及与分配至所述多个分片之一的资源相比,将更多资源分配至所述两个或更多个分片的组合,其中,所述资源包括算力、存储器容量、数据存储容量或数据带宽中的至少一个。
21.在一些实施例中,所述方法包括确定以下至少一项:(i)服务质量度量值高于阈值、(ii)空闲或多余的算力高于阈值、(iii)可用存储器容量高于阈值、(iv)可用数据存储
器容量高于阈值、或(v)可用数据带宽高于阈值。所述方法包括:响应于所述确定,将两个或更多个分片合并为一个分片,以及与分配至所述合并前的两个或更多个分片的资源相比,将更少的资源分配至所述合并后的单个分片,其中,所述资源包括算力、存储器容量、数据存储容量或数据带宽中的至少一个。
22.在一些实施例中,使用默克尔树、帕特里夏树、默克尔帕特里夏树、修改的默克尔帕特里夏树或桶树中的至少一种来维护每个世界状态。
23.在一些实施例中,将所述多个分片之一划分为两个或更多个分片包括将第一分片划分为第二分片和第三分片,所述第一分片包括第一世界状态数据库,所述第一世界状态数据库包括第一组世界状态。将所述第一分片划分为所述第二分片和所述第三分片,包括:生成所述第一分片的第一快照,其中,所述第一快照包括第一世界状态数据库的快照;缩减(trim)所述第一分片以生成所述第二分片,包括移除所述第一世界状态数据库中的一个或多个世界状态以生成第二世界状态数据库,所述第二世界状态数据库包括所述第一分片中的一个或多个世界状态的第二子集。所述方法包括缩减所述第一分片的第一快照以生成所述第三分片,包括移除所述第一世界状态数据库中的一个或多个世界状态以生成第三世界状态数据库,所述第三世界状态数据库包括所述第一分片中的一个或多个世界状态的第三子集,其中,所述一个或多个世界状态的第三子集不同于所述一个或多个世界状态的第二子集。
24.在一些实施例中,将所述多个分片之一划分为两个或更多个分片,包括将所述多个分片之一划分为三个或更多个分片。
25.在一些实施例中,将两个或更多个分片合并为一个分片包括将第二分片和第三分片合并为第一分片。所述第二分片包括第二世界状态数据库,所述第二世界状态数据库包括存储与第二组用户账户相关联的状态信息的第二组世界状态。所述第三分片包括第三世界状态数据库,所述第三世界状态数据库包括存储与第三组用户账户相关联的状态信息的第三组世界状态。所述第一分片包括第一世界状态数据库,所述第一世界状态数据库包括第一组世界状态,所述第一组世界状态包括所述第二组世界状态和所述第三组世界状态,所述第一组世界状态存储与第一组用户账户相关联的状态信息,所述第一组用户账户包括所述第二组用户账户和所述第三组用户账户。
26.在一些实施例中,将所述多个分片之一划分为两个或更多个分片包括将第一分片划分为第二分片和第三分片。所述第一分片与第一组用户账户相关联,所述第二分片与第二组用户账户相关联,所述第三分片与第三组用户账户相关联。所述第二组用户账户是所述第一组用户账户的第二子集,所述第三组用户账户是所述第一组用户账户的第三子集,所述用户账户的第三子集不同于所述用户账户的第二子集。
27.在一些实施例中,所述方法包括基于所述用户账户的特征将用户账户与所述世界状态相关联,其中,每个用户账户仅与所述世界状态之一相关联。
28.在一些实施例中,所述用户账户基于用户账户标识的特征与所述世界状态相关联。
29.在一些实施例中,所述用户账户基于所述用户账户标识的预定字节或字节字与所述世界状态相关联。
30.在一些实施例中,所述群组世界状态支持最多2n个世界状态,并且其用户账户标
识的预定字节或字节字等于m的用户账户与第m个世界状态相关联,1≤m≤2n。
31.在一些实施例中,所述群组世界状态支持最多216=65536个世界状态,并且其用户账户标识的前两个字节字等于m的用户账户与第m个世界状态相关联,1≤m≤65536。
32.在一些实施例中,所述用户账户基于用户账户的优先级与所述世界状态相关联。
33.在一些实施例中,所述方法包括提供第一组一个或多个规则,所述第一组一个或多个规则指定要增加群组世界状态中的分片数量的一个或多个条件。
34.在一些实施例中,所述方法包括提供第二组一个或多个规则,所述第二组一个或多个规则指定要减少群组世界状态中的分片数量的一个或多个条件。
35.在另一个实施例中,提供了一种计算机实现的用于处理与一个或多个区块链相关的世界状态信息的方法。所述方法包括提供与第一组用户账户相关联的第一分片,其中,所述第一分片包括第一区块链数据库和第一世界状态数据库。所述第一区块链数据库包括由第一区块链网络管理的第一区块链,其中,通过所述第一区块链网络的区块链节点的共识将区块链数据存储在所述第一区块链上。所述第一世界状态数据库包括多个世界状态,每个世界状态与多个用户账户相关联,每个世界状态存储所述世界状态相关联的所述用户账户的当前状态。所述方法包括将所述第一分片划分为第二分片和第三分片。所述划分包括生成所述第一分片的第一快照,其中,所述第一快照包括所述第一区块链数据库的快照和所述第一世界状态数据库的快照。所述划分包括缩减所述第一分片以生成所述第二分片,包括移除所述第一分片的第一世界状态数据库中的一个或多个世界状态以生成第二世界状态数据库,所述第二世界状态数据库包括所述第一分片中的一个或多个世界状态的第二子集。缩减所述第一分片的所述第一快照以生成所述第三分片,包括移除所述第一快照的第一世界状态数据库中的一个或多个世界状态以生成第三世界状态数据库,所述第三世界状态数据库包括所述第一分片中的一个或多个世界状态的第三子集,其中,所述一个或多个世界状态的第三子集不同于所述一个或多个世界状态的第二子集。
36.在一些实施例中,所述方法包括:与分配至第一分片的资源相比,在将所述第一分片划分为所述第二分片和所述第三分片之后,向所述第二分片和所述第三分片的组合分配更多的资源。
37.在一些实施例中,所述第一世界状态数据库与第一组用户账户相关联,所述第二世界状态数据库与第二组用户账户相关联,所述第三世界状态数据库与第三组用户账户相关联,并且所述第一组用户账户包括所述第二组用户账户和所述第三组用户账户的总和。
38.在一些实施例中,所述第一世界状态数据库与所述第一组用户账户相关联,所述第二世界状态数据库与第二组用户账户相关联,所述第三世界状态数据库与第三组用户账户相关联,所述第二组用户账户与所述第三组用户账户不重叠。
39.在一些实施例中,分配更多资源包括:分配更多的算力、存储器、数据存储容量或数据带宽中的至少一个。
40.在一些实施例中,生成所述第一分片的快照包括:使用与所述第一分片相关联的虚拟机生成所述第一分片的快照。
41.在一些实施例中,所述共识区块链网络包括:参与用以确定是否将数据写入区块链的共识处理的验证对等节点和不参与所述共识处理的非验证对等节点。生成所述第一分片的快照包括使用所述非验证对等节点生成所述快照。
42.在一些实施例中,所述共识区块链网络包括:参与用以确定是否将数据写入区块链的共识处理的验证对等节点和不参与所述共识处理的非验证对等节点。生成所述第一分片的快照包括增加验证对等节点的数量,以及使用所述验证对等节点生成所述快照。
43.在一些实施例中,所述第一世界状态数据库的多个世界状态中的每个世界状态包括根节点。所述第一区块链数据库的第一区块链包括第一区块,所述第一区块包括区块头和区块体,所述区块头存储第一哈希值,所述第一哈希值是从所述第一世界状态数据库的多个世界状态的根节点的哈希值的哈希处理得出的,并且所述第一哈希值表示与所述第一世界状态数据库的多个世界状态相关联的用户账户的当前状态的数字指纹。
44.在一些实施例中,所述第一世界状态数据库的多个世界状态中的每个世界状态均包括根节点,所述第一区块链数据库的第一区块链包括第一区块,所述第一区块包括区块头和区块体,以及所述区块头存储所述第一世界状态数据库中的世界状态的根节点的哈希值。
45.在一些实施例中,所述第二分片包括包含第二区块链的第二区块链数据库,所述第二区块链存储与关联于所述第二分片的用户账户相关联的交易数据。所述第二区块链包括第一区块,所述第一区块包括存储有关交易的信息的区块体。缩减(trim)所述第一分片包括:针对不与所述第二世界状态数据库中的一个或多个世界状态的第二子集相关联的用户账户,移除与所述用户账号所关联的交易相关的信息。
46.在一些实施例中,所述第三分片包括包含第三区块链的第三区块链数据库,所述第三区块链存储与关联于所述第三分片的用户账户相关联的交易数据。所述第三区块链包括第一区块,所述第一区块包括存储有关交易的信息的区块体。缩减所述第一分片的第一快照包括:针对不与所述第三世界状态数据库中的一个或多个世界状态的第三子集相关联的用户账户,移除与所述用户账户所关联的交易相关的信息。
47.在一些实施例中,所述第三分片包括包含第三区块链的第三区块链数据库,所述第三区块链存储与关联于所述第三分片的用户账户相关联的交易数据。所述方法包括将所述第三分片划分为第四分片和第五分片。所述划分包括:生成所述第三分片的第二快照,其中,所述第二快照包括所述第三区块链数据库的快照和所述第三世界状态数据库的快照。所述划分包括:缩减所述第三分片以生成所述第四分片,包括移除所述第三分片的第三世界状态数据库中的一个或多个世界状态,以生成包括所述第三分片中一个或多个世界状态的第四子集的第四世界状态数据库。所述划分包括:缩减所述第三分片的第二快照以生成所述第五分片,包括移除所述第二快照的第三世界状态数据库中的一个或多个世界状态以生成第五世界状态数据库,所述第五世界状态数据库包括所述第三分片中一个或多个世界状态的第五子集,其中,所述一个或多个世界状态的第五子集不同于所述一个或多个世界状态的第四子集。
48.在一些实施例中,所述方法包括:与分配至所述第三分片的资源相比,向所述第四分片和所述第五分片的组合分配更多的资源。
49.在一些实施例中,使用包括默克尔树、帕特里夏树、默克尔帕特里夏树、修改的默克尔帕特里夏树或桶树中的至少一种的数字树,维护每个世界状态。
50.在一些实施例中,所述方法包括:基于维护所述第一分片和所述第二分片的世界状态的数字树的根节点的哈希值,生成表示所述第一分片和所述第二分片的世界状态的群
组世界状态哈希值。
51.在一些实施例中,所述方法包括:通过以下生成与用户账户相关联的交易的简化支付验证证明:基于从群组世界状态的根节点到分片世界状态的根节点的路径生成第一证明,基于从所述分片世界状态的根节点到与所述用户账户相关联的世界状态的根节点的路径生成第二证明,以及基于从所述世界状态的根节点到表示所述用户账户的节点的路径生成第三证明。
52.在另一个实施例中,提供了一种计算机实现的用于处理与一个或多个区块链相关联的世界状态信息的方法。所述方法包括:提供区块链账本的第一分片,其中,所述第一分片包括第一区块链数据库和第一世界状态数据库,所述第一世界状态数据库包括多个世界状态,并且每个世界状态存储与所述世界状态相关联的用户账户的当前状态。所述方法包括:生成包括所述第一区块链数据库的副本和所述第一世界状态数据库的副本的所述第一分片的第一副本。所述方法包括:通过移除所述第一分片的第一世界状态数据库中的一个或多个世界状态来生成第二分片,其中,所述第一分片中的一个或多个世界状态的第二子集保留在所述第二分片中。所述方法包括:通过移除所述第一分片的第一副本中的第一世界状态数据库中的一个或多个世界状态来生成第三分片,其中,所述第一分片中的一个或多个世界状态的第三子集保留在所述第三分片中,所述一个或多个世界状态第三子集不同于所述一个或多个世界状态的第二子集。
53.在一些实施例中,所述方法包括:与分配至所述第一分片的资源相比,向所述第二分片和所述第三分片的组合分配更多的资源。
54.在另一个实施例中,提供了一种计算机实现的用于处理与一个或多个区块链相关联的世界状态信息的方法。所述方法包括:将多个用户账户划分为至少第一组用户账户和第二组用户账户;以及将第一区块链数据库及第一世界状态数据库与所述第一组用户账户相关联。所述第一区块链数据库包括由第一区块链网络管理的第一区块链,其中,通过所述第一区块链网络的区块链节点的共识将区块链数据存储在所述第一区块链上。所述第一世界状态数据库包括多个世界状态,每个世界状态与所述第一组用户账户的子集相关联,并且每个世界状态存储与所述世界状态相关联的用户账户的当前状态。所述方法包括将第二区块链数据库及第二世界状态数据库与所述第二组用户账户相关联。所述第二区块链数据库包括由第二区块链网络管理的第二区块链,其中,通过所述第二区块链网络的区块链节点的共识将区块链数据存储在所述第二区块链上。所述第二世界状态数据库包括多个世界状态,每个世界状态与所述第二组用户账户的子集相关联,并且每个世界状态存储与所述世界状态相关联的用户账户的当前状态。所述方法包括:生成表示所述第一世界状态数据库的世界状态的数字指纹的第一哈希值,其中,所述第一哈希值是基于所述第一世界状态数据库中每个世界状态的根哈希值生成的。所述方法包括:生成表示所述第二世界状态数据库的世界状态的数字指纹的第二哈希值,其中,所述第二哈希值是基于所述第二世界状态数据库中每个世界状态的根哈希值生成的。所述方法包括:在所述第一区块链的第一区块的区块头处,存储所述第一哈希值;在所述第二区块链的第一区块的区块头处,存储所述第二哈希值;以及生成表示所述第一世界状态数据库和所述第二世界状态数据库的世界状态的数字指纹的群组世界状态根哈希值,其中,所述群组世界状态根哈希值是基于所述第一哈希值和所述第二哈希值生成的。
55.在另一个实施例中,提供了一种计算机实现的用于处理与一个或多个区块链相关联的世界状态信息的方法。所述方法包括:将多个用户账户划分为至少第一组用户账户和第二组用户账户。所述方法包括将所述第一组用户账户与第一区块链数据库及第一世界状态数据库相关联,其中,所述第一区块链数据库存储第一区块链,所述第一区块链存储与所述第一组用户账户相关联的交易数据,所述第一世界状态数据库包括多个世界状态,并且每个世界状态都与所述第一组用户账户的子集相关联。所述方法包括将所述第二组用户账户与第二区块链数据库及第二世界状态数据库相关联,其中,所述第二区块链数据库存储第二区块链,所述第二区块链存储与所述第二组用户账户相关联的交易数据,所述第二世界状态数据库包括多个世界状态,并且每个世界状态都与所述第二组用户账户的子集相关联。所述方法包括在所述第一区块链的第一区块的区块头处,存储表示所述第一世界状态数据库中世界状态的数字指纹的第一哈希值。所述方法包括在所述第二区块链的第一区块的区块头处,存储表示所述第二世界状态数据库中世界状态的数字指纹的第二哈希值。所述方法包括基于所述第一哈希值和所述第二哈希值,生成表示所述第一世界状态数据库和所述第二世界状态数据库中的世界状态的数字指纹的群组世界状态根哈希值。
56.在一些实施例中,提供了一种计算机实现的用于处理与一个或多个区块链相关联的世界状态信息的方法。所述方法包括:提供包括多个分片的群组世界状态,其中,每个分片包括世界状态数据库。所述世界状态数据库包括多个世界状态,每个世界状态存储有关与所述世界状态相关联的用户账户的状态的信息,每个分片与包括包含一个或多个区块的区块链的区块链数据库相关联,所述一个或多个区块存储与区块链相关联的用户账户相关联的交易数据。所述多个分片中的第一分片包括第一世界状态数据库,所述第一世界状态数据库包括存储关于第一组用户账户的状态信息的第一组世界状态。所述多个分片中的第二分片包括第二世界状态数据库,所述第二世界状态数据库包括存储关于第二组用户账户的状态信息的第二组世界状态。所述方法包括合并所述第一分片和所述第二分片以生成第三分片,包括合并所述第一世界状态数据库和所述第二世界状态数据库以生成第三世界状态数据库,所述第三世界状态数据库包括第三组世界状态,所述第三组世界状态包括所述第一组世界状态和所述第二组世界状态,其中,所述第三组世界状态存储有关所述第一组用户账户和所述第二组用户账户的状态信息。
57.在一些实施例中,每个世界状态是使用数字树维护的,所述第一组世界状态是使用第一组数字树维护的,所述第二组世界状态是使用第二组数字树维护的,所述第三组世界是使用第三组数字树维护状态,所述第三组数字树包括所述第一组数字树和所述第二组数字树。
58.在一些实施例中,每个数字树包括默克尔树、帕特里夏树、默克尔帕特里夏树、修改的默克尔帕特里夏树或桶树中的至少一种。
59.在一些实施例中,所述方法包括确定所述第一分片是由划分处理生成的,所述划分处理包括生成第四分片的快照,缩减所述第四分片或所述第四分片的快照以生成所述第一分片,以及在合并所述第一分片和所述第二分片之前等待所述第四分片或所述第四分片的快照完成缩减。
60.在一些实施例中,所述方法包括与分配至所述第一分片和所述第二分片的组合的资源相比,向所述第三分片分配更少的资源。
61.在一些实施例中,所述资源包括算力、存储器、数据存储容量或数据带宽中的至少一项。
62.在一些实施例中,所述第一分片与包括第一区块链的第一区块链数据库相关联,所述第一区块链存储与所述第一组用户账户相关联的交易数据,所述第二分片与包括第二区块链的第二区块链数据库相关联,所述第二区块链存储与所述第二组用户账户相关联的交易数据。所述方法包括合并所述第一区块链数据库和所述第二区块链数据库以生成包括第三区块链的第三区块链数据库,所述第三区块链存储与所述第一组用户账户和所述第二组用户账户相关联的交易数据。
63.在一些实施例中,所述第三区块链包括存储信息的第一区块,所述信息指示所述第三区块链是通过合并至少两个区块链而生成的。
64.在一些实施例中,所述第一区块链数据库包括促进所述第一区块链中数据的搜索的第一数据结构,所述第二区块链数据库包括促进所述第二区块链中数据的搜索的第二数据结构,所述第三区块链数据库包括促进所述第三区块链数据库中数据的搜索的所述第一数据结构和所述第二数据结构。
65.在一些实施例中,所述第一区块链数据库存储所述第一组世界状态的第一根哈希值,所述第二区块链数据库存储所述第二组世界状态的第二根哈希值,所述第三区块链数据库存储所述第三组世界状态的第三根哈希值。
66.在另一个实施例中,提供了一种计算机实现的用于处理与一个或多个区块链相关联的世界状态信息的方法。所述方法包括提供包括多个分片的群组世界状态,其中,每个分片包括世界状态数据库。所述世界状态数据库包括多个世界状态,每个世界状态存储有关与所述世界状态相关联的用户账户的状态的信息,并且每个分片与包括包含一个或多个区块的区块链的区块链数据库相关联,所述一个或多个区块存储与关联于所述区块链的用户账户相关联的交易数据。所述群组世界状态的多个分片中的第一分片包括第一世界状态数据库。所述方法包括:通过生成所述第一分片的快照来生成中间分片;移除所述第一分片中的一个或多个世界状态以生成第二分片,所述第二分片包括所述第一分片中一个或多个世界状态的第二子集;以及移除所述中间分片中的一个或多个世界状态以生成第三分片,所述第三分片包括所述第一分片中的一个或多个世界状态的第三子集,其中,所述一个或多个世界状态的第三子集不同于所述一个或多个世界状态的第二子集。
67.在一些实施例中,所述方法包括:与分配至所述第一分片的资源相比,向所述第二分片和所述第三分片的组合分配更多的资源。
68.在另一个实施例中,提供了一种计算机实现的用于处理与一个或多个区块链相关联的世界状态信息的方法。所述方法包括:提供包括多个分片的群组世界状态,其中,每个分片包括一个或多个世界状态,每个世界状态存储有关与该世界状态相关联的用户账户的状态的信息,并且每个分片与包含一个或多个区块的区块链相关联,所述一个或多个区块存储与关联于所述区块链的所述用户账户相关联的交易数据。所述方法包括:基于第一共识节点处的共识处理与一个或多个其他共识节点处的共识处理的比较结果,动态修改所述群组世界状态中的分片数量;以及生成所述群组世界状态的根哈希值,其中,所述根哈希值表示与所述群组世界状态中的分片中的世界状态相关联的用户账户状态的数字指纹。
69.在一些实施例中,动态修改所述群组世界状态中的多个分片包括以下至少一项:
(i)将所述多个分片之一划分为两个或更多个分片、(ii)将两个或更多个分片合并为一个分片、(iii)将一个或多个新分片添加至所述群组世界状态中、或(iv)从所述群组世界状态中移除一个或多个分片。
70.在一些实施例中,动态修改所述群组世界状态中的分片数量包括:如果所述第一共识节点处的共识处理比一个或多个其他共识节点处的共识处理慢第一阈值,则增加所述群组世界状态中的分片数量。
71.在一些实施例中,动态修改所述群组世界状态中的分片数量包括:如果所述第一共识节点处的共识处理比一个或多个其他共识节点处的共识处理快第二阈值,则减少所述群组世界状态中的分片数量。
72.在一些实施例中,所述方法包括:提供第一组一个或多个规则,其指定要增加群组世界状态中的分片数量的一个或多个条件。
73.在一些实施例中,所述方法包括:提供第二组一个或多个规则,其指定要减少所述群组世界状态中的分片数量的一个或多个条件。
74.在一些实施例中,所述方法包括:确定所述第一共识节点处的共识处理的第一速度,以及确定一个或多个其他共识节点处的共识处理的第二速度。所述方法包括:比较所述第一共识节点处的共识处理的第一速度和所述一个或多个其他共识节点处的共识处理的第二速度;以及生成所述第一共识节点处的共识处理与所述一个或多个其他共识节点处的共识处理的比较结果。
75.在另一个实施例中,一种系统包括:一个或多个处理器;以及耦接到所述一个或多个处理器并在其上存储有指令的一个或多个计算机可读存储器,所述指令能够由所述一个或多个处理器执行以执行上述方法中的任一方法。
76.在另一个实施例中,一种装置包括用于执行上述方法中的任一方法的多个模块。
77.在另一个实施例中,提供了一种用于处理与一个或多个区块链相关联的世界状态信息的系统。所述系统包括:基于区块链的应用模块,被配置为向与用户账户相关联的用户提供服务;以及区块链账本,包括至少一个区块链和包括多个分片的群组世界状态,其中,每个分片包括世界状态数据库,所述世界状态数据库包括多个世界状态,每个世界状态被配置为存储有关与该世界状态相关联的用户账户的状态的信息,每个分片与包括包含一个或多个区块的区块链的区块链数据库相关联,所述一个或多个区块存储与关联于所述区块链的用户账户相关联的交易数据。所述系统包括:区块链账本修改模块,被配置为基于一个或多个标准,动态修改所述群组世界状态中的分片数量,包括以下至少一项:(i)将所述多个分片之一划分为两个或更多个分片、(ii)将两个或更多分片合并为一个分片、(iii)将一个或多个新分片添加到所述群组世界状态中、或(iv)从所述群组世界状态中移除一个或多个分片。
78.在一些实施例中,所述系统包括根哈希值生成模块,被配置为基于所述群组世界状态中的世界状态的根哈希值生成所述群组世界状态的根哈希值。
79.在一些实施例中,所述系统包括规则集数据库,所述规则集数据库包括第一组一个或多个规则,所述第一组一个或多个规则指定要增加所述群组世界状态中的分片数量的一个或多个条件。
80.在一些实施例中,所述系统包括规则集数据库,所述规则集数据库包括第二组一
个或多个规则,所述第二组一个或多个规则指定要减少所述群组世界状态中的分片数量的一个或多个条件。
81.在另一个实施例中,提供了一种用于处理与一个或多个区块链相关联的世界状态信息的系统。所述系统包括:基于区块链的应用模块,被配置为向与用户账户相关联的用户提供服务。所述系统包括:区块链账本,所述区块链账本包括至少一个区块链和包括多个分片的群组世界状态,其中,每个分片包括世界状态数据库。所述世界状态数据库包括多个世界状态,每个世界状态配置为存储有关与该世界状态相关联的用户账户的状态的信息,每个分片与包括包含一个或多个区块的区块链的区块链数据库相关联,所述一个或多个区块存储与关联于所述区块链的用户账户相关联的交易数据。所述系统包括:区块链账本修改模块,被配置为基于所述系统处的共识处理与一个或多个其他共识节点处的共识处理的比较结果,动态修改所述群组世界状态中的分片数量。
82.在一些实施例中,所述区块链账本修改模块被配置为动态修改所述群组世界状态中的分片数量,包括以下至少一项:(i)将所述多个分片之一划分为两个或更多个分片、(ii)将两个或更多个分片合并为一个分片、(iii)将一个或多个新分片添加至所述群组世界状态、或(iv)从所述群组世界状态中移除一个或多个分片。
83.在一些实施例中,所述系统包括规则集数据库,所述规则集数据库包括第一组一个或多个规则,所述第一组一个或多个规则指定要增加所述群组世界状态中的分片数量的一个或多个条件。
84.在一些实施例中,所述系统包括规则集数据库,所述规则集数据库包括第二组一个或多个规则,所述第二组一个或多个规则指定要减少所述群组世界状态中的分片数量的一个或多个条件。
85.在另一个实施例中,提供了一种用于处理与区块链相关联的世界状态信息的方法。所述方法包括提供与多个用户账户相关联的多个智能合约,其中,每个智能合约与由对应区块链网络管理的对应区块链相关联,并且通过区块链网络的区块链节点的共识将区块链数据存储在区块链上。所述方法包括提供多个数字树以维护与智能合约和用户账户相关联的一个或多个世界状态,其中,每个世界状态存储与用户账户或智能合约中的至少一个相关联的状态数据。所述多个智能合约中的第一智能合约包括第一代码,所述第一代码标识第一状态数据和多个数字树中的用于存储第一状态数据的第一数字树。所述方法还包括:提供与对应于所述第一智能合约的区块链相关联的虚拟机,其中,所述虚拟机被配置为执行所述第一智能合约以使所述第一状态数据存储在第一数字树中。
86.在一些实施例中,所述虚拟机可以包括智能合约编译器,该智能合约编译器被配置为将所述第一智能合约编译为可以由所述虚拟机执行的第一字节码,其中,所述编译器被配置为识别并编译所述第一代码,使得所述第一字节码在由所述虚拟机执行时使得所述第一状态数据存储在所述第一数字树中。
87.在一些实施例中,所述方法可以包括提供智能合约编译器,该智能合约编译器被配置为将所述第一智能合约编译为可以由所述虚拟机执行的第一字节码,其中,该编译器被配置为识别并编译所述第一代码,使得所述第一字节码在由所述虚拟机执行时使得所述第一状态数据存储在所述第一数字树中。
88.在一些实施例中,由所述第一代码标识的所述状态数据可以包括以下至少一项:
(i)关于与所述第一智能合约相关联的用户账户的状态的数据,或者(ii)关于所述第一智能合约的状态的数据。
89.在一些实施例中,所述第一智能合约可以包括第二代码,所述第二代码标识第二状态数据和所述多个数字树中的用于存储所述第二状态数据的第二数字树。编译器可以被配置为识别和编译第一代码和第二代码,以使第一字节代码在由虚拟机执行时使得所述第一状态数据被存储在所述第一数字树中,并且所述第二状态数据被存储在所述第二数字树中。
90.在一些实施例中,所述第一数字树和所述第二数字树可以组合地维护与关联于所述第一智能合约的用户账户相关联的世界状态。
91.在一些实施例中,所述第一代码可以指定与第一地理区域中的用户账户相关联的状态数据将被存储在所述第一数字树中,并且所述第二代码可以指定与第二地理区域中的用户账户相关联的状态数据将被存储在所述第二数字树中。
92.在一些实施例中,所述第一智能合约可以包括第三代码,所述第三代码标识第三状态数据和多个数字树中的用于存储所述第三状态数据的第三数字树。所述第一数字树、所述第二数字树和所述第三数字树可以组合地维护与关联于所述第一智能合约的用户账户相关联的世界状态。所述编译器可以被配置为识别并编译所述第一代码、所述第二代码和所述第三代码,使得所述第一字节代码在由所述虚拟机执行时使得所述第一状态数据将存储在所述第一数字树中,所述第二状态数据将存储在所述第二数字树中,所述第三状态数据将存储在所述第三数字树中。
93.在一些实施例中,所述第一数字树、所述第二数字树和所述第三数字树可以组合地维护与关联于所述第一智能合约的用户账户相关联的世界状态。
94.在一些实施例中,所述第一代码可以指定与第一地理区域中的用户账户相关联的状态数据将存储在所述第一数字树中,所述第二代码可以指定与第二地理区域中的用户账户相关联的状态数据将存储在所述第二数字树中,以及所述第三代码可以指定与第三地理区域中的用户账户相关联的状态数据将存储在所述第三数字树中。
95.在一些实施例中,所述多个智能合约中的第二智能合约可以包括第四代码,所述第四代码标识第四状态数据和所述多个数字树中的用于存储所述第四状态数据的第四数字树。所述第一智能合约和所述第二智能合约可以与相同的区块链相关联,并且所述第一数字树和所述第四数字树可以组合地维护存储与所述第一智能合约和所述第二智能合约相关联的用户账户的状态数据的世界状态。所述编译器可以被配置为将所述第二智能合约编译为第二字节码。所述编译器被配置为识别并编译所述第四代码,以使所述第二字节码在由所述虚拟机执行时使得所述第四状态数据被存储在所述第四数字树中。
96.在一些实施例中,所述第一代码可以包括所述第一数字树的第一地址,所述编译器可以被配置为将所述第一智能合约编译成所述第一字节码,以使所述第一字节码在由所述虚拟机执行时使得所述第一状态数据将被存储在具有所述第一地址的第一数字树中。
97.在一些实施例中,所述第一地址可以由恒定值表示。
98.在一些实施例中,所述第一地址可以由布尔函数确定。
99.在一些实施例中,所述第一地址可以由数学函数确定。
100.在一些实施例中,所述第一地址可以由包括一个或多个规则的规则集确定。
101.在一些实施例中,所述第一地址可以在编译所述第一智能合约的第一时间段确定。
102.在一些实施例中,所述第一地址可以在执行所述第一字节码的第二时间段确定。
103.在一些实施例中,所述第二代码可以包括所述第二数字树的第二地址,并且所述编译器可以被配置为将所述第一智能合约编译为所述第一字节码,以使所述第一字节码在由所述虚拟机执行时使得所述第二状态数据将存储在具有所述第二地址的所述第二数字树中。
104.在一些实施例中,所述第二地址可以由恒定值表示。
105.在一些实施例中,所述第二地址可以由布尔函数确定。
106.在一些实施例中,所述第二地址可以由数学函数确定。
107.在一些实施例中,所述第二地址可以由包括一个或多个规则的规则集确定。
108.在一些实施例中,所述第二地址可以在编译所述第二智能合约时的第一时间段确定。
109.在一些实施例中,所述第二地址可以在执行所述第二字节码的第二时间段确定。
110.在一些实施例中,所述第三代码可以包括所述第三数字树的第三地址,并且所述编译器可以被配置为将所述第一智能合约编译为所述第一字节码,以使所述第一字节码在由所述虚拟机执行时使得所述第三状态数据将存储在具有所述第三地址的所述第三数字树中。
111.在一些实施例中,所述第四代码可以包括所述第四数字树的第四地址,并且所述编译器可以被配置为将所述第二智能合约编译为所述第二字节码,以使所述第二字节码在由所述虚拟机执行时使得所述第四状态数据将存储在具有所述第四地址的所述第四数字树中。
112.在一些实施例中,所述方法可以包括执行所述编译器以生成所述第一字节码或所述第二字节码中的至少一个。
113.在一些实施例中,所述方法可以包括执行所述虚拟机并执行以下至少一项:将所述第一状态数据存储在所述第一数字树中,将所述第二状态数据存储在所述第二数字树中,将所述第三状态数据存储在所述第三数字树中,或将所述第四状态数据存储在所述第四数字树中。
114.在一些实施例中,所述方法可以包括:确定所述第一数字树的第一根哈希值;确定所述第二数字树的第二根哈希值;以及基于所述第一根哈希值和所述第二根哈希值确定世界状态根哈希值。
115.在一些实施例中,所述方法可以包括:确定所述第三数字树的第三根哈希值;以及基于所述第一根哈希值、所述第二根哈希值和所述第三根哈希值确定所述世界状态根哈希值。
116.在一些实施例中,所述世界状态根哈希值可以表示关联于世界状态的用户账户、一个或多个智能合约的一个或多个状态的数字指纹。
117.在一些实施例中,所述第一智能合约可以指定将所述第一数字树存储在第一存储设备处,并将所述第二数字树存储在第二存储设备处。
118.在一些实施例中,所述第一智能合约可以指定将所述第一数字树和所述第二数字
树都存储在第一存储设备处。
119.在一些实施例中,所述方法可以包括:生成存储在所述第一存储设备中的所述数据的索引,并将该索引存储在所述第一数字树和所述第二数字树中。
120.在一些实施例中,每个数字树可以包括例如默克尔树、帕特里夏树、默克尔帕特里夏树、修改的默克尔帕特里夏树或桶树。
121.在另一个实施例中,提供了一种用于处理与区块链相关联的世界状态信息的方法。所述方法包括:提供与由区块链网络管理的区块链相关联的第一智能合约,其中,通过所述区块链网络的区块链节点的共识将区块链数据存储在所述区块链上;提供第一默克尔树和第二默克尔树,以维护与第一组用户账户相关联的第一世界状态,其中,所述第一世界状态存储有关所述第一组用户账户的当前状态和所述第一智能合约的当前状态的数据。所述第一智能合约包括:指定要将第一数据存储在所述第一默克尔树中的第一代码,以及指定要将第二数据存储在所述第二默克尔树中的第二代码。
122.在一些实施例中,所述第一代码可以指定与第一地理区域中的用户账户相关联的数据将被存储在所述第一默克尔树中,所述第二代码指定与第二地理区域中的用户账户相关联的数据将被存储在所述第二默克尔树中。
123.在一些实施例中,所述方法可以包括提供第三默克尔树,其中,所述第一默克尔树、所述第二默克尔树和所述第三默克尔树组合维护与所述用户账户相关联的世界状态。第一智能合约可以包括:指定要将第一数据存储在所述第一默克尔树中的所述第一代码;指定要将第二数据存储在所述第二默克尔树中的所述第二代码;指定要将第三数据存储在所述第三默克尔树中的第三代码。
124.在一些实施例中,所述第一默克尔树可以具有第一地址,所述第二默克尔树可以具有第二地址,所述第一代码可以指定要将所述第一数据存储在具有所述第一地址的默克尔树中,所述第二代码可指定要将所述第二数据存储在具有所述第二地址的默克尔树中。
125.在一些实施例中,所述方法可以包括:提供虚拟机,该虚拟机被配置为执行所述第一智能合约以使所述第一数据存储在所述第一默克尔树中,并使第二数据存储在所述第二默克尔树中。
126.在一些实施例中,所述方法可以包括提供编译器,该编译器被配置为将所述第一智能合约编译成可以由所述虚拟机执行的字节码。
127.在一些实施例中,所述编译器可以是所述虚拟机的一部分。
128.在一些实施例中,所述第一智能合约指定将所述第一默克尔树存储在第一存储设备处,将所述第二默克尔树存储在第二存储设备处。
129.在一些实施例中,第一智能合约可以指定所述第一默克尔树和所述第二默克尔树都存储在第一存储设备处。
130.在一些实施例中,所述方法可以包括:生成存储在所述第一存储设备中的所述数据的索引,并将该索引存储在所述第一默克尔树和所述第二默克尔树中。
131.在一些实施例中,所述方法可以包括提供也与所述区块链相关联的第二智能合约,其中,所述第二智能合约包括指定要将第三数据存储在所述第一默克尔树中的第三代码。
132.在一些实施例中,所述第一默克尔树可存储基于第一地理区域的用户账户的状态
信息,所述第二默克尔树可存储基于第二地理区域的用户账户的状态信息。
133.在一些实施例中,所述方法可包括:提供与所述区块链相关联的第二智能合约,提供第三默克尔树以维护第二世界状态,该第二世界状态存储关于所述第二智能合约的当前状态的数据,并基于所述第一默克尔树的第一根哈希值和所述第二默克尔树的第二根哈希值确定世界状态根哈希值。
134.在另一个实施例中,提供了一种计算机实现的用于处理与区块链相关联的一个或多个智能合约的方法。所述方法包括:接收与由区块链网络管理的区块链相关联的智能合约,其中,通过区块链网络的区块链节点的共识将区块链数据存储在区块链上;标识所述智能合约中的指定第一数据和第一默克尔树的第一代码;标识所述智能合约中的指定第二数据和第二默克尔树的第二代码;将所述第一数据存储在所述第一默克尔树中;以及将所述第二数据存储在所述第二默克尔树中。
135.在一些实施例中,所述第一代码可指定与第一地理区域中的用户账户相关联的数据将被存储在所述第一默克尔树中,所述第二代码指定与第二地理区域中的用户账户相关联的数据将被存储在所述第二默克尔树中。
136.在一些实施例中,所述方法可包括执行虚拟机以执行所述智能合约以使所述第一数据被存储在所述第一默克尔树中,并使所述第二数据被存储在所述第二默克尔树中。
137.在另一个实施例中,提供了一种用于处理与区块链相关联的世界状态信息的方法。所述方法包括:提供与由区块链网络管理的区块链相关联的智能合约,其中,通过区块链网络的区块链节点的共识将区块链数据存储在区块链上;提供多个默克尔树以维护与一组用户账户相关联的世界状态,其中,所述世界状态存储关于用户账户的当前状态和智能合约的当前状态的数据。所述第一智能合约包括指定所述多个默克尔树中的哪个默克尔树被用于存储数据的第一代码。
138.在一些实施例中,所述第一代码可以包括修饰,该修饰包括被配置为存储数据段的默克尔树的标识。
139.在一些实施例中,所述默克尔树的标识可以包括所述默克尔树的地址。
140.在一些实施例中,所述默克尔树的标识可以包括变量。
141.在一些实施例中,所述标识可以基于数学函数确定。
142.在一些实施例中,所述标识可以基于一个或多个规则确定。
143.在一些实施例中,所述方法可包括:提供被配置为识别所述修饰并将所述智能合约编译为可以由与所述区块链相关联的虚拟机执行的字节码的编译器。
144.在一些实施例中,所述编译器可以是所述虚拟机的一部分。
145.在另一个实施例中,一种系统包括:一个或多个处理器;以及耦接到所述一个或多个处理器并在其上存储有指令的一个或多个计算机可读存储器,所述指令能够由所述一个或多个处理器执行以执行上述方法中的任一方法。
146.在另一个实施例中,一种装置包括用于执行上述方法中的任一方法的多个模块。
147.在另一个实施例中,提供了一种用于处理与区块链相关联的世界状态信息的系统。所述系统包括:区块链数据库,配置为存储由区块链网络管理的区块链,其中,通过所述区块链网络的区块链节点的共识将区块链数据存储在所述区块链上,并且所述区块链包括一个或多个区块,所述一个或多个区块存储与关联于所述区块链的用户账户关联的交易数
据。所述系统包括世界状态数据库,所述世界状态数据库被配置为存储包括第一默克尔树和第二默克尔树的世界状态数据结构,其中,所述世界状态存储关于所述用户账户的状态的信息。所述系统包括智能合约编译器,该智能合约编译器配置为:接收与所述区块链和所述世界状态数据结构相关联的智能合约;标识智能合约中的指定第一数据和所述第一默克尔树的第一代码;标识智能合约中的指定第二数据和所述第二默克尔树的第二代码;以及将所述智能合约编译为字节码。所述系统包括虚拟机,该虚拟机被配置为执行所述字节码以使所述虚拟机将所述第一数据存储在所述第一默克尔树中,以及将所述第二数据存储在所述第二默克尔树中。
148.在一些实施例中,所述编译器可被配置为:识别智能合约中的代码,其中,该代码标识数据段和多个默克尔树中的默克尔树;以及将所述智能合约代码编译成字节码,以使当所述字节码在由所述虚拟机执行时使得所述虚拟机将所述数据存储在默克尔树中。
149.在一些实施例中,所述编译器可以被配置为识别所述智能合约的代码中的恒定值,并且该恒定值表示所述默克尔树的地址或指向所述默克尔树的指针。
150.在一些实施例中,所述编译器可以被配置为识别所述智能合约中的代码中的变量,并且该变量表示所述默克尔树的地址或指向所述默克尔树的指针。
151.在一些实施例中,所述编译器可以被配置为识别所述智能合约中的代码,并且该代码包括用于标识所述默克尔树的函数。
152.在一些实施例中,所述编译器可以被配置为识别所述智能合约中的代码,并且该代码包括用于标识所述默克尔树的规则集。
153.在一些实施例中,所述第一默克尔树可存储基于第一地理区域的用户账户的状态信息,所述第二默克尔树可存储基于第二地理区域的用户账户的状态信息。
154.在一些实施例中,所述编译器可以是所述虚拟机的一部分。
155.在另一个实施例中,提供了一种用于处理与区块链相关联的世界状态信息的系统。所述系统包括:区块链数据库,配置为存储由区块链网络管理的区块链,其中,通过所述区块链网络的区块链节点的共识将区块链数据存储在所述区块链上,并且所述区块链包括一个或多个区块,所述一个或多个区块存储与关联于所述区块链的用户账户相关联的交易数据。所述系统包括世界状态数据库,该世界状态数据库被配置为存储包括多个数字树的世界状态数据结构,其中,所述世界状态存储关于所述用户账户的状态的信息。所述系统包括存储与所述区块链相关联的多个智能合约的智能合约数据库,其中,所述多个智能合约中的第一智能合约包括第一代码,所述第一代码标识第一状态数据和多个数字树中的用于存储第一状态数据的第一数字树。所述系统包括与对应于所述第一智能合约的区块链相关联的虚拟机,其中,所述虚拟机被配置为执行所述第一智能合约以使所述第一状态数据被存储在所述第一数字树中。
156.在一些实施例中,所述虚拟机可以包括智能合约编译器,该智能合约编译器被配置为将所述第一智能合约编译为可以由所述虚拟机执行的第一字节码,其中,所述编译器被配置为识别并编译所述第一代码,以使所述第一字节码在由所述虚拟机执行时,使得所述第一状态数据被存储在所述第一数字树中。
157.在一些实施例中,所述系统可包括智能合约编译器,该智能合约编译器被配置为将所述第一智能合约编译为可以由所述虚拟机执行的第一字节码,其中,该编译器被配置
为识别并编译所述第一代码,以使所述第一字节码在由所述虚拟机执行时,使得所述第一状态数据被存储在所述第一数字树中。
158.在一些实施例中,由所述第一代码标识的所述状态数据可以包括以下至少一项:(i)关于与所述第一智能合约相关联的用户账户的状态的数据,或者(ii)关于所述第一智能合约的状态的数据。
159.在一些实施例中,所述第一智能合约可包括第二代码,所述第二代码标识第二状态数据和多个数字树中的用于存储所述第二状态数据的第二数字树。所述编译器可被配置为识别和编译所述第一代码和所述第二代码,以使所述第一字节代码在由所述虚拟机执行时使所述第一状态数据被存储在所述第一数字树中,并使所述第二状态数据被存储在所述第二数字树中。
160.在一些实施例中,所述第一数字树和所述第二数字树可以组合地维护与关联于所述第一智能合约的用户账户相关联的世界状态。
161.在一些实施例中,所述第一代码可以指定与第一地理区域中的用户账户相关联的状态数据将被存储在所述第一数字树中,所述第二代码可以指定与第二地理区域中的用户账户相关联的状态数据将被存储在所述第二数字树中。
162.在一些实施例中,所述第一智能合约可以包括第三代码,所述第三代码标识第三状态数据和所述多个数字树中的用于存储所述第三状态数据的第三数字树。所述第一数字树、所述第二数字树和所述第三数字树可以组合地维护与关联于所述第一智能合约的用户账户相关联的世界状态。所述编译器可以被配置为识别并编译所述第一代码、所述第二代码和所述第三代码,以使所述第一字节代码在由所述虚拟机执行时使得所述第一状态数据将存储在所述第一数字树中,所述第二状态数据将存储在所述第二数字树中,所述第三状态数据将存储在所述第三数字树中。
163.在一些实施例中,所述第一数字树、所述第二数字树和所述第三数字树可组合地维护与关联于所述第一智能合约的用户账户相关联的世界状态。
164.在一些实施例中,所述第一代码可以指定与第一地理区域中的用户账户相关联的状态数据将存储在所述第一数字树中,所述第二代码可以指定与第二地理区域中的用户账户相关联的状态数据将存储在所述第二数字树中,以及所述第三代码可以指定与第三地理区域中的用户的账户相关联的状态数据将存储在所述第三数字树中。
165.在一些实施例中,所述多个智能合约中的第二智能合约可以包括第四代码,所述第四代码标识第四状态数据和所述多个数字树中的用于存储第四状态数据的第四数字树。所述第一智能合约和所述第二智能合约可以与同一区块链相关联,并且所述第一数字树和所述第四数字树可以组合地维护存储与所述第一智能合约和所述第二智能合约相关联的用户账户的状态数据的世界状态。所述编译器可以被配置为将所述第二智能合约编译为第二字节码。所述编译器被配置为识别并编译所述第四代码,以使所述第二字节码在由所述虚拟机执行时使得所述第四状态数据被存储在所述第四数字树中。
166.在一些实施例中,所述第一代码可以包括所述第一数字树的第一地址,并且所述编译器可以被配置为将所述第一智能合约编译成所述第一字节码,以使所述第一字节码在由所述虚拟机执行时使得所述第一状态数据被存储在具有所述第一地址的所述第一数字树中。
167.在一些实施例中,所述第一地址可以由恒定值表示。
168.在一些实施例中,所述第一地址可以通过布尔函数或数学函数中的至少一个确定。
169.在一些实施例中,所述第一地址可以由包括一个或多个规则的规则集确定。
170.在一些实施例中,所述第一地址可以在编译所述第一智能合约的第一时间段或者在执行所述第一字节码的第二时间段确定。
171.在一些实施例中,所述第二代码可以包括所述第二数字树的第二地址,并且所述编译器可以被配置为将所述第一智能合约编译为所述第一字节码,以使所述第一字节码在由所述虚拟机执行时使得所述第二状态数据将存储在具有所述第二地址的所述第二数字树中。
172.在一些实施例中,所述第二地址可以由恒定值表示。
173.在一些实施例中,所述第二地址可以由布尔函数确定。
174.在一些实施例中,所述第二地址可以由数学函数确定。
175.在一些实施例中,所述第二地址可以由包括一个或多个规则的规则集确定。
176.在一些实施例中,所述第二地址可在编译所述第二智能合约时的第一时间段确定。
177.在一些实施例中,所述第二地址可以在执行所述第二字节码的第二时间段确定。
178.在一些实施例中,所述第三代码可以包括所述第三数字树的第三地址,并且所述编译器可被配置为将所述第一智能合约编译成第一字节码,以使所述第一字节码在由所述虚拟机执行时使得所述第三状态数据被存储在具有所述第三地址的所述第三数字树中。
179.在一些实施例中,所述第四代码可包括所述第四数字树的第四地址,并且所述编译器可被配置为将所述第二智能合约编译为所述第二字节码,以使所述第二字节码在由所述虚拟机执行时使所述第四状态数据将存储在具有所述第四地址的所述第四数字树中。
180.在一些实施例中,所述系统可以包括处于一个或多个位置的一台或多台计算机,并配置为:确定所述第一数字树的第一根哈希值;确定所述第二数字树的第二根哈希值;并基于所述第一根哈希值和所述第二根哈希值确定世界状态根哈希值。
181.在一些实施例中,所述一个或多个计算机可以被配置为:确定所述第三数字树的第三根哈希值;以及基于所述第一根哈希值、所述第二根哈希值和所述第三根哈希值确定所述世界状态根哈希值。
182.在一些实施例中,所述世界状态根哈希值可以表示关联于所述世界状态的用户账户、一个或多个智能合约的所述一个或多个状态的数字指纹。
183.在一些实施例中,所述第一智能合约可以指定将所述第一数字树存储在第一存储设备处,并将所述第二数字树存储在第二存储设备处。
184.在一些实施例中,所述第一智能合约可以指定将所述第一数字树和所述第二数字树都存储在所述第一存储设备处。
185.在一些实施例中,所述系统包括处于一个或多个位置的一个或多个计算机,并被配置为生成存储在所述第一存储设备中的所述数据的索引,并将所述索引存储在所述第一数字树和所述第二数字树中。
186.在一些实施例中,每个数字树可以包括默克尔树、帕特里夏树、默克尔帕特里夏
树、修改的默克尔帕特里夏树或桶树中的至少一种。
187.应理解,根据本文所述的方法可以包括本文描述的各个方面和特征的任何组合。即,根据本文所述的方法不限于本文具体描述的各个方面和特征的组合,而是还包括所提供的各个方面和特征的任何组合。
188.本文的一个或多个实施例的细节将在说明书附图和以下描述中阐述。本文的其它特征和优点将通过说明书和附图以及权利要求书显现。
附图说明
189.图1为示出可用于执行本文实施例的环境的示例的图示。
190.图2是示出根据本文实施例的架构的示例的图示。
191.图3是用于向用户提供服务并将相关交易数据和状态信息存储在区块链和世界状态中的系统的图示。
192.图4是群组世界状态设计的图示。
193.图5和图6是分片扩容处理的示例的图示。
194.图7和图8是分片缩容处理的示例的图示。
195.图9是示出存储用户账户和智能合约的状态数据的世界状态的示例的图示。
196.图10是智能合约的示例的图示。
197.图11是智能合约和默克尔树的关联的示例的图示。
198.图12和图13是智能合约的示例的图示。
199.图14是智能合约和默克尔树的关联的示例的图示。
200.图15至图26是可根据本文实施例执行的处理的示例。
201.图27至图37是根据本文实施例的装置的模块的示例。
202.图38是可根据本文实施例执行的处理的示例。
203.图39是根据本文实施例的装置的模块的示例。
204.图40是用于向用户提供服务并将相关交易数据和状态信息存储在区块链和世界状态中的系统的图示。
205.图41是可根据本文实施例执行的处理的示例。
206.图42是根据本文实施例的装置的模块的示例。
207.在各个附图中相同的附图标记和名称表示相同的元件。
具体实施方式
208.本文描述了用于实现群组世界状态以存储与一个或多个区块链相关联的用户账户的状态信息的技术,所述一个或多个区块链被用于存储与提供给用户的服务相关联的交易。群组世界状态包括多个分片或分区,每个分片或分区存储整个用户账户的子集的状态信息。群组世界状态中的分片或分区的数量可以根据向用户提供高质量服务所需的计算资源来动态增加或减少。在一些实施方式中,区块链网络中的共识节点可以动态地调整群组世界状态中的分片或分区的数量,以相对于其他共识节点基于共识处理的当前速度来修改该共识处理的速度。对群组世界状态的分片或分区的调整可以以短停机时间来实现,以减少提供给用户的服务的中断。
209.例如,群组世界状态可以用于用户数量大和用户之间交易数量大的任何区块链系统或应用。此类区块链系统或应用的示例包括但不限于在线支付系统、在线购物系统、企业对企业系统、物流系统、仓库库存系统、金融系统、证券交易所系统、用于实现分布式标识的系统(2020年2月14日提交的pct申请pct/cn2020/075272中所描述的)、用于提供基于区块链的司法服务的平台(2019年12月13日提交的美国申请16/714,455中所描述的)、用于提供基于区块链的信用服务的备用信用证的系统(2020年2月3日提交的pct申请pct/cn2020/074242中所描述的)、用于提供基于区块链的通关服务的系统(2020年6月8日提交的pct申请pct/cn2020/094951中所描述的)、医疗记录系统、进出口处理系统、在线教育系统、在线游戏系统、在线旅行处理系统、音乐流系统、视频流系统、在线媒体系统、社交媒体系统、在线食品订购系统、约车系统、在线运输处理系统和加密货币系统。通过引用并入pct申请pct/cn2020/075272、美国申请16/714,455、pct申请pct/cn2020/074242和pct申请pct/cn2020/094951的全部内容。
210.例如,在线支付系统可以具有数亿或数十亿的用户账户,其中每年发生数十亿或数万亿的交易。交易记录和用户账户状态信息被存储在区块链和世界状态中。世界状态描述了给定时间点的账本状态。世界状态存储了表示用户账户当前状态的值,例如,用户账户可以使用多少通证。随着在线支付系统的发展,该系统每年可以添加数百万个新用户账户,而存储在区块链和世界状态中的数据也增长。例如,在线支付系统最初可以具有单个区块链和单个世界状态来存储交易数据和用户账户状态信息,并且一台计算机服务器被分配来支持与位于中国上海的用户账户相关联的区块链和世界状态。
211.随着上海用户的数量增长,在线支付系统可以将区块链和世界状态划分为两个分片。在一些示例中,运行者可以评估计算资源,并确定是否将区块链和世界状态划分为两个分片。在一些示例中,该系统包括评估模块,该评估模块自动评估计算资源的使用,并确定是否将区块链和世界状态划分为两个分片。区块链和世界状态的第一分片可以存储与位于浦东的用户账户相关联的交易数据和用户账户状态信息,区块链和世界状态的第二分片可以存储与位于浦西的用户账户相关联的交易数据和用户账户状态信息。例如,该系统分配第一计算机服务器以支持区块链和世界状态的第一分片,并分配第二计算机服务器以支持区块链和世界状态的第二分片。
212.例如,第一组用户334可以位于浦东,第二组用户336可以位于浦西。区块链和世界状态的第一分片可以存储第一组用户334的交易数据和用户账户状态信息,而区块链和世界状态的第二分片可以存储第二组用户336的交易数据和用户账户状态信息。
213.随着上海用户的数量进一步增长,在线支付系统可以进一步将区块链和世界状态划分为多个分片,所述分片的数量等于例如上海的区数量,其中,区块链和世界状态的每个分片都可以存储与位于上海相应区的用户账户相关联的交易数据和用户账户状态信息。例如,在线支付系统分配多个计算机服务器以支持区块链和世界状态的多个分片,其中,每个计算机服务器各自支持相应的一个分片。计算机服务器可以是物理服务器或虚拟服务器,例如云计算系统中的那些服务器。随着用户账户和交易的数量增加,在线支付系统所需的各种计算资源也随之增加。计算资源可以包括例如算力、存储容量、数据存储容量和数据带宽。
214.例如,互联网购物平台可以向位于世界各地的买家和卖家提供服务。最初,购物平
台可能具有在中国的用户,并可以分配位于中国的计算机服务器以支持存储与位于中国的用户相关联的交易数据和用户账户状态信息的区块链和世界状态。购物平台可以被扩展以向位于美国、日本和德国的用户提供服务。购物平台可以将区块链和世界状态划分为四个分片。区块链和世界状态的第一分片被用于存储与位于中国的用户相关联的交易数据和用户账户状态信息。区块链和世界状态的第二分片被用于存储与位于美国的用户相关联的交易数据和用户账户状态信息。区块链和世界状态的第三分片被用于存储与位于日本的用户相关联的交易数据和用户账户状态信息。区块链和世界状态的第四分片被用于存储与位于德国的用户相关联的交易数据和用户账户状态信息。购物平台可以分配位于中国的计算机服务器以支持第一分片,分配位于美国的计算机服务器以支持第一分片,分配位于日本的计算机服务器以支持第三分片,并分配位于德国的计算机服务器以支持第四分片。
215.本文描述了用于辅助和/或修改基于区块链的系统(例如,在线支付系统和在线购物系统)的技术,以管理用于存储交易数据和用户账户状态信息的区块链数据结构和世界状态的大小和复杂性增长,同时保持对用户的高质量服务。
216.例如,本文描述了在添加或删除区块链节点时实现动态区块链网络数据扩容或缩容的技术。分片是一种区块链划分技术,可用于划分单个逻辑数据集并将其存储在多个数据库中。多个分片可以被用于水平扩展区块链网络的数据存储容量。提供了一种群组世界状态方案,其中,为每个分片生成一个世界状态树。这种设计提供了低计算复杂度和存储空间消耗,同时保持了稳定的根哈希,这适应了区块链网络存储容量的扩容或缩容。
217.例如,本文描述了一种新的默克尔(merkle)树设计,该设计不依赖于merkle树与智能合约之间的一对一关系。智能合约可以对应于多个merkle树,每个智能合约可以存储映射表,该映射表记录了该智能合约可以访问的多个merkle树。与同一智能合约相关联的多个merkle树可以对应于同一存储实例,并且每个merkle树可以对应于唯一的地址。在编写智能合约的程序代码时,可以在每个变量之前添加修饰符(modifier),以指示该变量将存储在该修饰符指定的merkle树中。修饰符可以指示merkle树的唯一地址,其进而指示存储在数据存储中的merkle树实例。在这种树结构下,智能合约的编程可以更加灵活,世界状态的数据可以被更有效地遍历。
218.本文中描述的技术产生了若干技术效果。使用群组世界状态技术的区块链系统或应用可以具有高服务质量和可靠性,同时可以高效地使用计算资源。分配至区块链系统或应用的计算资源(例如,算力、存储容量、数据存储容量、数据带宽)可以根据区块链系统或应用的需求进行动态调整(例如,增加或减少)。可以在不中断或仅少量中断提供给用户的服务的情况下执行计算资源的调整。共识节点可以动态地调整计算资源的使用,以增加或减少共识处理的速度,以便大致匹配其他共识节点的共识处理速度,从而更高效地使用计算资源。可以提高智能合约的处理速度。可以更高效地使用分配用于执行智能合约的计算资源。
219.本文中描述的技术可以产生进一步的技术效果。例如,智能合约非固定地绑定到单个merkle树。而是,智能合约可以与多个merkle树相关联,从而允许存储与该智能合约相关联的大量状态数据。这也使与智能合约相关联的数据的存储更加灵活,从而允许将具有不同优先级的不同类型的数据存储在不同的merkle树中,这些merkle树可以具有不同的服务质量级别,以允许系统提供更高的服务质量来处理优先级更高的数据。智能合约和
merkle树之间的关联可以动态调整。
220.为本文实施例提供进一步的背景,如上所述,分布式账本系统(dls),也可以称为共识网络(例如,由点对点(peer-to-peer)节点组成)和区块链网络,使参与实体能够安全且不可篡改地进行交易并存储数据。尽管术语区块链通常与特定网络和/或用例相关联,但是在不参考任何特定用例的情况下,本文中使用区块链通常是指dls。
221.区块链是以交易不可篡改的方式存储交易的数据结构。因此,区块链上记录的交易是可靠且可信的。区块链包括一个或多个区块。链中的每个区块通过包含在链中紧邻其之前的前一区块的加密哈希值(cryptographic hash)链接到该前一区块。每个区块还包括时间戳、自身的加密哈希值以及一个或多个交易。已被区块链网络中的节点验证的交易经哈希处理并编入树形的数据结构或数字树中,其可以是例如,默克尔(merkle)树。默克尔树是一种数据结构,其中树的叶子节点处的数据被哈希处理,并且在树的每个分支中的所有哈希值在分支的根部级联(concatenate)。此处理沿着树持续一直到整个树的根,在整个树的根处存储了代表树中所有数据的哈希值。通过确定声称是存储在树中的交易的哈希值是否与树的结构一致,可以快速验证该哈希值。
222.区块链是用于存储交易的去中心化或至少部分去中心化的数据结构,而区块链网络是通过广播、验证和确认交易等来管理、更新和维护一个或多个区块链的计算节点的网络。如上所述,区块链网络可以作为公有区块链网络、私有区块链网络或联盟区块链网络被提供。这里参考联盟区块链网络进一步详细描述了本文实施例。然而,可以预期,可以在任何适当类型的区块链网络中实现本文的实施例。
223.通常,联盟区块链网络在参与的实体间是私有的。在联盟区块链网络中,共识处理由可被称为共识节点的授权节点集控制,一个或多个共识节点由相应的实体(例如金融机构、保险公司)操作。例如,十(10)个实体(例如金融机构、保险公司)构成的联盟可以操作联盟区块链网络,每个实体操作联盟区块链网络中的至少一个节点。
224.在一些示例中,在联盟区块链网络中,提供全局区块链作为跨所有节点复制的区块链。也就是说,所有的共识节点相对于全局区块链而言处于完全共识状态。为了达成共识(例如,同意向区块链添加区块),在联盟区块链网络内实施共识协议。例如,联盟区块链网络可以实现实用拜占庭容错(pbft)共识,这将在下面进一步详细描述。
225.图1是示出可以用于执行本文实施例的环境100的示例的图示。在一些示例中,环境100使得实体能够参与至联盟区块链网络102中。环境100包括计算系统106、108和网络110。在一些示例中,网络110包括局域网(lan)、广域网(wan)、互联网或其组合,并且连接网站、用户设备(例如,计算设备)和后端系统。在一些示例中,可以通过有线和/或无线通信链路访问网络110。在一些示例中,网络110使得与联盟区块链网络102通信以及在联盟区块链网络102之内通信成为可能。通常,网络110代表一个或多个通信网络。在一些情况下,计算系统106、108可以是云计算系统(未示出)的节点,或者计算系统106、108中的每个可以是单独的云计算系统,其包括通过网络互连并且用作分布式处理系统的多个计算机。
226.在所描绘的示例中,计算系统106、108可以各自包括能够作为节点参与至联盟区块链网络102中的任何适当的计算设备。计算设备的示例包括但不限于服务器、台式计算机、膝上型计算机、平板计算设备及智能电话。在一些示例中,计算系统106、108承载用于与联盟区块链网络102交互的一个或多个由计算机实现的服务。例如,计算系统106可以承载
第一实体(例如,用户a)的由计算机实现的服务,例如,第一实体用来管理其与一个或多个其他实体(例如其他用户)的交易的交易管理系统。计算系统108可以承载第二实体(例如,用户b)的由计算机实现的服务,例如,第二实体用来管理其与一个或多个其他实体(例如其他用户)的交易的交易管理系统。在图1的示例中,联盟区块链网络102被表示为节点的点对点网络,并且计算系统106、108分别提供参与至联盟区块链网络102中的第一实体和第二实体的节点。
227.图2是示出了根据本文实施例的架构200的示例。示例性概念架构200包括分别对应于参与者a、参与者b和参与者c的参与者系统202、204、206。每个参与者(例如,用户、企业)参与到作为点对点网络提供的区块链网络212中,该点对点网络包括多个节点214,至少一些节点将信息不可篡改地记录在区块链216中。如本文进一步详述,尽管在区块链网络212中示意性地描绘了单个区块链216,但是在区块链网络212上提供并维护了区块链216的多个副本。
228.在所描绘的示例中,每个参与者系统202、204、206分别由参与者a、参与者b和参与者c提供或代表参与者a、参与者b和参与者c,并且用作区块链网络中的相应节点214。如这里所使用的,节点通常是指连接到区块链网络212且使相应的参与者能够参与到区块链网络中的个体系统(例如,计算机、服务器)。在图2的示例中,参与者对应于每个节点214。然而,可以预期,参与者可以操作区块链网络212内的多个节点214,和/或多个参与者可以共享一个节点214。在一些示例中,参与者系统202、204、206使用协议(例如,超文本传输协议安全(https))和/或使用远程过程调用(rpc)与区块链网络212通信或通过区块链网络212进行通信。
229.节点214可以在区块链网络212内具有不同的参与程度。例如,一些节点214可以参与共识处理(例如,作为将区块添加到区块链216的矿工节点),而其他节点214不参与此共识处理。作为另一示例,一些节点214存储区块链216的完整副本,而其他节点214仅存储区块链216的一部分副本。例如,数据访问权限可以限制相应的参与者在其相应系统内存储的区块链数据。在图2的示例中,参与者系统202、204和206分别存储区块链216的完整副本216'、216”和216”'。
230.区块链(例如,图2的区块链216)由区块的链组成,每个区块都存储数据。数据的示例包括代表两个或更多参与者之间的交易的交易数据。尽管本文通过非限制性示例使用了“交易”,但是可以预期,任何适当的数据可以存储在区块链中(例如,文档、图像、视频、音频)。交易的示例可以包括但不限于有价物(例如,资产、产品、服务、货币)的交换。交易数据不可篡改地存储在区块链中。也就是说,交易数据不能被改变。
231.在将交易数据存储在区块中之前,对交易数据进行哈希处理。哈希处理是将交易数据(作为字符串数据提供)转换为固定长度的哈希值(也作为字符串数据提供)的处理。不可能对哈希值进行去哈希处理(un-hash)以获取交易数据。哈希处理可确保即使交易数据被略微改变也会导致完全不同的哈希值。此外,如上所述,哈希值具有固定长度。也就是说,无论交易数据的大小如何,哈希值的长度都是固定的。哈希处理包括通过哈希函数处理交易数据以生成哈希值。哈希函数的示例包括但不限于输出256位哈希值的安全哈希算法(sha)-256。
232.多个交易的交易数据被哈希处理并存储在区块中。例如,提供两个交易的哈希值,
并对它们本身进行哈希处理以提供另一个哈希值。重复此过程,直到针对所有要存储在区块中的交易提供单个哈希值为止。该哈希值被称为默克尔(merkle)根哈希值,并存储在区块的头中。任何交易中的更改都会导致其哈希值发生变化,并最终导致merkle根哈希值发生变化。
233.通过共识协议将区块添加到区块链。区块链网络中的多个节点参与共识协议,并执行工作以将区块添加到区块链。此类节点称为共识节点。上面介绍的pbft用作共识协议的非限制示例。共识节点执行共识协议以向区块链添加交易,并更新区块链网络的整体状态。
234.更详细而言,共识节点生成区块头,对区块中的所有交易进行哈希处理,并将哈希值成对地组合以生成进一步的哈希值,直到为区块中的所有交易提供单个哈希值(merkle根哈希值)为止。将此哈希值添加到区块头中。共识节点还确定区块链中最新区块(即添加到区块链中的最后一个区块)的哈希值。共识节点还向区块头添加随机数值(nonce value)和时间戳。
235.通常,pbft提供容许拜占庭错误(例如,故障节点、恶意节点)的实用拜占庭状态机复制。这通过在pbft中假设将发生故障(例如,假设存在独立节点故障和/或由共识节点发送的被操纵的消息)来实现。在pbft中,以包括主共识节点和备共识节点的序列提供共识节点。主共识节点被周期性改变。通过区块链网络内的所有共识节点对区块链网络的世界状态达成一致,交易被添加到区块链中。在此处理中,消息在共识节点之间传输,并且每个共识节点证明消息是从指定的对等节点接收的,并验证在传输期间消息未被修改。
236.在pbft中,共识协议是在所有共识节点始于相同状态的情况下分多个阶段提供的。首先,客户端向主共识节点发送用以调用服务操作(例如,在区块链网络内执行交易)的请求。响应于接收到所述消息,主共识节点将请求组播到备共识节点。备共识节点执行该请求,并且每个节点都向客户端发送回复。客户端等待直到接收到阈值数量的回复。在一些示例中,客户端等待直到接收f 1个回复,其中,f是区块链网络内可以容许的故障共识节点的最大数量。最终结果是,足够数量的共识节点就将记录添加到区块链的顺序上达成一致,并且该记录或者被接受或者被拒绝。
237.在一些区块链网络中,用密码学来维护交易的隐私。例如,如果两个节点想要保持交易隐私,以使得区块链网络中的其他节点不能看出交易的细节,则这两个节点可以对交易数据进行加密处理。加密的示例包括但不限于对称加密和非对称加密。对称加密是指使用单个密钥既进行加密(从明文生成密文)又进行解密(从密文生成明文)的加密处理。在对称加密中,同一密钥可用于多个节点,因此每个节点都可以对交易数据进行加密/解密。
238.非对称加密使用密钥对,每个密钥对包括私钥和公钥,私钥仅对于相应节点是已知的,而公钥对于区块链网络中的任何或所有其他节点是已知的。节点可以使用另一个节点的公钥来加密数据,并且该加密的数据可以使用其他节点的私钥被解密。例如,再次参考图2,参与者a可以使用参与者b的公钥来加密数据,并将加密数据发送给参与者b。参与者b可以使用其私钥来解密该加密数据(密文)并提取原始数据(明文)。使用节点的公钥加密的消息只能使用该节点的私钥解密。
239.非对称加密被用于提供数字签名,这使得交易中的参与者能够确认交易中的其他参与者以及交易的有效性。例如,节点可以对消息进行数字签名,而另一个节点可以根据参
与者a的数字签名来确认该消息是由该节点发送的。数字签名还可以用于确保消息在传输过程中不被篡改。例如,再次参考图2,参与者a将向参与者b发送消息。参与者a生成该消息的哈希值,然后使用其私钥加密该哈希值以提供作为加密哈希值的数字签名。参与者a将该数字签名附加到该消息上,并将该具有数字签名的消息发送给参与者b。参与者b使用参与者a的公钥将该数字签名解密,并提取哈希值。参与者b对该消息进行哈希处理并比较哈希值。如果哈希值相同,参与者b可以确认该消息确实来自参与者a且未被篡改。
240.一些区块链系统使得区块链合约(也称为智能合约)能够通过区块链交易来执行。区块链交易可以是例如经签名的消息,其源自区块链账户、由区块链网络传输并记录在区块链中。可以编写区块链合约以实现各种功能,例如,将数据添加到区块链账户和/或更改区块链中的数据。智能合约不必与传统的合约概念相关,而可以是任何类型的计算机程序。可以通过执行各种区块链交易来维护和更新区块链。在一些实施方式中,当区块链交易涉及区块链合约时,区块链节点可以在各自的虚拟机(vm)中本地执行区块链合约。为了处理区块链合约,区块链网络的每个区块链节点都可以执行相应的虚拟机并执行在区块链合约中的相同指令。虚拟机是基于计算机架构的计算机系统的软件仿真,并提供物理计算机的功能。区块链环境中的虚拟机可被理解为旨在用作区块链合约的运行环境的系统。
241.根据共识规则成功地挖出提出的区块链交易的新区块的特定区块链节点可以将该新区块打包到其区块链的本地副本中,并将结果组播到其他区块链节点。该特定区块链节点可以是首先成功完成验证、获得验证特权或基于其他共识规则选择的区块链节点。其他区块链节点可以遵循特定区块链节点执行的相同执行顺序,以在新区块中本地执行区块链交易,相互验证执行结果(例如,通过执行哈希计算),并将它们的区块链副本与特定区块链节点的区块链副本同步。通过更新它们的区块链本地副本,其他区块链节点可以类似地将区块链交易中的此类信息写入各自的本地存储器中。使用上述方法可以在区块链上部署区块链合约。
242.部署的区块链合约可以具有一个地址,可以根据该地址访问部署的合约。区块链节点可以通过向区块链合约输入特定参数来调用部署的区块链合约。在一些实施例中,用户终端可以请求调用部署的区块链合约以执行各种操作。例如,可以检索存储在部署的区块链合约中的数据、可以将数据添加到部署的区块链合约中、和/或可以执行部署的区块链合约中指定的金融交易。
243.本文中描述的发明涉及用于存储与一个或多个区块链相关联的用户账户的状态数据的群组世界状态,所述一个或多个区块链被用于存储与提供给用户的服务相关联的交易。群组世界状态包括一个或多个分片或分区,并且系统被配置为动态调整分片或分区的数量,以实现资源的有效利用,以为用户维持高质量的服务。
244.在一些实施方式中,诸如修改的默克尔帕特里夏(modified merkle patricia)树之类的数据结构被用于维护用户账户的世界状态。随着用户数量的增加,数据结构也随之增大,节点、分支和路径的数量也随之增加。存储在数据结构中的数据处理速度变慢,系统对用户请求的响应能力降低,服务质量下降。本发明通过使资源能够动态地分配至用于维护存储用户账户状态数据的一个或多个世界状态的一个或多个数据结构来提供问题的解决方案。
245.以下描述了用于实现基于区块链的系统300的技术,以允许有效地管理用于维护
存储与一个或多个区块链相关联的用户账户状态信息的群组世界状态的计算资源。图3示出了环境302的示例,在该环境中,用户(例如,304和306)通过基于区块链的应用模块308访问由系统300提供的服务。应用模块308可以提供诸如在线支付服务、在线购物服务、企业对企业服务、物流服务、仓库库存服务、金融服务、证券交易所服务、分布式标识支持服务(2020年2月14日提交的pct申请pct/cn2020/075272中所描述的)、基于区块链的司法服务(2019年12月13日提交的美国申请16/714,455中所描述的)、基于区块链的信用服务的备用信用证服务(2020年2月3日提交的pct申请pct/cn2020/074242中所描述的)、基于区块链的清关服务(2020年6月8日提交的pct申请pct/cn2020/094951中所描述的)、医疗记录服务、进出口处理服务、在线教育服务、在线游戏服务、在线旅行处理服务、音乐流服务、视频流服务、在线媒体服务、社交媒体服务、在线食物订购服务、打车服务、在线运输处理服务和加密货币服务。
246.系统300将交易记录和用户账户状态信息存储在分布式区块链账本中。通常,区块链账本包括两部分。第一部分包括世界状态,世界状态将最新的用户账户状态信息以例如键值对存储在账本中。第二部分包括所有交易的区块链记录。区块链账本由区块链网络维护,该区块链网络可以是例如上述的共识区块链网络。区块链网络的共识节点以新区块的形式接收状态更新,使用区块和世界状态来确认(或提交)交易,并在达成共识后更新世界状态并将交易日志添加在区块链上。
247.在一些实施方式中,区块链账本由一个或多个区块链网络(例如,314、316)维护。上面结合图1至图2描述了区块链网络的操作。在图1和图2中,尽管图中未明确示出世界状态,但是应当理解,区块链网络既维护区块链又维护相应的世界状态。
248.系统300包括区块链账本320的本地副本,该区块链账本包括区块链数据库322和世界状态数据库324。有很多方法可以实现区块链数据库和世界状态数据库。在下面的示例中,我们假设每个分片都包括一个区块链数据库和一个世界状态数据库。每个区块链数据库存储一个区块链,每个世界状态数据库可以存储一个或多个世界状态。例如,区块链数据库322存储由区块链网络维护的区块链的本地副本。世界状态数据库324存储由区块链网络维护的世界状态的本地副本。
249.通常,当用户(例如,304和306)使用由基于区块链的应用系统300提供的服务进行交易时,系统300生成数据,例如交易记录和用户账户状态信息,这些数据被存储在分布式区块链账本320中。出于说明的目的,在图3中,区块链账本320被示为具有单独的区块链数据库322和世界状态数据库324。在一些实施方式中,一个或多个区块链和一个或多个世界状态可以属于同一数据库。一个或多个区块链可以与一个或多个世界状态相关联,维护区块链账本的区块链网络会同时更新区块链和相应的世界状态。
250.如下面更详细地描述的,对于给定的应用(例如,在线支付应用或在线购物应用),交易数据可以被存储在一个或多个区块链中,状态信息可以被存储在一个或多个世界状态中。一个区块链可以与一个或多个世界状态相关联,一个世界状态可以与一个或多个区块链相关联。本文描述了用于将一个世界状态划分为多个分片或分区世界状态,以及将多个分片或分区世界状态合并为一个世界状态的新颖技术。
251.在本文中,术语“群组世界状态”被用于指一组世界状态,该组世界状态组合存储与一组用户有关的用户账户状态信息,该组用户使用由基于区块链的系统300提供的服务。
群组世界状态的根哈希值提供了与该组用户相关联的所有用户账户的最新状态值的指纹。
252.系统300包括计算资源326,诸如支持基于区块链的应用模块308的算力(例如,处理器核、处理线程、cpu运行时间)、存储器、非易失性存储和/或数据带宽。系统300包括资源需求评估模块328,该资源需求评估模块328确定分配至基于区块链的应用模块308的资源是否足以充分支持群组世界状态的处理。例如,评估模块328可基于诸如正在使用的总可用资源的百分比和/或服务质量度量之类的一个或多个标准来确定分配的资源是否足够。服务质量度量的示例可包括交易响应时间和/或服务中断或停机时间。系统300包括资源分配模块330,该资源分配模块330将资源分配至应用模块308。
253.例如,最初系统300可以分配一定数量的资源(例如,存储器、非易失性数据存储和数据带宽)以支持应用模块308。随着时间的推移,当用户数量和交易数量增加时,如果资源数量没有很快增加,评估模块328可以确定某些资源的使用百分比高于阈值,使得可能会对应用模块308的性能产生不利影响。
254.系统300被配置为将与应用模块308相关联的区块链和世界状态划分为多个分片或分区,并且随着分片或分区的数量增加而分配更多资源以支持区块链和世界状态。相反,如果区块链和世界状态需要较少的资源,例如当一些用户迁移到其他平台时,系统300被配置为减少分片或分区的数量,并分配较少的资源来支持区块链和世界状态。
255.例如,系统300的运行者可以建立规则集,该规则集包括关于是增加还是减少群组世界状态的分片或分区数量的一个或多个规则。例如,规则可以指定如果在超过y1%(例如5%)的时间内,cpu使用率达到x1%(例如95%),则应增加群组世界状态中的分片或分区数量。例如,规则可以指定如果存储达到z1%(例如80%)的容量,则应增加群组世界状态中的分片或分区数量。例如,规则可以指定如果cpu使用率始终保持低于x2%(例如20%)并且存储空置大于z2%(例如,50%)时,应减少群组世界状态中的分片或分区数量。在上面的示例中,x1、x2、y1、z1和z2为正实数。以上规则仅是示例,其他规则也可以用于确定是增加还是减少群组世界状态中的分片或分区数量。规则集可以存储在例如规则集数据库中。
256.在一些实施方式中,系统300包括区块链账本修改模块332,该区块链账本修改模块被配置为通过修改区块链和世界状态中的分片或分区数量来修改区块链数据库322和世界状态数据库324。该系统包括资源分配模块330,该资源分配模块根据区块链和世界状态中的分片或分区数量来分配计算资源326。
257.在一些实施方式中,当群组世界状态中的分片或分区数量增加时,分配至促进区块链和世界状态的处理的计算资源326可以增加,使得共识处理能够更快地执行。因此,共识节点可以基于加快或减慢共识处理的性能是否有利,来决定是否增加或减少群组世界状态中的分片或分区数量。共识处理可以基于共识算法,例如,基于工作量证明(pow)的共识算法、基于股权证明(pos)的共识算法、委托拜占庭容错(dbft)共识算法或实用拜占庭容错(pbft)共识算法。
258.例如,如果第一共识节点(例如318)确定其共识处理始终比其他共识节点慢,则第一共识节点可以增加群组世界状态中的分片或分区数量以提高性能(即,提高共识处理的速度)。相反,如果第一共识节点确定其执行共识处理比其他共识节点快得多,则第一共识节点可以减少群组世界状态中的分片或分区数量以节省计算资源(例如326)。如果第一共识节点确定其执行共识处理的速度与其他共识节点大致相同,则群组世界状态中的分片或
分区数量可以保持不变。
259.第一共识节点可以通过多种方式来确定其共识处理是比其他共识节点快还是慢。例如,每个共识节点可以播报其已处理的区块。如果第一共识节点经常从其他共识节点接收到指示某些区块的处理已经完成的通知,并且第一共识节点尚未完成对那些区块的处理,则第一共识节点可以确定其共识处理以比其他共识节点慢的速度执行。例如,每个共识节点可以向其他共识节点播报本共识节点已处理的最高区块号或区块高度。这样,每个共识节点可以通过将自己的最高区块号与其他共识节点的最高区块号进行比较来了解共识处理的相对速度。例如,区块链系统可以提供允许单个共识节点确定其他共识节点进行共识处理的状态的应用编程接口。第一共识节点可以将其最高区块号与其他共识节点的最高区块号进行比较,以确定在共识处理中第一共识节点比其他共识节点快还是慢。例如,区块链系统可以连续监控共识节点进行的共识处理,并提供允许单个共识节点确定共识节点之间的共识处理的速度等级的应用编程接口。
260.第一共识节点可以基于多个标准来决定增加或减少群组世界状态中的分片或分区的数量,该标准包括例如以下的任意组合:
261.·
第一共识节点处的共识处理是否比其他共识节点的平均共识处理领先或滞后。
262.·
第一共识节点处的共识处理是否比其他共识节点中最快的n1%的平均共识处理领先或滞后,其中,n1为正实数。例如,n1%可以是10%、20%、50%或80%,或任何其他数字。
263.·
第一共识节点处的共识处理是否比其他共识节点的平均共识处理领先或滞后了超过时间阈值t1,其中,t1为正实数。例如,t1可以是一个小时、一天、一周、一个月或任何其他持续时间。
264.·
第一共识节点处的共识处理是否比其他共识节点在预定时间段t2(例如一天、一周或一个月)的平均共识处理领先或滞后了超过n2个周期,其中,t2为正实数,n2为正整数。例如,第一共识节点每天、每周或每月都会评估其共识处理是否比其他共识节点领先或滞后,并确定领先或滞后是否连续数天、数周或数月以上。
265.·
第一共识节点处的共识处理是否比其他共识节点领先或滞后了超过交易的阈值数n3达到预定时间段t3,n3为正整数,t3为正实数。
266.第一共识节点的运行者可以建立规则集,该规则集包括关于是否增加或减少群组世界状态中分片或分区数量的一个或多个规则。例如,第一规则可以指定,如果第一共识节点处的共识处理比一个或多个其他共识节点处的共识处理慢第一阈值,则应增加群组世界状态中的分片或分区数量。例如,第二规则可以指定,如果第一共识节点处的共识处理比一个或多个其他共识节点处的共识处理快第二阈值,则应减少群组世界状态中的分片或分区数量。例如,第三规则可以指定,如果对于每个单位时间t5(例如,周)的交易的q1%(例如,50%)以上,第一共识节点处的共识处理比其他共识节点中最快的p1%(例如,10%)的平均共识处理滞后t4(例如,1)分钟以上,达到连续n4(例如,四)个单位时间t5(例如,数周),则应增加群组世界状态中的分片或分区数量,p1、t4、q1和t5为正实数,n4为正整数。例如,第四规则可以指定,如果对于时间段t7(例如,一周)内的交易的q2%(例如,50%)以上,第一共识节点处的共识处理比其他共识节点的平均共识处理滞后了预定时间段t6(例如,1小时)以上,则应增加群组世界状态中的分片或分区数量,其中t6、q2和t7为正实数。以上规则
仅是示例,其他规则或规则的其他组合也可以被用于确定是否维持相同、增加或减少群组世界状态中的分片或分区数量。规则集可以存储在例如规则集数据库中。
267.区块链和世界状态(例如,310a和312a)由区块链网络(例如,314、316)维护。系统300用作区块链网络的节点之间的节点(例如,318、319),并维护存储在区块链数据库322和世界状态数据库324中的区块链和世界状态(例如,310b、312b、310c、312c)的本地副本。区块链网络314、316可以类似于图2的区块链网络212。区块链网络314的某些节点可以与区块链网络316的节点重叠。
268.系统300包括根哈希模块338,其被配置为计算世界状态(例如,310c、312c)的根哈希值,该根哈希值表示与系统300相关联的所有用户账户的最新状态值的指纹。在此示例中,群组世界状态可以具有n个分片,并且每个分片可以具有多个世界状态。针对每个分片,基于分片中的每个世界状态的根哈希值,根哈希模块338首先计算分片世界状态的根哈希值。分片世界状态的根哈希值表示分片内的世界状态的指纹。然后,根哈希模块338基于n个分片世界状态的根哈希值来计算群组世界状态的根哈希值。
269.与区块链相关联的世界状态存储了与区块链相关联的用户账户的状态信息。可以将区块链划分为多个(例如n个)分片以提高处理效率。群组世界状态存储与区块链的所有分片相关联的所有用户账户的状态信息。群组世界状态也被划分为与区块链相同数量的分片(例如n个)。在此示例中,区块链的每个分片都与分片世界状态相关联,该分片世界状态存储与区块链的分片相关联的用户账户的状态信息。每个分片世界状态可以包括多个世界状态,并且每个世界状态存储用户账户的子集的状态信息。
270.在一些实施方式中,使用预定的分配方法将用户账户分配至世界状态。在将区块链和群组世界状态的分片扩容或缩容时,分片的数量会发生变化,但是世界状态的总数保持不变。例如,假设基于用户账户标识的前4位将用户账户分配至16个世界状态(称为世界状态1到16)。假设在第一时间点t1,存在区块链的两个分片和两个分片世界状态,例如,分片世界状态1和分片世界状态2。分片世界状态1包括世界状态1到6,分片世界状态2包括世界状态7到16。假设在第二时间点t2,分片世界状态2被划分为两个分片世界状态,例如,分片世界状态2和分片世界状态3。假设分片世界状态2包括世界状态7至10,分片世界状态3包括世界状态11至16。在此示例中,在增加或减少分片世界状态的数量之后,与每个单独的世界状态相关联的用户账户保持不变(因为其基于用户账户标识的前4位)。
271.群组世界状态数据结构被设计为使所有用户账户的状态信息能够以高效的方式存储和处理。例如,有两种设计群组世界状态数据结构的方式。在第一设计中,通过数字树结构来维护群组世界状态,其中,每个叶节点对应于分片世界状态根节点。叶节点存储分片世界状态根哈希值。群组世界状态根哈希值是基于分片世界状态根哈希值计算的。这种设计的优点是实施方式简单,所需的数据存储大小较小,处理世界状态信息所需的计算较少。群组世界状态根哈希值是基于分片世界状态根哈希值计算的。在将分片扩容或缩容时,与每个分片世界状态相关联的用户账户可能会改变,分片世界状态根哈希值可能会改变,并且群组世界状态根哈希值也可能会改变。
272.在第二设计中,通过数字树结构维护群组世界状态,其中,群组世界状态的每个叶节点都对应于分片世界状态,并且每个叶节点都记录分片中的世界状态的根哈希值。群组世界状态根哈希值是基于世界状态的根哈希值(而不是分片世界状态根哈希值)计算的。在
此示例中,在将区块链的分片扩容或缩容时,群组世界状态的根哈希保持稳定并且不会改变。群组世界状态的根哈希值反映了所有用户账户的状态。不管如何将各个世界状态分配至各个分片,如果用户账户的状态未改变,则群组世界状态的根哈希值不会改变。在此设计中,存储世界状态信息所需的存储容量更大(例如,每个叶节点都需要存储有关分片中的所有世界状态的信息),处理世界状态信息所需的计算也更大,并且实施方式比较复杂(相比于第一设计)。
273.下文中,我们描述使用第一设计的群组世界状态的实施方式。在一些实施方式中,区块链被分成n个分片,并且每个分片具有相应的分片世界状态,该分片世界状态存储与该分片相关联的用户账户的状态信息。图4是用于群组世界状态400的数据结构的示例的图示,该群组世界状态用于存储被考虑的所有用户账户(例如,与基于区块链的应用模块308相关联的所有用户账户)的状态信息。在此示例中,群组世界状态被划分为n个分片,例如402a、402b、402c和402d,统称为402。群组世界状态的每个分片被称为“分片世界状态”。每个分片世界状态存储所考虑的所有用户账户的子集的状态信息。例如,所考虑的所有用户账户可以包括与在线支付系统关联的所有用户账户,这些用户账户位于特定的国家、州、省或城市。群组世界状态支持多个世界状态,其中,每个世界状态存储用户账户的子集的状态信息。例如,可以基于用户账户标识的第一预定数目的字节字将用户账户分配至世界状态。
274.分片的数量可以少于世界状态的数量。例如,最初可以有较少数量的分片,并且每个分片可以包括更多数量的世界状态。随着时间的流逝,随着每个世界状态中存储的数据量的增加,分片数量可能会增加,每个分片可包括较少数量的世界状态,使得每个分片中管理的数据总量不会超过容量。
275.在图4的示例中,分片世界状态402a包括m个世界状态,例如404a、404b、404c、404d,统称为404。每个世界状态404使用诸如默克尔树的二叉树维护。世界状态404的每个根节点可以用于建立用以维护分片世界状态的二叉树。例如,世界状态404的根节点成为分片世界状态402a的二叉树的叶节点。分片世界状态402的每个根节点可以用于建立用以维护群组世界状态400的二叉树。例如,分片世界状态402的根节点成为群组世界状态400的二叉树的叶节点。在一些实施方式中,可以使用例如帕特里夏树(patricia tree)、默克尔帕特里夏树(merkle patricia tree)、修改的默克尔帕特里夏树或桶树(bucket tree)维护每个世界状态。
276.每个分片世界状态402与区块链406相关联,该区块链可以包括多个区块408。分片世界状态402存储与区块链406相关联的用户账户的状态信息。在一些实施方式中,区块链406中的每个区块408包括区块头410和区块体412。区块体412包括,例如,交易列表422和收据列表424。区块头410包括,例如,分片标识414、区块哈希值416、区块号418和分片世界状态根哈希值420。基于分片中包括的世界状态的根哈希值计算分片世界状态根哈希值420。在此示例中,分片世界状态402a包括m个世界状态(例如,404a、404b、404c、404d),因此分片世界状态根哈希值420是基于m个世界状态的根哈希值(例如,404a、404b、404c、404d)计算的。
277.在图4的示例中,基于用户账户标识的前两个字节字,将用户账户分配至分片世界状态。例如,如果用户账户标识的前两个字节字在0x0000至0x0010的范围内,则用户账户的状态信息存储在第一分片世界状态402a中。如果用户账户标识在0x0010至0x0020的范围
内,则用户账户的状态信息存储在第二分片世界状态402b中。如果用户标识在0xabcd至0xffff的范围内,则将用户账户分配至第n分片世界状态402d。
278.节点426a表示分片世界状态402a的根节点,并存储分片世界状态402a的根哈希值,其中,分片世界状态根哈希值表示与分片世界状态402a相关联的用户账户的状态信息的指纹。节点426b表示分片世界状态402b的根节点,并存储分片世界状态402b的根哈希值,其中,分片世界状态根哈希值表示与分片世界状态402b相关联的用户账户的状态信息的指纹。节点426d表示分片世界状态402d的根节点,并存储分片世界状态402d的根哈希值,其中,分片世界状态根哈希值表示与分片世界状态402d相关联的用户账户的状态信息的指纹。
279.节点428表示群组世界状态400的根节点,并存储群组世界状态400的根哈希值,其中,群组世界状态根哈希值表示与该群组世界状态400相关联的用户账户的状态信息的指纹。与群组世界状态400相关联的用户账户包括与所有分片世界状态402相关联的用户账户。群组世界状态根哈希值是基于所有分片世界状态402的分片世界状态根哈希值计算的。节点428存储关于群组世界状态400的所有分片402的信息。例如,节点428可存储分片402的根节点426的地址(或指向该地址的链接或指针)。在一些示例中,建立群组世界状态映射表以存储关于群组世界状态400的根节点428和所有分片402的根节点426的地址的信息。
280.在一些实施方式中,用户账户标识可由数字表示,并且用户账户标识的前两个字节字的范围从0x0000到0xffff。例如,可以基于用户账户标识的前两个字节字将用户账户分配至分片世界状态。在此示例中,群组世界状态可支持最多2
16
=65536个分片世界状态。如果每个分片世界状态对应于一个区块链分片,则群组世界状态402可以支持多达65536个区块链分片。
281.在一些实施方式中,可以基于用户账户标识的前三个字节字(包括24位)将用户账户分配至分片世界状态。在此示例中,群组世界状态可以支持多达2
24
=16777216个分片世界状态。如果每个分片世界状态对应于一个区块链分片,则群组世界状态可以支持多达16777216个区块链分片。如果需要其他分片世界状态,则可以使用用户账户标识的前四个或更多字节字用于将用户账户分配至分片世界状态。在下面的示例中,我们假设基于用户标识的前两个字节字将用户账户分配至分片世界状态。
282.通常,系统不需要使用可以支持的最大数量的分片。例如,当基于用户账户标识的前两个字节字将用户账户分配至分片世界状态时,群组世界状态可以支持多达65536个分片世界状态和多达65536个区块链分片。在此示例中,系统通常使用少于65536个区块链分片。因此,每个分片包括多个世界状态(例如,m个世界状态)。在一些实施方式中,可在区块头或区块体中记录用于指明分片中的世界状态的数量和/或哪个世界状态属于该分片的规则。例如,与区块链相关联的智能合约可以存储用于指明分片中的世界状态的数量和/或哪个世界状态属于该分片的规则。例如,可通过遍历分片世界状态的数字树(例如,默克尔树)来确定分片中的世界状态的数量或哪个世界状态属于该分片。
283.例如,即使群组世界状态可以支持65536个分片世界状态,系统也可以使用较少数量的分片世界状态。在图4的示例中,基于用户账户标识的前两个字节字,将用户账户分配至分片世界状态。如上所述,如果用户账户标识的前两个字节字在0x0000至0x0010的范围内,则用户账户的状态信息存储在第一分片世界状态402a中。如果用户账户标识在0x0010
至0x0020的范围内,则用户账户的状态信息存储在第二分片世界状态402b中。如果用户账户标识在0xabcd至0xffff的范围内,则将用户账户分配至第n分片世界状态402d。也可以使用将特定用户账户分配至特定世界状态的其他方法。
284.例如,每个用户账户信息可以包括唯一标识,该唯一标识专门用于确定将用户账户分配至哪个世界状态。例如,系统还可以将属性(例如,优先级)分配至用户,并将不同的优先级分配至不同的分片。例如,可以将具有较高优先级的用户账户分配至具有更好服务质量和/或更快处理时间的第一分片,这也可能产生更高的服务费。可以将具有较低优先级的用户账户分配至服务质量较低和/或处理时间较慢的第二分片,这可能会产生较低的服务费。
285.下面描述使用群组世界状态的系统中的交易的简化支付验证证明。在基于区块链的系统中,当节点接收到新交易时,该节点会确认交易,包括验证之前没有使用过任何交易输入。为了执行该检查,该节点访问区块链。该节点可以保留区块链的完整本地副本,使得可验证任何输入。也可以在不运行完整网络节点的情况下验证交易。这称为简化支付验证或spv。简化支付验证允许轻量客户端验证交易被包括在区块中,而无需下载整个区块链。spv客户端下载比完整区块小得多的区块头。每个区块头包括该区块内的所有交易的哈希值,其以使得可通过考虑交易的哈希值来轻松验证有关交易是否属于该区块的方式构造。为了验证交易在区块中,spv客户请求包含的证明,其形式是将交易链接到区块的merkle分支。
286.在使用包括多个分片的群组世界状态时,其中,每个分片包括多个世界状态,与使用无分片的单个区块链时生成spv证明相比,生成简化支付验证证明可需要从分片世界状态到世界状态的附加spv证明。如果我们不考虑通过修改分片方案来对群组世界状态的容量进行扩容或缩容,则可以将群组世界状态记录在特定分片中,其中,群组世界状态记录在特定时间点每个分片的世界状态。当需要向外部节点提供spv证明时,spv证明消息可包括三个部分:
287.·
从群组世界状态到分片世界状态的spv证明;
288.·
从分片世界状态到相应世界状态的spv证明;以及
289.·
从世界状态到相应用户账户的spv证明。
290.以下描述了用于对群组世界状态的分片容量进行扩容或缩容的处理。在一些示例中,每个分片被分配至给定数量的资源,例如存储容量或算力,并且可通过增加分片数量来增加用于支持群组世界状态的资源量。
291.在一些实施方式中,区块链账本包括三个数据库:区块链数据库(例如,blockdb)、世界状态数据库(例如,statedb)和杂项数据库(例如,extradb)。区块链数据库存储区块链,世界状态数据库存储世界状态,杂项数据库存储杂项数据。区块链账本还可包括杂项数据库,例如mychain区块链中的relateddb和共识数据库,其可以以类似于杂项数据库(extradb)的方式进行处理。
292.以下描述了群组世界状态的扩容处理,包括对区块链账本的分片进行扩容,其中,分片数量是增加的。参照图5,例如,在第一扩容操作508中,第一分片500被划分为第二分片510和第三分片512。接下来,在第二扩容操作522中,第三分片512被划分为第四分片528和第三分片530。
602、世界状态数据库statedb 604和杂项数据库extradb 606。在此示例中,第一分片600被划分为第二分片608和第三分片610,其中,第二分片608和第三分片610中的每一个具有自己的区块链数据库、世界状态数据库和杂项数据库。
300.通过将第一分片划分为第二分片和第三分片来对群组世界状态进行扩容的处理旨在将对用户的干扰降到最低,以防止或减少系统(例如,基于区块链的应用模块308)提供的服务中断。实现这个目标的一种途径是生成第一分片的内容的快速快照,并例如使用图5所示的处理重新定义群组世界状态的结构。第一分片成为初始第二分片618,并且包括区块链数据库blockdb 602、世界状态数据库statedb 604和杂项数据库extradb 606。第一分片的快照变为初始第三分片620,并且包括区块链数据库blockdb的副本612、世界状态数据库statedb的副本614以及杂项数据库extradb的副本616。在一些实施方式中,第一分片的快照最初不包括第一分片的内容的完整副本。例如,快照可以包括指向第一分片的指针,该指针使系统能够标识第一分片的副本的内容,而无需实际制作第一分片的完整副本。这样可以快速建立快照,而不必等待制作第一分片的完整副本所需的时间。随后,当需要处理快照时,会将内容从第一分片复制到快照。同样,如果要修改第一分片中的一条数据,则在修改第一分片中的该数据段之前,将该数据段复制到快照。
301.有多种方法可以生成第一分片的快照。例如,在第一种方法中,可以使用与第一分片相关联的虚拟机生成第一分片的快照。例如,在第二种方法中,共识区块链网络包括:参与共识处理以确定是否在区块链上写入数据的验证对等节点;以及不参与共识处理的非验证对等节点。第一分片的快照可以由非验证对等节点生成。在第三种方法中,可增加验证对等节点的数量,并且可以在验证对等节点增加的同时由验证对等节点生成第一分片的快照。第二种方法更灵活,具有更好的扩展特征,并且需要更低的在线维护成本。
302.在生成快照后,用户可以访问初始第二分片618和初始第三分片610的内容,包括区块链数据库blockdb 602/612、世界状态数据库statedb 604/614和杂项数据库extradb 606/616。生成第一分片内容的快速快照需要很短的时间,因此系统停机时间很小,对用户的相应中断也小。
303.最初,初始第二分片618和初始第三分片620均包括区块链数据库blockdb 602/612、世界状态数据库statedb 604/614和杂项数据库extradb 606/616的完整副本。用于存储支持第二和第三分片的数据所需的存储量是支持第一分片600所需的存储量的两倍。为了减少数据存储需求,可缩减初始第二分片618和初始第三分片620中的数据库,以分别移除并非支持第二分片和第三分片所必需的数据。在缩减之后,初始第二分片618成为目标第二分片608,初始第三分片620成为目标第三分片610。缩减操作可以被实现为不会对用户造成干扰的后台处理。
304.在一些实施方式中,可以使用下面描述的处理来缩减区块链数据库blockdb602/612、世界状态数据库statedb 604/614和杂项数据库extradb 606/616。例如,在缩减区块链数据库blockdb时,可以保留区块头。在区块体内,与关联于分片世界状态的用户账户无关的交易将被逐渐移除。例如,假设第一分片包括世界状态504a、504b、504c和504d,目标第二分片608包括世界状态504a,目标第三分片610包括世界状态504b、504c和504d(这是类似于图5中的第一扩容508的示例)。缩减初始第二分片618,以使得在区块体内,与关联于世界状态504a的用户账户无关的交易被逐渐移除。缩减初始第三分片620,以使得在区块体内,
与关联于世界状态504b、504c和540d的用户账户无关的交易被逐渐移除。
305.例如,在缩减世界状态数据库statedb时,将移除不与分片中的世界状态相关的merkle树。例如,由于杂项数据库extradb很小,因此不需要缩减杂项数据库extradb。或者,可以通过移除相应的分片世界状态不需要的交易索引来缩减杂项数据库extradb。
306.在第二分片中数据库的缩减将导致以下结果。在该示例中,区块链数据库blockdb的一部分622被移除,其余的区块链数据库sharding2 blockdb 624包括与第二分片相关联的用户账户的交易数据。世界状态数据库statedb的一部分626被移除,其余的世界状态数据库sharding2 statedb 628包括与第二分片相关联的用户账户的状态信息。杂项数据库extradb的一部分630被移除,其余的杂项数据库sharding2 extradb 632包括与第二分片关联的用户账户的杂项数据。
307.在第三分片中数据库的缩减将导致以下结果。在该示例中,区块链数据库blockdb的一部分634被移除,剩余的区块链数据库sharding3 blockdb 636包括与第三分片相关联的用户账户的交易数据。世界状态数据库statedb的一部分638被移除,其余的世界状态数据库sharding3 statedb 640包括与第三分片关联的用户账户的状态信息。杂项数据库extradb的一部分642被移除,其余的杂项数据库sharding3 extradb 644包括与第三分片关联的用户账户的杂项数据。
308.分片扩容处理允许将分片的容量快速扩容,以便为用户提供高质量的在线服务。在扩容后,可以缩减数据库以降低存储成本。缩减可以在没有交易时执行,或者也可以作为后台处理以避免对用户造成干扰。
309.以下描述分片区块链账本的缩容处理。我们首先描述世界状态的分片的缩容。提供群组世界状态数据结构,其中,多个分片的世界状态组合成群组世界状态。
310.对于常规的内容可寻址merkle树(fdmt_history/mpt),数据是以《hash,value》的格式存储在merkle树的节点中,并且merkle树已经处于“森林”配置中,因此可以通过将各个分片世界状态的两个数据库组合来获得群组世界状态的完整数据库。
311.对于不可内容寻址的merkle树(fdmt_current/bucket tree),每个分片世界状态都记录了分片中用户账户的当前状态,不同世界状态是基于用户账户标识(例如,用户账户标识的第一预定数量的字节字)分开的,因此不同的分片世界状态与用户账户的不同子集相关联。可以将两个分片世界状态组合以获得完整的世界状态。但是,在组合之前,分片世界状态必须是“纯”的,这意味着每个分片世界状态仅存储与该分片世界状态相关联的用户账户的状态信息,而不存储与另一分片世界状态相关联的用户账户的状态信息。如图6所示,当第一分片600被划分以生成初始第二分片618和初始第三分片620时,初始第二分片618和初始第三分片620包括重复数据并且需要被缩减。需要缩减初始第二分片618以移除与目标第三分片610相关联的用户账户的状态数据,需要缩减初始第三分片620以移除与目标第二分片608相关联的用户账户的状态数据。因此,在完成缩减之后,可以将第二分片世界状态和第三分片世界状态组合。
312.图7示出了在第一分片缩容操作700中用于组合第四分片528和第五分片530以生成第三分片512以及在第二分片缩容操作702中组合第二分片510和第三分片512以生成第一分片500的处理的示例。图7中的第四分片528、第五分片530、第三分片512、第二分片510和第一分片500类似于图5中的那些分片。
313.在将第四分片528和第五分片530组合到第三分片世界状态516之前,根节点428存储第二分世界状态514的根节点518、第四分世界状态524的根节点532、第五分片世界状态526的根节点534的地址(或链接或指针)。在一些示例中,在第四分片世界状态524与第五分片世界状态526合并之后,系统300配置群组世界状态400的根节点428以移除根节点532和534的地址,并存储根节点520的地址。在一些示例中,群组世界状态映射表被更新以移除根节点532和534的地址并添加根节点520的地址。
314.图7的分片缩容示例基本上是图5的分片扩容示例的反向。但是,分片缩容操作也可以不同地执行。例如,可以将第四分片528与第二分片510结合以生成第六分片,可以将第五分片530与第三分片512结合以生成第七分片,以及可以将第六分片与第七分片结合以生成第一分片500。
315.在此示例中,在第一分片缩容操作700中,第四分片世界状态524与第五分片世界状态526组合以生成第三分片世界状态516。第四分片世界状态524包括第三世界状态504c,第五分片世界状态526包括第二世界状态504b和第四世界状态504d。在第四分片世界状态524与第五分片世界状态526组合之后,第三分片世界状态516包括第二世界状态504b、第三世界状态504c和第四世界状态504d。第二分片世界状态514包括第一世界状态504a。在第二分片世界状态514与第三分片世界状态516组合之后,第一分片世界状态502包括第一世界状态504a、第二世界状态504b、第三世界状态504c和第四世界状态504d。
316.在第四分片528中,第四分片世界状态524的根节点532存储第四分片世界状态524的根哈希值,其是基于第三世界状态504c的根哈希值计算的。在第五分片530中,第五分片世界状态524的根节点534存储第四分片世界状态524的根哈希值,其是基于第二和第四世界状态504b和504d的根哈希值计算的。在第一分片缩容操作700之后,第三分片世界状态516的根节点520存储第三分片世界状态516的根哈希值,其是基于第二、第三和第四世界状态的根哈希值504b、504c和504d的。在第二分片缩容操作702之后,第一分片世界状态502的根节点506存储第一分片世界状态502的根哈希值,其是基于第一、第二、第三和第四的世界状态504a、504b、504c和504d根哈希值。
317.通常,每次将两个组合前的分片世界状态组合成新的分片世界状态后,都会更新群组世界状态的根节点以移除组合前的分片世界状态根节点的地址,并添加新的分片世界状态的根节点的地址。或者,更新群组世界状态映射表以移除组合前的分片世界状态的根节点的地址,并添加新的分片世界状态的根节点的地址。这样,群组世界状态或群组世界状态映射表的根节点将具有关于分片世界状态的哪些根节点应能访问的正确信息,以便计算更新的群组世界状态根哈希值。
318.以下描述了区块链账本数据库的缩容。对于区块链账本的两个不同分片,可以将它们的区块链数据库blockdb、世界状态数据库worlddb和杂项数据库extradb直接组合。将区块链数据库blockdb、世界状态数据库worlddb和杂项数据库extradb组合在一起仅需少量时间,因此可以最大程度地减少对用户的干扰。
319.参照图8,可以将第一分片800与第二分片802组合以形成第三分片804。第一分片800包括第一区块链数据库blockdb1 806、第一世界状态数据库statedb1 808和第一杂项数据库extradb1 810。第二分片802包括第二区块链数据库blockdb2 812、第二世界状态数据库statedb2 814和第二杂项数据库extradb2 816。在分片缩容操作之后,第三分片804包
括区块链数据库818,其是第一区块链数据库blockdb1 806与第二区块链数据库blockdb2 812的组合。第三分片804包括世界状态数据库820,其是第一世界状态数据库statedb1 808与第二世界状态数据库statedb2 814的组合。第三分片804还包括杂项数据库822,其是第一杂项数据库extradb1 810与第二杂项数据库extradb2816的组合。
320.下面描述了在分片缩容操作之后如何执行数据搜索以及如何生成创世块。第一分片800和第二分片802的区块高度可以不同。如果第一分片800和第二分片802的区块高度相同,它们的哈希值可以不同。通常,第三分片804可以从区块0开始。替代地,第三分片804也可以从大于0的某个区块高度开始。在合并第一分片800和第二分片802之后,第三分片804的第一区块应包括关于第一分片800和第二分片802的合并的信息。
321.例如,此类信息可以包括三个部分:
322.·
第三分片804是由于分片缩容操作而产生的指示;
323.·
原始分片(即,第一分片800和第二分片802)的区块索引实现第三分片804中区块的高效查询和数据的索引;
324.·
当前分片世界状态的根哈希值,在此示例中对应于第三分片804的世界状态。
325.上文描述的分片扩容和分片缩容处理允许资源被有效地用来支持世界状态数据结构,以便向用户提供高质量的服务。例如,分片扩容操作被用于增加群组世界状态的分片数量,使更多资源被分配来处理数字树上,用以维护群组世界状态。
326.下面描述了另一种技术,该技术用于实现资源的有效利用,以支持存储与智能合约相关联的状态信息的数字树,从而为用户提供高质量的服务。在一些实施方式中,智能合约执行于区块链上来自主处理数据以向用户提供服务。基于区块链的系统300可以包括虚拟机,该虚拟机提供用于执行智能合约的运行时环境,以促进基于区块链的应用模块308提供的服务。基于区块链的应用模块308可以被看作是基于交易的状态机。与基于区块链的应用模块308相关联的状态数据可以集合成被称为世界状态的全局共享状态。世界状态包括账户地址和账户状态之间的映射。世界状态可以被存储在例如默克尔帕特里夏树(merkle patricia tree,mpt)的内容寻址树结构中。
327.图9是示出存储用户账户和智能合约的状态数据的世界状态示例的图示。图9的上半部分概念性示出了世界状态900存储第一组用户账户902和第二组用户账户904的状态信息。世界状态900还存储与第一智能合约906和第二智能合约908相关联的状态信息。世界状态的根哈希值提供第一和第二组用户账户以及第一和第二智能合约的最新状态值的指纹。
328.图9的下半部分示出了在存储在存储设备中的数字树(例如,merkle树)中维护的世界状态数据。在该示例中,第一智能合约906生成与第一智能合约906相关联的状态数据的哈希值916,并将该哈希值存储至第一默克尔树910中,该第一默克尔树910存储在第一存储设备914中。与第二智能合约908相关联的状态数据被存储在第二默克尔树912中,该第二默克尔树912被存储在第二存储设备918中。世界状态900由第一默克尔树910和第二默克尔树912维护。在一些实施方式中,可以使用其他类型的树状数据结构或数字树(例如,一个或多个帕特里夏树、一个或多个默克尔帕特里夏树、一个或多个修改的默克尔帕特里夏树、一个或多个桶形树、或以上的任何组合)来维护世界状态。
329.图10示出了智能合约“testcontract”1000的示例,其包括三种类型的数据结构,即accountinfo数据结构1002、companyinfo数据结构1004和country数据结构1006。智能合
约100指定用户账户信息1008(即,zhejiang_account_infos),其中,将“string”类型的键映射到“accountinfo”类型的用户账户值。智能合约100指定用户账户信息1010(即,shanghai_account_infos),其中,将“string”类型的键映射到“accountinfo”类型的用户账户值。智能合约1000指定公司账户信息1012(即,string_map),其中,将“address”类型的键映射到“companyinfo”类型的公司账户值。智能合约100指定类型为“地区”的地区信息1014(即,countriesp array)。例如,智能合约1000可以对应于图9的智能合约906或908。
330.例如,“zhejiang_account_infos”、“shanghai_account_infos”和“string_map”中的每个都可以包括键-值对的数组、或者包括键类型及对应值类型对的哈希值表。例如,用户账户信息zhejiang_account_infos可以存储居住在浙江的用户的账户信息,用户账户信息shanghai_account_infos可以存储居住在上海的用户的账户信息。
331.在一些实施方式中,智能合约与merkle树相关联,因此用户账户信息zhejiang_account_infos1008、用户账户信息shanghai_account_infos1010、公司信息string_map1012和countriesp array 1014存储在单个merkle树中。随着用户账户信息zhejiang_account_infos 1008、用户账户信息shanghai_account_infos 1010、公司账户信息string_map 1012和地区信息countriesp array 1014中的数据增加,存储在merkle树中的数据量增加,并且merkle树中的数据的处理可能会变得越来越慢,也越来越困难。此外,由于四种类型的数据存储在同一个merkle树中,因此搜索一种类型的数据可能需要处理其他类型的数据,从而降低了搜索效率。
332.下面描述一种改进的系统,其中,将两个或更多个merkle树与一个智能合约相关联,使得每个merkle树中存储的数据量减少,从而使merkle树的处理效率更高。
333.参照图11,在一些实施方式中,智能合约1100被配置为在第一默克尔树1102和第三默克尔树1104中存储状态数据或状态数据的哈希值。智能合约1100包括指定哪种类型的数据存储在哪个默克尔树中的代码。每个默克尔树都具有唯一的地址,该唯一的地址可以由智能合约的作者指定。例如,第一默克尔树1102可以具有地址0x00000001,第三默克尔树1104可以具有地址0x00000003。第一和第三默克尔树1102和1104被存储在存储设备1106中。
334.第二智能合约1108被配置为在第二默克尔树1110、第四默克尔树1112和第五默克尔树1114中存储状态数据或状态数据的哈希值。智能合约1108包括指定哪种类型的数据存储在哪个默克尔树中的代码。在该示例中,第二默克尔树1110具有地址0x00000002,第四默克尔树1112具有地址0x00000004,第五默克尔树1114具有地址0x00000005。第二、第四和第五默克尔树1110、1112和1114存储在存储设备1116中。
335.图11的上半部分图示概念性示出了世界状态1118存储第一组用户账户1120和第二组用户账户1122的状态信息。世界状态1118还存储与第一智能合约1100和第二智能合约1108相关联的状态信息。世界状态的根哈希值提供第一和第二组用户账户以及第一和第二智能合约的最新状态值的指纹。在该示例中,世界状态1100由第一默克尔树1102、第二默克尔树1110、第三默克尔树1104、第四默克尔树1112和第五默克尔树1114维护。
336.图12示出了智能合约“testcontract”1200的示例,其包括三种类型的数据结构,即accountinfo数据结构1002、companyinfo数据结构1004和country数据结构1006,类似于图10的智能合约1000的那些。智能合约1200包括标识状态数据的代码和用于存储第一状态
100,000,then treeaddress3=0x00000002;
350.rule 3:if user_id is less than 300,000and greater than or equal to 200,000,then treeaddress3=0x00000003;
351.rule 4:if user_id is less than 400,000,and greater than or equal to 300,000,then treeaddress3=0x00000004;
352.merkletree(treeaddress3)mapping(string=》accountinfo)zhejiang_account_infos;
353.在此示例中,“treeaddress3”是基于规则1至4而确定的变量。
354.例如,可以根据数据的特征和/或merkle树的特征和/或与merkle树相关联的计算资源的特征,将数据存储在不同的merkle树中。例如,数据的特征可以包括数据的大小和数据的优先级。例如,函数可以指定如果第一组用户账户中的用户账户数量等于或小于预定数量n4,则与第一组用户账户相关联的数据存储在第一merkle树中;如果第一组用户账户中的用户账户数量大于n4且等于或小于预定数量n5,则存储在第二merkle树中;如果第一组用户账户中的用户账户数量大于n5,则存储在第三merkle树中,其中,n4和n5为正整数。例如,函数可以指定如果用户账户与低优先级相关联,则与用户账户关联的数据存储在第一merkle树中;如果用户账户与高优先级相关联,则存储在第二merkle树中。
355.merkle树的特征可以包括,例如,已经在merkle树中存储了多少数据以及与merkle树相关联的处理时间(例如,读取和写入访问时间以及用于处理merkle证明的时间段)。例如,智能合约可以包括代码,该代码指定如果merkle树的大小等于或小于x3千兆字节,则与新用户账户相关联的数据应存储在第一merkle树中;如果merkle树的大小大于x3千兆字节,则存储在第二merkle树中,x3为正实数。
356.例如,与默克尔树相关联的计算资源的特征可以包括用于存储默克尔树的存储设备的特征,例如存储设备的剩余容量或存储设备的位置。例如,智能合约可以包括指定与新用户账户相关联的数据应存储在merkle树中的代码,该merkle树存储在具有至少x4四字节(tetra-bytes)的可用空间的存储设备中。例如,智能合约可以包括指定与居住在特定国家的用户的新账户相关联的数据应存储在merkle树中的代码,该merkle树存储在位于该特定国家的存储设备中。
357.在一些实施方式中,在将智能合约部署在区块链上时,默克尔树的标识可以是未知的。可以通过在执行智能合约时(例如,在运行时)将函数参数传递给智能合约来指定merkle树的标识。智能合约的编译器被配置为支持merkle树与上述智能合约的动态关联。
358.本发明的特征是智能合约非固定地绑定到单个merkle树。而是,智能合约可以与多个merkle树相关联。此外,可以动态调整智能合约和merkle树之间的关联。例如,每个智能合约可以包括映射表,该映射表提供关于智能合约可以访问的所有merkle树的信息。
359.图13示出了包括accountinfo数据结构1002的智能合约“testcontract2”1300的示例,类似于图10的智能合约1000。在智能合约1300中,代码“mapping(string=》accountinfo)beijing_account_infos”前面的修饰“merkletree(0x00000002)”1302指定将beijing_account_infos 1304的映射存储在具有地址0x00000002的第二merkle树1110中。在代码“mapping(tring=》accountinfo)chongqing_account_infos”前面的修饰“merkletree(0x00000004)”1306指定将chongqing_account_infos 1308的映射储在具有
地址0x00000004的第四merkle树1112中。在代码“mapping(string=》accountinfo)shenzhen_account_infos”前面的修饰“merkletree(0x00000005)”1310指定将shenzhen_account_infos 312的映射存储在具有地址x00000005的第五merkle树1114中。
360.在一些实施方式中,merkle树可以存储两个或更多个智能合约的状态信息。参照图14,在一些示例中,第一智能合约1300将状态数据或状态数据的哈希值存储在第一merkle树1102、第二merkle树1110和第三merkle树1104中。第二智能合约1302将状态数据或状态数据的哈希值存储在第二merkle树1110、第四merkle树1112和第五merkle树1114中。在此示例中,第一智能合约1300和第二智能合约都将状态数据存储在第二merkle树1110中。
361.在一些实施方式中,两个或更多个merkle树可以被存储在存储设备中。在图14的示例中,第二merkle树1110存储在存储设备storageb 1304中。第二merkle树1110维护用于搜索第二存储设备storageb 1304中的数据的索引。第四merkle树1112和第五merkle树1114被存储在第三存储设备storagec 1306中。第四merkle树1112和第五merkle树1114维护用于搜索存储在第三存储设备storagec 1306中的数据的索引。
362.图14的上半部分图示概念性示出了世界状态1400存储第一组用户账户1402和第二组用户账户1404的状态信息。世界状态1400还存储与第一智能合约1300和第二智能合约1302相关联的状态信息。世界状态的根哈希值提供第一和第二组用户账户以及第一和第二智能合约的最新状态值的指纹。在该示例中,世界状态1400由第一merkle树1102、第二merkle树1110、第三merkle树1104、第四merkle树1112和第五merkle树1114维护。例如,可以基于merkle树0x00000001的根哈希值(1102)、merkle树0x00000002的根哈希值(1110)、merkle树0x00000003的根哈希值(1104)、merkle树0x00000004的根哈希值(1112)和merkle树0x00000005的根哈希值(1114)确定世界状态1400的根哈希值。
363.图15是用于处理与一个或多个区块链相关联的世界状态信息的处理1500的示例的流程图。为方便起见,处理1500将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当编程的计算系统(例如,图1的计算系统106、108或图3的系统300)可以执行处理1500。处理1500包括以下步骤。
364.在1502,系统提供包括多个分片的群组世界状态,其中,每个分片包括一个或多个世界状态,每个世界状态存储关于与该世界状态相关联的用户账户的状态的信息,每个分片与包括一个或多个区块的区块链相关联,该一个或多个区块存储与关联于该区块链的用户账户相关联的交易数据。
365.在一些实施例中,使用默克尔树(merkle tree)、帕特里夏树(patricia tree)、默克尔帕特里夏树(merkle patricia tree)、修改的默克尔帕特里夏树(modified merkle patricia tree)或桶树(bucket tree)中的至少一种维护每个世界状态。
366.在一些实施例中,基于用户账户的特征将用户账户与世界状态相关联,其中,每个用户账户仅与世界状态之一相关联。
367.在一些实施例中,基于用户账户标识的特征,将用户账户与世界状态相关联。
368.在一些实施例中,基于用户账户标识的预定字节或字节字,将用户账户与世界状态相关联。
369.在一些实施例中,群组世界状态支持最大2n个世界状态,并且其用户账户标识具
有等于m的预定字节或字节字的用户账户与第m世界状态相关联,1≤m≤2n。
370.在一些实施例中,群组世界状态支持最大2
16
=65536个世界状态,并且其用户账户标识的前两个字节字等于m的用户账户与第m个世界状态相关联,1≤m≤65536。
371.在一些实施例中,基于用户账户的优先级,将用户账户与世界状态相关联。
372.在1504,系统基于一个或多个标准动态修改群组世界状态中的分片的数量,包括以下至少一项:(i)将分片之一划分为两个或更多个分片,(ii)将两个或更多个分片分合并成一个分片,(iii)将一个或多个新分片添加至群组世界状态,或者(iv)从群组世界状态中移除一个或多个分片。
373.在一些实施例中,可以通过将第一分片分成第二分片和第三分片来动态地修改群组世界状态中的分片的数量,第二分片包括第一分片的世界状态的第二子集,第三分片包括第一分片的世界状态的第三子集。
374.在一些实施例中,可以通过合并第二分片和第三分片以生成第一分片来动态地修改群组世界状态中的分片的数量,其中,第一分片包括第二分片的一个或多个世界状态以及第三分片的一个或多个世界状态。
375.在一些实施例中,可以通过将一个或多个新分片添加至群组世界状态来动态地修改群组世界状态中的分片的数量,其中,一个或多个新分片包括先前未包括在群组世界状态中的一个或多个世界状态。
376.在一些实施例中,可以通过从群组世界状态中移除一个或多个分片来动态地修改群组世界状态中的分片的数量,包括从群组世界状态中移除被移除的一个或多个分片中的一个或多个世界状态。
377.在一些实施例中,所述系统评估一个或多个标准,并在确定满足一个或多个标准时将一个分片分成两个或更多个分片。
378.在一些实施例中,所述系统评估一个或多个标准,并在确定满足一个或多个标准时将两个或更多个分片合并为一个分片。
379.在一些实施例中,一个或多个标准包括服务质量度量、算力要求、存储要求、数据存储要求或数据带宽要求中的至少一个。
380.在一些实施例中,所述系统确定以下至少一项:(i)服务质量度量低于阈值、(ii)未满足算力要求、(iii)未满足存储容量要求、(iv)未满足数据存储容量要求、或(v)未满足数据带宽要求。响应于所述确定,系统将多个分片之一分成两个或更多个分片,与分配至多个分片之一的资源相比,将更多的资源分配至两个或更多个分片的组合,其中,所述资源包括算力、存储容量、数据存储容量或数据带宽中的至少一个。
381.在一些实施例中,所述系统确定以下至少一项:(i)服务质量度量值高于阈值、(ii)空闲或多余的算力高于阈值、(iii)可用存储容量大于阈值、(iv)可用数据存储容量大于阈值、或(v)可用数据带宽大于阈值。响应于所述确定,系统将两个或更多个分片合并为单个分片,与合并之前分配至两个或更多个分片的资源相比,将更少的资源分配至合并后的单个分片,其中,所述资源包括算力、存储容量、数据存储容量或数据带宽中的至少一个。
382.在一些实施例中,将所述分片之一划分为两个或更多个分片包括将第一分片分为第二分片和第三分片。第一分片包括第一世界状态数据库,该第一世界状态数据库包括第一组世界状态。将第一分片划分为第二分片和第三分片包括:生成第一分片的第一快照,其
中,第一快照包括第一世界状态数据库的快照。所述划分包括缩减第一分片以生成第二分片,包括移除第一世界状态数据库中的一个或多个世界状态以生成第二世界状态数据库,该第二世界状态数据库包括第一分片中的一个或多个世界状态的第二子集。所述划分还包括缩减第一分片的第一快照以生成第三分片,包括在第一世界状态数据库中移除一个或多个世界状态以生成第三世界状态数据库,该第三世界状态数据库包括第一分片中的一个或多个世界状态的第三子集,其中,一个或多个世界状态的第三子集不同于一个或多个世界状态的第二子集。
383.在一些实施例中,将所述分片之一划分为两个或更多个分片包括将多个分片之一划分为三个或更多个分片。
384.在一些实施例中,将两个或更多个分片合并成一个分片包括将第二分片和第三分片合并成第一分片。第二分片包括第二世界状态数据库,该第二世界状态数据库包括存储与第二组用户账户相关联的状态信息的第二组世界状态。第三分片包括第三世界状态数据库,该第三世界状态数据库包括存储与第三组用户账户相关联的状态信息的第三组世界状态。第一分片包括第一世界状态数据库,该第一世界状态数据库包括第一组世界状态,该第一组世界状态包括第二组世界状态和第三组世界状态,第一组世界状态存储与第一组用户账户相关联的状态信息,第一组用户账户包括第二组用户账户和第三组用户账户。
385.在一些实施例中,将所述分片之一划分为两个或更多个分片包括将第一分片划分为第二分片和第三分片,第一分片与第一组用户账户相关联,第二分片与第二组用户账户相关联,第三分片与第三组用户账户相关联。第二组用户账户是第一组用户账户的第二子集,第三组用户账户是第一组用户账户的第三子集,用户账户的第三子集与用户账户的第二子集不同。
386.在一些实施例中,所述系统提供第一组一个或多个规则,其指定要增加群组世界状态中分片的数量的一个或多个条件。
387.在一些实施例中,所述系统提供第二组一个或多个规则,其指定要减少群组世界状态中分片的数量的一个或多个条件。
388.在1506,所述系统生成群组世界状态的根哈希值,其中,所述根哈希值表示与所述群组世界状态的分片中的世界状态相关联的用户账户的状态的数字指纹。
389.在一些实施例中,所述系统基于群组世界状态中分片的数量动态地修改分配至群组世界状态的资源。
390.在一些实施例中,响应于群组世界状态中分片的数量增加,所述系统向群组世界状态分配更多的资源。
391.在一些实施例中,响应于群组世界状态中分片的数量减少,所述系统向群组世界状态分配更少的资源。
392.在一些实施例中,所述资源包括算力、存储、数据存储容量或数据带宽中的至少一个。
393.图16是用于处理与一个或多个区块链相关联的世界状态信息的处理1600的示例的流程图。为方便起见,处理1600将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当编程的计算系统,例如图1的计算系统106、108或图3的系统300,可以执行处理1600。处理1600包括以下步骤。
394.在1602,所述系统提供与第一组用户账户相关联的第一分片,其中,第一分片包括第一区块链数据库和第一世界状态数据库。第一区块链数据库包括由第一区块链网络管理的第一区块链,其中,通过第一区块链网络的区块链节点的共识将区块链数据存储在第一区块链上。第一世界状态数据库包括多个世界状态,每个世界状态与多个用户账户相关联,并且每个世界状态存储与该世界状态相关联的用户账户的当前状态。
395.在一些实施例中,第一世界状态数据库与第一组用户账户相关联,第二世界状态数据库与第二组用户账户相关联,第三世界状态数据库与第三组用户账户相关联,并且第一组用户账户包括第二组用户账户和第三组用户账户的总和。
396.在一些实施例中,第一世界状态数据库与第一组用户账户相关联,第二世界状态数据库与第二组用户账户相关联,第三世界状态数据库与第三组用户账户相关联,并且第二组用户账户与第三组用户账户不重叠。
397.在一些实施例中,第一世界状态数据库的多个世界状态中的每个世界状态包括根节点,第一区块链数据库的第一区块链包括第一区块,该第一区块包括区块头和区块体,该区块头存储对第一世界状态数据库的多个世界状态的根节点的哈希值进行哈希处理得到的第一哈希值,并且所述第一哈希值表示与第一世界状态数据库的多个世界状态相关联的用户账户的当前状态的数字指纹。
398.在一些实施例中,第一世界状态数据库的多个世界状态中的每个世界状态包括根节点,第一区块链数据库的第一区块链包括第一区块,第一区块包括区块头和区块体,所述区块头存储第一世界状态数据库中的世界状态的根节点的哈希值。
399.在一些实施例中,使用包括默克尔树、帕特里夏树、默克尔帕特里夏树、修改的默克尔帕特里夏树或桶树中的至少一种数字树,维护每个世界状态。
400.在1604,所述系统将第一分片划分为第二分片和第三分片。所述划分包括以下步骤。
401.在1606,所述系统生成第一分片的第一快照,其中,第一快照包括第一区块链数据库的快照和第一世界状态数据库的快照。
402.在一些实施例中,生成第一分片的快照包括使用与第一分片相关联的虚拟机生成第一分片的快照。
403.在一些实施例中,第一区块链网络包括共识区块链网络,该共识区块链网络包括参与共识处理以确定是否将数据写入区块链的验证对等节点;以及不参与共识处理的非验证对等节点。生成第一分片的快照包括使用非验证对等节点生成快照。
404.在一些实施例中,共识区块链网络包括:参与共识处理以确定是否将数据写入区块链的验证对等节点;以及不参与共识处理的非验证对等节点。生成第一分片的快照包括增加验证对等节点的数量,以及使用验证对等节点生成快照。
405.在1608,所述系统缩减第一分片以生成第二分片,包括移除第一分片的第一世界状态数据库中的一个或多个世界状态以生成第二世界状态数据库,该第二世界状态数据库包括第一分片中的一个或多个世界状态的第二子集。
406.在一些实施例中,第二分片包括第二区块链数据库,该第二区块链数据库包括第二区块链,该第二区块链存储与关联于第二分片的用户账户相关联的交易数据。第二区块链包括第一区块,第一区块包括存储关于交易的信息的区块体。缩减第一分片包括移除关
于与用户账户相关联的交易的信息,该用户账户不与第二世界状态数据库中的一个或多个世界状态的第二子集相关联。
407.在1610,所述系统缩减第一分片的第一快照以生成第三分片,包括移除第一快照中的第一世界状态数据库中的一个或多个世界状态以生成包括第一分片中的一个或多个世界状态的第三子集的第三世界状态数据库,其中,一个或多个世界状态的第三子集不同于一个或多个世界状态的第二子集。
408.在一些实施例中,第三分片包括第三区块链数据库,该第三区块链数据库包括存储与关联于第三分片的用户账户相关联的交易数据的第三区块链。第三区块链包括第一区块,第一区块包括存储关于交易的信息的区块体。缩减第一分片的第一快照包括移除与用户账户相关联的有关交易的信息,该用户账户不与第三世界状态数据库中的一个或多个世界状态的第三子集相关联。
409.在一些实施例中,第三分片包括第三区块链数据库,该第三区块链数据库包括存储与关联于第三分片的用户账户相关联的交易数据的第三区块链。该系统将第三分片划分为第四分片和第五分片,其中,所述划分包括:生成第三分片的第二快照,其中,第二快照包括第三区块链数据库的快照和第三世界状态数据库的快照。所述划分包括缩减第三分片以生成第四分片,包括移除第三分片的第三世界状态数据库中的一个或多个世界状态以生成第四世界状态数据库,该第四世界状态数据库包括该第三分片中的一个或多个世界状态的第四子集。所述划分还包括缩减第三分片的第二快照以生成第五分片,包括移除第二快照中第三世界状态数据库中的一个或多个世界状态以生成包括第三分片中一个或多个世界状态数据库的第五子集,其中,一个或多个世界状态的第五子集不同于一个或多个世界状态的第四子集。
410.在一些实施例中,与分配至第三分片的资源相比,所述系统向第四分片和第五分片的组合分配更多的资源。
411.在一些实施例中,在将第一分片分为第二分片和第三分片之后,与分配至第一分片的资源相比,所述系统向第二分片和第三分片的组合分配更多的资源。
412.在一些实施例中,分配更多资源包括分配更多的算力、存储、数据存储容量或数据带宽中的至少一个。
413.在一些实施例中,基于维护第一和第二分片的世界状态的数字树的根节点的哈希值,所述系统生成表示第一和第二分片的世界状态的群组世界状态的哈希值。
414.在一些实施例中,所述系统生成与用户账户相关联的交易的简化支付验证证明,其是通过基于从群组世界状态的根节点到分片世界状态的根节点的路径生成第一证明、基于从分片世界状态的根节点到与用户账户相关联的世界状态的根节点的路径生成第二证明、以及基于从世界状态的根节点到表示该用户账户的节点的路径生成第三证明来生成的。
415.图17是用于处理与一个或多个区块链相关联的世界状态信息的处理1700的示例的流程图。为方便起见,处理1700将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当编程的计算系统,例如图1的计算系统106、108或图3的系统300,可以执行处理1700。处理1700包括以下步骤。
416.在1702,所述系统提供区块链账本的第一分片,其中,第一分片包括第一区块链数
据库和第一世界状态数据库,第一世界状态数据库包括多个世界状态,并且每个世界状态存储与所述世界状态相关联的用户账户的当前状态。
417.在1704,所述系统生成第一分片的第一副本,该第一分片的第一副本包括第一区块链数据库的副本和第一世界状态数据库的副本。
418.在1706,所述系统通过移除第一分片的第一世界状态数据库中的一个或多个世界状态来生成第二分片,其中,第一分片中的一个或多个世界状态的第二子集保留在第二分片中。
419.在1708,所述系统通过移除第一分片的第一副本中的第一世界状态数据库中的一个或多个世界状态来生成第三分片,其中,第一分片中的一个或多个世界状态的第三子集保留在第三分片中,一个或多个世界状态的第三子集不同于一个或多个世界状态的第二子集。
420.在一些实施例中,与分配至第一分片的资源相比,所述系统向第二分片和第三分片的组合分配更多的资源。
421.图18是用于处理与一个或多个区块链相关联的世界状态信息的处理1800的示例的流程图。为方便起见,处理1800将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当编程的计算系统,例如图1的计算系统106、108或图3的系统300,可以执行处理1800。处理1800包括以下步骤。
422.在1802,所述系统提供区块链账本的第一分片,其中,第一分片包括第一区块链数据库和第一世界状态数据库,第一世界状态数据库包括多个世界状态,并且每个世界状态存储与该世界状态相关联的用户账户的当前状态。
423.在1804,所述系统生成第一分片的两个或更多个副本,每个副本包括第一区块链数据库的副本和第一世界状态数据库的副本。
424.在1806,所述系统通过移除第一分片和第一分片的两个或更多个副本中的一个或多个世界状态,生成经划分的分片,其中,一个或多个世界状态的子集保留在每个分片中,并且保留在所有分片中的一个或多个世界状态的子集的总和包括最初在第一分片中的所有世界状态。
425.在一些实施例中,与分配至第一分片的资源相比,所述系统向经划分的分片的组合分配更多的资源。
426.图19a和图19b示出了用于处理与一个或多个区块链相关联的世界状态信息的处理1900的示例的流程图。为方便起见,处理1900将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当编程的计算系统,例如图1的计算系统106、108或图3的系统300,可以执行处理1900。处理1900包括以下步骤。
427.在1902,所述系统将多个用户账户划分为至少第一组用户账户和第二组用户账户。
428.在1904,所述系统将第一区块链数据库和第一世界状态数据库与第一组用户账户相关联,其中,第一区块链数据库包括由第一区块链网络管理的第一区块链,其中,通过第一区块链网络的区块链节点的共识将区块链数据存储在第一区块链上。第一世界状态数据库包括多个世界状态,每个世界状态与第一组用户账户的子集相关联,并且每个世界状态存储与该世界状态相关联的用户账户的当前状态。
429.在1906,所述系统将第二区块链数据库和第二世界状态数据库与第二组用户账户相关联,其中,所述第二区块链数据库包括由第二区块链网络管理的第二区块链,其中,通过第二区块链网络的区块链节点的共识将区块链数据存储在第二区块链上。第二世界状态数据库包括多个世界状态,每个世界状态与所述第二组用户账户的子集相关联,并且每个世界状态存储与该世界状态相关联的用户账户的当前状态。
430.在1908,所述系统生成表示第一世界状态数据库的世界状态的数字指纹的第一哈希值,其中,所述第一哈希值是基于第一世界状态数据库中的每个世界状态的根哈希值生成的。
431.在1910,所述系统生成表示第二世界状态数据库的世界状态的数字指纹的第二哈希值,其中,所述第二哈希值是基于第二世界状态数据库中的每个世界状态的根哈希值生成的。
432.在1912,所述系统将第一哈希值存储在第一区块链的第一区块的区块头处。
433.在1914,所述系统将第二哈希值存储在第二区块链的第一区块的区块头处。
434.在1916,所述系统生成表示第一世界状态数据库和第二世界状态数据库的世界状态的数字指纹的群组世界状态根哈希值,其中,所述群组世界状态根哈希值是基于第一哈希值和第二哈希值而生成的。
435.图20是用于处理与一个或多个区块链相关联的世界状态信息的处理2000的示例的流程图。为方便起见,处理2000将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当编程的计算系统,例如图1的计算系统106、108或图3的系统300,可以执行处理2000。处理2000包括以下步骤。
436.在2002,所述系统将多个用户账户分为至少第一组用户账户和第二组用户账户。
437.在2004,所述系统将第一组用户账户与第一区块链数据库和第一世界状态数据库相关联,其中,第一区块链数据库存储与第一组用户账户相关联的交易数据,第一世界状态数据库包括多个世界状态,并且每个世界状态与第一组用户账户的子集相关联。
438.在2006,所述系统将第二组用户账户与第二区块链数据库和第二世界状态数据库相关联,其中,第二区块链数据库存储与第二组用户账户相关联的交易数据,第二世界状态数据库包括多个世界状态,并且每个世界状态与第二组用户账户的子集相关联。
439.在2008,在第一区块链的第一区块的区块头处,所述系统存储表示第一世界状态数据库中的世界状态的数字指纹的第一哈希值。
440.在2010,在第二区块链的第一区块的区块头处,所述系统存储表示第二世界状态数据库中的世界状态的数字指纹的第二哈希值。
441.在2012,所述系统基于第一哈希值和第二哈希值生成表示第一世界状态数据库和第二世界状态数据库中的世界状态的数字指纹的群组世界状态根哈希值。
442.图21是用于处理与一个或多个区块链相关联的世界状态信息的处理2100的示例的流程图。为方便起见,处理2100将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当编程的计算系统,例如图1的计算系统106、108或图3的系统300,可以执行处理2100。处理2100包括以下步骤。
443.在2102,系统提供包括多个分片的群组世界状态,其中,每个分片包括世界状态数据库。世界状态数据库包括多个世界状态,每个世界状态存储有关与该世界状态相关联的
用户账户的状态的信息,每个分片与区块链数据库相关联,该区块链数据库包括包含一个或多个区块的区块链,该一个或多个区块存储与关联于该区块链的用户账户相关联的交易数据。多个分片中的第一分片包括包含第一组世界状态的第一世界状态数据库,该第一组世界状态存储与第一组用户账户有关的状态信息。多个分片中的第二分片包括包含第二组世界状态的第二世界状态数据库,该第二组世界状态存储与第二组用户账户有关的状态信息。
444.在一些实施例中,使用数字树来维护每个世界状态,使用第一组数字树维护第一组世界状态,使用第二组数字树维护第二组世界状态,以及使用第三组数字树维护第三组世界状态,第三组数字树包括第一组数字树和第二组数字树。
445.在一些实施例中,每个数字树包括默克尔树、帕特里夏树、默克尔帕特里夏树、修改的默克尔帕特里夏树或桶树中的至少一个。
446.在一些实施例中,第一分片与包括第一区块链的第一区块链数据库相关联,该第一区块链存储与第一组用户账户相关联的交易数据,第二分片与包括第二区块链的第二区块链数据库相关联,该第二区块链存储与第二组用户账户相关联的交易数据。该系统合并第一区块链数据库和第二区块链数据库以生成包括第三区块链的第三区块链数据库,该第三区块链存储与第一组用户账户和第二组用户账户相关联的交易数据。
447.在一些实施例中,第三区块链包括存储信息的第一区块,该信息指示第三区块链是通过合并至少两个区块链生成的。
448.在一些实施例中,第一区块链数据库包括促进在第一区块链中的数据搜索的第一数据结构,第二区块链数据库包括促进在第二区块链中的数据搜索的第二数据结构,第三区块链数据库包括促进在第三区块链数据库中的数据搜索的第一数据结构和第二数据结构。
449.在一些实施例中,第一区块链数据库存储第一组世界状态的第一根哈希值,第二区块链数据库存储第二组世界状态的第二根哈希值,第三区块链数据库存储第三组世界状态的第三根哈希值。
450.在2104,系统合并第一分片和第二分片以生成第三分片,包括合并第一世界状态数据库和第二世界状态数据库以生成包括第三组世界状态的第三世界状态数据库,该第三组世界状态包括第一组世界状态和第二组世界状态,其中,第三组世界状态存储有关第一组用户账户和第二组用户账户的状态信息。
451.在一些实施例中,系统确定第一分片是由分区处理生成的,该分区处理包括生成第四分片的快照,缩减第四分片或第四分片的快照以生成第一分片,并等待第四分片或第四分片的快照缩减完成后再合并第一分片和第二分片。
452.在一些实施例中,与分配至第一分片和第二分片的组合的资源相比,系统向第三分片分配更少的资源。
453.在一些实施例中,所述资源包括算力、存储器、数据存储容量或数据带宽中的至少一个。
454.图22是用于处理与一个或多个区块链相关联的世界状态信息的处理2200的示例的流程图。为方便起见,处理2200将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当编程的计算系统,例如图1的计算系统
106、108或图1的系统300,可执行处理2200。处理2200包括以下步骤。
455.在2202,所述系统提供包括多个分片的群组世界状态,其中,每个分片包括世界状态数据库。世界状态数据库包括多个世界状态,每个世界状态存储关于与该世界状态相关联的用户账户的状态的信息并且每个分片与区块链数据库相关联,该区块链数据库包括包含一个或多个区块的区块链,该一个或多个区块存储与关联于所述区块链的用户账户相关联的交易数据。群组世界状态的多个分片中的第一分片包括第一世界状态数据库。
456.在2204,所述系统通过生成第一分片的快照来生成中间分片。
457.在2206,所述系统移除第一分片中的一个或多个世界状态以生成第二分片,该第二分片包括第一分片中的一个或多个世界状态的第二子集。
458.在2208,所述系统移除中间分片中的一个或多个世界状态以生成第三分片,该第三分片包括第一分片中的一个或多个世界状态的第三子集,并且一个或多个世界状态的第三子集不同于一个或多个世界状态的第二子集。
459.在一些实施例中,与分配至第一分片的资源相比,所述系统向第二分片和第三分片的组合分配更多的资源。
460.图23是用于处理与一个或多个区块链相关联的世界状态信息的处理2300的示例的流程图。为方便起见,处理2300将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,被适当编程的计算系统,例如图1的计算系统106、108或图3的系统300,可以执行处理2300。处理2300包括以下步骤。
461.在2302,所述系统提供包括多个分片的群组世界状态,其中,每个分片包括一个或多个世界状态。每个世界状态存储关于与该世界状态相关联的用户账户的状态的信息,并且每个分片与包括一个或多个区块的区块链相关联,该一个或多个区块存储与关联于该区块链的用户账户相关联的交易数据。
462.在2304,基于第一共识节点处的共识处理与一个或多个其他共识节点处的共识处理的比较结果,所述系统动态修改群组世界状态中分片的数量。
463.在一些实施例中,动态修改群组世界状态中分片的数量通过以下至少一项:(i)将多个分片之一划分为两个或更多个分片;(ii)将两个或更多个分片合并为一个分片,(iii)将一个或多个新分片添加至群组世界状态,或(iv)从群组世界状态中移除一个或多个分片。
464.在一些实施例中,如果第一共识节点处的共识处理比一个或多个其他共识节点处的共识处理慢了第一阈值,则所述系统通过增加群组世界状态中分片的数量来动态修改群组世界状态中的分片数量。
465.在一些实施例中,如果第一共识节点处的共识处理比一个或多个其他共识节点处的共识处理快了第二阈值,则所述系统通过减少群组世界状态中分片的数量来动态修改群组世界状态中分片的数量。
466.在2306,所述系统生成群组世界状态的根哈希值,其中,所述根哈希值表示与所述群组世界状态的分片中的世界状态相关联的用户账户的状态的数字指纹。
467.在一些实施例中,所述系统提供第一组一个或多个规则,其指定要增加群组世界状态中的分片数量的一个或多个条件。
468.在一些实施例中,所述系统确定第一共识节点处的共识处理的第一速度,确定一
个或多个其他共识节点处的共识处理的第二速度,将第一共识节点处的共识处理的第一速度与一个或多个其他共识节点处的共识处理的第二速度进行比较,生成将第一共识节点处的共识处理与一个或多个其他共识节点处的共识处理进行比较的结果。
469.在一些实施例中,所述系统提供第二组一个或多个规则,其指定要减少群组世界状态中的分片数量的一个或多个条件。
470.图24是示出用于处理与区块链相关联的世界状态信息的处理2400的示例的流程图。为方便起见,处理2400将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,适当编程的计算系统,例如图1的计算系统106、108,图3的系统300,图40的系统4000,可以执行处理2400。处理2400包括以下步骤。
471.在2402,所述系统提供与由区块链网络管理的区块链相关联的第一智能合约,其中,通过区块链网络的区块链节点的共识将区块链数据存储在区块链上。
472.在2404,所述系统提供第一merkle树和第二merkle树,以维护与第一组用户账户相关联的第一世界状态,其中,第一世界状态存储关于第一组用户账户的当前状态和第一智能合约的当前状态的数据。第一智能合约包括:指定要存储在第一merkle树中的第一数据的第一代码,以及指定要存储在第二merkle树中的第二数据的第二代码。
473.在一些实施例中,第一代码指定与第一地理区域中的用户账户相关联的数据将被存储在第一merkle树中,第二代码指定与第二地理区域中的用户账户相关联的数据将被存储在第二merkle树中。
474.在一些实施例中,所述系统提供第三merkle树,其中,第一merkle树、第二merkle树和第三merkle树组合维护与多个用户账户相关联的世界状态。第一智能合约包括:指定要将第一数据存储在第一merkle树中的第一代码;指定要将第二数据存储在第二merkle树中的第二代码;指定要将第三数据存储在第三merkle树中的第三代码。
475.在一些实施例中,第一merkle树具有第一地址,第二merkle树具有第二地址,第一代码指定要将第一数据存储在具有第一地址的merkle树中,第二代码指定要将第二数据存储在具有第二地址的merkle树中。
476.在一些实施例中,所述系统提供虚拟机,该虚拟机被配置为执行第一智能合约以使第一数据存储在第一merkle树中,并使第二数据存储在第二merkle树中。
477.在一些实施例中,所述系统提供被配置为将第一智能合约编译成可由虚拟机执行的字节码的编译器。
478.在一些实施例中,第一智能合约指定将第一merkle树存储在第一存储设备处,将第二merkle树存储在第二存储设备处。
479.在一些实施例中,第一智能合约指定第一merkle树和第二merkle树都存储在第一存储设备处。
480.在一些实施例中,所述系统生成存储在第一存储设备中的数据的索引,并将该索引存储在第一和第二merkle树中。
481.在一些实施例中,所述系统提供还与区块链相关联的第二智能合约,其中,第二智能合约包括指定要将第三数据存储在第一merkle树中的第三代码。
482.在一些实施例中,第一merkle树存储基于第一地理区域的用户账户的状态信息,第二merkle树存储基于第二地理区域的用户账户的状态信息。
483.在一些实施例中,所述系统提供与区块链相关联的第二智能合约;提供第三merkle树以维护第二世界状态,该第二世界状态存储关于第二智能合约的当前状态的数据;以及基于第一merkle树的第一根哈希值和第二merkle树的第二根哈希值确定世界状态根哈希值。
484.图25是用于处理与区块链相关联的世界状态信息的处理2500的示例的流程图。为方便起见,处理2500将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,适当编程的计算系统,例如图1的计算系统106、108,图3的系统300,图40的系统4000,可执行处理2500。处理2500包括以下步骤。
485.在2502,所述系统接收与由区块链网络管理的区块链相关联的智能合约,其中,通过区块链网络的区块链节点的共识将区块链数据存储在区块链上。
486.在2504,所述系统标识智能合约中的指定第一数据和第一merkle树的第一代码。
487.在2506,所述系统标识智能合约中的指定第二数据和第二merkle树的第二代码。
488.在一些实施例中,第一代码指定与第一地理区域中的用户账户相关联的数据将被存储在第一merkle树中,第二代码指定与第二地理区域中的用户账户相关联的数据将被存储在第二merkle树中。
489.在2508,所述系统将第一数据存储在第一merkle树中。
490.在2510,所述系统将第二数据存储在第二merkle树中。
491.在一些实施例中,所述系统执行虚拟机以执行第一智能合约以使第一数据存储在第一merkle树中,并使第二数据存储在第二默克尔树中。
492.图26是用于处理与区块链相关联的世界状态信息的处理2600的示例的流程图。为方便起见,处理2600将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,适当编程的计算系统,例如图1的计算系统106、108,图3的系统300,图40的系统4000,可执行处理2600。处理2600包括以下步骤。
493.在2602,所述系统提供与由区块链网络管理的区块链相关联的智能合约,其中,通过区块链网络的区块链节点的共识将区块链数据存储在区块链上。
494.在2604,所述系统提供多个merkle树以维护与一组用户账户相关联的世界状态,其中,该世界状态存储关于用户账户的当前状态和智能合约的当前状态的数据。第一智能合约包括指定多个merkle树中的哪个merkle树用于存储数据的第一代码。
495.在一些实施例中,第一代码包括修饰,该修饰包括用于存储数据段的merkle树的标识。
496.在一些实施例中,merkle树的标识包括merkle树的地址。
497.在一些实施例中,merkle树的标识包括变量。
498.在一些实施例中,所述标识基于数学函数确定。
499.在一些实施例中,所述标识基于一个或多个规则确定。
500.在一些实施例中,所述系统提供被配置为识别修饰并将智能合约编译为可由与区块链相关联的虚拟机执行的字节码的编译器。
501.图27是根据本文实施例的装置2700的模块示例的图示。装置2700可以是被配置为处理与一个或多个区块链相关联的世界状态信息的系统的实施例的示例。装置2700可以对应于上述实施例,并且装置2700包括以下:
502.·
提供模块2702,提供包括多个分片的群组世界状态,其中,每个分片包括一个或多个世界状态,每个世界状态存储关于与该世界状态相关联的用户账户的状态的信息,并且每个分片与包括一个或多个区块的区块链相关联,该一个或多个区块存储与关联于区块链的用户账户相关联的交易数据;
503.·
动态修改模块2704,基于一个或多个条件来动态修改群组世界状态中的分片数量,包括以下至少一项:(i)将多个分片之一划分为两个或更多个分片、(ii)将两个或更多个分片合并为一个分片、(iii)将一个或多个新分片添加至群组世界状态、或者(iv)从群组世界状态中移除一个或多个分片;以及
504.·
生成模块2706,生成群组世界状态的根哈希值,其中,所述根哈希值表示与群组世界状态中的分片的世界状态相关联的用户账户的状态的数字指纹。
505.在可选实施例中,动态修改模块可以包括划分子模块,该划分子模块将第一分片分为第二分片和第三分片,第二分片包括第一分片的世界状态的第二子集,第三分片包括第一分片的世界状态的第三子集。
506.在可选实施例中,动态修改模块可以包括合并子模块,该合并子模块合并第二分片和第三分片以生成第一分片,其中,第一分片包括第二分片的一个或多个世界状态以及第三分片的一个或多个世界状态。
507.在可选实施例中,动态修改模块可以包括添加模块,该添加模块将一个或多个新的分片添加至群组世界状态,其中,一个或多个新分片包括先前未包含在群组世界状态中的一个或多个世界状态。
508.在可选实施例中,动态修改模块可以包括移除子模块,该移除子模块从群组世界状态中移除一个或多个分片,包括从群组世界状态中移除所移除的一个或多个分片中的一个或多个世界状态。
509.在可选实施例中,装置2700可还包括:评估模块,该评估模块评估一个或多个标准;以及划分模块,该划分模块在确定满足一个或多个标准时,将多个分片之一划分为两个或更多个分片。
510.在可选实施例中,装置2700可还包括:评估模块,该评估模块评估一个或多个标准;以及合并模块,该合并模块在确定满足一个或多个标准时,将两个或更多个分片合并为一个分片。
511.在可选实施例中,装置2700可还包括第二动态修改模块,该第二动态修改模块基于群组世界状态中的分片数量来动态地修改分配至群组世界状态的资源。
512.在可选实施例中,装置2700可还包括分配模块,该分配模块响应于群组世界状态中的分片数量的增加,向群组世界状态分配更多的资源。
513.在可选实施例中,装置2700可还包括分配模块,该分配模块响应于群组世界状态中的分片数量的减少,向群组世界状态分配更少的资源。
514.在可选实施例中,资源可包括算力、存储、数据存储容量或数据带宽中的至少一个。
515.在可选实施例中,一个或多个条件可包括服务质量度量、算力要求、存储器要求、数据存储要求或数据带宽要求中的至少一个。
516.在可选实施例中,装置2700可还包括确定模块,该确定模块确定以下至少一项:
(i)服务质量度量小于阈值、(ii)算力要求不满足、(iii)存储器容量要求不满足、(iv)数据存储容量要求不满足、或(v)数据带宽要求不满足。装置2700可还包括划分模块,该划分模块响应于该确定,将多个分片之一划分为两个或更多个分片。装置2700可还包括分配模块,与分配至多个分片之一的资源相比,该分配模块将更多资源分配至两个或更多个分片的组合,其中,资源包括算力、存储器容量、数据存储容量或数据带宽中的至少一个。
517.在可选实施例中,装置2700可还包括确定模块,该确定模块确定以下至少一项:(i)服务质量度量大于阈值、(ii)空闲或多余的算力大于阈值、(iii)可用存储容量大于阈值、(iv)可用数据存储容量大于阈值、或(v)可用数据带宽大于阈值。装置2700可还包括合并模块,该合并模块响应于该确定,将两个或更多个分片合并为单个分片。装置2700可还包括分配模块,与分配至合并之前的两个或更多个分片的资源相比,该分配模块向合并之后的单个分片分配更少的资源,其中,该资源包括算力、存储器容量、数据存储容量或数据带宽中的至少一个。
518.在可选实施例中,可以使用默克尔树、帕特里夏树、默克尔帕特里夏树、修改的默克尔帕特里夏树或桶树中的至少一种来维护每个世界状态。
519.在可选实施例中,将多个分片之一划分两个或更多个分片可以包括将第一分片划分为第二分片和第三分片,其中,第一分片包括包含第一组世界状态的第一世界状态数据库。划分模块可以包括生成子模块,该生成子模块生成第一分片的第一快照,其中,该第一快照包括第一世界状态数据库的快照。划分模块可以包括缩减子模块,该缩减子模块缩减第一分片以生成第二分片,包括移除第一世界状态数据库中的一个或多个世界状态以生成第二世界状态数据库,该第二世界状态数据库包括第一分片中的一个或多个世界状态的第二子集。划分模块可包括缩减子模块,该缩减子模块缩减第一分片的第一快照以生成第三分片,包括移除第一世界状态数据库中的一个或多个世界状态以生成第三世界状态数据库,该第三世界状态数据库包括第一分片中的一个或多个世界状态的第三子集,其中,一个或多个世界状态的第三子集不同于一个或多个世界状态的第二子集。
520.在可选实施例中,将多个分片之一划分为两个或更多个分片可以包括将多个分片之一划分为三个或更多个分片。
521.在可选实施例中,将两个或更多个分片合并为一个分片可以包括将第二分片和第三分片合并为第一分片。第二分片可以包括第二世界状态数据库,该第二世界状态数据库包括存储与第二组用户账户相关联的状态信息的第二组世界状态。第三分片可以包括第三世界状态数据库,该第三世界状态数据库包括存储与第三组用户账户相关联的状态信息的第三组世界状态。第一分片可以包括第一世界状态数据库,该第一世界状态数据库包括包含第二组世界状态和第三组世界状态的第一组世界状态,该第一组世界状态存储与包括第二组用户账户和第三组用户账户的第一组用户账户相关联的状态信息。
522.在可选实施例中,将多个分片之一分为两个或更多个分片可以包括将第一分片分为第二分片和第三分片,第一分片与第一组用户账户相关联,第二分片与第二组用户账户相关联,第三分片与第三组用户账户相关联,第二组用户账户是第一组用户账户的第二子集,第三组用户账户是第一组用户账户的第三子集,并且第三组用户账户不同于第二组用户账户。
523.在可选实施例中,装置2700可还包括关联模块,该关联模块基于用户账户的特征
将用户账户与世界状态相关联,其中,每个用户账户仅与世界状态之一相关联。
524.在可选实施例中,可以基于用户账户标识的特征将用户账户与世界状态相关联。
525.在可选实施例中,可以基于用户账户标识的预定字节或字节字,将用户账户与世界状态相关联。
526.在可选实施例中,群组世界状态可以支持最多2n个世界状态,并且其用户账户标识具有等于m的预定字节或字节字的用户账户与第m个世界状态相关联,1≤m≤2n。
527.在可选实施例中,群组世界状态可以支持最多2
16
=65536个世界状态,并且其用户账户标识的前两个字节字等于m的用户账户与第m个世界状态相关联,1≤m≤65536。
528.在可选实施例中,可以基于用户账户的优先级将用户账户与世界状态相关联。
529.在可选实施例中,装置2700可还包括提供模块,该提供模块提供第一组一个或多个规则,该第一组一个或多个规则指定要增加群组世界状态中的分片数量的一个或多个条件。
530.在可选实施例中,装置2700可还包括提供模块,该提供模块提供第二组一个或多个规则,该第二组一个或多个规则指定要减少群组世界状态中的分片数量的一个或多个条件。
531.图28是根据本文实施例的装置2800的模块示例的图示。装置2800可以是被配置为处理与一个或多个区块链相关联的世界状态信息的系统的实施例的示例。装置2800可以对应于上述实施例,并且装置2800包括以下:
532.·
提供模块2802,提供与第一组用户账户相关联的第一分片,其中,第一分片包括第一区块链数据库和第一世界状态数据库,第一区块链数据库包括由第一区块链网络管理的第一区块链,其中,通过第一区块链网络的区块链节点的共识将区块链数据存储在第一区块链上,第一世界状态数据库包括多个世界状态,每个世界状态与多个用户账户相关联,每个世界状态存储与世界状态相关联的用户账户的当前状态;以及
533.·
划分模块2804,将第一分片划分为第二分片和第三分片。划分模块包括生成子模块2806,生成子模块2806生成第一分片的第一快照,其中,第一快照包括第一区块链数据库的快照和第一世界状态数据库的快照。划分模块包括第一缩减子模块2808,其缩减第一分片以生成第二分片,包括移除第一分片的第一世界状态数据库中的一个或多个世界状态以生成第二世界状态数据库,该第二世界状态数据库包括第一分片中的一个或多个世界状态的第二子集。划分模块还包括第二缩减子模块2810,其缩减第一分片的第一快照以生成第三分片,包括移除第一快照中第一世界状态数据库中的一个或多个世界状态以生成第三世界状态数据库,该第三世界状态数据库包括第一分片中的一个或多个世界状态的第三子集,其中,一个或多个世界状态的第三子集不同于一个或多个世界状态的第二子集。
534.在可选实施例中,装置2800可还包括分配模块,在将第一分片划分为第二分片和第三分片之后,与分配至第一分片的资源相比,该分配模块将更多的资源分配至第二分片和第三分片的组合。
535.在可选实施例中,第一世界状态数据库可以与第一组用户账户相关联,第二世界状态数据库可以与第二组用户账户相关联,第三世界状态数据库可以与第三组用户账户相关联,并且第一组用户账户可以包括第二组用户账户和第三组用户账户的总和。
536.在可选实施例中,第一世界状态数据库可以与第一组用户账户相关联,第二世界
状态数据库可以与第二组用户账户相关联,第三世界状态数据库可以与第三组用户账户相关联,并且第二组用户账户与第三组用户账户不重叠。
537.在可选实施例中,分配更多的资源可以包括分配更多的算力、存储器、数据存储容量或数据带宽中的至少一个。
538.在可选实施例中,生成第一分片的快照可以包括使用与第一分片相关联的虚拟机来生成第一分片的快照。
539.在可选实施例中,第一区块链网络可以包括共识区块链网络,该共识区块链网络包括参与共识处理用以确定是否在区块链上写入数据的验证对等节点,以及不参与共识处理的非验证对等节点。生成第一分片的快照可以包括使用非验证对等节点来生成快照。
540.在一个可选实施例中,共识区块链网络可以包括参与共识处理用以确定是否在区块链上写入数据的验证对等节点,和不参与共识处理的非验证对等节点。生成第一分片的快照可以包括增加验证对等节点的数量,以及使用验证对等节点来生成快照。
541.在可选实施例中,第一世界状态数据库的多个世界状态中的每个世界状态可以包括根节点。第一区块链数据库的第一区块链可以包括第一区块,第一区块包括区块头和区块体,区块头存储对第一世界状态数据库的多个世界状态的根节点的哈希值进行哈希处理得出的第一哈希值,并且第一哈希值表示与第一世界状态数据库的多个世界状态相关联的用户账户的当前状态的数字指纹。
542.在可选实施例中,第一世界状态数据库的多个世界状态中的每个世界状态可以包括根节点,第一区块链数据库的第一区块链可以包括第一区块,第一区块可以包括区块头和区块体,并且区块头存储第一世界状态数据库中的世界状态的根节点的哈希值。
543.在可选实施例中,第二分片可包括第二区块链数据库,该第二区块链数据库包括第二区块链,该第二区块链存储与关联于第二分片的用户账户相关联的交易数据。第二区块链可以包括第一区块,并且第一区块可以包括存储关于交易的信息的区块体。第一缩减子模块可以包括第一移除子模块,该第一移除子模块移除关于与用户账户相关联的交易的信息,该用户账户不与第二世界状态数据库中的一个或多个世界状态的第二子集相关联。
544.在可选实施例中,第三分片可以包括第三区块链数据库,该第三区块链数据库包括第三区块链,该第三区块链存储与关联于第三分片的用户账户相关联的交易数据。第三区块链可以包括第一区块,并且第一区块可以包括存储关于交易的信息的区块体。第二缩减子模块可以包括第二移除子模块,该第二移除子模块移除关于与用户账户相关联的交易的信息,该用户账户不与第三世界状态数据库中的一个或多个世界状态的第三子集相关联。
545.在可选实施例中,第三分片可以包括第三区块链数据库,该第三区块链数据库包括第三区块链,该第三区块链存储与关联于第三分片的用户账户相关联的交易数据。装置2800可还包括将第三分片划分为第四分片和第五分片的划分模块。划分模块可以包括生成子模块,该生成子模块生成第三分片的第二快照,其中,第二快照包括第三区块链数据库的快照和第三世界状态数据库的快照。划分模块可以包括第一缩减子模块,该第一缩减子模块缩减第三分片以生成第四分片,包括移除第三分片的第三世界状态数据库中的一个或多个世界状态以生成包括第三分片中一个或多个世界状态的第四子集的第四世界状态数据库。划分模块可以包括第二缩减模块,该第二缩减模块缩减第三分片的第二快照以生成第
五分片,包括移除第二快照中的第三世界状态数据库中的一个或多个世界状态以生成第五世界状态数据库,该第五世界状态数据库包括第三分片中的一个或多个世界状态的第五子集,其中,一个或多个世界状态的第五子集不同于一个或多个世界状态的第四子集。
546.在可选实施例中,装置2800可还包括分配模块,与分配至第三分片的资源相比,该分配模块将更多的资源分配至第四分片和第五分片的组合。
547.在可选实施例中,可以使用包括默克尔树、帕特里夏树、默克尔帕特里夏树、修改的默克尔帕特里夏树或桶树中的至少一种数字树来维护每个世界状态。
548.在可选实施例中,装置2800可还包括生成模块,该生成模块基于维护第一和第二分片的世界状态的数字树的根节点的哈希值,生成表示第一和第二分片的世界状态的群组世界状态哈希值。
549.在可选实施例中,装置2800可还包括生成模块,该生成模块通过基于从群组世界状态的根节点到分片世界状态的根节点的路径生成第一证明,基于从分片世界状态的根节点到与用户账户相关联的世界状态的根节点的路径生成第二证明,以及基于从世界状态的根节点到表示用户账户的节点的路径生成第三证明,生成与用户账户相关联的交易的简化支付验证证明。
550.图29是根据本文实施例的装置2900的模块示例的图示。装置2900可以是被配置为处理与一个或多个区块链相关联的世界状态信息的系统的实施例的示例。装置2900可以对应于上述实施例,并且装置2900包括以下:
551.·
提供模块2902,提供区块链账本的第一分片,其中,第一分片包括第一区块链数据库和第一世界状态数据库,第一世界状态数据库包括多个世界状态,并且每个世界状态存储与世界状态相关联的用户账户的当前状态;
552.·
第一生成模块2904,生成第一分片的第一副本,包括第一区块链数据库的副本和第一世界状态数据库的副本;
553.·
第二生成模块2906,通过移除第一分片的第一世界状态数据库中的一个或多个世界状态来生成第二分片,其中,第一分片中的一个或多个世界状态的第二子集保留在第二分片中;以及
554.·
第三生成模块2908,通过移除第一分片的第一副本中的第一世界状态数据库中的一个或多个世界状态来生成第三分片,其中,第一分片中的一个或多个世界状态的第三子集保留在第三分片中,并且一个或多个世界状态的第三子集不同于一个或多个世界状态的第二子集。
555.在可选实施例中,装置2900可还包括分配模块,与分配至第一分片的资源相比,该分配模块将更多的资源分配至第二分片和第三分片的组合。
556.图30是根据本文实施例的装置3000的模块示例的图示。装置3000可以是被配置为处理与一个或多个区块链相关联的世界状态信息的系统的实施例的示例。装置3000可以对应于上述实施例,并且装置3000包括以下:
557.·
划分模块3002,其将多个用户账户分为至少第一组用户账户和第二组用户账户;
558.·
第一关联模块3004,将第一区块链数据库和第一世界状态数据库与所述第一组用户账户关联,其中,所述第一区块链数据库包括由第一区块链网络管理的第一区块链,其
中,通过第一区块链网络的区块链节点的共识将区块链数据存储在所述第一区块链中,第一世界状态数据库包括多个世界状态,每个世界状态与第一组用户账户的子集相关联,每个世界状态存储与世界状态相关联的用户账户的当前状态;
559.·
第二关联模块3006,将第二区块链数据库和第二世界状态数据库与所述第二组用户账户关联,其中,所述第二区块链数据库包括由第二区块链网络管理的第二区块链,其中,通过第二区块链网络的区块链节点的共识将区块链数据存储在所述第二区块链中,第二世界状态数据库包括多个世界状态,每个世界状态与第二组用户账户的子集相关联,每个世界状态存储与世界状态相关联的用户账户的当前状态;
560.·
第一生成模块3008,生成第一哈希值,所述第一哈希值表示第一世界状态数据库的世界状态的数字指纹,其中,所述第一哈希值是基于第一世界状态数据库中每个世界状态的根哈希值生成的;
561.·
第二生成模块3010,生成第二哈希值,所述第二哈希值表示第二世界状态数据库的世界状态的数字指纹,其中,所述第二哈希值是基于第二世界状态数据库中每个世界状态的根哈希值生成的;
562.·
第一存储模块3012,将第一哈希值存储在第一区块链的第一区块的区块头处;
563.·
第二存储模块3014,将第二哈希值存储在第二区块链的第一区块的区块头处;和
564.·
第三生成模块3016,生成群组世界状态根哈希值,所述群组世界状态根哈希值表示第一和第二世界状态数据库的世界状态的数字指纹,其中,所述群组世界状态根哈希值是基于第一哈希值和第二哈希值生成的。
565.图31是根据本文实施例的装置3100的模块示例的图示。装置3100可以是被配置为处理与一个或多个区块链相关联的世界状态信息的系统的实施例的示例。装置3100可以对应于上述实施例,并且装置3100包括以下:
566.·
划分模块3102,其将多个用户账户划分为至少第一组用户账户和第二组用户账户;
567.·
第一关联模块3104,将所述第一组用户账户与第一区块链数据库和第一世界状态数据库相关联,其中,所述第一区块链数据库存储与所述第一组用户账户相关联的交易数据,所述第一世界状态数据库包括多个世界状态,并且每个世界状态与第一组用户账户的子集相关联;
568.·
第二关联模块3106,将第二组用户账户与第二区块链数据库和第二世界状态数据库相关联,其中,所述第二区块链数据库存储与所述第二组用户账户相关联的交易数据,所述第二世界状态数据库包括多个世界状态,并且每个世界状态与第二组用户账户的子集相关联;
569.·
第一存储模块3108,在所述第一区块链的第一区块的区块头处,存储第一哈希值,该第一哈希值表示所述第一世界状态数据库中的世界状态的数字指纹;
570.·
第二存储模块3110,在所述第二区块链的第一区块的区块头处,存储第二哈希值,该第二哈希值表示所述第二世界状态数据库中的世界状态的数字指纹;以及
571.·
生成模块3112,基于第一哈希值和第二哈希值生成群组世界状态根哈希值,该群组世界状态根哈希值表示第一和第二世界状态数据库中的世界状态的数字指纹。
572.图32是根据本文实施例的装置3200的模块示例的图示。装置3200可以是被配置为处理与一个或多个区块链相关联的世界状态信息的系统的实施例的示例。装置3200可以对应于上述实施例,并且装置3200包括以下:
573.·
提供模块3202,提供包括多个分片的群组世界状态,其中,每个分片包括世界状态数据库,该世界状态数据库包括多个世界状态,每个世界状态存储关于与世界状态相关联的用户账户的状态的信息,每个分片都与包括包含一个或多个区块的区块链的区块链数据库相关联,该一个或多个区块存储与关联于区块链的用户账户相关联的交易数据;其中,多个分片中的第一分片包括第一世界状态数据库,该第一世界状态数据库包括存储有关第一组用户账户的状态信息的第一组世界状态,多个分片中的第二分片包括第二世界状态数据库,该第二世界状态数据库包括存储有关第二组用户账户的状态信息的第二组世界状态;以及
574.·
合并模块3204,合并第一分片和第二分片以生成第三分片,包括合并第一世界状态数据库和第二世界状态数据库以生成第三世界状态数据库,该第三世界状态数据库包括第三组世界状态,该第三组世界状态包括第一组世界状态和第二组世界状态,其中,第三组世界状态存储有关第一组用户账户和第二组用户账户的状态信息。
575.在可选实施例中,可以使用数字树维护每个世界状态,可以使用第一组数字树维护第一组世界状态,可以使用第二组数字树维护第二组世界状态,可以使用第三组数字树维护第三组世界状态,第三组数字树包括第一组数字树和第二组数字树。
576.在可选实施例中,每个数字树可以包括默克尔树、帕特里夏树、默克尔帕特里夏树、修改的默克尔帕特里夏树或桶树中的至少一个。
577.在可选实施例中,装置3200可还包括确定模块,其确定第一分片是由包括生成第四分片的快照的分区处理生成的;缩减模块,其对第四分片或第四分片的快照进行缩减以生成第一分片;以及等待模块,在合并第一分片和第二分片之前,等待模块等待第四分片或第四分片的快照完成缩减。
578.在可选实施例中,装置3200可还包括分配模块,与分配至第一分片和第二分片的组合的资源相比,该分配模块向第三分片分配更少的资源。
579.在可选实施例中,资源可以包括算力、存储器、数据存储容量或数据带宽中的至少一个。
580.在可选实施例中,第一分片可以与第一区块链数据库相关联,该第一区块链数据库包括存储与第一组用户账户相关联的交易数据的第一区块链,第二分片与第二区块链数据库相关联,该第二区块链数据库包括存储与第二组用户账户关联的交易数据的第二区块链。装置3200可还包括合并模块,该合并模块合并第一区块链数据库和第二区块链数据库以生成第三区块链数据库,该第三区块链数据库包括第三区块链,该第三区块链存储与第一组用户账户和第二组用户账户相关联的交易数据。
581.在可选实施例中,第三区块链可以包括第一区块,该第一区块存储指示通过合并至少两个区块链生成第三区块链的信息。
582.在可选实施例中,第一区块链数据库可以包括第一数据结构以促进在第一区块链中的数据搜索,第二区块链数据库可以包括第二数据结构以促进在第二区块链中的数据搜索,第三区块链数据库可以包括第一数据结构和第二数据结构以促进在第三区块链数据库
中的数据搜索。
583.在可选实施例中,第一区块链数据库可以存储第一组世界状态的第一根哈希值,第二区块链数据库可以存储第二组世界状态的第二根哈希值,第三区块链数据库可以存储第三组世界状态的第三根哈希。
584.图33是根据本文实施例的装置3300的模块示例的图示。装置3300可以是被配置为处理与一个或多个区块链相关联的世界状态信息的系统的实施例的示例。装置3300可以对应于上述实施例,并且装置3300包括以下:
585.·
提供模块3302,提供包括多个分片的群组世界状态,其中,每个分片包括世界状态数据库,该世界状态数据库包括多个世界状态,每个世界状态存储关于与世界状态相关联的用户账户的状态的信息,并且每个分片都与包括包含一个或多个区块的区块链的区块链数据库相关联,该一个或多个区块存储与关联于区块链的用户账户相关联的交易数据;其中,群组世界状态的多个分片中的第一分片包括第一世界状态数据库;
586.·
生成模块3304,通过生成第一分片的快照来生成中间分片;
587.·
第一移除模块3306,移除第一分片中的一个或多个世界状态以生成第二分片,该第二分片包括第一分片中的一个或多个世界状态的第二子集;以及
588.·
第二移除模块3308,移除中间分片中的一个或多个世界状态以生成第三分片,该第三分片包括第一分片中一个或多个世界状态的第三子集,其中,一个或多个世界状态的第三子集不同于一个或多个世界状态的第二子集。
589.在可选实施例中,装置3300还可以包括分配模块,与分配至第一分片的资源相比,该分配模块将更多的资源分配至第二分片和第三分片的组合。
590.图34是根据本文实施例的装置3400的模块示例的图示。装置3400可以是被配置为处理与一个或多个区块链相关联的世界状态信息的系统的实施例的示例。装置3400可以对应于上述实施例,并且装置3400包括以下:
591.·
提供模块3402,提供包括多个分片的群组世界状态,其中,每个分片包括一个或多个世界状态,每个世界状态存储关于与该世界状态相关联的用户账户的状态的信息,并且每个分片与包括一个或多个区块的区块链相关联,该一个或多个区块存储与关联于区块链的用户账户相关联的交易数据;
592.·
动态修改模块3404,基于第一共识节点处的共识处理与一个或多个其他共识节点处的共识处理的比较结果来动态修改群组世界状态中的分片数量;以及
593.·
生成模块3406,生成群组世界状态的根哈希值,其中,根哈希值表示与群组世界状态中的分片中的世界状态相关联的用户账户的状态的数字指纹。
594.在可选实施例中,动态修改群组世界状态中的分片数量可以包括以下至少一项:(i)将多个分片之一划分为两个或更多个分片、(ii)将两个或更多个分片合并为一个分片、(iii)将一个或多个新分片添加至群组世界状态、或(iv)从群组世界状态中移除一个或多个分片。
595.在可选实施例中,如果在第一共识节点处的共识处理比在一个或多个其他共识节点处的共识处理慢第一阈值,则动态修改群组世界状态中的分片数量可以包括增加群组世界状态中的分片数量。
596.在可选实施例中,如果在第一共识节点处的共识处理比在一个或多个其他共识节
点处的共识处理快第二阈值,则动态修改群组世界状态中的多个分片可以包括减少群组世界状态中的分片数量。
597.在可选实施例中,装置3400可还包括提供模块,其提供第一组一个或多个规则,其指定要增加群组世界状态中的分片数量的一个或多个条件。
598.在可选实施例中,装置3400可还包括提供模块,其提供第二组一个或多个规则,其指定要减少群组世界状态中的分片数量的一个或多个条件。
599.在可选实施例中,装置3400可还包括:第一确定模块,其确定第一共识节点处的共识处理的第一速度;第二确定模块,其确定一个或多个其他共识节点处的共识处理的第二速度;比较模块,其比较第一共识节点处的共识处理的第一速度和一个或多个其他共识节点处的共识处理的第二速度;以及生成模块,其生成第一共识节点处的共识处理与一个或多个其他共识节点处的共识处理的比较结果。
600.图35是根据本文实施例的装置3500的模块示例的图示。装置3500可以是被配置为处理与区块链相关联的世界状态信息的系统的实施例的示例。装置3500可以对应于上述实施例,并且装置3500包括以下:
601.·
第一提供模块3502,提供与由区块链网络管理的区块链相关联的第一智能合约,其中,通过区块链网络的区块链节点的共识将区块链数据存储在区块链上;以及
602.·
第二提供模块3504,提供第一merkle树和第二merkle树以维护与第一组用户账户相关联的第一世界状态,其中,第一世界状态存储关于第一组用户的当前状态和第一智能合约的当前状态的数据;其中,第一智能合约包括:指定要将第一数据存储在第一merkle树中的第一代码;以及指定要将第二数据存储在第二merkle树中第二代码。
603.在可选实施例中,第一代码可以指定与第一地理区域中的用户账户相关联的数据将存储在第一默克尔树中,并且第二代码可以指定与第二地理区域中的用户账户相关联的数据将存储在第二默克尔树中。
604.在可选实施例中,装置3500可还包括第三提供模块,该第三提供模块提供第三merkle树,其中,第一merkle树、第二merkle树和第三merkle树组合地维护与多个用户账户相关联的世界状态。第一智能合约可以包括:指定要将第一数据存储在第一merkle树中的第一代码;指定要将第二数据存储在第二merkle树中的第二代码;指定要将第三数据存储在第三merkle树中的第三代码。
605.在可选实施例中,第一merkle树可以具有第一地址,第二merkle树可以具有第二地址,第一代码可以指定将第一数据存储在具有第一地址的merkle树中,第二代码可以指定将第二数据存储在具有第二地址的merkle树中。
606.在可选实施例中,装置3500可还包括第四提供模块,该第四提供模块提供虚拟机,该虚拟机被配置为执行第一智能合约以使第一数据被存储在第一默克尔树中并使第二数据被存储在第二默克尔树中。
607.在可选实施例中,装置3500可还包括第五提供模块,该第五提供模块提供被配置为将第一智能合约编译成可由虚拟机执行的字节码的编译器。
608.在可选实施例中,第一智能合约可以指定将第一merkle树存储在第一存储设备处,并将第二merkle树存储在第二存储设备处。
609.在可选实施例中,第一智能合约可以指定将第一merkle树和第二merkle树都存储
在第一存储设备处。
610.在可选实施例中,装置3500可还包括生成模块,该生成模块生成存储在第一存储设备中的数据的索引,并将该索引存储在第一和第二默克尔树中。
611.在可选实施例中,装置3500可还包括第六提供模块,该第六提供模块提供还与区块链相关联的第二智能合约,其中,第二智能合约包括指定要将第三数据存储在第一merkle树中的第三代码。
612.在可选实施例中,第一merkle树可以基于第一地理区域存储用户账户的状态信息,第二merkle树可以基于第二地理区域存储用户账户的状态信息。
613.在可选实施例中,装置3500可还包括:第七提供模块,其提供与区块链相关联的第二智能合约;第八提供模块,其提供第三merkle树以维护第二世界状态,该第二世界状态存储关于第二智能合约的当前状态的数据;确定模块,其基于所述第一merkle树的第一根哈希值和所述第二merkle树的第二根哈希值确定世界状态根哈希值。
614.图36是根据本文实施例的装置3600的模块示例的图示。装置3600可以是被配置为处理与区块链相关联的世界状态信息的系统的实施例的示例。装置3600可以对应于上述实施例,并且装置3600包括以下:
615.·
接收模块3602,接收与由区块链网络管理的区块链相关联的智能合约,其中,通过区块链网络的区块链节点的共识将区块链数据存储在区块链上;
616.·
第一标识模块3604,用于标识智能合约中的指定第一数据和第一merkle树的第一代码;
617.·
第二标识模块3606,用于标识智能合约中的指定第二数据和第二merkle树的第二代码;
618.·
第一存储模块3608,将第一数据存储在第一默克尔树中;以及
619.·
第二存储模块3610,将第二数据存储在第二默克尔树中。
620.在可选实施例中,第一代码可以指定与第一地理区域中的用户账户相关联的数据将存储在第一默克尔树中,并且第二代码可以指定与第二地理区域中的用户账户相关联的数据将存储在第二默克尔树中。
621.在可选实施例中,装置3600可还包括执行模块,该执行模块执行虚拟机以执行第一智能合约以使第一数据存储在第一merkle树中,第二数据存储在第二merkle树中。
622.图37是根据本文实施例的装置3700的模块示例的图示。装置3700可以是被配置为处理与区块链相关联的世界状态信息的系统的实施例的示例。装置3700可以对应于上述实施例,并且装置3700包括以下:
623.·
第一提供模块3702,提供与由区块链网络管理的区块链关联的智能合约,其中,通过区块链网络的区块链节点的共识将区块链数据存储在区块链上;以及
624.·
第二提供模块,提供多个merkle树以维护与一组用户账户相关联的世界状态,其中,所述世界状态存储关于所述用户账户的当前状态和所述智能合约的当前状态的数据;其中,第一智能合约包括指定使用多个merkle树中的哪个merkle树来存储数据段的第一代码。
625.在可选实施例中,第一代码可以包括修饰,该修饰包括用于存储该数据段的merkle树的标识。
626.在可选实施例中,merkle树的标识可以包括merkle树的地址。
627.在可选实施例中,merkle树的标识可以包括变量。
628.在可选实施例中,所述标识可以基于数学函数确定。
629.在可选实施例中,所述标识可以基于一个或多个规则确定。
630.在可选实施例中,装置3700可还包括第三提供模块,该第三提供模块提供被配置为识别修饰并将智能合约编译为可由与区块链相关联的虚拟机执行的字节码的编译器。
631.图38是用于处理与区块链相关联的世界状态信息的处理3800的示例的流程图。为方便起见,处理3800将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,适当编程的计算系统,例如图1的计算系统106、108,图3的系统300,或图40的系统4000,可以执行处理3800。处理3800包括以下步骤。
632.在3802,所述系统提供与多个用户账户相关联的多个智能合约,其中,每个智能合约与由对应区块链网络管理的对应区块链相关联,并且通过区块链网络的区块链节点的共识将区块链数据存储在区块链上。
633.在一些实施例中,智能合约包括以高级语言或区块链编程语言(例如,solidity、serpent)或低级lisp-like语言(lll)编写的代码。
634.在3804,所述系统提供多个数字树来维护与智能合约和用户账户相关联的一个或多个世界状态,其中,每个世界状态存储与用户账户或智能合约中的至少一个相关联的状态数据。多个智能合约中的第一智能合约包括第一代码,该第一代码标识第一状态数据和多个数字树中的用于存储第一状态数据的第一数字树。
635.在一些实施例中,由第一代码标识的状态数据包括以下至少一项:(i)关于与第一智能合约相关联的用户账户的状态的数据,或者(ii)关于第一智能合约的状态的数据。
636.在一些实施例中,第一智能合约包括第二代码,该第二状态标识第二状态数据和多个数字树中的用于存储第二状态数据的第二数字树。编译器被配置为识别并编译第一代码和第二代码,以使第一字节码在由虚拟机执行时使得第一状态数据存储在第一数字树中并使第二状态数据存储在第二数字树中。
637.在一些实施例中,第一和第二数字树组合地维护与关联于第一智能合约的用户账户相关联的世界状态。
638.在一些实施例中,第一代码指定与第一地理区域中的用户账户相关联的状态数据将存储在第一数字树中,第二代码指定与第二地理区域中的用户账户相关联的状态数据将储存在第二数字树中。
639.在一些实施例中,第一智能合约包括第三代码,该第三代码标识第三状态数据和多个数字树中的用于存储第三状态数据的第三数字树。第一、第二和第三数字树组合地维护与关联于第一智能合约的用户账户相关联的世界状态。编译器被配置为识别并编译第一代码、第二代码和第三代码,以使第一字节码在由虚拟机执行时使得第一状态数据存储在第一数字树中,第二状态数据存储在第一数字树中,第三状态数据被存储在第三数字树中。
640.在一些实施例中,第一、第二和第三数字树组合维护与关联于第一智能合约的用户账户相关联的世界状态。
641.在一些实施例中,第一代码指定与第一地理区域中的用户账户相关联的状态数据将存储在第一数字树中,第二代码指定与第二地理区域中的用户账户相关联的状态数据将
存储在第二数字树中,第三代码指定与第三地理区域中的用户的账户相关联的状态数据将存储在第三数字树中。
642.在一些实施例中,第一代码包括第一数字树的第一地址,并且编译器被配置为将第一智能合约编译为第一字节码,使得第一字节码在由虚拟机执行时使第一状态数据存储在具有第一地址的第一数字树中。
643.在一些实施例中,第一地址由恒定值表示。
644.在一些实施例中,第一地址由布尔函数或数学函数中的至少一个确定。
645.在一些实施例中,第一地址由包括一个或多个规则的规则集确定。
646.在一些实施例中,第一地址在编译第一智能合约的第一时间段或者在执行第一字节码的第二时间段确定。
647.在3806,所述系统提供被配置为将第一智能合约编译为第一字节码的编译器,该第一字节码可以由与对应于第一智能合约的区块链相关联的虚拟机执行。编译器被配置为识别并编译第一代码,以使第一字节码在由虚拟机执行时使得第一状态数据被存储在第一数字树中。
648.在一些实施例中,多个智能合约中的第二智能合约包括第四代码,该第四代码标识第四状态数据和多个数字树中的用于存储第四状态数据的第四数字树。第一和第二智能合约与同一区块链相关联,并且第一和第四数字树组合地维护世界状态,该世界状态存储与第一和第二智能合约相关联的用户账户的状态数据。编译器被配置为将第二智能合约编译为第二字节码。编译器被配置为识别并编译第四代码,以使第二字节码在由虚拟机执行时使得第四状态数据存储在第四数字树中。
649.在一些实施例中,第二代码包括第二数字树的第二地址,并且编译器被配置为将第一智能合约编译为第一字节码,以使第一字节码在由虚拟机执行时使得第二状态数据存储在具有第二地址的第二数字树中。
650.在一些实施例中,第二地址由恒定值表示。
651.在一些实施例中,第二地址由布尔函数确定。
652.在一些实施例中,第二地址由数学函数确定。
653.在一些实施例中,第二地址由包括一个或多个规则的规则集确定。
654.在一些实施例中,第二地址在编译第二智能合约时的第一时间段确定。
655.在一些实施例中,第二地址在执行第二字节码时的第二时间段确定。
656.在一些实施例中,第三代码包括第三数字树的第三地址,并且编译器被配置为将第一智能合约编译为第一字节码,使得第一字节码在由虚拟机执行时使得第三状态数据存储在具有第三地址的第三数字树中。
657.在一些实施例中,第四代码包括第四数字树的第四地址,并且编译器被配置为将第二智能合约编译为第二字节码,使得第二字节码在由虚拟机执行时使得第四状态数据存储在具有第四地址的第四数字树中。
658.在一些实施例中,所述系统还执行编译器以生成第一字节码或第二字节码中的至少一个。
659.在一些实施例中,所述系统还提供虚拟机。
660.在一些实施例中,所述系统还执行虚拟机并执行以下至少一项:将第一状态数据
存储在第一数字树中,将第二状态数据存储在第二数字树中,将第三状态数据存储在第三数字树中,或者将第四状态数据存储在第四数字树中。
661.在一些实施例中,所述系统还确定第一数字树的第一根哈希值,确定第二数字树的第二根哈希值,并基于第一根哈希值和第二根哈希值来确定世界状态根哈希值。
662.在一些实施例中,所述系统还确定第三数字树的第三根哈希值,并基于第一根哈希值、第二根哈希值和第三根哈希值来确定世界状态根哈希值。
663.在一些实施例中,世界状态根哈希值表示与世界状态相关联的用户账户、一个或多个智能合约的一个或多个状态的数字指纹。
664.在一些实施例中,第一智能合约指定将第一数字树存储在第一存储设备处,将第二数字树存储在第二存储设备处。
665.在一些实施例中,第一智能合约指定将第一数字树和第二数字树都存储在第一存储设备处。
666.在一些实施例中,所述系统还生成存储在第一存储设备中的数据的索引,并将该索引存储在第一数字树和第二数字树中。
667.在一些实施例中,每个数字树可以包括例如默克尔树、帕特里夏树、默克尔帕特里夏树、修改的默克尔帕特里夏树或桶树。
668.图39是根据本文实施例的装置3900的模块示例的图示。装置3900可以是被配置为处理与区块链相关联的世界状态信息的系统的实施例的示例。装置3900可以对应于上述实施例,并且装置3900包括以下:
669.·
第一提供模块3902,提供与多个用户账户相关联的多个智能合约,其中,每个智能合约与对应区块链网络管理的对应区块链相关联,通过区块链网络的区块链节点的共识将区块链数据存储在区块链上;
670.·
第二提供模块3904,提供多个数字树以维护与智能合约和用户账户相关联的一个或多个世界状态,其中,每个世界状态存储与用户账户或智能合约中的至少一个相关联的状态数据,其中,所述多个智能合约中的第一智能合约包括第一代码,该第一代码标识第一状态数据和多个数字树中的用于存储所述第一状态数据的第一数字树;以及
671.·
第三提供模块3906,提供被配置为将所述第一智能合约编译为第一字节码的编译器,所述第一字节码可以由与对应于所述第一智能合约的区块链相关联的虚拟机执行,其中,所述编译器被配置为识别并编译所述第一代码,使得第一字节码在由虚拟机执行时使第一状态数据存储在第一数字树中。
672.在可选实施例中,由第一代码标识的状态数据可以包括以下至少一个:(i)关于与第一智能合约相关联的用户账户的状态的数据,或者(ii)关于第一智能合约的状态的数据。
673.在可选实施例中,第一智能合约可以包括第二代码,该第二代码标识第二状态数据和多个数字树中的用于存储第二状态数据的第二数字树。编译器可以被配置为识别和编译第一代码和第二代码,以使第一字节代码在由虚拟机执行时使得第一状态数据被存储在第一数字树中,并使第二状态数据被存储在第二数字树中。
674.在可选实施例中,第一和第二数字树的组合可以维护与关联于第一智能合约的用户账户相关联的世界状态。
675.在可选实施例中,第一代码可以指定与第一地理区域中的用户账户相关联的状态数据将存储在第一数字树中,第二代码可以指定与第二地理区域中的用户账户相关联的状态数据地理区域将存储在第二数字树中。
676.在可选实施例中,第一智能合约可以包括第三代码,该第三代码标识第三状态数据和多个数字树中的用于存储第三状态数据的第三数字树。第一、第二和第三数字树可以组合地维护与关联于第一智能合约的用户账户相关联的世界状态。编译器可以被配置为识别并编译第一代码、第二代码和第三代码,以使第一字节码在由虚拟机执行时使得第一状态数据将存储在第一数字树中,第二状态数据将存储在第二数字树中,第三状态数据将存储在第三数字树中。
677.在可选实施例中,第一、第二和第三数字树可以组合地维护与关联于第一智能合约的用户账户相关联的世界状态。
678.在可选实施例中,第一代码可以指定与第一地理区域中的用户账户相关联的状态数据将存储在第一数字树中,第二代码可以指定与第二地理区域中的用户账户相关联的状态数据区域将存储在第二数字树中,第三代码可指定与第三地理区域中的用户账户相关联的状态数据将存储在第三数字树中。
679.在可选实施例中,多个智能合约中的第二智能合约可以包括第四代码,该第四代码标识第四状态数据和多个数字树中的用于存储第四状态数据的第四数字树。第一和第二智能合约可以与同一区块链相关联,并且第一和第四数字树的组合可以维护世界状态,该世界状态存储与第一和第二智能合约相关联的用户账户的状态数据。编译器可以被配置为将第二智能合约编译为第二字节码。编译器可以被配置为识别和编译第四代码,以使第二字节代码在由虚拟机执行时使得第四状态数据将被存储在第四数字树中。
680.在可选实施例中,第一代码可以包括第一数字树的第一地址,编译器可以被配置为将第一智能合约编译成第一字节码,以使第一字节码在由虚拟机执行时使得第一状态数据将存储在具有第一地址的第一数字树中。
681.在可选实施例中,第一地址可以由恒定值表示。
682.在可选实施例中,第一地址可以由布尔函数或数学函数中的至少一个确定。
683.在可选实施例中,第一地址可以由包括一个或多个规则的规则集确定。
684.在可选实施例中,第一地址可以在编译第一智能合约时的第一时间段确定。
685.在可选实施例中,第一地址可以在执行第一字节码的第二时间段确定。
686.在可选实施例中,第二代码可以包括第二数字树的第二地址,并且编译器可以被配置为将第一智能合约编译为第一字节码,以使第一字节码在由虚拟机执行时使得第二状态数据将存储在具有第二地址的第二数字树中。
687.在可选实施例中,第二地址可以由恒定值表示。
688.在可选实施例中,第二地址可以由布尔函数确定。
689.在可选实施例中,第二地址可以由数学函数确定。
690.在可选实施例中,第二地址可以由包括一个或多个规则的规则集确定。
691.在可选实施例中,第二地址可以在编译第二智能合约时的第一时间段确定。
692.在可选实施例中,第二地址可以在执行第二字节码的第二时间段确定。
693.在可选实施例中,第三代码可以包括第三数字树的第三地址,并且编译器可以被
配置为将第一智能合约编译为第一字节码,以使第一字节码在由虚拟机执行时使得第三状态数据将存储在具有第三地址的第三数字树中。
694.在可选实施例中,第四代码可以包括第四数字树的第四地址,并且编译器可以被配置为将第二智能合约编译为第二字节码,以使第二字节码在由虚拟机执行时使得第四状态数据将存储在具有第四地址的第四数字树中。
695.在可选实施例中,装置3900可还包括执行模块,该执行模块执行编译器以生成第一字节码或第二字节码中的至少一个。
696.在可选实施例中,装置3900可还包括提供虚拟机的第四提供模块。
697.在可选实施例中,装置3900可还包括:执行模块,其执行虚拟机;以及存储模块,其执行以下至少一项:将第一状态数据存储在第一数字树中,将第二状态数据存储在第二数字树中,将第三状态数据存储在第三数字树中,或将第四状态数据存储在第四数字树中。
698.在可选实施例中,装置3900可还包括确定模块,该确定模块确定第一数字树的第一根哈希值,确定第二数字树的第二根哈希值,并基于该第一根哈希值和第二根哈希值确定世界状态根哈希值。
699.在可选实施例中,装置3900可还包括确定模块,该确定模块确定第三数字树的第三根哈希值并基于第一根哈希值、第二根哈希值和第三根哈希值确定世界状态根哈希值。
700.在可选实施例中,世界状态根哈希值可以表示与世界状态相关联的用户账户、一个或多个智能合约的一个或多个状态的数字指纹。
701.在可选实施例中,第一智能合约可以指定将第一数字树存储在第一存储设备处,并将第二数字树存储在第二存储设备处。
702.在可选实施例中,第一智能合约可以指定将第一数字树和第二数字树都存储在第一存储设备处。
703.在可选实施例中,装置3900可还包括生成模块,该生成模块生成存储在第一存储设备中的数据的索引,并将该索引存储在第一数字树和第二数字树中。
704.在可选实施例中,每个数字树可以包括例如默克尔树、帕特里夏树、默克尔帕特里夏树、修改的默克尔帕特里夏树或桶树。
705.图40示出了环境4002的示例,在该环境中,用户(例如,304和306)通过基于区块链的应用模块4004访问由系统4000提供的服务。应用模块4004可以提供服务,类似于图3的应用模块308。系统4000将交易记录和用户账户状态信息存储在分布式区块链账本中。总的来说,区块链账本包括三个部分。第一部分包括世界状态,世界状态将最新的用户账户状态信息存储在账本中,例如,键值对。第二部分包括所有交易的区块链记录。区块链账本由区块链网络维护,该区块链网络可以是例如上述的共识区块链网络。区块链网络的共识节点以新区块的形式接收状态更新,使用区块和世界状态来确认(或提交)交易,并在达成共识后更新世界状态并将交易日志添加在区块链上。第三部分包括存储智能合约的智能合约数据库,该智能合约促进与由应用模块4004提供的服务相关联的交易。
706.在一些实施方式中,由一个或多个区块链网络(例如,314、316,类似于图3的那些)来维护区块链账本。系统4000包括区块链账本4006的本地副本,其包括区块链数据库4008、世界状态数据库4010和智能合约数据库4016。该区块链数据库4008包括区块链4012。世界状态数据库4010包括世界状态4014,其由树状数据结构或数字树(例如4020a、4020b,统称
为4020)维护。每个数字树可以是例如merkle树、patricia树、merkle patricia树、修改的merkle patricia树或bucket树。在下面的示例中,默克尔树被用作数字树4020的示例,但是也可以使用其他类型的数字树。例如,区块链数据库4008存储由区块链网络维护的区块链的本地副本。世界状态数据库4010存储由区块链网络维护的世界状态的本地副本。
707.在图40的示例中,区块链账本4006包括包含区块链4012的区块链数据库4008和包含世界状态4014的世界状态数据库4010。在一些实施方式中,区块链账本4006可以包括多个区块链数据库,所述区块链数据库包括多个区块链或区块链的多个分区或分片,类似于图3所示的示例。类似地,区块链账本4006可以包括多个世界状态数据库,所述世界状态数据库包括多个世界状态或世界状态的多个分区或分片,类似于图3所示的示例。
708.区块链账本4006包括智能合约数据库4016,该智能合约数据库4016包括一个或多个智能合约,例如4018a、4018b,统称为4018。智能合约数据库4016存储智能合约的本地副本以及由区块链网络维护的对应智能合约字节码。智能合约4018与区块链4012和世界状态4014相关联。智能合约的状态数据和与智能合约相关联的用户账户的状态数据存储在世界状态4014中。
709.通常,当用户(例如,304和306)使用基于区块链的应用系统4000提供的服务进行交易时,系统4000生成数据,例如交易记录和用户账户状态信息,这些数据存储在分布式区块链账本4006中。例如,可以执行一个或多个智能合约4018以更新与用户账户相关联的状态数据,其中,状态数据被写入对应的merkle树。为了说明的目的,在图40中,区块链账本4006被示为具有单独的区块链数据库4008和世界状态数据库4010。在一些实施方式中,区块链4012和世界状态4014可以属于同一数据库。区块链4012与世界状态4014相关联,维护区块链账本的区块链网络更新区块链和对应的世界状态。
710.对于给定的应用(例如,在线支付应用或在线购物应用),交易数据可以存储在区块链4012中,状态信息可以存储在世界状态4014中。本文描述了用于将智能合约4018中的特定数据段与特定merkle树4020相关联的新颖技术,从而可以将由智能合约4018处理的不同数据段存储在不同的merkle树中以提高与merkle树4020相关的数据处理的效率,例如计算merkle树的根哈希值。世界状态4014的根哈希值提供了与世界状态4014相关联的所有用户账户的最新状态值的指纹。
711.系统4000包括计算资源,例如算力(例如,处理器核、处理线程、cpu运行时间)、存储器、非易失性存储和/或支持基于区块链的应用模块的数据带宽,类似于图3的示例中所描述的那些。当使用附加的默克尔树4020维护世界状态4014时,可以分配更多的计算资源来支持世界状态4014,因此可以使与世界状态4014或默克尔树4020有关的数据处理更快。
712.区块链4012和世界状态4014由区块链网络(例如314、316)维护。系统4000用作区块链网络的节点之间的节点(例如318、320),并维护存储在区块链数据库4008和世界状态数据库4010中的区块链和世界状态的本地副本。区块链网络314、316可以类似于图2的区块链网络212。区块链网络314的某些节点可以与区块链网络316的节点重叠。
713.例如,世界状态4014与区块链4012相关联,并存储与区块链4012相关联的用户账户的状态信息。系统4000包括根哈希模块4024,根哈希模块被配置为计算世界状态4014的根哈希值,该世界状态表示与系统4000相关联的所有用户账户的最新状态值的指纹。在一些实施方式中,根哈希模块4024首先为每个默克尔树4020计算默克尔树4020的根哈希值,
然后基于默克尔树4020的根哈希值计算世界状态的根哈希值。
714.系统4000包括智能合约编译器4026,其将智能合约4018编译成对应的字节码4022(例如4022a、4022b,统称为4022)。例如,可以使用高级编程语言或区块链编程语言(例如,solidity、serpent)或低级lisp-like语言(lll)编写智能合约4018。编译器4026将智能合约编译为对应字节码4022,该字节码可以被部署在区块链上并由虚拟机4028执行。在一些实施方式中,虚拟机4028包括编译器4027,编译器4027执行类似于编译器4026的功能。例如,可以使用编译器4027代替编译器4026。为了执行智能合约4018,虚拟机4028从世界状态4014读取相关状态信息,执行相应的字节码4022,更新状态信息,并将更新的状态信息写回到世界状态4014。执行智能合约可能涉及使用其他支持模块和数据结构,例如合约应用二进制接口(abi),其用于从区块链外部与智能合约进行交互以及与其他智能合约进行交互。
715.图41是用于处理与区块链相关联的世界状态信息的处理4100的示例的流程图。为方便起见,处理4100将被描述为由位于一个或多个位置并根据本文被适当地编程的一个或多个计算机的系统执行。例如,适当编程的计算系统,例如图1的计算系统106、108,图3的系统300或图40的系统4000,可执行处理4100。处理4100包括以下步骤。
716.在4102,所述系统提供与多个用户账户相关联的多个智能合约,其中,每个智能合约与由对应区块链网络管理的对应区块链相关联,并且通过区块链网络的区块链节点的共识将区块链数据存储在区块链上。
717.在4104,所述系统提供多个数字树来维护与智能合约和用户账户相关联的一个或多个世界状态,其中,每个世界状态存储与用户账户或智能合约中的至少一个相关联的状态数据。多个智能合约中的第一智能合约包括第一代码,该第一代码标识第一状态数据和多个数字树中的用于存储第一状态数据的第一数字树的。
718.在4106,所述系统提供与对应于第一智能合约的区块链相关联的虚拟机,其中,该虚拟机被配置为执行第一智能合约以使第一状态数据被存储在第一数字树中。
719.在一些实施例中,虚拟机包括智能合约编译器,该智能合约编译器被配置为将第一智能合约编译为可以由虚拟机执行的第一字节码,其中,编译器被配置为识别并编译第一代码,以使第一字节码在由虚拟机执行时使得第一状态数据被存储在第一数字树中。
720.在一些实施例中,所述系统提供智能合约编译器,该智能合约编译器被配置为将第一智能合约编译为可由虚拟机执行的第一字节码,其中,编译器被配置为识别并编译第一代码,以使第一字节码在由虚拟机执行时使得第一状态数据存储在第一数字树中。
721.在一些实施例中,第一代码标识的状态数据包括以下至少一项:(i)关于与第一智能合约相关联的用户账户的状态的数据,或者(ii)关于第一智能合约的状态的数据。
722.在一些实施例中,第一智能合约包括第二代码,该第二代码标识第二状态数据和多个数字树中的用于存储第二状态数据的第二数字树。编译器被配置为识别并编译第一代码和第二代码,以使第一字节码在由虚拟机执行时使得第一状态数据被存储在第一数字树中,以及第二状态数据被存储在第二数字树中。
723.在一些实施例中,第一和第二数字树组合维护与关联于第一智能合约的用户账户相关联的世界状态。
724.在一些实施例中,第一代码指定与第一地理区域中的用户账户相关联的状态数据将被存储在第一数字树中,第二代码指定与第二地理区域中的用户账户相关联的状态数据
将被存储在第二数字树中。
725.在一些实施例中,第一智能合约包括第三代码,该第三代码标识第三状态数据和多个数字树中的用于存储第三状态数据的第三数字树。第一、第二和第三数字树组合地维护与关联于第一智能合约的用户账户相关联的世界状态。编译器被配置为识别并编译第一代码、第二代码和第三代码,以使第一字节码在由虚拟机执行时使得第一状态数据存储在第一数字树中,第二状态数据存储在第一数字树中,第三状态数据存储在第三数字树中。
726.在一些实施例中,第一、第二和第三数字树组合地维护与关联于第一智能合约的用户账户相关联的世界状态。
727.在一些实施例中,第一代码指定与第一地理区域中的用户账户相关联的状态数据将存储在第一数字树中,第二代码指定与第二地理区域中的用户账户相关联的状态数据将存储在第而数字树中,第三代码指定与第三地理区域中的用户的账户相关联的状态数据将存储在第三数字树中。
728.在一些实施例中,多个智能合约中的第二智能合约包括标识第四状态数据和多个数字树中的用于存储第四状态数据的第四数字树的第四代码。第一和第二智能合约与同一区块链相关联,并且第一和第四数字树组合维护世界状态,该世界状态存储与第一和第二智能合约相关联的用户账户的状态数据。编译器被配置为将第二智能合约编译为第二字节码。编译器被配置为识别并编译第四代码,以使第二字节码在由虚拟机执行时使得第四状态数据存储在第四数字树中。
729.在一些实施例中,第一代码包括第一数字树的第一地址,编译器被配置为将第一智能合约编译为第一字节码,以使第一字节码在由虚拟机执行时使得第一状态数据存储在具有第一地址的第一数字树中。
730.在一些实施例中,第一地址由恒定值表示。
731.在一些实施例中,第一地址由布尔函数或数学函数中的至少一个确定。
732.在一些实施例中,第一地址由包括一个或多个规则的规则集确定。
733.在一些实施例中,第一地址在编译第一智能合约的第一时间段或者在执行第一字节码的第二时间段确定。
734.在一些实施例中,第二代码包括第二数字树的第二地址,并且编译器被配置为将第一智能合约编译为第一字节码,以使第一字节码在由虚拟机执行时使得第二状态数据存储在具有第二地址的第二数字树中。
735.在一些实施例中,第二地址由恒定值表示。
736.在一些实施例中,第二地址由布尔函数确定。
737.在一些实施例中,第二地址由数学函数确定。
738.在一些实施例中,第二地址由包括一个或多个规则的规则集确定。
739.在一些实施例中,第二地址在编译第二智能合约时的第一时间段确定。
740.在一些实施例中,第二地址在执行第二字节码时的第二时间段确定。
741.在一些实施例中,第三代码包括第三数字树的第三地址,并且编译器被配置为将第一智能合约编译为第一字节码,以使第一字节码在由虚拟机执行时使得第三状态数据存储在具有第三地址的第三数字树中。
742.在一些实施例中,第四代码包括第四数字树的第四地址,并且编译器被配置为将
第二智能合约编译为第二字节码,以使第二字节码在由虚拟机执行时使得第四状态数据存储在具有第四地址的第四数字树中。
743.在一些实施例中,编译器生成第一字节码或第二字节码中的至少一个。
744.在一些实施例中,虚拟机执行以下至少一项:将第一状态数据存储在第一数字树中,将第二状态数据存储在第二数字树中,将第三状态数据存储在第三数字树中或将第四状态数据存储在第四数字树中。
745.在一些实施例中,所述系统确定第一数字树的第一根哈希值;确定第二数字树的第二根哈希值;并基于第一根哈希值和第二根哈希值确定世界状态根哈希值。
746.在一些实施例中,所述系统确定第三数字树的第三根哈希值;并基于第一根哈希值、第二根哈希值和第三根哈希值确定世界状态根哈希值。
747.在一些实施例中,世界状态根哈希值表示与世界状态相关联的用户账户、或一个或多个智能合约的一个或多个状态的数字指纹。
748.在一些实施例中,第一智能合约指定将第一数字树存储在第一存储设备处,并将第二数字树存储在第二存储设备处。
749.在一些实施例中,第一智能合约指定第一数字树和第二数字树都存储在第一存储设备处。
750.在一些实施例中,所述系统生成存储在第一存储设备中的数据的索引,并将该索引存储在第一和第二数字树中。
751.在一些实施例中,每个数字树包括默克尔树、帕特里夏树、默克尔帕特里夏树、修改的默克尔帕特里夏树或桶树中的至少一个。
752.图42是根据本文实施例的装置4200的模块示例的图示。装置4200可以是被配置为处理与一个或多个区块链相关联的世界状态信息的系统的实施例的示例。装置4200可以对应于上述实施例,并且装置4200包括以下:
753.·
第一提供模块4202,提供与多个用户账户相关联的多个智能合约,其中,每个智能合约与对应区块链网络管理的对应区块链相关联,通过区块链网络的区块链节点的共识将区块链数据存储在区块链上;
754.·
第二提供模块4204,提供多个数字树以维护与智能合约和用户账户相关联的一个或多个世界状态,其中,每个世界状态存储与用户账户或智能合约中的至少一个相关联的状态数据;其中,多个智能合约中的第一智能合约包括第一代码,该第一代码标识第一状态数据以及多个数字树中的用于存储第一状态数据的第一数字树;以及
755.·
第三提供模块4206,提供与对应于第一智能合约的区块链相关联的虚拟机,其中,该虚拟机被配置为执行第一智能合约以使第一状态数据被存储在第一数字树中。
756.在可选实施例中,虚拟机可以包括智能合约编译器,该智能合约编译器被配置为将第一智能合约编译为可以由虚拟机执行的第一字节码,其中,编译器被配置为识别并编译第一代码,以使第一字节码在由虚拟机执行时使得第一状态数据存储在第一数字树中。
757.在可选实施例中,装置4200可还包括提供模块,该提供模块提供智能合约编译器,该智能合约编译器被配置为将第一智能合约编译为可以由虚拟机执行的第一字节码,其中,该编译器可以被配置为识别和编译第一代码,以使第一字节码在由虚拟机执行时使得第一状态数据存储在第一数字树中。
758.在可选实施例中,由第一代码标识的状态数据可以包括以下至少一项:(i)关于与第一智能合约相关联的用户账户的状态的数据,或者(ii)关于第一智能合约的状态的数据。
759.在可选实施例中,第一智能合约可以包括第二代码,该第二代码标识第二状态数据和多个数字树中的用于存储第二状态数据的第二数字树,其中,编译器可以被配置为识别和编译第一代码和第二代码,以使第一字节码在由虚拟机执行时使得第一状态数据存储在第一数字树中,并使第二状态数据存储在第二数字树中。
760.在可选实施例中,第一和第二数字树可以组合地维护与关联于第一智能合约的用户账户相关联的世界状态。
761.在可选实施例中,第一代码可以指定与第一地理区域中的用户账户相关联的状态数据将存储在第一数字树中,第二代码可以指定与第二地理区域中的用户账户相关联的状态数据地理区域将存储在第二数字树中。
762.在可选实施例中,第一智能合约可以包括第三代码,该第三代码标识第三状态数据和多个数字树中的用于存储第三状态数据的第三数字树,其中,第一、第二和第三数字树可以组合地维护与关联于第一智能合约的用户账户相关联的世界状态;其中,编译器可以被配置为识别并编译第一代码、第二代码和第三代码,以使第一字节码在由虚拟机执行时使得第一状态数据将存储在第一数字树中,第二状态将存储在第二数字树,第三状态数据将存储在第三数字树中。
763.在可选实施例中,第一、第二和第三数字树可以组合地维护与关联于第一智能合约的用户账户相关联的世界状态。
764.在可选实施例中,第一代码可以指定与第一地理区域中的用户账户相关联的状态数据将存储在第一数字树中,第二代码可以指定与第二地理区域中的用户账户相关联的状态数据区域将存储在第二数字树中,第三代码可指定与第三地理区域中的用户的账户相关联的状态数据将存储在第三数字树中。
765.在可选实施例中,所述多个智能合约中的第二智能合约可以包括第四代码,该第四代码标识第四状态数据和多个数字树中的用于存储第四状态数据的第四数字树,其中,第一和第二智能合约可以与同一区块链关联,并且第一和第四数字树可以组合地维护存储与第一和第二智能合约相关联的用户账户的状态数据的世界状态。编译器可以被配置为将第二智能合约编译为第二字节码,其中,编译器被配置为识别并编译第四代码,以使第二字节码在由虚拟机执行时使得第四状态数据被存储在第四数字树中。
766.在可选实施例中,第一代码可以包括第一数字树的第一地址,编译器可以被配置为将第一智能合约编译成第一字节码,以使第一字节码在由虚拟机执行时使得第一状态数据将存储在具有第一地址的第一数字树中。
767.在可选实施例中,第一地址可以由恒定值表示。
768.在可选实施例中,第一地址可以由布尔函数或数学函数中的至少一个确定。
769.在可选实施例中,第一地址可以由包括一个或多个规则的规则集确定。
770.在可选实施例中,第一地址可以在编译第一智能合约的第一时间段或者在执行第一字节码的第二时间段确定。
771.在可选实施例中,第二代码可以包括第二数字树的第二地址,并且编译器可以被
配置为将第一智能合约编译为第一字节码,以使第一字节码在由虚拟机执行时使得第二状态数据将存储在具有第二地址的第二数字树中。
772.在可选实施例中,第二地址可以由恒定值表示。
773.在可选实施例中,第二地址可以由布尔函数确定。
774.在可选实施例中,第二地址可以由数学函数确定。
775.在可选实施例中,第二地址可以由包括一个或多个规则的规则集确定。
776.在可选实施例中,第二地址可以在编译第二智能合约时的第一时间段确定。
777.在可选实施例中,第二地址可以在执行第二字节码的第二时间段确定。
778.在可选实施例中,第三代码可以包括第三数字树的第三地址,并且编译器可以被配置为将第一智能合约编译为第一字节码,以使第一字节码在由虚拟机执行时使得第三状态数据将存储在具有第三地址的第三数字树中。
779.在可选实施例中,第四代码可以包括第四数字树的第四地址,并且编译器可以被配置为将第二智能合约编译为第二字节码,以使第二字节码在由虚拟机执行时使得第四状态数据将存储在具有第四地址的第四数字树中。
780.在可选实施例中,装置4200可以还包括执行模块,该执行模块执行编译器以生成第一字节码或第二字节码中的至少一个。
781.在可选实施例中,装置4200可还包括执行模块,该执行模块执行虚拟机并执行以下至少一项:将第一状态数据存储在第一数字树中,将第二状态数据存储在第二数字树中,将第三状态数据存储在第三数字树中,或者将第四状态数据存储在第四数字树中。
782.在可选实施例中,装置4200可还包括确定第一数字树的第一根哈希值的确定模块;确定所述第二数字树的第二根哈希值的确定模块;以及基于所述第一根哈希值和第二根哈希值确定世界状态根哈希值的确定模块。
783.在可选实施例中,装置4200可还包括确定第三数字树的第三根哈希值的确定模块;以及基于第一根哈希值、第二根哈希值和第三根哈希值确定世界状态根哈希值的确定模块。
784.在可选实施例中,世界状态根哈希值可以表示关联于世界状态的用户账户、一个或多个智能合约的一个或多个状态的数字指纹。
785.在可选实施例中,第一智能合约可以指定将第一数字树存储在第一存储设备处,以及将第二数字树存储在第二存储设备处。
786.在可选实施例中,第一智能合约可以指定将第一数字树和第二数字树都存储在第一存储设备处。
787.在可选实施例中,装置4200可还包括生成模块,该生成模块生成存储在第一存储设备中的数据的索引,并将该索引存储在第一数字树和第二数字树中。
788.在可选实施例中,每个数字树可以包括默克尔树、帕特里夏树、默克尔帕特里夏树、修改的默克尔帕特里夏树或桶树中的至少一个。
789.如上所述,可以在短停机时间内实现对群组世界状态的分片或分区的调整,以减少中断提供给用户的服务。例如,在将第一分片划分为第二分片和第三分片的情况下,其中,生成第一分片的内容的快速快照,并使用如图5所示的处理重新定义群组世界状态的结构,取决于系统的实施方式,短停机时间可以例如小于一秒,因为快照可以包括指向第一分
片的指针,该指针允许系统标识第一分片的副本的内容而无需实际形成第一分片的完整副本。当然,系统组件运行得越快,快照生成越快,系统的停机时间越短,提供给用户的服务中断就越短。
790.如上所述,群组世界状态可以被用于用户数量大和用户之间交易数量大的任何区块链系统或应用。例如,用户的数量可以在数十万、或数百万、或数千万、或数亿、或数十亿的范围内。交易的数量可以在数十万、或数百万、或数千万、或数亿、或数十亿、或数几百亿、或数几千亿、或数万亿的范围内。例如,群组世界状态可以被用于任何每秒交易数量大于数百、或数千、或数万、或数十万、或数百万、或数千万或数亿的区块链系统或应用。
791.术语“用户”可以包括人或机器。例如,可以在具有人工智能的机器之间执行交易,并且这样的机器可以以比人类更快的速度执行交易,从而实现每单位时间的大量交易以及在一定时间内的大量总交易。为了追究机器的责任,在区块链中记录机器对机器的交易,可以让人类操作者对这些交易进行审计。本文中描述的技术有利于处理这样的机器对机器交易。
792.前述实施例中示出的系统、装置、模块或单元可以通过使用计算机芯片或实体来实现,或者可以通过使用具有特定功能的产品来实现。典型的实施例设备是计算机,计算机可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件接收和发送设备、游戏控制台、平板电脑、可穿戴设备或这些设备的任意组合。
793.对于装置中每个模块的功能和作用的实施例处理,可以参考前述方法中相应步骤的实施例处理。为简单起见,这里省略了细节。
794.由于装置实施例基本上对应于方法实施例,因此对于相关部件,可以参照方法实施例中的相关描述。先前描述的装置实施例仅是示例。作为单独部件描述的模块可以是或可以不是物理上分离的,并且作为模块显示的部件可以是或可以不是物理模块,可以位于一个位置,或可以分布在多个网络模块上。可以基于实际需求来选择一些或所有模块,以实现本文方案的目标。本领域的普通技术人员在无需付出创造性努力的情况下就能理解和实现本技术的实施例。
795.再次参考图27至图37、图39和图42,其可以被解释为示出内部功能模块和区块链节点的结构。本质上,执行主体可以是电子设备,该电子设备包括:一个或多个处理器;被配置为存储一个或多个处理器可执行的指令的一个或多个计算机可读存储器。在一些实施例中,所述一个或多个计算机可读存储器耦接至所述一个或多个处理器且其上存储有编程指令,所述编程指令可以由所述一个或多个处理器执行以执行本文所描述的算法、方法、函数、处理、流程和程序。本文还提供了耦接至一个或多个处理器并且其上存储有指令的一个或多个非暂时性计算机可读存储介质,在所述指令由所述一个或多个处理器执行时,所述指令将促使所述一个或多个处理器按照本文提供的方法的实施例执行操作。
796.本文还提供了实现本文提供的方法的系统。该系统包括一个或多个处理器,以及耦接到一个或多个处理器并在其上存储有指令的计算机可读存储介质,该指令在由一个或多个处理器执行时,使一个或多个处理器执行根据本文提供的方法实施例所述的操作。
797.本文中描述的主题、动作以及操作的实施例可以在数字电子电路、有形实现的计算机软件或固件、计算机硬件,或者其中的一个或多个的组合中实现,包括本文中公开的结
构及其结构等同物。本文描述的主题的实施例可以被实现为一个或多个计算机程序,例如,一个或多个计算机程序指令模块,编码在计算机程序载体上用于由数据处理装置执行,或者以控制数据处理装置的操作。例如,计算机程序载体可以包括一个或多个计算机可读存储介质,在其上编码或存储有指令。载体可以是有形的非暂态计算机可读介质,例如,磁盘、磁光盘或者光盘、固态驱动器、随机存取存储器(ram)、只读存储器(rom)或者其它媒体类型。可选地或附加地,载体可以是人工生成的传播信号,例如,机器生成的电信号、光信号或电磁信号,其生成为对信息进行编码以传输到合适的接收器装置以由数据处理装置执行。计算机存储介质可以是或部分是机器可读存储设备、机器可读存储基板、随机或串行访问存储器设备或其中的一个或多个的组合。计算机存储介质不是传播信号。
798.计算机程序也可以称为或描述为程序、软件、软件应用程序、app、模块、软件模块、引擎、脚本或代码,可以以任何形式的编程语言编写,包括编译或解释性语言、或声明或程序性语言;其可以以任何形式部署,包括作为独立程序或者作为模块、组件、引擎、次例程或适合在计算环境中执行的其它单元,该环境可包括在一个或多个位置中由数据通信网络互联的一台或多台计算机。
799.计算机程序可以但是非必需对应于文件系统中的文件。计算机程序可以存储在:保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本中;专用于所讨论的程序的单个文件中;或者多个协调文件中,例如,存储一个或多个模块、子程序或代码部分的多个文件。
800.用于执行计算机程序的处理器例如既包括通用和专用微处理器,又包括任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从耦接到处理器的非暂时性计算机可读介质接收数据以及用于执行的计算机程序的指令。
801.术语“数据处理装置”涵盖了用于处理数据的所有类型的装置、设备和机器,例如包括可编程处理器、计算机,或多个处理器或计算机。数据处理装置可包括例如fpga(现场可编程门阵列)、asic(专用集成电路)或gpu(图形处理单元)的专用逻辑电路。该装置除了包括硬件之外,也可包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或其中的一个或多个的组合的代码。
802.本文中描述的处理和逻辑流程可以由一个或多个计算机或执行一个或多个计算机程序的处理器执行,以通过对输入数据进行操作并生成输出来执行操作。处理和逻辑流程还可通过专用逻辑电路,例如,fpga、asic或gpu,或通过专用逻辑电路和一个或多个编程计算机的组合来执行。
803.适合于执行计算机程序的计算机可以基于通用和/或专用微处理器,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的元件可以包括用于执行指令的中央处理单元和用于存储指令和数据的一个或多个存储设备。中央处理单元和存储器可以补充有专用逻辑电路或集成在专用逻辑电路中。
804.通常,计算机也会包括或可操作地耦接以从一个或多个存储设备接收数据或将数据传输到一个或多个存储设备。存储设备可以是例如磁盘、磁光盘或光盘、固态驱动器或任何其它类型的非暂时性计算机可读介质。但是,计算机也非必需具有此类设备。因而,计算机可以耦接到一个或多个存储设备,例如位于本地和/或远程的一个或多个存储器。例如,
一台计算机可以包括作为计算机集成组件的一个或多个本地存储器,或者计算机可以耦接到位于云网络中的一个或多个远程存储器。此外,计算机也可以嵌入到另一个设备中,例如,移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器、或诸如通用串行总线(usb)闪存驱动器等便携式存储设备,仅举几例。
805.组件之间可以直接地或经由一个或多个中间组件,通过彼此可通信地连接,例如电连接或光学连接,而相互“耦接”。如果组件之一集成到另一组件中,则这些组件也可以相互“耦接”。例如,将集成到处理器中的存储组件,例如,l2高速缓存组件,“耦接到”处理器。
806.为了与用户进行交互,本文中描述的主题的实施例可以在具有显示设备和输入设备的计算机上实现,或配置为与该计算机进行通信,显示设备例如为lcd(液晶显示器)监视器,用于向用户显示信息,输入设备例如为键盘和定位设备,用户可以通过输入设备向计算机提供输入,定位设备例如为鼠标、轨迹球或触摸板。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过向用户设备上的web浏览器发送web页面以响应从web浏览器收到的请求,或者通过与例如智能电话或电子平板电脑等的用户设备上运行的应用程序(app)进行交互。计算机也可以通过将文本消息或其它形式的消息发送到诸如运行消息收发程序的智能手机等个人设备,并从用户接收响应消息,来与用户进行交互。
807.本文使用与系统、装置和计算机程序组件有关的术语“被配置为”。对于被配置为执行特定操作或动作的一个或多个计算机的系统,意味着所述系统已经在其上安装了在操作中使得所述系统执行所述操作或动作的软件、固件、硬件或它们的组合。对于要被配置为执行特定操作或动作的一个或多个计算机程序,意指所述一个或多个程序包括指令,所述指令在由数据处理装置执行时,使得所述装置执行所述操作或者动作。对于被配置为执行特定操作或动作的专用逻辑电路,意味着该电路具有执行所述操作或动作的电子逻辑。
808.尽管本文包含许多特定的实施例细节,但是不应将这些理解为对所要求保护的范围的限制,而是作为对特定实施例特定的特征的描述,所要求保护的范围由权利要求本身限定。本文中在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合地实现。相反,在单个实施例的上下文中描述的各种特征也可以单独或者以任何适合的子组合方式实现在多个实施例中。而且,尽管以上描述的特征可以以某些组合起作用并且甚至最初是这样主张的,但是在某些情况下,可以从要求保护的组合中删除该组合中的一个或多个特征,并且权利要求书也可以针对子组合或子组合的变型。
809.类似地,虽然以特定顺序在附图中描绘了操作并且在权利要求中叙述了操作,但是这不应该被理解为:为了达到期望的结果,要求以所示的特定顺序或依次执行这些操作,或者要求执行所有示出的操作。在某些情况下,多任务和并行处理会是有利的。此外,不应将上述实施例中的各种系统模块和组件的分离理解为在所有实施例中都要求这种分离,并且应当理解的是,所描述的程序组件和系统通常可以在单个软件产品中集成在一起或打包成多个软件产品。
810.已经对本主题的特定实施例进行了描述。其它实施例也落在随附权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然能实现期望的结果。作为
一个示例,附图中描绘的过程无需要求所示的特定顺序或次序来实现期望的结果。在一些情况下,多任务并行处理可能是有利的。
再多了解一些

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

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

相关文献