CN115129727A - 状态数据的提交方法、节点和区块链系统 - Google Patents
状态数据的提交方法、节点和区块链系统 Download PDFInfo
- Publication number
- CN115129727A CN115129727A CN202210602795.8A CN202210602795A CN115129727A CN 115129727 A CN115129727 A CN 115129727A CN 202210602795 A CN202210602795 A CN 202210602795A CN 115129727 A CN115129727 A CN 115129727A
- Authority
- CN
- China
- Prior art keywords
- contract
- transaction
- node
- transactions
- execution
- 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.)
- Pending
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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
- G06F16/2386—Bulk updating operations
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/10—Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
- G06Q20/102—Bill distribution or payments
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/22—Payment schemes or models
- G06Q20/223—Payment schemes or models based on the use of peer-to-peer networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Software Systems (AREA)
- Finance (AREA)
- Data Mining & Analysis (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种状态数据的提交方法、节点和区块链系统。方法由区块链系统中的第一节点执行,第一节点包括控制进程和N个计算进程,方法包括:控制进程获取M个交易分组,M个交易分组通过基于多个交易各自的预执行读写集对多个交易进行分组而得到,其中M大于N,预执行读写涉及若干合约参数;控制进程将M个交易分组中涉及第一合约的合约参数的P个第一交易分组发送给N个进程中的第一进程;第一进程执行P个第一交易分组中的各个交易,获得第一合约的P组合约状态数据,每组合约状态数据中包括第一合约的一个或多个合约参数各自的状态值,基于P组合约状态数据提交第一合约的合约状态。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种状态数据的提交方法、节点和区块链系统。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
发明内容
本发明的目的在于提供一种状态数据的提交方法、节点和区块链系统。
第一方面,提供了一种状态数据的提交方法,由区块链系统中的第一节点执行,所述第一节点包括控制进程和N个计算进程。方法包括:所述控制进程获取M个交易分组,所述M个交易分组通过基于多个交易各自的预执行读写集对所述多个交易进行分组而得到,其中M大于N,所述预执行读写集涉及若干合约参数;所述控制进程将所述M个交易分组中涉及第一合约的合约参数的P个第一交易分组发送给所述N个进程中的第一进程;所述第一进程执行所述P个第一交易分组中的各个交易,获得所述第一合约的P组合约状态数据,每组合约状态数据中包括所述第一合约的一个或多个合约参数各自的状态值,基于所述P组合约状态数据提交所述第一合约的合约状态。
第二方面,提供了一种区块链系统中的第一节点,所述第一节点包括控制进程和N个计算进程。其中:所述控制进程获取M个交易分组,所述M个交易分组通过基于多个交易各自的预执行读写集对所述多个交易进行分组而得到,其中M大于N,所述预执行读写集涉及若干合约参数;所述控制进程将所述M个交易分组中涉及第一合约的合约参数的P个第一交易分组发送给所述N个进程中的第一进程;所述第一进程执行所述P个第一交易分组中的各个交易,获得所述第一合约的P组合约状态数据,每组合约状态数据中包括所述第一合约的一个或多个合约参数各自的状态值,基于所述P组合约状态数据提交所述第一合约的合约状态。
第三方面,提供了一种区块链系统,包括第一节点和第二节点。其中:所述第二节点用于向所述第一节点发送多个交易各自的预执行读写集,所述预执行读写集涉及若干合约参数;所述第一节点通过其控制进程基于所述多个交易各自的预执行读写集对所述多个交易进行分组以得到M个交易分组,并将所述M个交易分组中涉及第一合约的合约参数的P个第一交易分组发送给其N个进程中的第一进程,其中M大于N;通过所述第一进程执行所述P个第一交易分组中的各个交易,获得所述第一合约的P组合约状态数据,每组合约状态数据中包括所述第一合约的一个或多个合约参数各自的状态值,并基于所述P组合约状态数据提交所述第一合约的合约状态。
上述实施例中,涉及相同合约账户的交易由相同的计算进程执行,使得并行执行属于某个区块的多个交易的任意两个计算进程不会产生涉及相同的合约账户的合约状态数据,从而使得多个计算进程可以并行提交其各自获得的合约状态数据,有利于更为快速的生成包含该多个交易的区块。此外单个计算进程可以并发执行与其对应的多个交易分组中的各个交易,可以更为快速的完成对其接收的各个交易分组中的交易的执行,进而加速区块的生成。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例中示例性提供的区块链系统的示意图;
图2为本说明书实施例中示例性提供的区块链数据存储的结构示意图;
图3为本说明书实施例中示例性提供的区块链系统中任意两个节点的结构示意图;
图4为本说明书实施例中提供的一种状态数据的提交方法的流程图;
图5为本说明书实施例中提供的一种区块链节点的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
图1为本说明书实施例中示例性提供的区块链系统的示意图。如图1所示,区块链系统是通过多个节点(Node)来建立的分布式网络,其包含任意两个节点间通过点对点(Peer-to-Peer,P2P)网络实现在应用层的通信连接,例如其包含的节点n1~节点n5中的任意两个节点间均可通过P2P网络实现在应用层的通信连接。区块链系统利用链式区块结构构造的去中心化(或称为多中心化)的分布式账本,保存于分布式的区块链网络中的每个节点(或大多节点上,如共识节点)上,因此区块链系统需要解决去中心化(或多中心化)的多个节点上各自的账本数据的一致性和正确性的问题。鉴于此,区块链系统的每个节点上都运行着区块链程序,在一定容错需求的设计下,通过共识(consensus)机制保证所有忠诚节点具有相同的交易,从而保证所有忠诚节点对相同交易的执行结果一致,将交易打包成区块并基于相同交易的执行结果更新世界状态。其中当前主流的共识机制包括但不限于:工作量证明(Proof of Work,POW)、股权证明(Proof of Stake,POS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法,蜜獾拜占庭容错(HoneyBadgerBFT)算法等等。
区块链系统中的账户通常被划分为用户账户/外部账户(Externally ownedaccount)和合约账户(contract account)两种类型;其中合约账户用于存储智能合约代码以及智能合约代码中相关状态的值,其通常只能通过外部账户进行调用激活。外部账户和合约账户的设计实际上是账户地址到账户状态的映射。账户的状态通常可以包括但不限于nonce、balance、storage_Root、codeHash等字段,其中nonce、balance在外部账户和合约账户中都存在,而codeHash和storage_Root属性通常仅在合约账户上有效。前述的各个字段中,nonce表征计数器,对于外部账户而言其代表从账户地址发送的交易的数量;对于合约账户而言其代表账户创建的合约数量。balance表征对应的外部账户拥有的数字资源的数量。storage_Root表征一个MPT(Merkle Patricia Tree)树根节点的哈希,该MPT用于对合约账户的状态变量的存储进行组织。codeHash表征智能合约代码的哈希值,对于合约账户而言其是智能合约被哈希计算并存储的代码,对于外部账户而言由于不包括智能合约,因此其可以是空字符串/全0字符串。
MPT是结合了Merkle Tree(默克尔树)和Patricia Tree(压缩前缀树,一种更节省空间的Trie树,字典树)的一种树形结构。Merkle Tree,默克尔树算法对每个交易都计算一个Hash值,然后两两连接再次计算Hash,一直到最顶层的Merkle根。以太坊中采用改进的MPT树,例如是16叉树的结构,通常也简称为MPT树。其中以太坊MPT树的数据结构包括状态树(state trie)。状态树中包含以太坊中每个账户所对应的存储内容的键值对(key andvalue pair)。状态树中的“键”可以是一个的160bits标识符(以太坊账户的地址),这个账户地址分布于从状态树的根节点开始到叶子节点的存储中。状态树中的“值”是通过对以太坊账户的信息进行编码(使用递归长度字典编码(Recursive-Length Prefix encoding,RLP)方法)生成的。如前所述,对于外部账户而言,值包括nonce和balance;对于合约账户而言,值包括nonce、balance、codehash和storage_Root等等。
合约账户用于存储智能合约相关的状态。智能合约在区块链系统中完成部署后,会产生一个对应的合约账户。这个合约账户一般会具有一些状态,这些状态由智能合约中状态变量所定义并在智能合约创建、执行时产生新的值。所述的智能合约通常是指在区块链环境中以数字形式定义的能够自动执行条款的合约。一旦某个事件触发合约中的条款(满足执行条件),代码即可以自动执行。在区块链中,合约的相关状态保存在存储树(storage trie)中,存储树根节点的hash值即存储于上述storage_Root中,从而将该合约的所有状态通过hash锁定到该合约账户下。存储树也是一个MPT树形结构,存储了状态地址到状态值的key-value映射。从存储树的根节点到叶子节点存储有一个状态的地址,一个叶子节点中存储一个状态的值。
请参见图2示例性提供的区块链数据存储的结构示意图。如图2所示,单个区块的区块头中可以包括若干字段,例如上一区块哈希previous_Hash(图中的PrevHash,或称为父hash),随机数Nonce(在一些区块链系统中这个Nonce不是随机数,或者在一些区块链系统中不启用区块头中的Nonce),时间戳Timestamp,区块号BlockNum,状态根哈希State_Root,交易根哈希Transaction_Root,收据根哈希Receipt_Root等。其中,下一区块(如区块N+1)的区块头中的PrevHash指向上一区块(如区块N),即为上一区块的hash值。通过这种方式,区块链上通过区块头实现了下一区块对上一区块的锁定。需要特别说明的是,state_root是当前区块中所有账户的状态组成的MPT树的根的哈希值,即指向state_root的为一棵MPT形式的状态树。这个MPT树的根节点可以为一个扩展节点(Extension Node)或一个分支节点(Branch Node),state_root中存储的一般为这个根节点的hash值。从这个MPT的根节点到叶子节点中每个节点的一部分值按照顺序串联起来可以构成账户地址并作为key,叶子节点中存储的账户信息为这个账户地址对应的value,这样,构成了key-value键值对。key可以是sha3(Address),即账户地址的hash值(hash算法例如采用sha3算法),其存储的值value可以为rlp(Account),即账户信息的rlp编码。其中账户信息可以是[nonce,balance,storage_root,codeHash]构成的四元组。如前所述,对于外部账户来说,一般只有nonce和balance两项,而storage_root、codeHash字段默认存储空字符串/全0字符串。对于合约账户来说,合约账户可以包括nonce,balance,storage_root,codeHash等等。此外不论是外部账户还是合约账户,其账户信息一般都位于一个单独的叶子节点(Leaf Node)中。从根节点的扩展节点/分支节点到每个账户的叶子节点,可能中间会经过若干个分支节点以及扩展节点。
对于状态树中的单个合约账户来说,其storage_Root指向另一棵同为MPT形式的树,其中存储了合约执行涉及的状态变量(state variable)的数据。这个storage_Root指向的MPT形式的树为存储树,即存储树的根节点的hash值。一般的,这个存储树存储的也是key-value键值对。从根节点到叶子节点的路径上存储的一部分数据连起来构成key,叶子节点中存储value。前面提到,这个存储树也可以是MPT形式的树,一般可以是16叉树,即对于分支节点而言,其最多可以有16个孩子节点,其中可能包括扩展节点和/或叶子节点。而对于扩展节点而言,其一般可以有1个孩子节点,其可以是分支节点。这棵存储树最多可以有64层的深度。
参照前文相关于存储树(storage trie)和状态树(state trie)的描述不难发现,区块链系统中的节点完成执行属于某个区块的多个交易后产生的状态数据,可能包括与storage trie相关的合约状态数据以及与state trie相关的世界状态数据。因此节点提交状态数据的过程中,通常需要先提交合约状态数据以获得合约账户的storage_root,进而更新state trie中相关合约账号的storage_root,并提交其获得的世界状态数据以获得状态树的state_root。
图3为本说明书实施例中示例性提供的区块链系统中任意两个节点(例如作为主节点/第二节点的节点n1和作为从节点/第一节点的节点n2)的结构示意图。节点n1和节点n2中均可运行多个进程以提供多种服务,例如参照图3所示,节点n1和节点n2均可各自运行用于提供接入服务的接入进程、用于提供缓存服务的缓存进程、用于提供预执行服务的预执行进程、用于提供网络服务的网络进程、用于提供共识服务的共识进程、用于提供区块管理服务的控制进程(或者表述为区块管理进程)和用于提供存储服务的存储进程;此外作为从节点的节点n2还可以运行用于提供计算服务的多个计算进程。其中进程指是应用中具有一定独立功能的程序关于一个数据集合的一次运行活动,即进程是计算机中通过由CPU顺序执行应用程序中的指令而进行的一个过程,而每个进程在创建时被分配自己的内存地址空间。节点n1中的多个进程可以为多个计算设备或虚拟计算节点中的多个进程,节点n2中的多个进程可以为多个计算设备或虚拟计算节点中的多个进程。此外需要说明的是本说明书实施例提供的方案并不局限于主从架构的区块链系统。
接入进程可以用于接收来自用户设备的交易,进而由接入进程调用缓存进程实现将其接收的交易加入待处理的交易队列中进行缓存。
节点n2的预执行进程可以调用缓存进程来实现从待处理的交易队列中按顺序读取其缓存的交易并对该交易进行验证,例如验证用户设备对该交易的签名,并将经验证的交易返回给缓存进程。此外节点n2可以通过其网络进程向其余节点的网络进程广播其缓存进程中存储的经验证的交易;进而节点n1通过其网络进程接收的来自节点n1的交易,可以由其缓存进程缓存加入到待处理的交易队列中。由此节点n1的缓存进程通过其内存缓存的待处理的交易队列,不仅包括通过其接入进程接收的交易,还包括通过其网络进程接收的来自其它节点的交易。
节点n1的预执行进程也可以调用缓存进程来实现从待处理的交易队列中按顺序读取其缓存的交易,并至少对来自与节点n1连接的用户设备的交易进行验证。此外节点n2的预执行进程还可以对其从缓存进程按顺序接收的交易进行预执行以得到该交易的预执行信息,其中预执行信息例如包括预执行读集、预执行写集以及执行该交易所需消耗的数字资源/计算资源的数量(即资源消费信息)。进而节点n1的预执行进程还可以在其每完成对一批交易的预执行后,将该批交易的预执行信息返回给缓存进程以缓存到待共识的交易队列中进行缓存。需要特别说明的是,节点n1的缓存进程的内存中还可以缓存有部分状态数据;对于由节点n1的预执行进程预执行的任一交易而言,在对该任一交易进行预执行的过程中,预执行进程可以首先调用缓存进程查询其缓存的状态数据中是否包括将要读取的任意变量的状态值,如果是则获得缓存进程返回的该任意变量的状态值,如果否则预执行进程可以调用存储进程从已提交到状态数据库的状态数据中查询该任意变量的状态值。此外还需要特别说明的是,由于节点n1的预执行进程会将其预执行的交易的预执行信息返回给缓存进程,因而其缓存进程还可以基于其接收的预执行读写集对应更新该缓存进程缓存的状态数据。此外还需要特别说明的是,由于预执行进程可以按顺序从缓存进程缓存的待处理的交易队列中依次读取交易并对其进行预执行,因而缓存进程还可以基于其缓存的待处理的交易队列在其内存中对应缓存由预执行进程预执行的多个交易的预执行顺序。
预执行读集中包含若干唯一键(key),还包括从已提交的世界状态中读取的与前述各个key相对应的键值(value)。预执行写集中也包含若干唯一键(key),还包括期望提交的与前述各个key相对应的键值(value);此外如果某个交易对世界状态中的某个key进行删除处理,则预执行写集中还会对被删除的key记录相应的标记。需要特别说明的是,如果被预执行的交易是用于调用智能合约的合约调用交易,则其预执行读写集中可能不仅仅包含与外部账户相关的状态参数,还可能涉及与智能合约的合约状态相关的若干合约参数。
下面示例性描述节点n1依次对交易Tx1~交易Tx5进行预执行的过程,其中假设交易Tx1和和交易Tx2为用于外部账户A1和外部账户A2分别发起的用于调用智能合约C1的合约调用交易,并且假设智能合约C1对应合约账户B1;此外假设交易Tx3是外部账户A1发起的指向外部账户A3的转账交易,交易Tx4是外部账户A4发起的指向外部账户A5的转账交易,交易Tx5是外部账户A6发起的指向外部账户A7的转账交易。节点n1通过其预执行进程对交易Tx1~交易Tx5进行预执行,可能获得如下表1中示例的交易Tx1~交易Tx5各自的预执行信息。
交易 | 预执行读集 | 预执行写集 |
交易Tx1 | k1=v11,k2=v21 | k1=v12,k2=v22 |
交易Tx2 | k3=v31,k4=v41 | k3=v32,k4=v42 |
交易Tx3 | k1=v12,k5=v51 | k1=v13,k5=v52 |
交易Tx4 | k6=v61,k7=v71 | k6=v62,k7=v72 |
交易Tx5 | k8=v81,k9=v91 | k8=v82,k9=v92 |
表1
对于前述表1中示例性提供的各个参数,例如k1表征外部账户A1的balance的key,k2表征合约账户B1下的某个状态参数的key,k3表征外部账户A2的balance的key,k4表征合约账户B1下的某个状态参数的key,k5~k9依次表征外部账户A3~外部账户A7下的balance的key。其中v11、v12、v13以及v21~v92分别表征其各自对应的key的值。需要特别说明的是,由于交易Tx3在交易Tx1之后执行,因此交易Tx3的预执行读集中k1的值为交易Tx1的预执行写集中k1的值。
节点n1的共识进程可以调用其缓存进程,从待共识的交易队列中按顺序读取多个交易以及其相关数据来生成共识提议,其中该共识提议中例如可以包括该多个交易各自对应的预执行信息、该多个交易的共识顺序(该多个交易的共识顺序与该多个交易的预执行顺序相同),以及该多个交易或者该多个交易各自的指示信息(例如该多个交易各自的摘要值)。需要特别说明的是,节点n1的共识进程调用其缓存进程的条件,可以包括但不限于按照固定时间步长调用缓存进程、通过缓存进程缓存的交易的数据量达到预定大小时调用缓存进程,或者通过缓存进程缓存的经预执行的交易达到预定数量时调用缓存进程等等。进而,节点n1的共识进程还可以通过其网络进程,向参与对共识提议进行共识的其余节点(例如节点n2)各自的网络进程发送共识提议,以便通过其共识进程与其余节点各自的共识进程对其生成的共识提议进行共识。此外需要特别说明的是,节点n1还可以基于共识提议所指示的多个交易各自的预执行信息,计算该多个交易对应的分组信息,并将该分组信息携带于共识提议中,以便参与对共识提议进行共识的其它节点可以基于该分组信息对前述多个交易进行分组。
对共识提议达成共识后,由于节点n1和节点n2各自从与其连接的用户设备接收的交易,均由节点n1的缓存进程按照接收顺序将其加入待处理的交易队列,并由节点n1的预执行进程按顺序对待处理的交易队列中的各交易进行预执行,因此节点n1的共识进程可以按照前述多个交易的预执行顺序/共识顺序将前述多个交易的预执行信息发送至其控制进程,由控制进程将前述多个交易各自的预执行信息部分或全部的作为相应区块的状态数据提交到存储服务,进而获得用于生成相应区块的状态根并生成包含该状态根以及前述多个交易的区块。
节点n2例如可以在对节点n1生成的共识提议进行共识的过程中,或者在对节点n1生成的共识提议达成共识之后,通过其共识进程和/或控制进程从该共识提议中读取前述多个交易各自的预执行信息,进而基于该多个交易各自的预执行信息对该多个交易进行分组以得到M个交易分组(M大于1);或者从共识提议中读取前述多个交易的分组信息并基于该分组信息对前述多个交易进行分组以得到M个交易分组。更具体地,例如可以由节点n2的共识进程基于前述多个交易各自的预执行信息计算分组信息,并将分组信息、前述多个交易以及其各自对应的预执行读写集发送至节点n2的控制进程;进而由节点n2的控制进程基于分组信息将前述多个交易划分为M个交易分组,并由节点n2的控制进程对节点n2中的N个计算进程进行任务调度。
获得前述M个交易分组的过程中,需要确保位于任意两个交易分组中的任意两个交易互不冲突。任意两个交易互不冲突具体是指任意两个交易不存在如下情况之一:一个交易的预执行读集与另一个交易的预执行写集中包括相同的key、一个交易的预执行写集和另一个交易的预执行写集中包括相同的key。而对于存在冲突的任意两个交易,则其需要被划分到相同的交易分组中,换而言之即如果该任意两个交易各自的预执行写集中包含相同的key,即认为该任意两个冲突交易访问了相同的参数而存在冲突,该任意两个交易需要被划分到相同的交易分组;如果该任意两个交易中的一个交易的预执行读集与另一个交易的预执行写集中包含相同的key,即认为该任意两个交易访问了相同的参数而存在冲突,该任意两个交易需要被划分到相同的交易分组。在另一种可能的实施方式中,为了高效的实现确定出前述多个交易的分组信息或者说高效的完成将前述多个交易划分为M个交易分组,通常可以按照位于任意两个不同的交易分组中的任意两个交易不访问相同参数(即不包含相同的key)的要求来对前述多个交易进行分组。这样,对于前述示例的交易Tx1~交易Tx5,其分组情况例如可能包括:交易Tx1和交易Tx3被划分到交易分组1中,交易Tx2被划分到交易分组2中,交易Tx4和交易Tx5各自被划分到交易分组3和交易分组4中。
节点n2具体可以按照M个交易分组,通过其运行的N个计算进程并行执行该M个交易分组中的多个交易。然而由任意两个计算进程并行执行的任意两个交易如果涉及相同的合约账户/智能合约,那么节点n2在提交其生成区块的过程中产生的状态数据时,鉴于N个计算进程各自获得的状态数据可能涉及相同的智能合约的合约参数,单个计算进程并不能独立的完成提交其获得的状态数据而需要对该N个计算进程各自获得的状态数据进行合并提交。
图4为本说明书实施例中提供的一种状态数据的提交方法的流程图。该方法可以由区块链系统中的任一区块链节点执行,例如由并未作为共识提议节点(主节点)的其它区块链节点(从节点)执行,其中无论是作为主节点或是从节点的区块链节点,均可各自实现为任何具有计算/处理能力的装置、平台、设备或设备集群。下文中将主要以作为主节点的节点n1与作为从节点的节点n2相协作,使得节点n2通过其包含的多个进程来具体实现该方法中的各个方法步骤为例,详细描述区块链节点实现如图4中所示的方法的过程。如图4所示,由当前作为从节点的节点n2执行的状态数据提交方法可以包括但不限于如下步骤42~步骤46。
步骤42,控制进程获取M个交易分组。其中如前所述的是M个交易分组具体可以通过基于多个交易各自的预执行读写集对多个交易进行分组而得到,M通常大于N而且该多个交易中的至少部分交易的预执行读写集可能分别涉及与一个或多个智能合约相关的若干合约参数。此外控制进程获得前述M个交易分组的各种方式可以参见前文,此处不再赘述。
步骤44,控制进程将M个交易分组中涉及第一合约的合约参数的P个第一交易分组发送给N个进程中的第一进程。换而言之即对于M个交易分组中的任意两个交易分组,如果该任意两个分组中的任意两个交易涉及相同的智能合约,例如该任意两个交易分组中的任意两个交易请求调用相同的智能合约,则该任意两个交易分组需要被控制进程调度至相同的计算进程。
参见前文示例的交易Tx1~交易Tx5的分组情况,由于交易分组1和交易分组2中的交易Tx1和交易Tx2分别涉及智能合约C1(即第一合约)中不同合约参数(k2和k4各自表征的合约参数),节点n2的控制进程例如可以将交易分组1和交易分组2等两个交易分组作为前述的P个第一交易分组发送至节点n2的计算进程1(即第一进程),将交易分组3发送至计算进程2,将交易分组4发送至计算进程3,使得计算进程1~计算进程3并行执行其各自接收的交易分组中的交易。
具体地,在步骤46,第一进程执行P个第一交易分组中的各个交易,获得第一合约的P组合约状态数据,每组合约状态数据中包括第一合约的一个或多个合约参数各自的状态值,并基于P组合约状态数据提交第一合约的合约状态。
计算进程可以串行执行其接收的各个交易分组中的交易,例如计算进程1可以通过单个工作线程依次执行其接收的交易分组1和交易分组2中的交易Tx1、交易Tx2和交易Tx3。或者计算进程可以通过多线程并发的执行其接收的各个交易分组中的交易,以便更为快速的完成执行其接收的各个交易分组中的交易;例如计算进程1中可以并发的运行工作线程1和工作线程2,工作线程1依次执行交易分组1中的交易Tx1和交易Tx3以得到1组涉及智能合约C1的状态数据,该组合约状态数据例如包括智能合约C1中由k2表征的合约参数的状态值;工作线程2执行交易分组2中的交易Tx2以得到涉及智能合约C1的另一组合约状态数据,该组合约状态数据例如包括智能合约C1中由k4表征的合约参数的状态值。需要特别说明的是,计算进程可以通过相同的存储对象来搜集其通过执行其接收的各个交易分组中的交易以获得的状态数据;例如计算进程1可以通过相同的存储对象搜集到其执行交易Tx1~交易Tx3所获得的执行读写集,执行读写集具体包括执行读集和执行写集,交易Tx1~交易Tx3的执行写集也就是计算进程1执行交易Tx1~交易Tx3以得到的状态数据。此外参见前文相关于存储树和状态数的描述可见,计算进程获得的状态数据可能包含与状态树相关的世界状态数据和与存储树相关的合约状态数据,例如交易Tx1调用智能合约C1时,可能需要计算因执行交易Tx1而消耗的数字资源,进而交易Tx1的执行写集将会包含用于修改发起交易Tx1的外部账户A1的Balance字段的键值对(例如前述表1中的k1=v11),该键值对即属于计算进程1获得的世界状态数据;此外继续参见前文所述交易Tx1和交易Tx2可能涉及相同智能合约C1,即涉及相同合约账户B1下的由k2和k4分别表征的合约参数,交易Tx1和交易Tx2各自的执行写集中可能与其各自的预执行写集包含相同的键值对k2-v21、k4-v41,键值对k2-v21、k4-v41即属于计算进程1获得的合约状态数据,具体地说键值对k2-v21、k4-v41是计算进程1获得的智能合约C1/合约账户B1的合约状态数据。
涉及相同的智能合约的交易由相同的计算进程执行,则N个计算进程各自获得的状态数据中不会涉及相同智能合约/合约账户的合约状态数据,因而节点n2的N个计算进程可以互不影响的并行提交其各自获得的状态数据。更具体地,如果计算进程获得的状态数据仅包括与状态树相关的世界状态数据,则其可以直接提交其获得的世界状态数据;如果计算进程获得的状态数据同时包含世界状态数据和涉及至少一个智能合约的合约状态数据,则该计算进程需要先提交其获得的至少一个智能合约的合约状态,例如将其获得的P组状态数据发送至存储进程,由存储进程基于该P组状态数据更新该至少一个智能合约的合约状态树(即存储树),获得该至少一个智能合约各自的存储根;进而合并提交至少一个智能合约各自的存储根以及该计算进程获得的世界状态数据至存储进程,由存储进程对应更新状态树中的部分状态参数。
计算进程在完成执行其接收的P个第一交易分组中的任一第一交易之后,可以对应获得该第一交易的执行读写集,进而还可以确定该第一交易的执行读写集与该第一交易的预执行读写集是否一致。当P个第一交易分组中的每个交易各自的执行读写集与其预执行读写集都一致的情况下,该计算进程可以基于其获得的P组合约状态数据更新第一合约的合约状态。特别需要说明的是,如果P个交易分组中存在某个交易的的执行读写集与其预执行读写集不一致,则可以更换区块链系统的主节点,进而通过与前述相似的过程重新发起对前述多个交易的执行。
节点n2的N个计算进程均完成提交其各自获得的状态数据到存储进程后,还可以由控制进程对存储进程进行调用来对其更新的状态树和各个存储树进行提交操作,完成对状态树的更新并获得用于状态根,进而由控制进程基于该状态根和前述多个交易生成相应的区块。
前述各个方法实施例中,涉及相同合约账户的交易由相同的计算进程执行,使得并行执行属于某个区块的多个交易的任意两个计算进程不会产生涉及相同合约账户的合约状态数据,从而使得多个计算进程可以并行提交其各自获得的合约状态数据,有利于更为快速的生成包含该多个交易的区块。此外单个计算进程可以并发执行与其对应的多个交易分组中的各个交易,可以更为快速的完成对其接收的各个交易分组中的交易的执行,进而加速区块的生成。
与前述方法实施例基于相同的构思,本说明书实施例中还提供了一种区块链系统中第一节点。如图5所示,所述第一节点包括控制进程52和N个计算进程54。其中:所述控制进程52获取M个交易分组,所述M个交易分组通过基于多个交易各自的预执行读写集对所述多个交易进行分组而得到,其中M大于N,所述预执行读写集涉及若干合约参数;所述控制进程52将所述M个交易分组中涉及第一合约的合约参数的P个第一交易分组发送给所述N个进程中的第一进程;所述第一进程执行所述P个第一交易分组中的各个交易,获得所述第一合约的P组合约状态数据,每组合约状态数据中包括所述第一合约的一个或多个合约参数各自的状态值,基于所述P组合约状态数据提交所述第一合约的合约状态。
在一种可能的实施方式中,所述第一进程按照所述P个第一交易分组并发执行所述P个第一交易分组中的各个所述交易。
在一种可能的实施方式中,所述第一节点还包括存储进程56;所述第一进程将所述P组合约状态数据发送给所述存储进程56,使所述存储进程56基于所述P组合约状态数据更新所述第一合约的合约状态树。
在一种可能的实施方式中,所述控制进程52基于来自所述区块链系统中的第二节点的分组信息获取M个交易分组。
在一种可能的实施方式中,所述第一节点还包括第一共识进程58;所述第一共识进程58从所述区块链系统中的第二节点接收所述多个交易各自的预执行读写集,基于所述预执行读写集对所述多个交易进行分组以得到所述M个交易分组。
在一种可能的实施方式中,所述第一进程在执行所述P个第一交易分组中的任一第一交易之后,得到所述第一交易的执行读写集,并确定所述第一交易的执行读写集与所述第一交易的预执行读写集是否一致;所述第一进程在确定所述P个第一交易分组中的每个交易各自的执行读写集与其预执行读写集都一致的情况中,基于所述P组合约状态数据更新所述第一合约的合约状态。
与前述方法实施例基于相同的构思,本说明书实施例中还提供了一种区块链系统,包括第一节点和第二节点,其中:所述第二节点用于向所述第一节点发送多个交易各自的预执行读写集,所述预执行读写集涉及若干合约参数;所述第一节点通过其控制进程基于所述多个交易各自的预执行读写集对所述多个交易进行分组以得到M个交易分组,并将所述M个交易分组中涉及第一合约的合约参数的P个第一交易分组发送给其N个进程中的第一进程,其中M大于N;通过所述第一进程执行所述P个第一交易分组中的各个交易,获得所述第一合约的P组合约状态数据,每组合约状态数据中包括所述第一合约的一个或多个合约参数各自的状态值,并基于所述P组合约状态数据提交所述第一合约的合约状态。
在一种可能的实施方式中,所述第二节点包括预执行进程和缓存进程,所述缓存进程的内存中存储有状态数据,所述多个交易中包括第一交易。所述缓存进程用于将所述多个交易发送给所述预执行进程,所述多个交易由所述第一节点接收并存储到所述缓存进程的内存中。所述预执行进程用于预执行所述多个交易,生成所述多个交易的预执行读写集,具体用于在预执行所述第一交易的过程中将要读取第一变量的状态值时,在所述缓存进程的内存存储有所述第一变量的第一状态值的情况中,从所述缓存进程接收所述第一状态值,基于所述第一状态值生成所述第一交易的预执行读写集;所述缓存进程还用于在所述缓存进程的内存中存储所述多个交易的预执行读写集和所述多个交易的预执行顺序,基于所述多个交易的预执行读写集更新所述缓存进程的内存中存储的状态数据。
在一种可能的实施方式中,所述第二节点还包括第二共识进程。所述缓存进程还用于将所述多个交易的预执行读写集和预执行顺序发送给所述第二共识进程。所述第二共识进程用于生成共识提议,并将所述共识提议发送给所述第一节点中的第一共识进程,所述共识提议包括所述多个交易的预执行读写集及其共识顺序,所述共识顺序为所述预执行顺序。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (15)
1.一种状态数据提交方法,由区块链系统中的第一节点执行,所述第一节点包括控制进程和N个计算进程,方法包括:
所述控制进程获取M个交易分组,所述M个交易分组通过基于多个交易各自的预执行读写集对所述多个交易进行分组而得到,其中M大于N,所述预执行读写集涉及若干合约参数;
所述控制进程将所述M个交易分组中涉及第一合约的合约参数的P个第一交易分组发送给所述N个进程中的第一进程;
所述第一进程执行所述P个第一交易分组中的各个交易,获得所述第一合约的P组合约状态数据,每组合约状态数据中包括所述第一合约的一个或多个合约参数各自的状态值,基于所述P组合约状态数据提交所述第一合约的合约状态。
2.根据权利要求1所述的方法,所述第一进程按照所述P个第一交易分组并发执行所述P个第一交易分组中的各个所述交易。
3.根据权利要求1所述的方法,所述第一节点还包括存储进程;所述基于所述P组合约状态数据提交所述第一合约的合约状态,包括:将所述P组合约状态数据发送给所述存储进程,使所述存储进程基于所述P组合约状态数据更新所述第一合约的合约状态树。
4.根据权利要求1所述的方法,所述控制进程获取M个交易分组,包括:所述控制进程基于来自所述区块链系统中的第二节点的分组信息获取M个交易分组。
5.根据权利要求1所述的方法,所述第一节点还包括第一共识进程;所述方法还包括:所述第一共识进程从所述区块链系统中的第二节点接收所述多个交易各自的预执行读写集,基于所述预执行读写集对所述多个交易进行分组以得到所述M个交易分组。
6.根据权利要求5所述的方法,所述第一进程在执行所述P个第一交易分组中的任一第一交易之后,得到所述第一交易的执行读写集,并确定所述第一交易的执行读写集与所述第一交易的预执行读写集是否一致;所述基于所述P组合约状态数据提交所述第一合约的合约状态,包括:在确定所述P个第一交易分组中的每个交易各自的执行读写集与其预执行读写集都一致的情况中,基于所述P组合约状态数据更新所述第一合约的合约状态。
7.一种区块链系统中的第一节点,所述第一节点包括控制进程和N个计算进程,其中:
所述控制进程用于获取M个交易分组,所述M个交易分组通过基于多个交易各自的预执行读写集对所述多个交易进行分组而得到,其中M大于N,所述预执行读写集涉及若干合约参数;
所述控制进程将所述M个交易分组中涉及第一合约的合约参数的P个第一交易分组发送给所述N个进程中的第一进程;
所述第一进程执行所述P个第一交易分组中的各个交易,获得所述第一合约的P组合约状态数据,每组合约状态数据中包括所述第一合约的一个或多个合约参数各自的状态值,基于所述P组合约状态数据提交所述第一合约的合约状态。
8.根据权利要求7所述的第一节点,所述第一进程按照所述P个第一交易分组并发执行所述P个第一交易分组中的各个所述交易。
9.根据权利要求7所述的第一节点,所述第一节点还包括存储进程;所述第一进程将所述P组合约状态数据发送给所述存储进程,使所述存储进程基于所述P组合约状态数据更新所述第一合约的合约状态树。
10.根据权利要求7所述的第一节点,所述控制进程基于来自所述区块链系统中的第二节点的分组信息获取M个交易分组。
11.根据权利要求7所述的第一节点,所述第一节点还包括共识进程;所述共识进程从所述区块链系统中的第二节点接收所述多个交易各自的预执行读写集,基于所述预执行读写集对所述多个交易进行分组以得到所述M个交易分组。
12.根据权利要求11所述的第一节点,所述第一进程在执行所述P个第一交易分组中的任一第一交易之后,得到所述第一交易的执行读写集,并确定所述第一交易的执行读写集与所述第一交易的预执行读写集是否一致;所述第一进程在确定所述P个第一交易分组中的每个交易各自的执行读写集与其预执行读写集都一致的情况中,基于所述P组合约状态数据更新所述第一合约的合约状态。
13.一种区块链系统,包括第一节点和第二节点,其中:
所述第二节点用于向所述第一节点发送多个交易各自的预执行读写集,所述预执行读写集涉及若干合约参数;
所述第一节点通过其控制进程基于所述多个交易各自的预执行读写集对所述多个交易进行分组以得到M个交易分组,并将所述M个交易分组中涉及第一合约的合约参数的P个第一交易分组发送给其N个进程中的第一进程,其中M大于N;通过所述第一进程执行所述P个第一交易分组中的各个交易,获得所述第一合约的P组合约状态数据,每组合约状态数据中包括所述第一合约的一个或多个合约参数各自的状态值,并基于所述P组合约状态数据提交所述第一合约的合约状态。
14.根据权利要求13所述的区块链系统,所述第二节点包括预执行进程和缓存进程,所述缓存进程的内存中存储有状态数据,所述多个交易中包括第一交易;
所述缓存进程用于将所述多个交易发送给所述预执行进程,所述多个交易由所述第一节点接收并存储到所述缓存进程的内存中;
所述预执行进程用于预执行所述多个交易,生成所述多个交易的预执行读写集,具体用于在预执行所述第一交易的过程中将要读取第一变量的状态值时,在所述缓存进程的内存存储有所述第一变量的第一状态值的情况中,从所述缓存进程接收所述第一状态值,基于所述第一状态值生成所述第一交易的预执行读写集;
所述缓存进程还用于在所述缓存进程的内存中存储所述多个交易的预执行读写集和所述多个交易的预执行顺序,基于所述多个交易的预执行读写集更新所述缓存进程的内存中存储的状态数据。
15.根据权利要求14所述的区块链系统,所述第二节点还包括第二共识进程;所述缓存进程还用于将所述多个交易的预执行读写集和预执行顺序发送给所述第二共识进程;所述第二共识进程用于生成共识提议,并将所述共识提议发送给所述第一节点中的第一共识进程,所述共识提议包括所述多个交易的预执行读写集及其共识顺序,所述共识顺序为所述预执行顺序。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210602795.8A CN115129727A (zh) | 2022-05-30 | 2022-05-30 | 状态数据的提交方法、节点和区块链系统 |
PCT/CN2022/135279 WO2023231338A1 (zh) | 2022-05-30 | 2022-11-30 | 状态数据的提交方法、节点和区块链系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210602795.8A CN115129727A (zh) | 2022-05-30 | 2022-05-30 | 状态数据的提交方法、节点和区块链系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115129727A true CN115129727A (zh) | 2022-09-30 |
Family
ID=83377180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210602795.8A Pending CN115129727A (zh) | 2022-05-30 | 2022-05-30 | 状态数据的提交方法、节点和区块链系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115129727A (zh) |
WO (1) | WO2023231338A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116308772A (zh) * | 2022-12-16 | 2023-06-23 | 蚂蚁区块链科技(上海)有限公司 | 交易分发方法、节点和区块链系统 |
WO2023231338A1 (zh) * | 2022-05-30 | 2023-12-07 | 蚂蚁区块链科技(上海)有限公司 | 状态数据的提交方法、节点和区块链系统 |
WO2024179085A1 (zh) * | 2023-02-28 | 2024-09-06 | 蚂蚁区块链科技(上海)有限公司 | 区块链中的交易分组方法和区块链节点 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117422468B (zh) * | 2023-12-18 | 2024-03-29 | 安徽中科晶格技术有限公司 | 基于dag模型的合约链合约并行化方法、设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11070360B2 (en) * | 2018-08-13 | 2021-07-20 | International Business Machines Corporation | Parallel transaction validation and block generation in a blockchain |
US11194555B2 (en) * | 2020-04-13 | 2021-12-07 | International Business Machines Corporation | Optimization of execution of smart contracts |
CN111932257B (zh) * | 2020-08-18 | 2023-10-24 | 中国工商银行股份有限公司 | 一种区块链并行化处理方法及装置 |
CN113743941B (zh) * | 2021-11-04 | 2022-08-26 | 支付宝(杭州)信息技术有限公司 | 一种在区块链中执行交易的方法、区块链和主节点 |
CN113743943B (zh) * | 2021-11-04 | 2022-07-08 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行交易的方法、区块链、主节点和从节点 |
CN113743950B (zh) * | 2021-11-04 | 2022-08-09 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行交易的方法、节点和区块链系统 |
CN115129727A (zh) * | 2022-05-30 | 2022-09-30 | 蚂蚁区块链科技(上海)有限公司 | 状态数据的提交方法、节点和区块链系统 |
-
2022
- 2022-05-30 CN CN202210602795.8A patent/CN115129727A/zh active Pending
- 2022-11-30 WO PCT/CN2022/135279 patent/WO2023231338A1/zh unknown
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023231338A1 (zh) * | 2022-05-30 | 2023-12-07 | 蚂蚁区块链科技(上海)有限公司 | 状态数据的提交方法、节点和区块链系统 |
CN116308772A (zh) * | 2022-12-16 | 2023-06-23 | 蚂蚁区块链科技(上海)有限公司 | 交易分发方法、节点和区块链系统 |
CN116308772B (zh) * | 2022-12-16 | 2023-10-13 | 蚂蚁区块链科技(上海)有限公司 | 交易分发方法、节点和区块链系统 |
WO2024179085A1 (zh) * | 2023-02-28 | 2024-09-06 | 蚂蚁区块链科技(上海)有限公司 | 区块链中的交易分组方法和区块链节点 |
Also Published As
Publication number | Publication date |
---|---|
WO2023231338A1 (zh) | 2023-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115129727A (zh) | 状态数据的提交方法、节点和区块链系统 | |
US9460185B2 (en) | Storage device selection for database partition replicas | |
US9489443B1 (en) | Scheduling of splits and moves of database partitions | |
Armbrust et al. | Scads: Scale-independent storage for social computing applications | |
WO2023231339A1 (zh) | 区块链系统中的交易执行方法、节点和区块链系统 | |
CN109241032B (zh) | 账本数据库组件、运行方法及存储介质 | |
Esteves et al. | Quality-of-service for consistency of data geo-replication in cloud computing | |
CN114827165B (zh) | 对多个交易进行分组的方法和区块链节点 | |
Didona et al. | Causal consistency and latency optimality: Friend or foe? | |
US10747739B1 (en) | Implicit checkpoint for generating a secondary index of a table | |
CN110704438B (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
Labouseur et al. | Scalable and Robust Management of Dynamic Graph Data. | |
CN104298598A (zh) | 分布式环境下rdfs本体的调试方法 | |
WO2024021411A1 (zh) | 区块链系统中的交易冲突检测方法及区块链节点 | |
Dubois et al. | The weakest failure detector for eventual consistency | |
Le et al. | Dynastar: Optimized dynamic partitioning for scalable state machine replication | |
CN114936256A (zh) | 在区块链中执行交易的方法和区块链节点 | |
CN114547203A (zh) | 执行交易的方法、区块链、主节点和从节点 | |
Vilaça et al. | A correlation-aware data placement strategy for key-value stores | |
CN107832121B (zh) | 一种应用于分布式串行长事务的并发控制方法 | |
US11327937B1 (en) | Determining indexing progress for a table in a distributed data store | |
CN116248287A (zh) | 状态数据的提交方法、节点和区块链系统 | |
Gangeshwari et al. | Hpcloud: A novel fault tolerant architectural model for hierarchical mapreduce | |
Bo et al. | A frequent pattern parallel mining algorithm based on distributed sliding window. | |
Vilaça et al. | On the expressiveness and trade-offs of large scale tuple stores |
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 |