CN111008201A - 并行修改和读取状态树的方法和装置 - Google Patents
并行修改和读取状态树的方法和装置 Download PDFInfo
- Publication number
- CN111008201A CN111008201A CN202010155154.3A CN202010155154A CN111008201A CN 111008201 A CN111008201 A CN 111008201A CN 202010155154 A CN202010155154 A CN 202010155154A CN 111008201 A CN111008201 A CN 111008201A
- Authority
- CN
- China
- Prior art keywords
- tree
- root node
- node
- state tree
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Accounting & Taxation (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Finance (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供了一种读取和修改状态树的方法和装置,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述修改方法由区块链节点执行,包括:获取将要执行的针对区块链中多个账户的多个修改操作;将所述多个修改操作划分为多个分组,每个分组中的各个修改操作所针对的账户对应于一个子树;对于所述多个分组,并行执行对相应子树的修改操作,以获取与各个分组对应的各个子树的根节点哈希值;基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值。
Description
技术领域
本说明书实施例涉及区块链技术领域,更具体地,涉及一种并行修改和读取状态树的方法和装置。
背景技术
在新一代区块链中,例如在以太坊中,新增了账户的概念,相应地,用户可以通过区块链平台创建账户。在这样的场景中,区块链平台作用为区块链网络中的节点,用户创建的账户为以太坊中的外部账户。此外,诸如以太坊的许多区块链平台支持智能合约,来执行更为丰富的交易。智能合约可以由用户创建,在创建之后也具有对应的合约账户。如此,区块链网络中的账户可以包括外部账户和合约账户。
在区块链网络的各个节点中,在节点本地的数据库中以MPT(Merkle PatriciaTrie)树的形式维持区块链中全部账户(包括外部账户和合约账户)的状态数据。随着区块链中交易的执行,账户状态会发生变化,这就需要修改MPT状态树。由于区块链网络中账户众多,交易执行频繁,因此,常常需要频繁地对MPT状态树进行修改。另一方面,在多个交易中包括对账户状态的读取的情况中,需要频繁对MPT状态树进行读取。
因此,需要一种有效的方案,能够在执行交易时更加高效地修改或读取状态树,以提升区块链网络的整体性能。
发明内容
本说明书实施例旨在提供一种更有效的在区块链节点中修改或读取状态树的方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种修改状态树的方法,所述状态树的每个节点包括区块链账户地址的一部分,所述状态树的叶节点包括区块链账户的状态、和状态哈希值,所述状态树中的父节点的哈希值基于其全部子节点的哈希值获取,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述方法由区块链节点执行,包括:
获取将要执行的针对区块链中多个账户的多个修改操作;
将所述多个修改操作划分为多个分组,每个分组中的各个修改操作所针对的账户对应于一个子树;
对于所述多个分组,并行执行对相应子树的修改操作,以获取与各个分组对应的各个子树的根节点哈希值;
基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值。
在一种实施方式中,所述多个修改操作包括至少一种以下操作:插入操作、更新操作、删除操作。
在一种实施方式中,获取将要执行的针对区块链中多个账户的多个修改操作包括,通过执行从本地交易池中选定的用于打包为第一区块的多条交易,获取将要执行的针对区块链中多个账户的多个修改操作。
在一种实施方式中,对于所述多个分组,并行执行对相应子树的修改包括,对于所述多个分组,通过多个线程并行执行对相应子树的修改。
在一种实施方式中,所述区块链节点包括计算机集群,其中,对于所述多个分组,并行执行对相应子树的修改包括,对于所述多个分组,通过计算机集群中的各个计算机并行执行对相应子树的修改。
在一种实施方式中,基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值包括,拼接各个子树的根节点哈希值,对拼接获取的值取哈希,以获取状态树的根节点的哈希值。
在一种实施方式中,基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值包括,通过默克树算法,基于各个子树的根节点哈希值计算状态树的根节点的哈希值。
在一种实施方式中,基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值包括,基于各个子树的根节点包括的账户地址的一部分将各个子树的根节点哈希值插入预定MPT树的各个叶节点中,计算所述预定MPT树的根节点哈希值作为所述状态树的根节点的哈希值。
在一种实施方式中,所述状态树根节点的子节点数目预先基于希望的子树数目确定。
本说明书另一方面提供一种读取状态树的方法,所述状态树的每个节点包括区块链账户地址的一部分,所述状态树的叶节点包括区块链账户的状态、和状态哈希值,所述状态树中的父节点的哈希值基于其全部子节点的哈希值获取,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述方法由区块链节点执行,包括:
获取将要执行的针对区块链中多个账户的多个读取操作;
将所述多个读取操作划分为多个分组,每个分组中的各个读取操作所针对的账户对应于一个子树;
对于所述多个分组,并行执行对相应子树的读取操作。
本说明书另一方面提供一种修改状态树的装置,所述状态树的每个节点包括区块链账户地址的一部分,所述状态树的叶节点包括区块链账户的状态、和状态哈希值,所述状态树中的父节点的哈希值基于其全部子节点的哈希值获取,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述装置部署在区块链节点中,包括:
获取单元,配置为,获取将要执行的针对区块链中多个账户的多个修改操作;
划分单元,配置为,将所述多个修改操作划分为多个分组,每个分组中的各个修改操作所针对的账户对应于一个子树;
并行执行单元,配置为,对于所述多个分组,并行执行对相应子树的修改操作,以获取与各个分组对应的各个子树的根节点哈希值;
修改单元,配置为,基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值。
在一种实施方式中,所述获取单元还配置为,通过执行从本地交易池中选定的用于打包为第一区块的多条交易,获取将要执行的针对区块链中多个账户的多个修改操作。
在一种实施方式中,所述并行执行单元还配置为,对于所述多个分组,通过多个线程并行执行对相应子树的修改。
在一种实施方式中,所述区块链节点包括计算机集群,其中,所述并行执行单元还配置为,对于所述多个分组,通过计算机集群中的各个计算机并行执行对相应子树的修改。
在一种实施方式中,所述修改单元还配置为,拼接各个子树的根节点哈希值,对拼接获取的值取哈希,以获取状态树的根节点的哈希值。
在一种实施方式中,所述修改单元还配置为,通过默克树算法,基于各个子树的根节点哈希值计算状态树的根节点的哈希值。
在一种实施方式中,所述修改单元包括,插入子单元,配置为,基于各个子树的根节点包括的账户地址的一部分将各个子树的根节点哈希值插入预定MPT树的各个叶节点中,计算子单元,配置为,计算所述预定MPT树的根节点哈希值作为所述状态树的根节点的哈希值。
本说明书另一方面提供一种读取状态树的装置,所述状态树的每个节点包括区块链账户地址的一部分,所述状态树的叶节点包括区块链账户的状态、和状态哈希值,所述状态树中的父节点的哈希值基于其全部子节点的哈希值获取,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述装置部署在区块链节点中,包括:
获取单元,配置为,获取将要执行的针对区块链中多个账户的多个读取操作;
划分单元,配置为,将所述多个读取操作划分为多个分组,每个分组中的各个读取操作所针对的账户对应于一个子树;
并行执行单元,配置为,对于所述多个分组,并行执行对相应子树的读取操作。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过本说明书实施例的并行操作方案,将对区块链账户的读取或修改操作分成多组,通过CPU多核或者计算机集群对多组并行执行,大大加快了对数的操作速度,节省了操作时间,从而提高区块链系统的每秒处理交易量(TPS,Transaction Per Second)。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1是在一个实施例中区块结构示意图;
图2示出MPT状态树的一部分的示例;
图3示出根据本说明书实施例的一种读取状态树的方法流程图;
图4示出从MPT树根节点分出16棵子树的示意图;
图5示出根据本说明书实施例的一种修改状态树的方法流程图;
图6示意示出了基于默克树算法的计算MPT树根节点哈希值的方式;
图7示意示出预定MPT树的具体形式;
图8示出根据本说明书实施例的一种修改状态树的装置800;
图9示出根据本说明书实施例的一种读取状态树的装置900。
具体实施方式
下面将结合附图描述本说明书实施例。
如本领域技术人员所知,在区块链网络中,以区块的形式记录交易数据,新生成的区块经过网络中各个节点的共识之后,添加到区块链上,从而实现数据的不可篡改。图1是在一个实施例中区块结构示意图。需要理解,图1的区块结构是以以太坊为例进行举例说明的;其他区块链平台生成的区块结构可以与之略有不同。
如图1所示,区块链中每个区块至少包括区块头和交易列表,区块头中记录用于将本区块链接到区块链上的多种信息,包括父区块的哈希值,时间戳,要计算的随机数等等,交易列表中包含生成本区块的节点从交易池中选择收入本区块中的一系列交易。为了便于查找和验证账户状态和交易状态,以太坊的区块中还包括三棵MPT树的根信息(root),这三棵MPT状态树分别为状态树、交易树和收据树,相应的根信息分别为状态根、交易根和收据根。其中,状态树用于记录区块链网络中所有账户的状态信息,交易树用于记录本区块中的交易内容信息,收据树用于记录本区块中的交易收据信息。交易树和收据树为针对本区块中的交易一次性生成的MPT树,一般不需要更新,而状态树则需要根据账户状态的变化频繁更新,因此,本说明书实施例中主要关注状态树。根据本说明书实施例的状态树为一种基于MPT状态树的架构的数据结构,为了便于理解,首先描述一下MPT状态树。
MPT状态树以树状结构存储状态键(Key)和状态值(Value)的对应关系,树中的节点通过哈希进行连接,即基于子节点生成哈希值,存储在父节点中。在记录账户状态的情况下,Key为账户地址,Value为账户状态或账户内容。该MPT状态树的叶子节点包括:各个账户的账户状态、该账户状态的哈希值以及该账户地址的排在最末位的至少一个地址字符,叶子节点上方的各个父节点包括账户地址的至少一个地址字符和对应于其全部子节点的哈希值。基于各层节点可以递归得到根节点的哈希值,该根哈希即为该状态树的状态根,记录在图1所示的区块中。
图2示出MPT状态树的一部分的示例。在图2所示的MPT状态树一部分中包括4个叶节点和叶节点到根节点之间的一系列枝干节点。4个叶节点分别对应于4个账户。具体地,对于外部账户来说,其状态数据可以包括,当前余额(balance),已发起交易序号(Nonce);对于合约账户来说,其状态数据进一步包括,合约代码的哈希,合约中变量的状态,其中合约变量的状态可以通过进一步的MPT状态树来记录。在其他区块链中,账户的状态内容可以在以上举例基础上有所修改或添加,本说明书对此不作限定。
例如,叶节点1记录账户1的状态数据S1,该状态数据S1的哈希值(Hash(S1))、及账户1的账户地址的末尾三个字符“5d6”;节点2中的哈希值(Hash(5d6,24))基于其两个子节点,节点1和节点3中包括的哈希值(即Hash(S1)和Hash(c,3))而确定,节点4中的哈希值基于节点2和节点5中的哈希值确定。该节点4例如为图1中状态树根节点的一个子节点。
此外,从根节点的任一子节点开始,沿节点的父子关系历经的各枝干节点中记录的地址字符共同构成对应账户的账户地址,所历经的路径构成通向对应账户的寻址路径。例如,沿着节点4->节点2->节点1的路径,各枝干节点中记录的地址字符共同构成账户1的账户地址,即“f35d6”。如此,通过图2所示的MPT状态树,可以记录多个账户地址对应的多个账户的账户状态。
在另一示例中,可以在图2的MPT状态树的基础上进行进一步的改进、扩展。例如,在有些区块链平台中,在MPT状态树的节点关系和树结构的基础上,在MPT状态树中进一步引入了扩展节点、分支节点,从而更有效地记录大量账户的账户地址和账户状态。
通过图2的示例可以看到,MPT状态树中最底层的叶节点用于记录账户的状态数据。如本领域技术人员所知,随着区块链网络中交易的执行,账户的状态会发生改变。而根据以上MPT状态树的结构设置,一旦叶节点的值发生变化,叶节点中的哈希值也发生变化,其父节点的哈希值也随之变化,进一步的一系列向上的父节点均需要更新哈希值。而区块链网络中交易的传播和执行是非常频繁的,因此,MPT状态树就需要频繁的更新。
一般地,每次更新MPT状态树时,从底层叶节点依次递归地向上更新各个父节点,直到更新根哈希。然而,由于记录全量账户的账户状态,MPT状态树是一棵非常庞大的默克树。上述常规方式的计算效率仍然不能满足需要。
因此,在本说明书的实施例中,提出一种新的读取或更新状态树的方法。如上文所述,本说明书实施例所涉及的状态树为基于MPT树架构形成的数据结构,而不限于为MPT树的形式。具体是,根据本说明书实施例的状态树的节点也包括账户地址中的部分字符和哈希值,并从叶节点从下往上计算各个节点的哈希值直至根节点的哈希值,与MPT树所不同的是,本说明书的状态树不限于在根节点具有16个子节点(即每个子节点对应于1一个十六进制字符),而可以根据预定数目确定子节点数目并依此子节点数目生成根节点的子节点。例如,如果预先确定根节点的子节点数目为8个,则可以使得根节点的每个子节点与账户地址中左侧3位二进制字符对应的8个值分别对应(这8个值对应的十进制数分别为0、1、2…7),并依此生成根节点的8个子节点。另外,对于该状态树中的枝干节点中的每个节点,也不限于具有16个子节点,也可以预先确定其子节点数目并依此子节点数目生成其子节点。MPT状态树是本说明书实施例中的状态树的一种具体形式,下文中,将以MPT状态树为例进行说明,可以理解,虽然下文以MPT状态树作为示例进行说明,本说明书实施例的方案适用于上述状态树的任一具体形式。
在本说明书实施例中,在执行区块的多个交易之前,预先将状态树拆分为多个互相独立的、有待更新的子树,从而在执行区块中的多个交易时,可获取对多个账户的读取操作,通过基于各个子树对多个读取操作进行分组,可大幅提升状态树的读取速度。在执行完成各个交易之后,可获取对多个账户的修改操作,通过基于各个子树对多个修改操作进行分组,并最后将修改结果合并,从而可大幅提升状态树的修改效率。
图3示出根据本说明书实施例的一种读取状态树的方法流程图,所述MPT状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述方法由区块链中的节点执行,包括:
步骤S302,获取将要执行的针对区块链中多个账户的多个读取操作;
步骤S304,将所述多个读取操作划分为多个分组,每个分组中的各个修改操作所针对的账户对应于一个子树;
步骤S306,对于所述多个分组,并行执行对相应子树的读取操作。
该方法可以适用于公有链、私有链、联盟链,在此不做限制。该方法通过区块链网络中任意节点执行,其中节点可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来实现。以下结合以太坊区块链平台来详细描述以上各个步骤的执行过程,但是上述方法也同样地适用于具有类似功能的其他区块链平台。
在执行该方法之前,预先将状态树划分出多个子树。如上文所述,可以以多种具体形式来构成状态树。下文将以MPT树为例进行描述。如图2所示,例如,在MPT状态树的根节点下,以各个账户地址的左侧第1位十六进制字符为子节点,也就说以账户地址中的左侧4位二进制字符为子节点。从而,从根节点可分出共16个子节点,该16个子节点分别包括账户地址中的左侧第1位字符0,1,2…f,即可以以该16个子节点分别为一棵子树的根节点,从而划分出16棵子树。图4示出从MPT树根节点分出16棵子树的示意图。如图4中所示,所述MPT树的根节点共包括16个子节点,其分别对应于字符0,1,2…f,从而,对每个子节点可划分出一棵子树,从而划分出16棵子树,图中以虚线示出各个子树。图2所示树为图4中示出的16棵子树中的一棵子树,即图4中最右侧的对应于字符f的子树。可以理解,在本说明书实施例中,不限于以上述方式构成MPT状态树,例如,如果希望从MPT状态树分出的子树更少,则例如可以以账户地址中的左侧2位二进制字符为子节点,从而,从根节点可分出共4个子节点,如果希望从MPT状态树分出的子树更多,则例如可以以账户地址中的左侧8位二进制字符(即两位十六进制字符)为子节点,从而,从而根节点可分出256棵子树。
步骤S302,获取将要执行的针对区块链中多个账户的多个读取操作。
在一个示例中,区块链中的挖矿节点在从交易池选出多个交易并将该多个交易打包为区块时,将执行该多个交易。该多个交易例如为转账交易、或者为调用智能合约的交易,其中的一些交易需要读取区块链中账户的状态,例如,当执行转账交易之后,需要首先读取转出账户A和转入账户B各自的余额,从而产生多个读取账户的读取任务。在执行各个交易的过程中产生读取账户的任务之后,例如可通过内存中预定地址段记录该多个任务,从而该挖矿节点中例如可通过线程1在所述预定地址段获取全部对账户的读取操作任务。
在另一个示例中,区块链中的其它节点在从挖矿节点接收到新生成的区块时,会执行区块中的各个交易。在执行各个交易的过程中,该其它节点执行上述与挖矿节点中类似的过程,即,在执行该区块中的交易的过程中产生多个读取账户的任务,由特定线程获取全部对账户的读取操作任务。
可以理解,所述多个读取操作分别针对不同的账户,当执行不同的交易产生针对同一个账户的读取任务时,可将其合并为同一个读取任务。
步骤S304,将所述多个读取操作划分为多个分组,每个分组中的各个修改操作所针对的账户对应于一个子树。
也就是说,根据子树的划分对多个读取操作任务进行分组。例如,MPT状态树如图4所示划分为16棵子树,每棵子树对应于MPT树的根节点的一个子节点。其中的一棵子树例如如图2所示。从而,可根据各个读取操作针对的账户的第1个字符对多个读取操作进行分组,例如,可将读取操作针对的账户的第1个字符为f的读取操作划分为一组,该组与图2所示的子树相对应。
步骤S306,对于所述多个分组,并行执行对相应子树的读取操作。
在一种实施方式中,在区块链节点中,可以对每个分组分配一个线程,每个线程仅执行对应的分组中的多个读取操作。例如,对于与图2所示子树对应的分组分配线程2,该分组中的操作对应的账户以f开头。线程2可按照任意次序串行执行该分组中的每个读取操作任务。例如,该分组包括对账户1(f35d6)的读取,线程2基于图2可确定寻址路径为节点4->节点2->节点1,从而基于该路径读取到账户1的状态S1,并返回账户1的状态S1。在一种实施方式中,线程2可在完成该分组中的全部读取任务之后,统一返回读取结果。
在一种实施方式中,区块链节点实施为计算机集群,从而可将每个分组分配给集群中的一台计算机,通过计算机集群并行执行对相应子树的修改。
通过以这种方式进行并行读取,一方面大大加快了对MPT树的读取速度,另一方面,可将各个子树的存储信息分开存储,分开读取,各个子树并行执行,多个交易对相同账户的读取可通过一次读取进行,进一步加快了对MPT树的读取速度。
图5示出根据本说明书实施例的一种修改状态树的方法流程图,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述方法由区块链节点执行,包括:
步骤S502,获取将要执行的针对区块链中多个账户的多个修改操作;
步骤S504,将所述多个修改操作划分为多个分组,每个分组中的各个修改操作所针对的账户对应于一个子树;
步骤S506,对于所述多个分组,并行执行对相应子树的修改操作,以获取与各个分组对应的各个子树的根节点哈希值;
步骤S508,基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值。
该方法可以适用于公有链、私有链、联盟链,在此不做限制。该方法通过区块链网络中任意节点执行,其中节点可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来实现。以下结合以太坊区块链平台来详细描述以上各个步骤的执行过程,但是上述方法也同样地适用于具有类似功能的其他区块链平台。
与图3所示方法类似地,该方法也由区块链中的记账节点生成区块时进行,或者可由区块链中的其它节点更新区块时执行。在该方法中,从状态树划分出多个子树可上文中参考图3的描述,在此不再赘述。
步骤S502,获取将要执行的针对区块链中多个账户的多个修改操作。
在一个示例中,区块链中的挖矿节点在从交易池选出多个交易并将该多个交易打包为区块时,将执行该多个交易。该多个交易例如为转账交易、或者为调用智能合约的交易。区块链节点在执行所述多个交易的过程中,在通过如图3所示方法并行执行对各个账户的读取之后,可继续执行各个交易,在执行完成各个交易之后,可获取最终的对各个账户的修改任务。例如,通过执行创建账户的交易,产生在状态树中插入账户的操作任务,通过执行转账交易,产生在状态树中更新转入和转出的两个账户的余额的操作任务。在一些区块链中,支持的虚拟机还可以通过执行交易产生删除智能合约的内部存储的操作任务。上述插入、更新、删除操作相当于对状态树数据库进行插入、更新和删除,从而涉及到对状态树中的相应叶节点、相关联的枝干节点以及根节点的修改。在执行各个交易产生修改账户的任务之后,例如可通过内存中预定地址段记录该多个任务,从而该挖矿节点中例如可通过线程3在所述预定地址段获取全部对账户的修改操作任务。
在另一个示例中,区块链中的其它节点在从挖矿节点接收到新生成的区块时,会执行区块中的各个交易,以更新相应的账户状态。在该情况中,该其它节点执行上述与挖矿节点中类似的过程,即,在执行该区块中的多个交易之后产生多个修改账户的任务,由特定线程获取全部对账户的修改操作任务。
可以理解,这里,区块链节点在执行完区块中的全部交易之后获取各个账户的最终状态,从而创立多个修改任务,以将各个账户的最终状态更新到状态树中,因此,所述多个修改操作分别针对不同的账户。
步骤S504,将所述多个修改操作划分为多个分组,每个分组中的各个修改操作所针对的账户对应于一个子树。
也就是说,根据子树的划分对多个修改操作任务进行分组。例如,MPT状态树如图4所示划分为16棵子树,每棵子树对应于MPT树的根节点的一个子节点。其中的一棵子树例如如图2所示。从而,可根据各个修改操作针对的账户的第1个字符对多个修改操作进行分组,例如,可将修改操作针对的账户的第1个字符为f的修改操作划分为一组,该组与图2所示的子树相对应。
步骤S506,对于所述多个分组,并行执行对相应子树的修改,以获取与各个分组对应的各个子树的根节点哈希值。
在一种实施方式中,在区块链节点中,可以对每个分组分配一个线程,每个线程仅执行该分组中的多个修改操作。例如,对于与图2所示子树对应的分组分配线程4,该分组中的操作对应的账户以f开头。线程4可按照任意次序串行执行该分组中的每个修改操作任务,并依次对图2所示子树进行修改。例如,该分组中包括对图2中账户1的更新,具体是,修改账户1的状态S1,更改节点1中的状态S1的哈希值,相应地更新节点3的哈希值,以及节点4的哈希值。该分组中还可能包括对新账户(例如账户5)的插入,该待插入的账户5例如为fe03c,如图2所示,将对节点5增加一个叶节点,该叶节点包括的账户地址字符为“03c”,并且该叶节点包括账户5的状态S5和S5的哈希值。在添加该新的叶节点之后,相应地更新节点5的哈希值以及节点4的哈希值。在对该分组中的全部修改任务都执行完成了之后,可获取该子树的根节点(即节点4)的哈希值。类似地,可获取其它子树各自的根节点的哈希值。
在一种实施方式中,区块链节点实施为计算机集群,从而可将每个分组分配给集群中的一台计算机,通过计算机集群并行执行对相应子树的修改。
步骤S508,基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值。
在获取各个子树的根节点(即状态树根节点的子节点)的哈希值之后,可基于各个子节点的哈希值,计算状态树的根节点哈希值。在一种实施方式中,基于上述计算的与所述多组对应的各个子节点的哈希值以及MPT树中原有的未经修改的各个子节点的哈希值,如图4所示,可基于MPT树中的计算方法,将MPT树根节点的各个子节点的哈希值依据预定顺序拼接到一起,并对拼接获取的值取哈希(如MD5、SHA1等),从而获取MPT树根节点的哈希值,所述预定顺序例如可以为字符的大小顺序、或者可以为各个字符在MPT树中的排列顺序等。
在一种实施方式中,基于上述计算的与所述多组对应的各个子节点的哈希值以及MPT树中原有的未经修改的各个子节点的哈希值,可基于默克树的算法,基于MPT树的根节点的各个子节点计算MPT树的根节点的哈希值。图6示意示出了基于默克树算法的计算MPT树根节点哈希值的方式。为了便于说明,在图6中仅示出基于4个子节点计算MPT树的根节点的哈希值,可以理解,对于16个子节点,可类似地计算根节点的哈希值。如图6所示,对于各个子节点的哈希值,可按照预定顺序,将相邻的两个子节点分为一组,将该组中的两个子节点的哈希值拼接,并计算拼接后的值的哈希值,从而获取图6中虚线圆示出的两个哈希值,将该两个哈希值拼接取哈希,从而获取MPT树的根节点的哈希值。
在一种实施方式中,在状态树根节点的子节点对应于账户地址的前4n位(n≥2)的情况中,例如根节点的子节点对应账户地址的前8位,即每个子节点中包括两个十六进制字符,从而状态树根节点共有256个子节点,在获取到256个子节点各自的哈希值之后,可将各个子节点的哈希值插入预定MPT树中,从而基于MPT树的算法计算出该预定MPT树的根哈希值作为状态树的根哈希值。图7示意示出该预定MPT树的具体形式。如图7中所示,该预定MPT树的根节点包括16个子节点,每个子节点分别包括16个叶节点,从而共包括256个叶节点。通过基于状态树的256个子节点各自包括的账户地址字符和哈希值,将该256个子节点分别插入到图7所示的MPT树中,从而可基于图7所示MPT树计算该MPT树的根节点哈希值作为所述状态树的根节点哈希值。在该情况中,可以以任意顺序将该256个子节点分别插入到图7所示的MPT树中,而不会影响最终的计算结果。
通过以图5所示方法将对区块链账户的修改操作分成多组,通过CPU多核或者计算机集群对多组并行执行,大大加快了对MPT数的操作速度,节省了操作时间,从而提高区块链系统的每秒处理交易量(TPS,Transaction Per Second)。
图8示出根据本说明书实施例的一种修改状态树的装置800,所述状态树的每个节点包括区块链账户地址的一部分,所述状态树的叶节点包括区块链账户的状态、和状态哈希值,所述状态树中的父节点的哈希值基于其全部子节点的哈希值获取,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述装置部署在区块链节点中,包括:
获取单元81,配置为,获取将要执行的针对区块链中多个账户的多个修改操作;
划分单元82,配置为,将所述多个修改操作划分为多个分组,每个分组中的各个修改操作所针对的账户对应于一个子树;
并行执行单元83,配置为,对于所述多个分组,并行执行对相应子树的修改操作,以获取与各个分组对应的各个子树的根节点哈希值;
修改单元84,配置为,基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值。
在一种实施方式中,所述获取单元81还配置为,通过执行从本地交易池中选定的用于打包为第一区块的多条交易,获取将要执行的针对区块链中多个账户的多个修改操作。
在一种实施方式中,所述并行执行单元83还配置为,对于所述多个分组,通过多个线程并行执行对相应子树的修改。
在一种实施方式中,所述区块链节点包括计算机集群,其中,所述并行执行单元83还配置为,对于所述多个分组,通过计算机集群中的各个计算机并行执行对相应子树的修改。
在一种实施方式中,所述修改单元84还配置为,拼接各个子树的根节点哈希值,对拼接获取的值取哈希,以获取状态树的根节点的哈希值。
在一种实施方式中,所述修改单元84还配置为,通过默克树算法,基于各个子树的根节点哈希值计算状态树的根节点的哈希值。
在一种实施方式中,所述修改单元84还包括,插入子单元841,配置为,基于各个子树的根节点包括的账户地址的一部分将各个子树的根节点哈希值插入预定树的各个叶节点中,计算子单元842,配置为,计算所述预定树的根节点哈希值作为所述状态树的根节点的哈希值。
图9示出根据本说明书实施例的一种读取状态树的装置900,所述状态树的每个节点包括区块链账户地址的一部分,所述状态树的叶节点包括区块链账户的状态、和状态哈希值,所述状态树中的父节点的哈希值基于其全部子节点的哈希值获取,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述装置部署在区块链节点中,包括:
获取单元91,配置为,获取将要执行的针对区块链中多个账户的多个读取操作;
划分单元92,配置为,将所述多个读取操作划分为多个分组,每个分组中的各个修改操作所针对的账户对应于一个子树;
并行执行单元93,配置为,对于所述多个分组,并行执行对相应子树的读取操作。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (22)
1.一种修改状态树的方法,所述状态树的每个节点包括区块链账户地址的一部分,所述状态树的叶节点包括区块链账户的状态、和状态哈希值,所述状态树中的父节点的哈希值基于其全部子节点的哈希值获取,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述方法由区块链节点执行,包括:
获取将要执行的针对区块链中多个账户的多个修改操作;
将所述多个修改操作划分为多个分组,每个分组中的各个修改操作所针对的账户对应于一个子树;
对于所述多个分组,并行执行对相应子树的修改操作,以获取与各个分组对应的各个子树的根节点哈希值;
基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值。
2.根据权利要求1所述的方法,其中,所述多个修改操作包括至少一种以下操作:插入操作、更新操作、删除操作。
3.根据权利要求1所述的方法,其中,获取将要执行的针对区块链中多个账户的多个修改操作包括,通过执行从本地交易池中选定的用于打包为第一区块的多条交易,获取将要执行的针对区块链中多个账户的多个修改操作。
4.根据权利要求1所述的方法,其中,对于所述多个分组,并行执行对相应子树的修改包括,对于所述多个分组,通过多个线程并行执行对相应子树的修改。
5.根据权利要求1所述的方法,所述区块链节点包括计算机集群,其中,对于所述多个分组,并行执行对相应子树的修改包括,对于所述多个分组,通过计算机集群中的各个计算机并行执行对相应子树的修改。
6.根据权利要求1所述的方法,其中,基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值包括,拼接各个子树的根节点哈希值,对拼接获取的值取哈希,以获取状态树的根节点的哈希值。
7.根据权利要求1所述的方法,其中,基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值包括,通过默克树算法,基于各个子树的根节点哈希值计算状态树的根节点的哈希值。
8.根据权利要求1所述的方法,其中,基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值包括,基于各个子树的根节点包括的账户地址的一部分将各个子树的根节点哈希值插入预定MPT树的各个叶节点中,计算所述预定MPT树的根节点哈希值作为所述状态树的根节点的哈希值。
9.根据权利要求1所述的方法,其中,所述状态树根节点的子节点数目预先基于希望的子树数目确定。
10.一种读取状态树的方法,所述状态树的每个节点包括区块链账户地址的一部分,所述状态树的叶节点包括区块链账户的状态、和状态哈希值,所述状态树中的父节点的哈希值基于其全部子节点的哈希值获取,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述方法由区块链节点执行,包括:
获取将要执行的针对区块链中多个账户的多个读取操作;
将所述多个读取操作划分为多个分组,每个分组中的各个读取操作所针对的账户对应于一个子树;
对于所述多个分组,并行执行对相应子树的读取操作。
11.一种修改状态树的装置,所述状态树的每个节点包括区块链账户地址的一部分,所述状态树的叶节点包括区块链账户的状态、和状态哈希值,所述状态树中的父节点的哈希值基于其全部子节点的哈希值获取,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述装置部署在区块链节点中,包括:
获取单元,配置为,获取将要执行的针对区块链中多个账户的多个修改操作;
划分单元,配置为,将所述多个修改操作划分为多个分组,每个分组中的各个修改操作所针对的账户对应于一个子树;
并行执行单元,配置为,对于所述多个分组,并行执行对相应子树的修改操作,以获取与各个分组对应的各个子树的根节点哈希值;
修改单元,配置为,基于各个子树的根节点哈希值,修改所述状态树的根节点的哈希值。
12.根据权利要求11所述的装置,其中,所述多个修改操作包括至少一种以下操作:插入操作、更新操作、删除操作。
13.根据权利要求11所述的装置,其中,所述获取单元还配置为,通过执行从本地交易池中选定的用于打包为第一区块的多条交易,获取将要执行的针对区块链中多个账户的多个修改操作。
14.根据权利要求11所述的装置,其中,所述并行执行单元还配置为,对于所述多个分组,通过多个线程并行执行对相应子树的修改。
15.根据权利要求11所述的装置,所述区块链节点包括计算机集群,其中,所述并行执行单元还配置为,对于所述多个分组,通过计算机集群中的各个计算机并行执行对相应子树的修改。
16.根据权利要求11所述的装置,其中,所述修改单元还配置为,拼接各个子树的根节点哈希值,对拼接获取的值取哈希,以获取状态树的根节点的哈希值。
17.根据权利要求11所述的装置,其中,所述修改单元还配置为,通过默克树算法,基于各个子树的根节点哈希值计算状态树的根节点的哈希值。
18.根据权利要求11所述的装置,其中,所述修改单元包括,插入子单元,配置为,基于各个子树的根节点包括的账户地址的一部分将各个子树的根节点哈希值插入预定MPT树的各个叶节点中,计算子单元,配置为,计算所述预定MPT树的根节点哈希值作为所述状态树的根节点的哈希值。
19.根据权利要求11所述的装置,其中,所述状态树根节点的子节点数目预先基于希望的子树数目确定。
20.一种读取状态树的装置,所述状态树的每个节点包括区块链账户地址的一部分,所述状态树的叶节点包括区块链账户的状态、和状态哈希值,所述状态树中的父节点的哈希值基于其全部子节点的哈希值获取,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述装置部署在区块链节点中,包括:
获取单元,配置为,获取将要执行的针对区块链中多个账户的多个读取操作;
划分单元,配置为,将所述多个读取操作划分为多个分组,每个分组中的各个读取操作所针对的账户对应于一个子树;
并行执行单元,配置为,对于所述多个分组,并行执行对相应子树的读取操作。
21.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-10中任一项的所述的方法。
22.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010155154.3A CN111008201B (zh) | 2020-03-09 | 2020-03-09 | 并行修改和读取状态树的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010155154.3A CN111008201B (zh) | 2020-03-09 | 2020-03-09 | 并行修改和读取状态树的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111008201A true CN111008201A (zh) | 2020-04-14 |
CN111008201B CN111008201B (zh) | 2020-06-26 |
Family
ID=70120965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010155154.3A Active CN111008201B (zh) | 2020-03-09 | 2020-03-09 | 并行修改和读取状态树的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111008201B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111444196A (zh) * | 2020-06-12 | 2020-07-24 | 支付宝(杭州)信息技术有限公司 | 块链式账本中全局状态的哈希的生成方法、装置及设备 |
CN111444192A (zh) * | 2020-06-12 | 2020-07-24 | 支付宝(杭州)信息技术有限公司 | 块链式账本中全局状态的哈希的生成方法、装置及设备 |
CN111522833A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种区块链中的mpt树的更新方法、装置和电子设备 |
CN111651300A (zh) * | 2020-06-05 | 2020-09-11 | 成都质数斯达克科技有限公司 | 一种区块链数据恢复方法、装置、设备及介质 |
CN112199186A (zh) * | 2020-12-07 | 2021-01-08 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
WO2021068728A1 (zh) * | 2019-10-10 | 2021-04-15 | 深圳前海微众银行股份有限公司 | 一种区块的状态树的生成和链上数据验证的方法及装置 |
CN114356937A (zh) * | 2022-01-09 | 2022-04-15 | 广州聚高信息科技有限公司 | 一种基于区块链和大数据的金融信息管理系统 |
US11526488B2 (en) | 2020-04-15 | 2022-12-13 | Alipay (Hangzhou) Information Technology Co., Ltd. | Distributed blockchain data storage under account model |
US11556516B2 (en) | 2020-04-20 | 2023-01-17 | Alipay (Hangzhou) Information Technology Co., Ltd. | Distributed blockchain data storage under account model |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170033932A1 (en) * | 2013-08-05 | 2017-02-02 | Guardtime Ip Holdings Limited | Blockchain-supported, node id-augmented digital record signature method |
CN106503994A (zh) * | 2016-11-02 | 2017-03-15 | 西安电子科技大学 | 基于属性加密的区块链隐私数据访问控制方法 |
CN109410043A (zh) * | 2018-08-20 | 2019-03-01 | 中山大学 | 一种基于分层树状结构的区块链信息高效存储方法及装置 |
WO2019179538A2 (en) * | 2019-07-11 | 2019-09-26 | Alibaba Group Holding Limited | Shared blockchain data storage |
CN110688377A (zh) * | 2019-08-30 | 2020-01-14 | 阿里巴巴集团控股有限公司 | 一种更新状态默克树的方法及装置 |
-
2020
- 2020-03-09 CN CN202010155154.3A patent/CN111008201B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170033932A1 (en) * | 2013-08-05 | 2017-02-02 | Guardtime Ip Holdings Limited | Blockchain-supported, node id-augmented digital record signature method |
CN106503994A (zh) * | 2016-11-02 | 2017-03-15 | 西安电子科技大学 | 基于属性加密的区块链隐私数据访问控制方法 |
CN109410043A (zh) * | 2018-08-20 | 2019-03-01 | 中山大学 | 一种基于分层树状结构的区块链信息高效存储方法及装置 |
WO2019179538A2 (en) * | 2019-07-11 | 2019-09-26 | Alibaba Group Holding Limited | Shared blockchain data storage |
CN110688377A (zh) * | 2019-08-30 | 2020-01-14 | 阿里巴巴集团控股有限公司 | 一种更新状态默克树的方法及装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021068728A1 (zh) * | 2019-10-10 | 2021-04-15 | 深圳前海微众银行股份有限公司 | 一种区块的状态树的生成和链上数据验证的方法及装置 |
US11526488B2 (en) | 2020-04-15 | 2022-12-13 | Alipay (Hangzhou) Information Technology Co., Ltd. | Distributed blockchain data storage under account model |
US11556516B2 (en) | 2020-04-20 | 2023-01-17 | Alipay (Hangzhou) Information Technology Co., Ltd. | Distributed blockchain data storage under account model |
CN111651300A (zh) * | 2020-06-05 | 2020-09-11 | 成都质数斯达克科技有限公司 | 一种区块链数据恢复方法、装置、设备及介质 |
CN111444196A (zh) * | 2020-06-12 | 2020-07-24 | 支付宝(杭州)信息技术有限公司 | 块链式账本中全局状态的哈希的生成方法、装置及设备 |
CN111444192A (zh) * | 2020-06-12 | 2020-07-24 | 支付宝(杭州)信息技术有限公司 | 块链式账本中全局状态的哈希的生成方法、装置及设备 |
CN111444196B (zh) * | 2020-06-12 | 2020-10-16 | 支付宝(杭州)信息技术有限公司 | 块链式账本中全局状态的哈希的生成方法、装置及设备 |
CN111522833A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种区块链中的mpt树的更新方法、装置和电子设备 |
CN112199186A (zh) * | 2020-12-07 | 2021-01-08 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
CN112835700A (zh) * | 2020-12-07 | 2021-05-25 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
CN112835700B (zh) * | 2020-12-07 | 2022-07-12 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
CN114356937A (zh) * | 2022-01-09 | 2022-04-15 | 广州聚高信息科技有限公司 | 一种基于区块链和大数据的金融信息管理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111008201B (zh) | 2020-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111008201B (zh) | 并行修改和读取状态树的方法和装置 | |
CN110688377B (zh) | 一种更新状态默克树的方法及装置 | |
CN110602148B (zh) | 一种区块的状态树的生成和链上数据验证的方法及装置 | |
CN109345388B (zh) | 区块链智能合约验证方法、装置及存储介质 | |
CN112887437B (zh) | 区块链交易处理方法、区块链节点和区块链系统 | |
US20210243013A1 (en) | Updating a state merkle tree | |
CN111444196B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN111061769A (zh) | 一种区块链系统的共识方法及相关设备 | |
CN109410043B (zh) | 一种基于分层树状结构的区块链信息高效存储方法及装置 | |
CN110235162B (zh) | 区块链系统数据处理方法和区块的生成方法 | |
CN111754350B (zh) | 并行获取区块链中的交易访问变量的编号的方法和装置 | |
CN111488396B (zh) | 业务数据区块链的数据同步方法及装置 | |
CN109961364B (zh) | 一种基于有向无环图的交易方法及系统 | |
CN110309173B (zh) | 合约数据的记录方法、装置及区块链节点、存储介质 | |
CN111209341B (zh) | 区块链的数据存储方法、装置、设备及介质 | |
CN112348518A (zh) | 一种区块链交易证明的方法及装置 | |
CN114064984A (zh) | 一种基于稀疏数组链表的世界状态增量更新方法及装置 | |
Conte et al. | Efficient enumeration of graph orientations with sources | |
CN111488610A (zh) | 基于业务数据区块链的状态数据查询方法及装置 | |
WO2024066007A1 (zh) | 区块链系统中的交易执行方法、共识节点和区块链系统 | |
JP7289983B2 (ja) | 元帳の証明可能プルーニングシステム | |
CN113434599A (zh) | 一种基于半节点的区块链账本同步方法及装置 | |
RU2790181C1 (ru) | Система верифицируемого отсечения реестров | |
CN115801020B (zh) | 确定有限状态自动机压缩方法、匹配方法、设备及介质 | |
CN113468132B (zh) | 对区块链系统中的分片进行缩容的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |