CN114936093A - 区块链***中的交易执行方法、节点和区块链*** - Google Patents
区块链***中的交易执行方法、节点和区块链*** Download PDFInfo
- Publication number
- CN114936093A CN114936093A CN202210602801.XA CN202210602801A CN114936093A CN 114936093 A CN114936093 A CN 114936093A CN 202210602801 A CN202210602801 A CN 202210602801A CN 114936093 A CN114936093 A CN 114936093A
- Authority
- CN
- China
- Prior art keywords
- transaction
- node
- execution
- resource consumption
- consumption information
- 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
- 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
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- 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
-
- 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/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- 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/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- 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/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Software Systems (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
一种区块链***中的交易执行方法、节点和区块链***。区块链***中的第一节点可以在其TEE中预执行第一交易,获得资源消费信息和基于该资源消费信息生成的预执行读写集;并在其TEE中基于该资源消费信息生成可信数据后,向区块链***中的第二节点发送该可信数据和预执行读写集。第二节点可以基于来自第一节点的资源消费信息执行第一交易,获得第一交易的执行读写集;并根据执行读写集第一交易的预执行读写集验证该第一节点在预执行第一交易的过程中是否作恶,如果否则将执行读写集的执行写集作为第一交易的状态数据。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种区块链***中的交易执行方法、节点和区块链***。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链***中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
发明内容
本发明的目的在于提供一种区块链***中的交易执行方法、节点和区块链***。
第一方面,提供了一种区块链***中的交易执行方法,所述区块链***包括第一节点和第二节点,所述方法由所述第一节点执行。方法包括:在可信执行环境(trustedexecution environment,TEE)中预执行第一交易,获得资源消费信息和基于所述资源消费信息生成的预执行读写集;在所述TEE中基于所述资源消费信息生成可信数据;向所述第二节点发送所述可信数据和所述预执行读写集。
第二方面,提供了一种一种区块链***中的交易执行方法,所述区块链***包括第一节点和第二节点,所述方法由所述第一节点执行。方法包括:从所述第一节点接收可信数据和第一交易的预执行读写集,所述可信数据由所述第一节点在其TEE中基于第一交易的资源消费信息生成,所述资源消费信息和所述预执行读写及由所述第一节点在其TEE中对所述第一交易进行预执行以获得;基于所述资源消费信息执行所述第一交易,获得所述第一交易的执行读写集;根据所述执行读写集和所述预执行读写集确定所述第一节点在预执行所述第一交易的过程中是否作恶,如果否则将所述执行读写集的执行写集作为所述第一交易的状态数据。
第三方面,提供了一种区块链***中的第一节点,所述区块链***中还包括第二节点。所述第一节点包括:预执行进程,部署在所述第一节点的TEE中,配置为预执行第一交易,获得资源消费信息和基于所述资源消费信息生成的预执行读写集;以及配置为在所述TEE中基于所述资源消费信息生成可信数据;网络进程,配置为向所述第二节点发送所述可信数据和所述预执行读写集。
第四方面,提供了一种区块链***中的第二节点,所述区块链***中还包括第一节点。所述第二节点包括:网络进程,配置为从所述第一节点接收可信数据和第一交易的预执行读写集,所述可信数据由所述第一节点在其TEE中基于第一交易的资源消费信息生成,所述资源消费信息和所述预执行读写及由所述第一节点在其TEE中对所述第一交易进行预执行以获得;计算进程,配置为基于所述资源消费信息执行所述第一交易,获得所述第一交易的执行读写集;以及,配置为根据所述执行读写集和所述预执行读写集确定所述第一节点在预执行所述第一交易的过程中是否作恶,如果否则将所述执行读写集的执行写集作为所述第一交易的状态数据。
第五方面,提供了一种区块链***,包括第一节点和第二节点。其中:所述第一节点用于在可信执行环境TEE中预执行第一交易,获得资源消费信息和基于所述资源消费信息生成的预执行读写集;在所述TEE中基于所述资源消费信息生成可信数据;并向所述第二节点发送所述可信数据和所述预执行读写集;所述第二节点用于基于所述资源消费信息执行所述第一交易,获得所述第一交易的执行读写集;根据所述执行读写集和所述预执行读写集确定所述第一节点在预执行所述第一交易的过程中是否作恶,如果否则将所述执行读写集的执行写集作为所述第一交易的状态数据。
上述实施例中,第二节点在执行交易的过程中,无需再次计算该交易的资源消费信息,而是使用来自第一节点的该交易的资源消费信息来执行该交易,即使用来自第一节点的该交易的资源消费信息生成该交易的执行写集。当第二节点确定该交易的执行读写集和预执行读写集确定出节点n1在执行该交易的过程中没有作恶的情况下,即可将该交易的执行写集作为该交易的状态数据而完成对该交易的执行。如此,第二节点因无需再次计算交易的资源消费信息而可以更为快速的完成对交易的执行。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例中示例性提供的区块链***的示意图;
图2为本说明书实施例中示例性提供的区块链数据存储的结构示意图;
图3为本说明书实施例中示例性提供的区块链***中任意两个节点的结构示意图;
图4为本说明书实施例中提供的一种交易执行方法的流程图;
图5为本说明书实施例中提供的一种区块链节点的结构示意图之一;
图6为本说明书实施例中提供的一种区块链节点的结构示意图之二。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
图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通过其网络进程接收的来自节点n2的交易,可以由其缓存进程缓存加入到待处理的交易队列中。由此节点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个交易分组中的多个交易。然而交易的执行需要消费节点的计算资源,尤其对于请求调用智能合约的合约调用交易而言,节点在执行该交易的过程中可能需要执行大量指令,因此通常需要在执行交易的过程中基于该交易消费的指令或者该交易的数据量来统计该交易的资源消费信息,进而基于资源消费信息完成对该交易的执行,例如修改发起该交易的外部账户的balance字段以实现修改其持有的数字资源的数量。执行交易的过程中计算该交易的资源消费信息,无疑会额外增加该交易的执行时间,导致计算进程无法快速完成对交易的执行。
图4为本说明书实施例中提供的一种区块链***中的交易执行方法的流程图。该方法具体涉及区块链***中任意的第一节点(例如作为主节点的节点n1)和第二节点(例如作为从节点的节点n2),第一节点和第二节点均可各自实现为任何具有计算/处理能力的装置、平台、设备或设备集群。下文中将主要以节点n1与节点n2相协作以完成对交易的执行为例,详细描述区块链***中的交易执行过程。如图4所示,该方法可以包括但不限于如下步骤41~步骤49。
步骤41,节点n1在其TEE中预执行第一交易,获得资源消费信息以及基于资源消费信息生成的预执行读写集。
前述第一交易例如为节点n1通过其接入进程或网络进程接收的任一交易。第一交易的资源消费信息是节点n1对第一交易进行预执行的过程中基于该第一交易的数据量计算得到,或者是节点n1对第一交易进行预执行的过程中基于该第一交易消费的指令计算得到的。
请继续参见图3,节点n1的预执行进程例如可以运行在其TEE中,其接入进程以及网络进程等其它进程可以运行在其TEE的外部。运行在TEE中的预执行进程可以调用TEE外部的缓存进程,实现从待处理的交易队列中按顺序读取其缓存的交易,并对其读取的交易进行预执行以得到该交易所需消费的数字资源的数量(即资源消费信息)和基于该资源消费信息生成的预执行读写集。预执行读写集的预执行写集中通常可以包括基于该资源消费计算的某个状态参数的状态值,该状态参数例如为发起交易的外部账户的balance。
对于由外部账户发起的用于调用智能合约的合约调用交易而言,例如由外部账户A1发起的用于调用智能合约C1的前述交易Tx1而言,其预执行读集中包括外部账户A1的balace的状态值v11,还包括智能合约C1中某个合约参数的状态值v21。位于节点n1的TEE中的预执行进程对交易Tx1进行预执行的过程中,例如该预执行进程通过虚拟机执行智能合约C1的过程中,将会获得将要写入的由k2表征的合约参数的状态值v22;此外该虚拟机还会计算其因执行前述智能合约C1而消费的每条指令各自需要消费的数字资源的数量,进而在完成执行智能合约C1后将会获得因执行智能合约C1而消费的数字资源的数量,即获得交易Tx1的资源消费信息gas1。最后,位于TTE中的预执行进程还可以基于gas1和预执行读集中k1的状态值v11,计算出预执行写集中期望写入的k1的状态值v12,即计算出外部账户A1的balance的状态值v12。
对于并非用于调用智能合约的交易而言,例如对于由外部账户A1发起的指向外部账户A3的用于实现转账功能的前述交易Tx3而言,预执行进程对交易Tx3进行预执行的过程中,可以基于交易Tx3的数据量计算交易Tx3的资源消费信息gas2。进而,位于TEE中的预执行进程可以基于gas2和Tx3实际转移的数字资源的数量计算外部账户A1的balance的状态值v13,具体例如读取外部账户A1的balance字段的当前值v12后,在v12的基础上减去gas2和外部账户A1通过交易Tx3向外部账户A2实际转移的数字资源的数量,获得外部账户A1的balance的状态值v13。
步骤43,节点n1在其TEE中基于资源消费信息生成可信数据。可信数据是通过对资源消费信息进行加密而得到的密文,或者可信数据包括资源消费信息和对资源消费信息的签名。
位于TEE中的预执行进程在完成对第一交易的预执行,并且生成第一交易的可信数据后,还可以将第一交易、第一交易的预执行读写集以及可信数据返回给缓存进程以缓存到待共识的交易队列中。位于TEE中的预执行进程可以按顺序从缓存进程缓存的待处理的交易队列中依次读取交易并对其进行预执行,因而如前所述的是,缓存进程还可以基于其缓存的待处理的交易队列,对应缓存由位于TEE中的预执行进程预执行的多个交易的预执行顺序。
步骤45,节点n1向节点n2发送可信数据以及预执行读写集。
节点n1可以在其与节点n2对由节点n1生成并发送至节点n2的共识提议进行共识的过程中向节点n2发送第一交易的可信数据和预执行读写集。例如节点n1的共识进程可以针对缓存于待共识的交易队列中的多个交易生成的共识提议,该共识提议中可以包括该多个交易各自的可信数据、该多个交易各自的预执行读写集以及该多个交易的预执行顺序/共识顺序,此外该共识提议中还可以包括该多个交易或者该多个交易各自的指示信息(例如该多个交易各自的哈希值)。其中如前所述的是前述第一交易具体可以是前述共识提议所包括或指示的多个交易中的任一交易,因而节点n2可以从来自节点n1的共识提议中对应获得前述第一交易的可信数据以及其预执行读写集。
当可信数据是通过对资源消费信息进行加密而得到的密文时,节点n2可以对可信数据进行解密以获得第一交易的资源消费信息,进而基于该资源消费信息执行后续步骤47。当可信数据包括资源消费信息以及节点n1在其TEE中对资源消费信息的签名时,节点n2还可以对可信数据中的签名进行验证,在签名通过验证的情况下才继续执行后续步骤47。此外需要特别说明的是,节点n2也可以具有TEE,与之相应的是节点n2可以在其TEE中对可信数据进行处理,例如在TEE中对可信数据进行解密或者对可信数据中的签名进行验证。
步骤47,节点n2基于资源消费信息执行第一交易,获得执行读写集。
对于由节点n1发送至节点n2的共识提议所包括或指示的多个交易,节点n2例如可以通过其控制进程基于该多个交易各自的预执行读写集将该多个交易划分为M个交易分组,其中M的取值不小于节点n2运行的计算进程的数量N,而且该多个交易中的部分交易的预执行读写集还可能分别涉及与一个或多个智能合约相关的若干合约参数。与之对应的是,节点n2可以确定M个交易分组各自对应的计算进程,进而例如通过其控制进程将M个交易分组对应分发至其运行的N个计算进程;对于M个交易分组中的任意两个交易分组,如果该任意两个分组中的任意两个交易涉及相同的智能合约,例如任意两个交易分组中的任意两个交易请求调用相同的智能合约,则该任意两个交易分组需要被控制进程发送至相同的计算进程,以便节点n2的N个计算进程可以并行提交其各自在完成执行其接收的各个交易分组中的交易后获得的状态数据,从而加速对包含该多个交易的区块的生成。例如请继续参见前文示例的交易Tx1~交易Tx5的分组情况,由于交易分组1和交易分组2中的交易Tx1和交易Tx2分别涉及智能合约C1中不同合约参数(k2和k4各自表征的合约参数),节点n2的控制进程例如可以将交易分组1和交易分组2等两个交易分组发送至节点n2的计算进程1,将交易分组3发送至计算进程2,将交易分组4发送至计算进程3,使得计算进程1~计算进程3并行执行其各自接收的交易分组中的交易,并且并行提交其各自在完成执行其接收的各个交易分组中的交易后获得的状态数据。
计算进程可以串行执行其接收的各个交易分组中的交易,例如计算进程1可以通过单个工作线程依次执行其接收的交易分组1和交易分组2中的交易Tx1、交易Tx2和交易Tx3。或者计算进程可以通过多线程并发的执行其接收的各个交易分组中的交易,以便更为快速的完成执行其接收的各个交易分组中的交易;例如计算进程1可以并发的运行工作线程1和工作线程2,通过工作线程1依次执行其接收的交易分组1中的交易Tx1和交易Tx2,通过工作线程2执行其接收的交易分组2中的交易Tx3。需要特别说明的是,计算进程可通过相同的存储对象来搜集其通过执行其接收的各个交易分组中的交易以获得的状态数据;例如计算进程1可以通过相同的存储对象搜集到其执行交易Tx1~交易Tx3所获得的执行读写集,其中交易Tx1~交易Tx3的执行写集可能被作为计算进程1执行交易Tx1~交易Tx3以得到的状态数据。
节点n2的任意计算进程在执行其接收的个交易分组中的任一交易(即第一交易)的过程中,无需再次计算该交易的资源消费信息,而是可以直接使用来自节点n1的该交易的资源消费信息来执行该交易,获得该交易的执行读写集,更具体地说是在执行该交易的过程中使用来自节点n1的该交易的资源消费信息生成该交易的执行写集。
对于请求调用智能合约的合约调用交易而言,例如对于前述示例的交易Tx1而言,节点n2的计算进程1通过其虚拟机执行交易Tx1请求调用的智能合约C1的过程中,仅需要读取k2的状态值v21并对应获得k2的状态值v22,无需计算其因执行智能合约C1而消费的每条指令各自需要消费的数字资源的数量,即无需基于因执行智能合约C1而消费的指令计算交易Tx1的资源消费信息gas1;计算进程1可以直接使用来自节点n1的资源消费信息gas1,与其读取的k1的状态值v11计算出交易Tx1的执行写集中期望写入的k1的状态值v12,即计算出外部账户A1的balance的状态值v12,进而生成包含键值对k1-v12和键值对k2-v22的执行写集。执行写集中键值对k2-v22可能被作为计算进程1执行交易Tx1以获得的智能合约C1/合约账户B1的合约状态数据,而键值对k1-v12可能被作为计算进程1执行交易Tx1以获得的世界状态数据。需要说明的是,交易Tx1的状态数据可能供计算进程1中在后执行的其它交易使用,例如在后执行的交易Tx3读取的k1的状态值应当为v12而并非v11。
对于该多个计算进程中的任一计算进程而言,该计算进程中用于执行智能合约的虚拟机可以具有按照用户的需求选择是否开启计算资源消费信息的功能,如果选择开启该功能则该虚拟机在具体执行某个交易的过程中,可以基于因执行该交易而消费的指令计算该交易的资源消费信息。由于节点n2基于来自节点n1的可信数据获得第一交易的资源消费信息,因而用于执行第一交易的计算进程可以选择关闭该功能,以便更为快速的完成对第一交易的执行。
对于并非请求调用智能合约的交易而言,例如对于由外部账户A1发起的指向外部账户A3的用于实现转账的前述交易Tx3而言,节点n2的计算进程1无需基于交易Tx3的数据量计算交易Tx3的资源消费信息gas2;计算进程1可以基于读取的k1的状态值v12,以及来自节点n1的交易Tx3的资源消费信息gas2和Tx3实际转移的数字资源的数量,计算外部账户A1的balance的状态值v13,具体例如读取外部账户A1的balance字段的状态值v12后,在状态值v12的基础上减去gas2和外部账户A1通过交易Tx3向外部账户A2实际转移的数字资源的数量,获得外部账户A1的balance的状态值v13,即获得包含键值对k1-v13的执行写集,而包含键值对k1-v13的执行写集可能被作为交易Tx3的状态数据。
步骤49,节点n2根据执行读写集和预执行读写集验证节点n1在预执行第一交易的过程中是否作恶,如果否则将执行读写集的执行写集作为第一交易的状态数据。
节点n2的计算进程在完成执行其接收的各个交易分组中的任一交易(即第一交易)之后,可以对应获得该第一交易的执行读写集,进而还可以确定该第一交易的执行读写集与该第一交易的预执行读写集是否一致。当执行读写集与其预执行读写集一致的情况下,该计算进程可以将该第一交易的执行写集作为该第一交易的状态数据,以便在后续对该状态数据进行提交以完成对该第一交易的执行。特别需要说明的是,如果第一交易的执行读写集与其预执行读写集不一致,则说明节点n1在执行第一交的过程中可能作恶,例如在其TEE中预执行第一交易时,向TEE提供了错误的状态数据;此时可以通过相应的机制触发更换区块链***的主节点,进而通过与前述相似的过程重新发起对包含该第一交易的前述多个交易的执行。
此外由于涉及相同的智能合约的交易由相同的计算进程执行,则N个计算进程各自获得的状态数据中不会涉及相同智能合约/合约账户的合约状态数据,因而节点n2的N个计算进程可以互不影响的并行提交其各自获得的状态数据。更具体地,如果计算进程获得的状态数据仅包括与状态树相关的世界状态数据,则其可以直接提交其获得的世界状态数据;如果计算进程获得的状态数据同时包含世界状态数据和涉及至少一个智能合约的合约状态数据,则该计算进程需要先提交其获得的至少一个智能合约的合约状态数据,例如将其获得的合约状态数据发送至存储进程,由存储进程对应更新该至少一个智能合约的合约状态树(即前述存储树),获得该至少一个智能合约各自的存储根;进而合并提交至少一个智能合约各自的存储根以及该计算进程获得的世界状态数据至存储进程,使存储进程对应更新状态树中的状态参数。
节点n2的N个计算进程均完成提交其各自获得的状态数据到存储进程后,还可以由控制进程对存储进程进行调用来对其更新的状态树和各个存储树进行提交操作,获得用于生成相应区块的状态根,进而由控制进程基于该状态根和前述多个交易生成相应区块。
前述各个方法实施例中,节点n2在执行交易的过程中,无需再次计算该交易的资源消费信息,而是使用来自节点n1的该交易的资源消费信息来执行该交易,即使用来自节点n1的该交易的资源消费信息生成该交易的执行写集。当节点n2确定该交易的执行读写集和预执行读写集确定出节点n1在执行该交易的过程中没有作恶的情况下,即可将该交易的执行写集作为该交易的状态数据而完成对该交易的执行。如此,节点n2因无需再次计算交易的资源消费信息而可以更为快速的完成对交易的执行。
与前述方法实施例基于相同的构思,本说明书实施例中还提供了一种区块链***中的第一节点,所述区块链***中还包括第二节点。如图5所示,所述第一节点包括:预执行进程52,部署在所述第一节点的TEE中,配置为预执行第一交易,获得资源消费信息和基于所述资源消费信息生成的预执行读写集;以及配置为在所述TEE中基于所述资源消费信息生成可信数据;网络进程54,配置为向所述第二节点发送所述可信数据和所述预执行读写集。
与前述方法实施例基于相同的构思,本说明书实施例中还提供了一种区块链***中的第二节点,所述区块链***中还包括第一节点。如图6所示,所述第二节点包括:网络进程62,配置为从所述第一节点接收可信数据和第一交易的预执行读写集,所述可信数据由所述第一节点在其TEE中基于第一交易的资源消费信息生成,所述资源消费信息和所述预执行读写及由所述第一节点在其TEE中对所述第一交易进行预执行以获得;计算进程64,配置为基于所述资源消费信息执行所述第一交易,获得所述第一交易的执行读写集;以及,配置为根据所述执行读写集和所述预执行读写集确定所述第一节点在预执行所述第一交易的过程中是否作恶,如果否则将所述执行读写集的执行写集作为所述第一交易的状态数据。
与前述方法实施例基于相同的构思,本说明书实施例中还提供了一种区块链***,所述区块链***包括第一节点和第二节点,所述第一节点和所述第二节点是所述区块链***中的任意两个区块链节点。其中:所述第一节点用于在可信执行环境TEE中预执行第一交易,获得资源消费信息和基于所述资源消费信息生成的预执行读写集;在所述TEE中基于所述资源消费信息生成可信数据;并向所述第二节点发送所述可信数据和所述预执行读写集;所述第二节点用于基于所述资源消费信息执行所述第一交易,获得所述第一交易的执行读写集;根据所述执行读写集和所述预执行读写集确定所述第一节点在预执行所述第一交易的过程中是否作恶,如果否则将所述执行读写集的执行写集作为所述第一交易的状态数据。
在一种可能的实施方式中,所述第一交易用于调用智能合约;所述第一节点用于在所述TEE中基于所述第一交易执行所述智能合约,获得所述资源消费信息。
在一种可能的实施方式中,所述资源消费信息基于所述第一交易的数据量计算得到。
在一种可能的实施方式中,所述可信数据通过对所述资源消费信息进行加密而得到;所述第二节点还用于对所述可信数据进行解密以获得所述资源消费信息。
在一种可能的实施方式中,所述可信数据包括所述资源消费信息以及与所述资源消费信息对应的签名;所述第二节点还用于对所述签名进行验证。
在一种可能的实施方式中,所述第一交易是由所述第一节点发送至所述第二节点的共识提议所包括或指示的多个交易中的任一交易;所述第二节点还用于根据所述多个交易各自的预执行读写集将所述多个交易划分为M个交易分组,并确定M个所述交易分组各自对应的计算进程。所述第二节点具体用于通过所述计算进程基于其对应的各个交易分组中的每个交易各自的资源消费信息,执行其对应的各个交易分组中的每个交易,获得其对应的各个交易分组中的每个交易各自的执行读写集。
在一种可能的实施方式中,所述可信数据和所述预执行读写集位于所述第一节点向所述第二节点发送的共识提议中,所述共识提议中还包括所述第一交易或用于指示所述第一交易的指示信息。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本发明是参照根据本发明实施例的方法、装置(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、***或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (21)
1.一种区块链***中的交易执行方法,所述区块链***包括第一节点和第二节点,所述方法由所述第一节点执行,所述方法包括:
在可信执行环境TEE中预执行第一交易,获得资源消费信息和基于所述资源消费信息生成的预执行读写集;
在所述TEE中基于所述资源消费信息生成可信数据;
向所述第二节点发送所述可信数据和所述预执行读写集。
2.根据权利要求1所述的方法,所述第一交易用于调用智能合约;所述在可信执行环境TEE中预执行第一交易,包括:在所述TEE中基于所述第一交易执行所述智能合约,获得所述资源消费信息。
3.根据权利要求1所述的方法,所述资源消费信息基于所述第一交易的数据量计算得到。
4.根据权利要求1所述的方法,所述可信数据通过对所述资源消费信息进行加密而得到。
5.根据权利要求1所述的方法,所述可信数据包括所述资源消费信息以及与所述资源消费信息对应的签名。
6.根据权利要求1-5中任一项所述的方法,所述可信数据和所述预执行读写集位于所述第一节点向所述第二节点发送的共识提议中,所述共识提议中还包括所述第一交易或用于指示所述第一交易的指示信息。
7.一种区块链***中的交易执行方法,所述区块链***包括第一节点和第二节点,所述方法由所述第一节点执行,所述方法包括:
从所述第一节点接收可信数据和第一交易的预执行读写集,所述可信数据由所述第一节点在其TEE中基于第一交易的资源消费信息生成,所述资源消费信息和所述预执行读写及由所述第一节点在其TEE中对所述第一交易进行预执行以获得;
基于所述资源消费信息执行所述第一交易,获得所述第一交易的执行读写集;
根据所述执行读写集和所述预执行读写集确定所述第一节点在预执行所述第一交易的过程中是否作恶,如果否则将所述执行读写集的执行写集作为所述第一交易的状态数据。
8.根据权利要求7所述的方法,所述资源消费信息基于所述第一交易的数据量计算得到。
9.根据权利要求7所述的方法,所述可信数据通过对所述资源消费信息进行加密而得到;所述方法还包括:对所述可信数据进行解密以获得所述资源消费信息。
10.根据权利要求7所述的方法,所述可信数据包括所述资源消费信息以及与所述资源消费信息对应的签名;所述方法还包括:对所述签名进行验证。
11.根据权利要求7-10中任一项所述的方法,所述第一交易是来自所述第一节点的共识提议所包括或指示的多个交易中的任一交易;所述方法还包括:根据所述多个交易各自的预执行读写集将所述多个交易划分为M个交易分组,并确定M个所述交易分组各自对应的计算进程;
所述基于所述资源消费信息执行所述第一交易,获得所述第一交易的执行读写集,具体包括:通过所述计算进程基于其对应的各个交易分组中的每个交易各自的资源消费信息,执行其对应的各个交易分组中的每个交易,获得其对应的各个交易分组中的每个交易各自的执行读写集。
12.根据权利要求7-10中任一项所述的方法,所述可信数据和所述预执行读写集位于所述第一节点向所述第二节点发送的共识提议中,所述共识提议中还包括所述第一交易或用于指示所述第一交易的指示信息。
13.一种区块链***中的第一节点,所述区块链***中还包括第二节点,所述第一节点包括:
预执行进程,部署在所述第一节点的TEE中,配置为预执行第一交易,获得资源消费信息和基于所述资源消费信息生成的预执行读写集;以及配置为在所述TEE中基于所述资源消费信息生成可信数据;
网络进程,配置为向所述第二节点发送所述可信数据和所述预执行读写集。
14.一种区块链***中的第二节点,所述区块链***中还包括第一节点,所述第二节点包括:
网络进程,配置为从所述第一节点接收可信数据和第一交易的预执行读写集,所述可信数据由所述第一节点在其TEE中基于第一交易的资源消费信息生成,所述资源消费信息和所述预执行读写及由所述第一节点在其TEE中对所述第一交易进行预执行以获得;
计算进程,配置为基于所述资源消费信息执行所述第一交易,获得所述第一交易的执行读写集;以及,配置为根据所述执行读写集和所述预执行读写集确定所述第一节点在预执行所述第一交易的过程中是否作恶,如果否则将所述执行读写集的执行写集作为所述第一交易的状态数据。
15.一种区块链***,包括第一节点和第二节点,其中:
所述第一节点用于在可信执行环境TEE中预执行第一交易,获得资源消费信息和基于所述资源消费信息生成的预执行读写集;在所述TEE中基于所述资源消费信息生成可信数据;并向所述第二节点发送所述可信数据和所述预执行读写集;
所述第二节点用于基于所述资源消费信息执行所述第一交易,获得所述第一交易的执行读写集;根据所述执行读写集和所述预执行读写集确定所述第一节点在预执行所述第一交易的过程中是否作恶,如果否则将所述执行读写集的执行写集作为所述第一交易的状态数据。
16.根据权利要求15所述的区块链***,所述第一交易用于调用智能合约;所述第一节点用于在所述TEE中基于所述第一交易执行所述智能合约,获得所述资源消费信息。
17.根据权利要求15所述的区块链***,所述资源消费信息基于所述第一交易的数据量计算得到。
18.根据权利要求15所述的区块链***,所述可信数据通过对所述资源消费信息进行加密而得到;所述第二节点还用于对所述可信数据进行解密以获得所述资源消费信息。
19.根据权利要求15所述的区块链***,所述可信数据包括所述资源消费信息以及与所述资源消费信息对应的签名;所述第二节点还用于对所述签名进行验证。
20.根据权利要求15-19中任一项所述的区块链***,所述第一交易是由所述第一节点发送至所述第二节点的共识提议所包括或指示的多个交易中的任一交易;所述第二节点还用于根据所述多个交易各自的预执行读写集将所述多个交易划分为M个交易分组,并确定M个所述交易分组各自对应的计算进程;
所述第二节点具体用于通过所述计算进程基于其对应的各个交易分组中的每个交易各自的资源消费信息,执行其对应的各个交易分组中的每个交易,获得其对应的各个交易分组中的每个交易各自的执行读写集。
21.根据权利要求15-19中任一项所述的区块链***,所述可信数据和所述预执行读写集位于所述第一节点向所述第二节点发送的共识提议中,所述共识提议中还包括所述第一交易或用于指示所述第一交易的指示信息。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210602801.XA CN114936093A (zh) | 2022-05-30 | 2022-05-30 | 区块链***中的交易执行方法、节点和区块链*** |
PCT/CN2022/135280 WO2023231339A1 (zh) | 2022-05-30 | 2022-11-30 | 区块链***中的交易执行方法、节点和区块链*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210602801.XA CN114936093A (zh) | 2022-05-30 | 2022-05-30 | 区块链***中的交易执行方法、节点和区块链*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114936093A true CN114936093A (zh) | 2022-08-23 |
Family
ID=82865735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210602801.XA Pending CN114936093A (zh) | 2022-05-30 | 2022-05-30 | 区块链***中的交易执行方法、节点和区块链*** |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114936093A (zh) |
WO (1) | WO2023231339A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117033146A (zh) * | 2023-10-10 | 2023-11-10 | 北京安天网络安全技术有限公司 | 指定共识合约执行进程的识别方法、装置、设备及介质 |
WO2023231339A1 (zh) * | 2022-05-30 | 2023-12-07 | 蚂蚁区块链科技(上海)有限公司 | 区块链***中的交易执行方法、节点和区块链*** |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109951546B (zh) * | 2019-03-15 | 2021-12-14 | 百度在线网络技术(北京)有限公司 | 基于智能合约的事务请求处理方法、装置、设备和介质 |
EP3846062A1 (en) * | 2020-01-06 | 2021-07-07 | Tata Consultancy Services Limited | Method and system for processing transactions in a blockchain network |
CN111565204B (zh) * | 2020-07-16 | 2021-06-18 | 百度在线网络技术(北京)有限公司 | 区块链运行方法、装置、设备及存储介质 |
CN112866412B (zh) * | 2020-08-31 | 2023-06-30 | 支付宝(杭州)信息技术有限公司 | 一种部署智能合约的方法、区块链节点和存储介质 |
CN113743940B (zh) * | 2021-11-04 | 2022-08-12 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行交易的方法、区块链、主节点和从节点 |
CN113743950B (zh) * | 2021-11-04 | 2022-08-09 | 支付宝(杭州)信息技术有限公司 | 在区块链***中执行交易的方法、节点和区块链*** |
CN114936093A (zh) * | 2022-05-30 | 2022-08-23 | 蚂蚁区块链科技(上海)有限公司 | 区块链***中的交易执行方法、节点和区块链*** |
-
2022
- 2022-05-30 CN CN202210602801.XA patent/CN114936093A/zh active Pending
- 2022-11-30 WO PCT/CN2022/135280 patent/WO2023231339A1/zh unknown
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023231339A1 (zh) * | 2022-05-30 | 2023-12-07 | 蚂蚁区块链科技(上海)有限公司 | 区块链***中的交易执行方法、节点和区块链*** |
CN117033146A (zh) * | 2023-10-10 | 2023-11-10 | 北京安天网络安全技术有限公司 | 指定共识合约执行进程的识别方法、装置、设备及介质 |
CN117033146B (zh) * | 2023-10-10 | 2023-12-08 | 北京安天网络安全技术有限公司 | 指定共识合约执行进程的识别方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023231339A1 (zh) | 2023-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2023231338A1 (zh) | 状态数据的提交方法、节点和区块链*** | |
US9460185B2 (en) | Storage device selection for database partition replicas | |
US20210157823A1 (en) | Blockchain Node and Transaction Method | |
CN114936093A (zh) | 区块链***中的交易执行方法、节点和区块链*** | |
Preguiça et al. | Conflict-free replicated data types (CRDTs) | |
CN109493223B (zh) | 一种记账方法及装置 | |
CN111338766A (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
CN109241032B (zh) | 账本数据库组件、运行方法及存储介质 | |
Esteves et al. | Quality-of-service for consistency of data geo-replication in cloud computing | |
Didona et al. | Causal consistency and latency optimality: Friend or foe? | |
US10275400B1 (en) | Systems and methods for forming a fault-tolerant federated distributed database | |
CN114827165B (zh) | 对多个交易进行分组的方法和区块链节点 | |
CN110704438B (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
Dubois et al. | The weakest failure detector for eventual consistency | |
WO2021139431A1 (zh) | 微服务的数据同步方法、装置、电子设备及存储介质 | |
CN104298598A (zh) | 分布式环境下rdfs本体的调试方法 | |
CN114936256A (zh) | 在区块链中执行交易的方法和区块链节点 | |
CN114547203A (zh) | 执行交易的方法、区块链、主节点和从节点 | |
Vilaça et al. | A correlation-aware data placement strategy for key-value stores | |
CN115146002A (zh) | 跨数据中心的数据同步方法及装置 | |
CN112035466A (zh) | 一种区块链查询外置索引开发框架 | |
Chihoub et al. | 10 ConsistencyManagement in Cloud Storage Systems | |
CN116248287A (zh) | 状态数据的提交方法、节点和区块链*** | |
Gangeshwari et al. | Hpcloud: A novel fault tolerant architectural model for hierarchical mapreduce | |
CN109032804B (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 |