CN112835700A - 基于智能合约的数据处理方法、装置、设备及存储介质 - Google Patents
基于智能合约的数据处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112835700A CN112835700A CN202110192640.7A CN202110192640A CN112835700A CN 112835700 A CN112835700 A CN 112835700A CN 202110192640 A CN202110192640 A CN 202110192640A CN 112835700 A CN112835700 A CN 112835700A
- Authority
- CN
- China
- Prior art keywords
- data
- statement
- asynchronous
- memory
- target
- 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
- 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/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
- G06Q20/367—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
-
- 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
- G06F16/273—Asynchronous replication or reconciliation
-
- 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
-
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24562—Pointer or reference processing 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/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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Finance (AREA)
- Computing Systems (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种基于智能合约的数据处理方法、装置、设备及可读存储介质,方法包括:获取用于执行交易业务的合约调用请求;获取智能合约中第一异步变量函数名对应的第一异步变量语句,根据第一异步变量语句查询与第一变量参数相关联的第一存储器与第二存储器;按照第一异步变量语句所指示的异步请求方式,分别向第一存储器和第二存储器发送数据读取请求,得到用于执行交易业务的第一读取数据和第二读取数据。采用本申请,可以提高智能合约的执行速度,减少运行时间。
Description
本申请为在2020年12月07日提交中国专利局、申请号为202011414124.6、申请名称为“基于智能合约的数据处理方法、装置、设备及存储介质”的中国专利申请的分案申请,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及计算机技术领域,尤其涉及一种智能合约的数据处理方法、装置、设备以及可读存储介质。
背景技术
区块链是一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链还可以进行数据加密传输、节点识别和安全访问,是一种先进的分布式基础架构。目前,因为区块链的不可篡改性与真实性,对于区块链的应用也越来越多。
在区块链***中,智能合约是一种区块链上的各个节点可以理解并执行的代码,可以执行任意逻辑并得到结果,智能合约可以理解为是可执行程序,而区块链可以理解为是提供程序运行环境的操作***。也就是说,智能合约的执行过程可以理解为是计算机程序的执行过程。
在分布式存储时,通过智能合约读取或存储数据时,对于每次读取或存储均需要串行进行,一个步骤执行完毕后才能进行下一个步骤,花费时间较多,使得智能合约的执行速度较慢。
发明内容
本申请实施例提供一种基于智能合约的数据处理方法、装置、设备以及可读存储介质,可以提高智能合约的执行速度,减少运行时间。
本申请实施例一方面提供了一种基于智能合约的数据处理方法,包括:
获取用于执行交易业务的合约调用请求;合约调用请求包括第一异步变量函数名和第一变量参数;
获取智能合约中第一异步变量函数名对应的第一异步变量语句,根据第一异步变量语句查询与第一变量参数相关联的第一存储器与第二存储器;第一存储器为第一读取数据所在的位置,第二存储器为第二读取数据所在的位置;
按照第一异步变量语句所指示的异步请求方式,分别向第一存储器和第二存储器发送数据读取请求,得到用于执行交易业务的第一读取数据和第二读取数据;用于发送至第二存储器的数据读取请求的发送时间戳,早于第一存储器返回第一读取数据的返回时间戳。
本申请实施例一方面提供了一种基于智能合约的数据处理装置,包括:
请求获取模块,用于获取用于执行交易业务的合约调用请求;合约调用请求包括第一异步变量函数名和第一变量参数;
查询模块,用于获取智能合约中第一异步变量函数名对应的第一异步变量语句,根据第一异步变量语句查询与第一变量参数相关联的第一存储器与第二存储器;第一存储器为第一读取数据所在的位置,第二存储器为第二读取数据所在的位置;
数据获取模块,用于按照第一异步变量语句所指示的异步请求方式,分别向第一存储器和第二存储器发送数据读取请求,得到用于执行交易业务的第一读取数据和第二读取数据;用于发送至第二存储器的数据读取请求的发送时间戳,早于第一存储器返回第一读取数据的返回时间戳。
其中,数据读取请求包括第一数据读取请求和第二数据读取请求;
数据获取模块包括:
请求发送单元,用于按照第一异步变量语句所指示的异步请求方式,在起始时间戳时向第一存储器发送第一数据读取请求;
请求发送单元,还用于在等待时间段中,向第二存储器发送第二数据读取请求;等待时间段是由起始时间戳与返回时间戳所组成的时间段;
数据接收单元,用于接收第一存储器基于第一数据读取请求所返回的第一读取数据,以及第二存储器基于第二数据读取请求所返回的第二读取数据。
其中,第一异步变量语句为智能合约中属于第一执行阶段的合约语句;第一读取数据与第二读取数据是在第一执行阶段中得到;
该装置还包括:
语句获取模块,用于当在第一执行阶段中成功读取到第一读取数据与第二读取数据时,获取第一执行阶段对应的至少两个指针程序语句;至少两个指针程序语句用于指示第一执行阶段的后继执行阶段;
语句确定模块,用于根据第一读取数据与第二读取数据,在至少两个指针程序语句中确定满足调度条件的目标指针程序语句;
阶段调度模块,用于通过智能合约调度至目标指针程序语句所指示的第二执行阶段;第二执行阶段属于第一执行阶段的后继执行阶段;
业务执行模块,用于在第二执行阶段中,根据第一存储器返回的第一读取数据,以及第二存储器返回的第二读取数据,执行交易业务。
其中,至少两个指针程序语句中每个指针程序语句分别关联不同的调度条件;
语句确定模块包括:
关系获取单元,用于获取第一读取数据与第二读取数据之间的数据关系;
条件确定单元,用于在每个指针程序语句分别关联的调度条件中,确定数据关系所满足的调度条件,将数据关系所满足的调度条件确定为目标调度条件;
语句确定单元,用于将与目标调度条件关联的指针程序语句,确定为目标指针程序语句。
其中,业务执行模块包括:
变量语句获取单元,用于获取智能合约中,第二执行阶段对应的第二异步变量语句;
参数获取单元,用于获取第二异步变量语句所预期读取的目标变量参数;
目标数据确定单元,用于根据目标变量参数、第一读取数据以及第二读取数据,确定目标读取数据;目标读取数据为在第二执行阶段中,用于执行交易业务所需的数据;
业务执行单元,用于根据目标读取数据,在第二执行阶段中执行交易业务。
其中,合约调用请求中还包括第二变量参数;
目标数据确定单元包括:
数据确定子单元,用于若目标变量参数包括第一变量参数,且目标变量参数中不包括第二变量参数,则将第一读取数据与第二读取数据确定为目标读取数据;
存储器查询子单元,用于若目标变量参数包括第一变量参数,且目标变量参数中包括第二变量参数,则根据第二异步变量语句查询与第二变量参数相关联的目标存储器;
数据确定子单元,还用于根据目标存储器、第一读取数据以及第二读取数据,确定目标读取数据。
其中,数据确定子单元,还用于按照第二异步变量语句所指示的异步请求方式,向目标存储器发送目标数据读取请求;
数据确定子单元,还用于接收目标存储器根据目标数据读取请求返回的第三读取数据,将第三读取数据、第一读取数据以及第二读取数据确定为目标读取数据。
其中,业务执行单元包括:
逻辑语句获取子单元,用于获取第二执行阶段对应的业务逻辑语句;
逻辑运算子单元,用于根据业务逻辑语句所指示的数据处理逻辑,对目标读取数据进行逻辑运算,得到交易业务对应的交易执行结果。
其中,该装置还包括:
区块生成模块,用于根据交易执行结果生成待添加至区块链的区块;区块链为智能合约所属的区块链;
区块添加模块,用于将区块广播至区块链上的共识节点,在共识节点通过对区块的共识时,将区块添加至区块链。
其中,该装置还包括:
部署请求获取模块,用于获取用户终端发送的合约部署请求;合约部署请求携带第一异步变量函数名、第二异步变量函数名、第一异步变量函数名对应的第一异步变量语句以及第二异步变量函数名对应的第二异步变量语句;
合约创建模块,用于根据第一异步变量函数名与第一执行阶段之间的映射关系,以及第二异步变量函数名与第二执行阶段之间的映射关系,创建智能合约;智能合约包括第一异步变量函数名、第二异步变量函数名、第一异步变量函数名对应的异步变量语句以及第二异步变量函数名对应的异步变量语句;第一执行阶段与第二执行阶段均为交易业务对应的执行阶段。
其中,合约部署请求还携带指针程序语句;
该装置还包括:
指针语句获取模块,用于根据合约部署请求,获取第一执行阶段对应的指针程序语句以及第二执行阶段对应的指针程序语句;
语句部署模块,用于将第一执行阶段对应的指针程序语句,以及第二执行阶段对应的指针程序语句部署于智能合约中。
本申请实施例一方面提供了一种计算机设备,包括:处理器和存储器;
存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,执行本申请实施例中的方法。
本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例中一方面提供的方法。
在本申请实施例中,在发起一个交易业务时,可以调用区块链上已经部署的智能合约。此时,区块链上的各个节点可以分别运行同一个智能合约,因为智能合约中部署有异步变量函数名与异步变量语句等支持智能合约异步执行的程序语句,所以在运行智能合约时,可以通过异步变量函数名与异步变量语句来支持智能合约进行异步运行。而异步运行即在读取数据时,发出对第一读取数据的数据读取请求后,不是先等待第一读取数据的读取结果再发出对第二读取数据的数据读取请求,而是在得到第一读取数据的读取结果前,继续发出对第二读取数据的数据读取请求。也就是说,对于智能合约的运行,从串行等待模式转换为异步并行模式,可以避免等待,减少运行时间,提高智能合约的执行速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构图;
图2是本申请实施例提供的一种场景示意图;
图3是本申请实施例提供的一种基于智能合约的数据处理方法的流程示意图;
图4-图5是本申请实施例提供的一种串行等待模式与异步并行模式的时间消耗对比示意图;
图6是本申请实施例提供的一种多阶段执行交易业务的示意图;
图7是本申请实施例提供的一种阶段执行的流程示意图;
图8是本申请实施例提供的一种基于智能合约的数据处理装置的结构示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,是本申请实施例提供的一种网络架构示意图。区块链是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链本质上是一个去中心化的数据库,该数据库中的每个节点均存储一条相同的区块链,区块链网络将节点区分为核心节点、数据节点以及轻节点,其中核心节点负责区块链全网的共识,也就是说核心节点为区块链网络中的共识节点。对于区块链网络中交易数据被写入账本的过程可以为,客户端发送交易数据至数据节点或轻节点,随后该交易数据以接力棒的方式在区块链网络中的数据节点或轻节点之间传递,直到共识节点收到该交易数据,共识节点再将该交易数据打包进区块,与其他共识节点之间进行共识,在共识通过后,将携带该交易数据的区块写入账本。
其中,可以理解的是,区块链***中可以包括有智能合约,该智能合约在区块链***中可以理解为是一种区块链各节点(包括共识节点)可以理解并执行的代码,可以执行任意逻辑并得到结果。用户可以通过客户端发起一个交易业务请求的方式,调用区块链上已经部署的智能合约,随后,区块链上的数据节点或轻节点可以将该交易业务请求发送至共识节点,而区块链上的各个共识节点可以分别运行该智能合约。应当理解,区块链中可以包括一个或多个智能合约,这些智能合约可以标识号(Identity document,ID)或名称来进行区分,而客户端发起的交易业务请求中,也可以携带智能合约的标识号或名称,以此指定区块链需要运行的智能合约。而若客户端所指定的智能合约为需要读取数据的合约,则各个共识节点会访问本地账本来进行数据的读取,最后各个共识节点会互相验证执行结果是否一致(也就是进行共识),若一致则可以将执行结果存入各自的本地账本中,并将执行结果返回至客户端。
如图1所示,该网络架构可以包括核心节点(共识节点)集群1000、数据节点或轻节点集群100以及用户终端(客户端)集群10,该核心节点集群1000可以包括至少两个核心节点,数据节点集群100可以包括至少两个数据节点。如图1所示,该核心节点集群1000可以包括核心节点1000a、核心节点1000b、…、核心节点1000n,该数据节点集群100具体可以包括数据节点100a、数据节点100b、…、数据节点100n,该用户终端集群10具体可以包括用户终端10a、用户终端10b、…、用户终端10n。
如图1所示,用户终端10a、用户终端10b、…、用户终端10n可以分别与数据节点100a、数据节点100b、…、数据节点100n进行网络连接,以便于用户终端可以通过该网络连接与数据节点进行数据交互;数据节点100a、数据节点100b、…、数据节点100n可以分别与核心节点1000a、核心节点1000b、…、核心节点1000n进行网络连接,以便于数据节点可以通过该网络连接与核心节点进行数据交互;数据节点100a、数据节点100b、…、数据节点100n互相连接,以便于数据节点之间可以进行数据交互,核心节点1000a、核心节点1000b、…、核心节点1000n互相连接,以便于核心节点之间可以进行数据交互。
以用户终端10a、数据节点100a以及核心节点1000a为例,数据节点100a可以接收到用户终端10a发送的交易业务请求(该交易业务请求中携带智能合约的ID或名称),随后,数据节点100a可以通过数据节点集群100将该交易业务请求发送至核心节点1000a;而核心节点1000a可以运行该智能合约,并通过该智能合约执行该交易业务,得到执行结果后,可以将该执行结果存储至内存池(如交易池)中,并根据该执行结果生成新的区块;随后,核心节点1000a可以根据区块链网络中其他核心节点(即共识节点)的节点标识,将上述新生成的区块分别发送给其所在的区块链网络中的其他核心节点,由其他核心节点对新生成的区块进行校验(即进行共识),并在完成校验后将上述新生成的区块添加至其存储的区块链中(也就是说,在共识通过后将执行结果存储至区块链中)。其中,区块链网络中的每个核心节点,均具有与其对应的节点标识,而且区块链网络中的每个核心节点均可以存储有区块链网络中其他核心节点的节点标识,以便后续根据其他核心节点的节点标识,将生成的区块广播至区块链网络中的其他核心节点,使得区块链网络中全部核心节点上存储的数据均一致。
对于用户终端发送交易业务请求至区块链,并通过核心节点运行智能合约得到执行结果的过程,本申请在智能合约中新增了可以支持智能合约异步并行运行的程序语句,应当理解,用户终端可以通过发起一个合约部署请求(例如,合约创建请求,合约修改请求)的方式,来创建或修改区块链***中指定智能合约的代码,也就是说,用户终端发送的合约部署请求中可以携带智能合约的ID或名称来指定智能合约,也可以携带用于创建或修改该智能合约的异步变量函数名以及异步变量语句等相关程序语句,在核心节点根据该合约部署请求将指定智能合约部署完成后,核心节点可以向用户终端返回合约部署完成结果,随后,用户可以通过用户终端向核心节点发起合约调用请求,由此可以调用该已被部署异步变量函数名以及异步变量语句等相关程序语句的智能合约,而该智能合约可以按照这些程序语句所指示的执行逻辑进行异步并行运行,由此可以提高智能合约的执行速度。
其中,应当理解,异步并行运行可以是指调用智能合约的一个合约代码后,无需等待结果即可继续进行下一个调用。本申请提供的方法为通过智能合约中的异步变量函数名以及异步变量语句,支持智能合约进行异步并行运行,以提高智能合约的执行速度。具体方法为,以核心节点1000a、数据节点100a以及用户终端10a为例,用户终端10a可以通过数据节点100a将用于执行交易业务的合约调用请求(交易业务请求)发送至核心节点1000a,其中,该合约调用请求中可以包括异步变量函数名、变量参数智能合约的ID等信息,而根据该智能合约的ID,可以调用对应的智能合约,根据该异步变量函数名与变量参数可以调用智能合约中被部署好的程序语句;也就是说,核心节点1000a可以调用该异步变量函数名对应的程序语句(例如,异步变量语句),以此可以异步并行执行的方式来执行该交易业务,并得到执行结果,在通过共识后可将该执行结果上链。其中,对于部署智能合约,以及核心节点调用该异步变量函数名与异步变量语句,进行异步并行执行的具体实现方式,可以参见后续图3所对应实施例中的描述。
可以理解的是,本发明实施例提供的方法可以由计算机设备执行,计算机设备包括但不限于终端或服务器。本发明实施例中的节点可以为计算机设备。
为便于理解,请参见图2,图2是本申请实施例提供的一种场景示意图。其中,如图2所示的用户终端A可以为上述图1所对应实施例中的用户终端集群10中的任一用户终端,如,该用户终端为10a;如图2所示的区块链节点可以为上述图1所对应实施例中的核心节点集群1000中的任一核心节点,如,该核心节点可以为核心节点1000b。
如图2所示,用户A通过用户终端A发起一笔转账交易业务(用户A转账5000元至用户B),用户A可以通过用户终端A选择区块链200中的智能合约(例如,选择智能合约A),也就是用户A可以选择区块链200中用于执行该转账交易业务的智能合约。应当理解,对于智能合约对该转账交易业务的执行逻辑可以为以下5个步骤:
1、在区块链中读取用户A的余额。
2、在区块链中读取用户B的余额。
3、做转账的逻辑判断,修改用户A与用户B的余额。
4、将用户A的最新余额写入区块链。
5、将用户B的最新余额写入区块链。
其中,对于每个步骤,智能合约是按照串行执行顺序进行执行,例如,对于步骤1,智能合约先发出对用户A的余额的读取请求,而在发出该对用户A的余额的读取请求后,智能合约就处于等待模式,直到读取到用户A的余额,智能合约才会执行步骤2即发出对用户B的余额的读取请求。应当理解,按照该串行执行顺序,会增加时间成本,降低智能合约的执行速度。而为提高智能合约的执行速度,可以将智能合约的执行分为多个执行阶段,每个阶段中可以包括多个步骤,从而可以使得多个步骤在一个执行阶段异步并行执行,减少每两个步骤之间的等待时间。
可以理解的是,将智能合约的执行分为多个阶段的合约代码,可以由用户编写,用户可以通过发起一个合约部署请求的方式,在智能合约中添加用于将智能合约进行异步并行执行的合约程序语句(合约代码),随后,调用该合约程序语句就可以支持智能合约以异步并行执行的方式来执行交易业务。
例如,用户编写的合约程序语句可以包括异步变量函数名、异步变量语句、指针程序语句、业务逻辑语句,而异步变量函数名可以包括异步变量函数名1、异步变量函数名2以及异步变量函数名3。其中,异步变量函数名1对应异步变量语句1,异步变量函数名2对应异步变量语句2,异步变量函数名3对应异步变量语句3;异步变量函数名1对应执行阶段1,该执行阶段1包括步骤1与步骤2(在区块链中读取用户A的余额,以及在区块链中读取用户B的余额);异步变量函数名2对应执行阶段2,该执行阶段2包括步骤3(做转账的逻辑判断,修改用户A与用户B的余额);而异步变量函数名对应执行阶段3,该执行阶段3包括步骤4与步骤5(将用户A的最新余额写入区块链,以及将用户B的最新余额写入区块链)。也就是说,当调用第一异步变量函数名时,智能合约可以通过异步变量语句1运行执行阶段1,即将步骤1与步骤2进行异步并行执行;当调用异步变量函数名2时,智能合约可以通过异步变量语句2运行执行阶段2,即执行步骤3;但调用异步变量函数名3时,智能合约可以通过异步变量语句3运行执行阶段3,即将步骤4与步骤5进行异步并行执行。
应当理解,用户编写的指针程序语句可以用于指示下一个要执行的执行阶段,指针程序语句可以包括指针程序语句1与指针程序语句2,指针程序语句1可以对应执行阶段1,该指针程序语句可以指向执行阶段2,用以指示在执行阶段1执行完毕后可对执行阶段2进行执行;而指针程序语句2可以指向执行阶段3,用以指示在执行阶段2执行完毕后可对执行阶段3进行执行。从而通过指针程序语句,可以使得智能合约A的执行顺序为执行阶段1—>执行阶段2—>执行阶段3。
其中,应当理解,编写用以支持智能合约进行异步并行运行的合约程序语句的用户可以为用户A,也可以为除用户A以外的其他用户。以下将以支持智能合约进行异步并行运行的合约程序语句为用户A编写为例,用户终端A可以生成根据用户A编写的合约程序语句生成合约部署请求(指定智能合约为智能合约A),并将该合约部署请求发送至区块链节点,区块链节点可以根据该合约部署请求在指定的智能合约中部署该用户A编写的异步变量函数名1、异步变量语句1、指针程序语句1、异步变量函数名2、异步变量语句2、指针程序语句2、异步变量函数名3、异步变量语句3以及业务逻辑语句,并在部署完成后将部署完成结果返回至用户终端A。
进一步地,用户终端A可以生成合约调用请求(指定智能合约为智能合约A),并将该合约调用请求发送至区块链节点,其中,该合约调用请求中可以包括异步变量函数名(例如,第一异步变量函数名)、智能合约A的ID以及变量参数;而区块链节点在接收到该合约调用请求后,可以通过智能合约A的ID调用已经部署有用户A编写的合约程序语句的智能合约A,通过该智能合约A,可以获取到执行阶段1的异步变量函数名1及其对应的异步变量语句1,根据该异步变量语句1可以查询到用于存储用户A的余额的存储器1,以及用于存储用户B的余额的存储器2;随后,区块链节点可以按照异步请求方式,在执行阶段1中异步并行执行步骤1与步骤2,即,区块链节点可以在第一时间(例如,9:00)向存储器1发出针对用户A余额的读取请求;随后,根据该异步请求方式,区块链节点可以无需等待存储器1返回查询结果,可以继续在第二时间(例如,9:01)向存储器2发出针对用户B余额的读取请求。
进一步地,当存储器1返回用户A的余额结果,且存储器2返回用户B的余额结果时,该执行阶段1执行完毕,区块链节点可以通过该执行阶段1中的指针程序语句1,调度至执行阶段2,并在执行阶段2中执行步骤3。在执行阶段2中,区块链节点可以通过用户A编写的业务逻辑语句,修改用户A的余额以及用户B的余额,并得到用户A的新的余额,以及用户B的新的余额。
进一步地,在执行阶段2执行完毕后,区块链节点可以通过指针程序语句2调度至执行阶段3,并在执行阶段3中异步并行执行步骤4与步骤5。即,区块链节点可以根据该用户A的新的余额生成区块2001,并将该区块2001添加至区块链200中,以完成将用户A的新的余额写入区块链200中;同理,区块链节点也可以根据该用户B的新的余额生成区块2002,并将该区块2002添加至区块链200中,以完成将用户B的新的余额写入区块链200中。随后,区块链节点可以将执行结果(转账成功)返回至用户终端A,用户A通过用户终端A查询自己的余额时,所呈现的余额结果为用户A的最新余额。
应当理解,本申请实施例通过将智能合约的代码执行分为多个执行阶段,每个执行阶段中的步骤可以进行异步并行执行,可以提高智能合约的执行速度,节约时间成本。
进一步地,请参见图3,图3是本申请实施例提供的一种基于智能合约的数据处理方法的流程示意图。其中,该方法可以由区块链节点(例如,上述图1所对应实施例中的核心节点)执行,也可以由区块链节点与用户终端(例如,上述图1所对应实施例中的用户终端)共同执行。以下将以本方法由区块链节点执行为例进行说明,其中,该基于智能合约的数据处理方法至少可以包括以下步骤S101-步骤S103:
步骤S101,获取用于执行交易业务的合约调用请求;合约调用请求包括第一异步变量函数名和第一变量参数。
本申请中,区块链节点可以为区块链中的核心节点,核心节点可以接收来自区块链中的数据节点或轻节点发送的交易请求(例如,合约部署请求与合约调用请求),而数据节点或轻节点可以接收来自用户终端发送的交易请求。其中,该交易请求可为用户终端根据用户发起的交易业务所生成的请求。
应当理解,用户可以通过用户终端发起合约部署请求,通过该合约部署请求用户可以在指定的智能合约中添加新的合约程序语句。其中,用户编写的合约程序语句(合约代码)可以包括第一异步变量函数名、第二异步变量函数名、第一异步变量函数名对应的第一异步变量语句,以及第二异步变量函数名对应的第二异步变量语句;随后,用户终端可以生成合约部署请求,并将携带该第一异步变量函数名、第二异步变量函数名、第一异步变量函数名对应的第一异步变量语句、第二异步变量函数名对应的第二异步变量语句的合约部署请求发送至数据节点或轻节点,而数据节点或轻节点会将该合约部署请求发送至区块链节点,区块链节点可以根据该合约部署请求部署智能合约。
应当理解,用户编写的合约程序语句均为支持智能合约进行多阶段异步并行运行的合约代码,其中,该第一异步变量函数名可以对应于第一执行阶段,第二异步变量函数名可以对应于第二执行阶段,则在部署完成后,通过调用第一异步变量函数名与第二异步变量函数名,可以将该用户发起的交易业务分为多个执行阶段(例如,第一执行阶段与第二执行阶段)执行,且通过每个执行阶段中对应的异步变量语句,可以支持智能合约在每个执行阶段中进行异步并行执行。也就是说,每个执行阶段中可以包括多个交易业务的执行步骤,这些步骤可以在执行阶段中进行异步并行运行。
应当理解,用户可以指定区块链中的智能合约来部署这些用户编写的合约程序语句,例如,用户可以通过指定智能合约的ID或名称来指定智能合约,而用户终端发送至区块链节点的合约调用请求中,也可以携带该智能合约的ID或名称,鉴于此,区块链节点可以通过该智能合约的ID或名称来调用对应的智能合约。
进一步地,区块链节点可以根据该合约部署请求在智能合约中部署这些合约程序语句(包括第一异步变量函数名、第二异步变量函数名、第一异步变量函数名对应的第一异步变量语句、第二异步变量函数名对应的第二异步变量语句)。
对于区块链节点根据合约部署请求部署智能合约的方式,具体可以为,先获取用户终端发送的合约部署请求;其中,该合约部署请求携带第一异步变量函数名、第二异步变量函数名、第一异步变量函数名对应的第一异步变量语句以及第二异步变量函数名对应的第二异步变量语句;随后,可以根据第一异步变量函数名与第一执行阶段之间的映射关系,以及第二异步变量函数名与第二执行阶段之间的映射关系,创建智能合约;其中,该智能合约包括第一异步变量函数名、第二异步变量函数名、第一异步变量函数名对应的异步变量语句以及第二异步变量函数名对应的异步变量语句;该第一执行阶段与第二执行阶段均为交易业务对应的执行阶段。
应当理解,用户可以在每个执行阶段中编写指针程序语句,该指针程序语句可以用以指示在当前执行阶段执行完毕后需要执行的执行阶段。而通过每个执行阶段中的指针程序语句,就可以使得交易业务的多个执行阶段具有执行顺序。则该合约部署请求中还可以携带该指针程序语句,区块链节点也可以根据该合约部署请求将该指针程序语句部署于智能合约中。
对于区块链节点将指针程序语句部署于智能合约中的具体方法可以为,可以根据合约部署请求,获取第一执行阶段对应的指针程序语句以及第二执行阶段对应的指针程序语句;随后,可以将第一执行阶段对应的指针程序语句,以及第二执行阶段对应的指针程序语句部署于智能合约中。
应当理解,区块链节点将智能合约部署完成后,可以将部署完成结果返回至用户终端,而进一步地,用户终端可以生成用于执行交易业务(例如,转账业务、查询业务以及存储业务等)的合约调用请求,该合约调用请求中可以携带异步变量函数名(例如,第一异步变量函数名)、变量参数(第一变量参数)以及智能合约的ID;用户终端可以将该合约调用请求发送至区块链节点,区块链节点在接收到该合约调用请求后,可以根据该合约调用请求调用指定智能合约中的异步变量函数名。
可以理解的是,这里发送合约部署请求的用户终端与合约调用请求的用户终端可以为不同的用户终端,例如,发送合约部署请求的用户终端为用户终端A,区块链节点在部署完成后可以将部署完成结果发送至用户终端A;区块链节点也可以向用户终端B发送部署完成通知,则用户终端B也可以根据该部署完成通知向区块链节点发送合约调用请求。可选的,用户终端A在接收到该区块链节点发送的部署完成结果后,用户终端A也可以向用户终端B发送区块链节点已部署完成的通知。
步骤S102,获取智能合约中第一异步变量函数名对应的第一异步变量语句,根据第一异步变量语句查询与第一变量参数相关联的第一存储器与第二存储器;第一存储器为第一读取数据所在的位置,第二存储器为第二读取数据所在的位置。
本申请中,第一变量参数可以为第一读取数据与第二读取数据对应的参数,该第一读取数据与第二读取数据可以是指用于执行该交易业务的数据,该第一读取数据与第二读取数据需要从区块链中读取。例如,该交易业务为转账业务,该转账业务为用户A转账给用户B,则该第一读取数据可以为用户A的余额,该第二读取数据可以为用户B的余额,而用户A的余额与用户B的余额需要从区块链中读取。
应当理解,该第一异步变量语句中可以指出用于读取该第一读取数据的第一存储器,以及用于读取该第二读取数据的第二存储器,通过该第一异步变量语句,可以查询到第一存储器与该第二存储器。
步骤S103,按照第一异步变量语句所指示的异步请求方式,分别向第一存储器和第二存储器发送数据读取请求,得到用于执行交易业务的第一读取数据和第二读取数据;用于发送至第二存储器的数据读取请求的发送时间戳,早于第一存储器返回第一读取数据的返回时间戳。
本申请中,该第一数据读取请求可以包括第一数据读取请求和第二数据读取请求;对于发送数据读取请求得到第一读取数据与第二读取数据的具体方法可以为,可以按照第一异步变量语句所指示的异步请求方式,在起始时间戳时向第一存储器发送第一数据读取请求;随后,可以在等待时间段中,向第二存储器发送第二数据读取请求;其中,该等待时间段是由起始时间戳与返回时间戳所组成的时间段;随后,可以接收第一存储器基于第一数据读取请求所返回的第一读取数据,以及第二存储器基于第二数据读取请求所返回的第二读取数据。
应当理解,在起始时间戳(例如,8:00)时,区块链节点可以向第一存储器发送第一数据读取请求,随后,无需等待第一存储器返回查询结果,可以继续向第二存储器发送第二数据读取请求,例如,在8:01向第二存储器发送第二数据读取请求,其中,该时间戳8:01是位于起始时间戳之后,且位于第一存储器返回第一读取数据的返回时间戳之前的,该发送请求的方式即是智能合约的异步并行执行方式,通过该异步并行执行的方式,可以节约等待时间,提高智能合约的执行速度。
为便于理解异步执行方式的有益效果,请参见图4-图5,图4-图5是本申请实施例提供的一种串行等待模式与异步并行模式的时间消耗对比示意图。如图4所示,图4是串行等待模式,对于查询用户A的余额与查询用户B的余额这两个步骤,假设用户A与用户B的余额均存储于分布式存储中,若查询分布式存储需要2ms,则查询用户A的余额(向存储器发出针对用户A的数据读取请求并得到存储器返回的余额结果)需要消耗2ms(即0ms-2ms);随后,查询用户B的余额(向存储器发出针对用户B的数据读取请求并得到存储器返回的余额结果)也需要消耗2ms(即2ms-4ms),则在串行等待模式中,查询用户A与用户B的余额总共需要消耗时间4ms。
而如图5所示,图5是异步并行模式,对于查询用户A的余额与查询用户B的余额这两个步骤,假设用户A与用户B的余额均存储于分布式存储中,若查询分布式存储需要2ms,则查询用户A的余额(向存储器发出针对用户A的数据读取请求并得到存储器返回的余额结果)需要消耗2ms(即0ms-2ms);异步并行模式可支持区块链节点向存储器发出针对用户A的数据读取请求后,无需等待存储器返回余额结果即可向存储器发送针对用户B的数据读取请求,例如,如图5所示,在0.1ms发出针对用户B的数据读取请求,查询用户B的余额(向存储器发出针对用户B的数据读取请求并得到存储器返回的余额结果)需要消耗2ms(即0.1ms-2.1ms),则在异步并行模式中,查询用户A与用户B的余额总共需要消耗时间2.1ms。
可以看出,因为消耗时间2.1ms是远小于消耗时间4ms的,可见,通过将智能合约异步并行执行的方式,可以节约时间成本,提高智能合约的执行速度。
可以理解的是,该第一异步变量语句可以是智能合约中属于第一执行阶段的合约语句,而该第一读取数据与第二读取数据可以为在该第一执行阶段中得到的数据。也就是说,发起第一数据读取请求与第二数据读取请求并得到第一读取数据与第二读取数据的过程,是在第一执行阶段中进行的,在第一执行阶段执行完毕后(即,成功读取到第一读取数据与第二读取数据时),可以通过该第一执行阶段对应的指针程序语句,获取到在第一执行阶段之后执行的下一个执行阶段(例如,第二执行阶段),随后,可以调度至该指针程序语句所指向的下一个执行阶段中,并在该执行阶段中执行该交易业务。
其中,对于调度至第一执行阶段之后执行的下一个执行阶段(例如,第二执行阶段),并在下一个执行阶段执行该交易业务的具体方法可以为,当在第一执行阶段中成功读取到第一读取数据与第二读取数据时,可以获取第一执行阶段对应的至少两个指针程序语句;其中,该至少两个指针程序语句可以用于指示第一执行阶段的后继执行阶段;随后,可以根据第一读取数据与第二读取数据,在至少两个指针程序语句中确定满足调度条件的目标指针程序语句;随后,可以通过智能合约调度至该目标指针程序语句所指示的第二执行阶段;该第二执行阶段属于第一执行阶段的后继执行阶段;而在该第二执行阶段中,可以根据第一存储器返回的第一读取数据,以及第二存储器返回的第二读取数据,执行交易业务。
其中,该至少两个指针程序语句中的每个指针程序语句可以分别关联不同的调度条件,则对于根据第一读取数据与第二读取数据,在至少两个指针程序语句中确定满足调度条件的目标指针程序语句的具体方法可以为,可以先获取第一读取数据与第二读取数据之间的数据关系;随后,可以在每个指针程序语句分别关联的调度条件中,确定数据关系所满足的调度条件,并将数据关系所满足的调度条件确定为目标调度条件;随后,可以将与目标调度条件关联的指针程序语句,确定为目标指针程序语句。
应当理解,在第一执行阶段中,可以包括多个指针程序语句,而每个指针程序语句可以关联不同的调度条件,例如,第一执行阶段中包括的指针程序语句为指针程序语句1与指针程序语句2,其中,指针程序语句1所关联的调度条件为a>100且b<100,而指针程序语句2所关联的调度条件为a>100且b>100;而该第一执行阶段所读取到的第一读取数据为101,第二读取数据为103,该第一读取数据为变量参数a对应的读取数据,该第二读取数据为变量参数b对应的读取数据,可以看出,该第一读取数据101与该第二读取数据之间的数据关系是满足调度条件a>100且b>100的,则可以将指针程序语句2确定为目标指针程序语句,并将指针程序语句2所指向的执行阶段确定为第一执行阶段的后继执行阶段。
可选的,可以理解的是,以上描述的为第一执行阶段中包括至少两个指针程序语句的情况,每个执行阶段(包括第一执行阶段)中也可以包括一个指针程序语句的情况,当执行阶段执行完毕后,无需根据每个执行阶段的执行结果来判断选择目标指针程序语句,可直接将该指针程序语句作为目标指针程序语句并调度至该指针程序语句所指向的执行阶段。
其中,在第二执行阶段中,根据第一读取数据与第二读取数据执行交易业务的具体方法可以为,可以获取智能合约中,第二执行阶段对应的第二异步变量语句;随后,可以获取第二异步变量语句所预期读取的目标变量参数;根据目标变量参数、第一读取数据以及第二读取数据,可以确定目标读取数据;其中,该目标读取数据为在第二执行阶段中,用于执行交易业务所需的数据;根据目标读取数据,可以在第二执行阶段中执行交易业务。
而根据目标读取数据,在第二执行阶段中执行交易业务的具体方法可以为,若目标变量参数包括第一变量参数,且目标变量参数中不包括第二变量参数(该第二变量参数可以为合约调用请求中包括的变量参数),则可以将第一读取数据与第二读取数据确定为目标读取数据;而若目标变量参数包括第一变量参数,且目标变量参数中包括第二变量参数,则根据第二异步变量语句查询与第二变量参数相关联的目标存储器;根据目标存储器、第一读取数据以及第二读取数据,可以确定目标读取数据。其中,对于根据目标存储器、第一读取数据以及第二读取数据确定目标读取数据的具体方法可以为,可以按照第二异步变量语句所指示的异步请求方式,向目标存储器发送目标数据读取请求;可以接收目标存储器根据目标数据读取请求返回的第三读取数据,并将第三读取数据、第一读取数据以及第二读取数据确定为目标读取数据。
应当理解,每个执行阶段中的异步变量语句可以变量参数形式指出当前执行阶段所需数据,若第二执行阶段的执行需要依赖第一执行阶段的执行结果,则第二执行阶段的第二异步变量语句也会指出与第一读取数据与第二读取数据分别对应的变量参数(即,第一变量参数),此时,因为第一执行阶段已经读取到第一读取数据与第二读取数据,则可以在第二执行阶段中直接使用第一读取数据与第二读取数据,将该第一读取数据与第二读取数据作为目标读取数据;而若执行第二执行阶段所需数据不仅是第一读取数据与第二读取数据,还包括其他读取数据(例如,第三读取数据),则第二执行阶段中的第二异步变量语句不仅会指出第一变量参数,还会指出第三读取数据对应的第二变量参数,同时,会指出用于存储该第三读取数据的目标存储器,而区块链节点可以向该目标存储器发出目标数据读取请求,并将该目标存储器根据该目标数据读取请求所返回的第三读取数据,与第一读取数据与第二读取数据一并作为目标读取数据。
进一步地,应当理解,在确定目标读取数据后,可以在第二执行阶段中执行该交易业务,具体方法可以为,可以获取第二执行阶段对应的业务逻辑语句;根据业务逻辑语句所指示的数据处理逻辑,可以对目标读取数据进行逻辑运算,得到交易业务对应的交易执行结果。其中,该业务逻辑语句可以为用户编写的程序语句,用户终端在生成合约部署请求后,可以将该业务逻辑语句同合约部署请求一并发送至区块链节点,而区块链节点可以将该业务逻辑语句部署于智能合约中。
进一步地,应当理解,在得到交易业务对应的交易执行结果后,可以将该交易执行结果上链至区块链中。具体方法可以为,可以根据交易执行结果生成待添加至区块链的区块;其中,该区块链为智能合约所属的区块链;随后,可以将区块广播至区块链上的共识节点,在共识节点通过对区块的共识时,将该区块添加至区块链。在将交易执行结果成功上链后,区块链节点可以将该交易执行结果返回至用户终端,用户终端可以将该交易执行结果显示于显示界面中,则用户可以在显示界面中查看到该交易业务的交易执行结果。
为便于理解多阶段执行交易业务,请一并参见图6,图6是本申请实施例提供的一种多阶段执行交易业务的示意图。如图6所示,用户A通过用户终端A向区块链节点发送了用于执行转账业务(用户A转账至用户B5000元)的合约调用请求,区块链节点在接收到该合约调用请求后,可以调用已经部署有合约程序语句(用以支持智能合约多阶段异步并行执行交易业务)的智能合约。
可以理解的是,该合约程序语句将该交易业务分成为3个执行阶段(包括执行阶段1、执行阶段2与执行阶段3)执行,其中执行阶段1为第一个执行阶段,则在执行交易业务时,会首先进入执行阶段1,并在执行阶段1中异步执行相应步骤,该步骤可以为执行阶段1所包括的步骤,例如,该步骤为“查询用户A的余额,以及查询用户B的余额”;随后,在执行阶段1中查询到用户A的余额以及用户B的余额后,可以确定该执行阶段1已执行完毕,此时可以通过该执行阶段1中的指针程序语句,获取在执行阶段1后的下一个执行阶段(例如,如图6所示的执行阶段2)。
进一步地,可以在执行阶段2中异步执行相应步骤,该步骤可以为执行阶段2包括的步骤,例如,该步骤为“做转账的逻辑处理,修改用户A与用户B的余额”,随后,在执行阶段2执行完毕后,可以通过执行阶段2中的指针程序语句,获取在执行阶段2后的下一个执行阶段(例如,如图6所示的执行阶段3)。
进一步地,可以在执行阶段3异步执行相应步骤,该步骤可以为执行阶段3包括的步骤,例如,该步骤为“将用户A的新的余额上链,以及将用户B的新的余额上链”,在将用户A与用户B的新的余额成功存储至该智能合约所属的区块链后,可以确定该执行阶段3已执行完毕,则在执行阶段3执行完毕后,可以确定该交易业务已执行完成,区块链节点可以将执行结果返回至用户终端,用户可以通过该用户终端查看到该执行结果。
在本申请实施例中,用户可以通过发起一个合约部署请求的方式,在智能合约中部署用于支持智能合约进行多阶段异步并行执行的程序语句,随后,用户可以调用区块链上已经部署的智能合约。此时,区块链上的各个节点可以分别运行同一个智能合约,因为智能合约中部署有异步变量函数名与异步变量语句等支持智能合约异步执行的程序语句,所以在运行智能合约时,可以通过异步变量函数名与异步变量语句来支持智能合约进行对交易业务进行多阶段异步运行。而异步运行即在读取数据时,发出对第一读取数据的数据读取请求后,不是先等待第一读取数据的读取结果再发出对第二读取数据的数据读取请求,而是在得到第一读取数据的读取结果前,继续发出对第二读取数据的数据读取请求。也就是说,对于智能合约的运行,从串行等待模式转换为多阶段异步并行模式,可以避免等待,减少运行时间,提高智能合约的执行速度。
进一步地,请参见图7,图7是本申请实施例提供的一种阶段执行的流程示意图。如图7所示,该流程可以包括:
步骤S201,获取待执行阶段。
本申请中,对于一个交易业务,可以分为多个执行阶段进行执行,每个执行阶段均可以通过指针程序语句获取,例如,可以通过指针程序语句“phase.execute()”获取到执行阶段并作为待执行阶段。
步骤S202,确定待执行阶段的合法性。
本申请中,在获取到待执行阶段后,可以先确定该待执行阶段的合法性,而确定该待执行阶段的合法性的方法可以通过程序语句来确定,通过程序语句可以确定该待执行阶段是否为空,若通过该程序语句确定该待执行阶段为空值,则可以确定该待执行阶段不具备合法性;若通过该程序语句确定该待执行阶段为非空值,则可以确定该待执行阶段是具备合法性的。
步骤S203,线程池执行该阶段。
本申请中,在确定待执行阶段具备合法性时,可以通过线程池执行该待执行阶段。
步骤S204,判断该阶段所需数据是否需要读存储器。
本申请中,每个执行阶段对应有异步变量语句,该异步变量语句可以指出当前执行阶段所需数据(例如,该所需数据为上一个执行阶段的执行结果),而该异步变量语句也可以指出当前执行阶段所需数据对应的存储器,以指示所需数据是需要读存储器来获取的。
步骤S205,向存储器发送读取请求。
本申请中,该读取请求即为数据读取请求,若当前执行阶段所需数据是需要读存储器的,则可以根据当前异步变量语句所指示的异步请求方式,向存储器发送数据读取请求。
步骤S206,确定下一个执行阶段。
本申请中,向存储器发送数据读取请求后,若接收到存储器异步返回的读取结果,则可以确定当前执行阶段已执行完毕,可以获取当前执行阶段的指针程序语句,并通过该指针程序语句确获取下一个执行阶段,该下一个执行阶段可以作为新的待执行阶段。
而应当理解,在步骤S205中,若当前执行阶段是不需要读存储器的,则在当前执行阶段执行完毕后,可以获取指针程序语句,并通过该指针程序语句获取下一个执行阶段,该下一个执行阶段可以作为新的待执行阶段。
步骤S207,结束流程。
本申请中,在步骤S202中,若确定待执行阶段为空,则可以确定该待执行阶段不具备合法性,可以结束该阶段执行流程。应当理解,在一个交易业务的全部执行阶段执行完毕会,最后的待执行阶段会为空值,从而可以结束该阶段执行的流程。
需要说明的是,上述异步变量语句、指针程序语句等程序语句,可以由用户编写并部署于智能合约中,对于部署智能合约并调用智能合约的具体方法,可以参加上述图3所对应实施例中的描述,这里将不再进行赘述。
在本申请实施例中,通过部署用于支持智能合约异步并行执行的程序语句,可以支持智能合约进行多阶段异步并行执行。也就是说,对于智能合约的运行,可从串行等待模式转换为多阶段异步并行模式,可以避免等待,减少运行时间,提高智能合约的执行速度。
进一步地,请参见图8,图8是本申请实施例提供的一种基于智能合约的数据处理装置的结构示意图。上述基于智能合约的数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该基于区块链的数据处理装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。该基于智能合约的数据处理装置1可以包括:请求获取模块11、查询模块12、数据获取模块13。
请求获取模块11,用于获取用于执行交易业务的合约调用请求;合约调用请求包括第一异步变量函数名和第一变量参数;
查询模块12,用于获取智能合约中第一异步变量函数名对应的第一异步变量语句,根据第一异步变量语句查询与第一变量参数相关联的第一存储器与第二存储器;第一存储器为第一读取数据所在的位置,第二存储器为第二读取数据所在的位置;
数据获取模块13,用于按照第一异步变量语句所指示的异步请求方式,分别向第一存储器和第二存储器发送数据读取请求,得到用于执行交易业务的第一读取数据和第二读取数据;用于发送至第二存储器的数据读取请求的发送时间戳,早于第一存储器返回第一读取数据的返回时间戳。
其中,请求获取模块11、查询模块12、数据获取模块13的具体实现方式,可以参见上述图3所对应实施例中步骤S101-步骤S103的描述,这里将不再进行赘述。
其中,数据读取请求包括第一数据读取请求和第二数据读取请求;
请参见图8,数据获取模块13可以包括:请求发送单元131以及数据接收单元132。
请求发送单元131,用于按照第一异步变量语句所指示的异步请求方式,在起始时间戳时向第一存储器发送第一数据读取请求;
请求发送单元131,还用于在等待时间段中,向第二存储器发送第二数据读取请求;等待时间段是由起始时间戳与返回时间戳所组成的时间段;
数据接收单元132,用于接收第一存储器基于第一数据读取请求所返回的第一读取数据,以及第二存储器基于第二数据读取请求所返回的第二读取数据。
其中,请求发送单元131以及数据接收单元132的具体实现方式,可以参见上述图3所对应实施例中步骤S103的描述,这里将不再进行赘述。
其中,第一异步变量语句为智能合约中属于第一执行阶段的合约语句;第一读取数据与第二读取数据是在第一执行阶段中得到;
请参见图8,该数据处理装置1还可以包括:语句获取模块14、语句确定模块15、阶段调度模块16以及业务执行模块17。
语句获取模块14,用于当在第一执行阶段中成功读取到第一读取数据与第二读取数据时,获取第一执行阶段对应的至少两个指针程序语句;至少两个指针程序语句用于指示第一执行阶段的后继执行阶段;
语句确定模块15,用于根据第一读取数据与第二读取数据,在至少两个指针程序语句中确定满足调度条件的目标指针程序语句;
阶段调度模块16,用于通过智能合约调度至目标指针程序语句所指示的第二执行阶段;第二执行阶段属于第一执行阶段的后继执行阶段;
业务执行模块17,用于在第二执行阶段中,根据第一存储器返回的第一读取数据,以及第二存储器返回的第二读取数据,执行交易业务。
其中,语句获取模块14、语句确定模块15、阶段调度模块16以及业务执行模块17的具体实现方式,可以参见上述图3所对应实施例中步骤S103的描述,这里将不再进行赘述。
其中,至少两个指针程序语句中每个指针程序语句分别关联不同的调度条件;
请参见图8,语句确定模块15可以包括:关系获取单元151、条件确定单元152以及语句确定单元153。
关系获取单元151,用于获取第一读取数据与第二读取数据之间的数据关系;
条件确定单元152,用于在每个指针程序语句分别关联的调度条件中,确定数据关系所满足的调度条件,将数据关系所满足的调度条件确定为目标调度条件;
语句确定单元153,用于将与目标调度条件关联的指针程序语句,确定为目标指针程序语句。
其中,关系获取单元151、条件确定单元152以及语句确定单元153的具体实现方式,可以参见上述图3所对应实施例中步骤S103的描述,这里将不再进行赘述。
请参见图8,业务执行模块17可以包括:变量语句获取单元171、参数获取单元172、目标数据确定单元173以及业务执行单元174。
变量语句获取单元171,用于获取智能合约中,第二执行阶段对应的第二异步变量语句;
参数获取单元172,用于获取第二异步变量语句所预期读取的目标变量参数;
目标数据确定单元173,用于根据目标变量参数、第一读取数据以及第二读取数据,确定目标读取数据;目标读取数据为在第二执行阶段中,用于执行交易业务所需的数据;
业务执行单元174,用于根据目标读取数据,在第二执行阶段中执行交易业务。
其中,变量语句获取单元171、参数获取单元172、目标数据确定单元173以及业务执行单元174的具体实现方式,可以参见上述图3所对应实施例中步骤S103中的描述,这里将不再进行赘述。
其中,合约调用请求中还包括第二变量参数;
请参见图8,目标数据确定单元173可以包括:数据确定子单元1731以及存储器查询子单元1732。
数据确定子单元1731,用于若目标变量参数包括第一变量参数,且目标变量参数中不包括第二变量参数,则将第一读取数据与第二读取数据确定为目标读取数据;
存储器查询子单元1732,用于若目标变量参数包括第一变量参数,且目标变量参数中包括第二变量参数,则根据第二异步变量语句查询与第二变量参数相关联的目标存储器;
数据确定子单元1731,还用于根据目标存储器、第一读取数据以及第二读取数据,确定目标读取数据。
其中,数据确定子单元1731以及存储器查询子单元1732的具体实现方式,可以参见上述图3所对应实施例中步骤S103中的描述,这里将不再进行赘述。
其中,数据确定子单元1731,还用于按照第二异步变量语句所指示的异步请求方式,向目标存储器发送目标数据读取请求;
数据确定子单元1731,还用于接收目标存储器根据目标数据读取请求返回的第三读取数据,将第三读取数据、第一读取数据以及第二读取数据确定为目标读取数据。
其中,业务执行单元174可以包括:逻辑语句获取子单元1741以及逻辑运算子单元1742。
逻辑语句获取子单元1741,用于获取第二执行阶段对应的业务逻辑语句;
逻辑运算子单元1742,用于根据业务逻辑语句所指示的数据处理逻辑,对目标读取数据进行逻辑运算,得到交易业务对应的交易执行结果。
其中,逻辑语句获取子单元1741以及逻辑运算子单元1742的具体实现方式,可以参见上述图3所对应实施例中步骤S103中的描述,这里将不再进行赘述。
请参见图8,该数据处理装置1还可以包括:区块生成模块18以及区块添加模块19。
区块生成模块18,用于根据交易执行结果生成待添加至区块链的区块;区块链为智能合约所属的区块链;
区块添加模块19,用于将区块广播至区块链上的共识节点,在共识节点通过对区块的共识时,将区块添加至区块链。
其中,区块生成模块18以及区块添加模块19的具体实现方式,可以参见上述图3所对应实施例中步骤S103中的描述,这里将不再进行赘述。
请参见图8,该数据处理装置1还可以包括:部署请求获取模块20以及合约创建模块21。
部署请求获取模块20,用于获取用户终端发送的合约部署请求;合约部署请求携带第一异步变量函数名、第二异步变量函数名、第一异步变量函数名对应的第一异步变量语句以及第二异步变量函数名对应的第二异步变量语句;
合约创建模块21,用于根据第一异步变量函数名与第一执行阶段之间的映射关系,以及第二异步变量函数名与第二执行阶段之间的映射关系,创建智能合约;智能合约包括第一异步变量函数名、第二异步变量函数名、第一异步变量函数名对应的异步变量语句以及第二异步变量函数名对应的异步变量语句;第一执行阶段与第二执行阶段均为交易业务对应的执行阶段。
其中,部署请求获取模块20以及合约创建模块21的具体实现方式,可以参见上述图3所对应实施例中步骤S101中的描述,这里将不再进行赘述。
其中,合约部署请求还携带指针程序语句;
请参见图8,该数据处理装置1还可以包括:指针语句获取模块22以及语句部署模块23。
指针语句获取模块22,用于根据合约部署请求,获取第一执行阶段对应的指针程序语句以及第二执行阶段对应的指针程序语句;
语句部署模块23,用于将第一执行阶段对应的指针程序语句,以及第二执行阶段对应的指针程序语句部署于智能合约中。
其中,指针语句获取模块22以及语句部署模块23的具体实现方式,可以参见上述图3所对应实施例中步骤S101中的描述,这里将不再进行赘述。
在本申请实施例中,用户可以通过发起一个合约部署请求的方式,在智能合约中部署用于支持智能合约进行多阶段异步并行执行的程序语句,随后,可以调用区块链上已经部署的智能合约。此时,区块链上的各个节点可以分别运行同一个智能合约,因为智能合约中部署有异步变量函数名与异步变量语句等支持智能合约多阶段异步执行的程序语句,所以在运行智能合约时,可以通过异步变量函数名与异步变量语句来支持智能合约进行多阶段异步运行。而异步运行即在读取数据时,发出对第一读取数据的数据读取请求后,不是先等待第一读取数据的读取结果再发出对第二读取数据的数据读取请求,而是在得到第一读取数据的读取结果前,继续发出对第二读取数据的数据读取请求。也就是说,对于智能合约的运行,从串行等待模式转换为多阶段异步并行模式,可以避免等待,减少运行时间,提高智能合约的执行速度。
进一步地,请参见图9,图9是本申请实施例提供的一种计算机设备的结构示意图。如图9所示,上述图8所对应实施例中的装置1可以应用于上述计算机设备1000,上述计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机可读存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及设备控制应用程序。
在图9所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取用于执行交易业务的合约调用请求;合约调用请求包括第一异步变量函数名和第一变量参数;
获取智能合约中第一异步变量函数名对应的第一异步变量语句,根据第一异步变量语句查询与第一变量参数相关联的第一存储器与第二存储器;第一存储器为第一读取数据所在的位置,第二存储器为第二读取数据所在的位置;
按照第一异步变量语句所指示的异步请求方式,分别向第一存储器和第二存储器发送数据读取请求,得到用于执行交易业务的第一读取数据和第二读取数据;用于发送至第二存储器的数据读取请求的发送时间戳,早于第一存储器返回第一读取数据的返回时间戳。
在一个实施例中,数据读取请求包括第一数据读取请求和第二数据读取请求;
处理器1001在执行按照第一异步变量语句所指示的异步请求方式,分别向第一存储器和第二存储器发送数据读取请求,得到用于执行交易业务的第一读取数据和第二读取数据时,具体执行以下步骤:
按照第一异步变量语句所指示的异步请求方式,在起始时间戳时向第一存储器发送第一数据读取请求;
在等待时间段中,向第二存储器发送第二数据读取请求;等待时间段是由起始时间戳与返回时间戳所组成的时间段;
接收第一存储器基于第一数据读取请求所返回的第一读取数据,以及第二存储器基于第二数据读取请求所返回的第二读取数据。
在一个实施例中,第一异步变量语句为智能合约中属于第一执行阶段的合约语句;第一读取数据与第二读取数据是在第一执行阶段中得到;
处理器1001还具体执行以下步骤:
当在第一执行阶段中成功读取到第一读取数据与第二读取数据时,获取第一执行阶段对应的至少两个指针程序语句;至少两个指针程序语句用于指示第一执行阶段的后继执行阶段;
根据第一读取数据与第二读取数据,在至少两个指针程序语句中确定满足调度条件的目标指针程序语句;
通过智能合约调度至目标指针程序语句所指示的第二执行阶段;第二执行阶段属于第一执行阶段的后继执行阶段;
在第二执行阶段中,根据第一存储器返回的第一读取数据,以及第二存储器返回的第二读取数据,执行交易业务。
在一个实施例中,至少两个指针程序语句中每个指针程序语句分别关联不同的调度条件;
处理器1001在执行根据第一读取数据与第二读取数据,在至少两个指针程序语句中确定满足调度条件的目标指针程序语句时,具体执行以下步骤:
获取第一读取数据与第二读取数据之间的数据关系;
在每个指针程序语句分别关联的调度条件中,确定数据关系所满足的调度条件,将数据关系所满足的调度条件确定为目标调度条件;
将与目标调度条件关联的指针程序语句,确定为目标指针程序语句。
在一个实施例中,处理器1001在执行在第二执行阶段中,根据第一存储器返回的第一读取数据,以及第二存储器返回的第二读取数据,执行交易业务时,具体执行以下步骤:
获取智能合约中,第二执行阶段对应的第二异步变量语句;
获取第二异步变量语句所预期读取的目标变量参数;
根据目标变量参数、第一读取数据以及第二读取数据,确定目标读取数据;目标读取数据为在第二执行阶段中,用于执行交易业务所需的数据;
根据目标读取数据,在第二执行阶段中执行交易业务。
在一个实施例中,合约调用请求中还包括第二变量参数;
处理器1001在执行根据目标变量参数、第一读取数据以及第二读取数据,确定目标读取数据时,具体执行以下步骤:
若目标变量参数包括第一变量参数,且目标变量参数中不包括第二变量参数,则将第一读取数据与第二读取数据确定为目标读取数据;
若目标变量参数包括第一变量参数,且目标变量参数中包括第二变量参数,则根据第二异步变量语句查询与第二变量参数相关联的目标存储器;
根据目标存储器、第一读取数据以及第二读取数据,确定目标读取数据。
在一个实施例中,处理器1001在执行根据目标存储器、第一读取数据以及第二读取数据,确定目标读取数据时,具体执行以下步骤:
按照第二异步变量语句所指示的异步请求方式,向目标存储器发送目标数据读取请求;
接收目标存储器根据目标数据读取请求返回的第三读取数据,将第三读取数据、第一读取数据以及第二读取数据确定为目标读取数据。
在一个实施例中,处理器1001在执行根据目标读取数据,在第二执行阶段中执行交易业务时,具体执行以下步骤:
获取第二执行阶段对应的业务逻辑语句;
根据业务逻辑语句所指示的数据处理逻辑,对目标读取数据进行逻辑运算,得到交易业务对应的交易执行结果。
在一个实施例中,处理器1001还具体执行以下步骤:
根据交易执行结果生成待添加至区块链的区块;区块链为智能合约所属的区块链;
将区块广播至区块链上的共识节点,在共识节点通过对区块的共识时,将区块添加至区块链。
在一个实施例中,处理器1001还具体执行以下步骤:
获取用户终端发送的合约部署请求;合约部署请求携带第一异步变量函数名、第二异步变量函数名、第一异步变量函数名对应的第一异步变量语句以及第二异步变量函数名对应的第二异步变量语句;
根据第一异步变量函数名与第一执行阶段之间的映射关系,以及第二异步变量函数名与第二执行阶段之间的映射关系,创建智能合约;智能合约包括第一异步变量函数名、第二异步变量函数名、第一异步变量函数名对应的异步变量语句以及第二异步变量函数名对应的异步变量语句;第一执行阶段与第二执行阶段均为交易业务对应的执行阶段。
在一个实施例中,合约部署请求还携带指针程序语句;
处理器1001还具体执行以下步骤:
根据合约部署请求,获取第一执行阶段对应的指针程序语句以及第二执行阶段对应的指针程序语句;
将第一执行阶段对应的指针程序语句,以及第二执行阶段对应的指针程序语句部署于智能合约中。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3所对应实施例中对该基于智能合约的数据处理方法的描述,也可执行前文图8所对应实施例中对该基于智能合约的数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的数据处理的计算机设备1000所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图3所对应实施例中对上述数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例中一方面提供的方法。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (13)
1.一种基于智能合约的数据处理方法,其特征在于,包括:
获取用于执行交易业务的合约调用请求;所述合约调用请求包括第一异步变量函数名和第一变量参数;所述第一异步变量语句为所述智能合约中属于第一执行阶段的合约语句;
在所述第一执行阶段中,获取智能合约中所述第一异步变量函数名对应的第一异步变量语句,根据所述第一异步变量语句查询与所述第一变量参数相关联的第一存储器与第二存储器;所述第一存储器为第一读取数据所在的位置,所述第二存储器为第二读取数据所在的位置;
在所述第一执行阶段中,按照所述第一异步变量语句所指示的异步请求方式,分别向所述第一存储器和所述第二存储器发送数据读取请求,得到用于执行所述交易业务的所述第一读取数据和所述第二读取数据;用于发送至所述第二存储器的数据读取请求的发送时间戳,早于所述第一存储器返回所述第一读取数据的返回时间戳;
当在所述第一执行阶段中成功读取到所述第一读取数据与所述第二读取数据,且第二执行阶段为非空值时,在所述第二执行阶段中,获取所述智能合约中,所述第二执行阶段对应的第二异步变量语句;所述第二执行阶段属于所述第一执行阶段的后继执行阶段;
获取所述第二异步变量语句所预期读取的目标变量参数;
根据所述目标变量参数、所述第一读取数据以及所述第二读取数据,确定目标读取数据;所述目标读取数据为在所述第二执行阶段中,用于执行所述交易业务所需的数据;
根据所述目标读取数据,在所述第二执行阶段中执行所述交易业务。
2.根据权利要求1所述的方法,其特征在于,所述数据读取请求包括第一数据读取请求和第二数据读取请求;
所述在所述第一执行阶段中,按照所述第一异步变量语句所指示的异步请求方式,分别向所述第一存储器和所述第二存储器发送数据读取请求,得到用于执行所述交易业务的所述第一读取数据和所述第二读取数据,包括:
在所述第一执行阶段中,按照所述第一异步变量语句所指示的异步请求方式,在起始时间戳时向所述第一存储器发送所述第一数据读取请求;
在等待时间段中,向所述第二存储器发送所述第二数据读取请求;所述等待时间段是由所述起始时间戳与所述返回时间戳所组成的时间段;
接收所述第一存储器基于所述第一数据读取请求所返回的所述第一读取数据,以及所述第二存储器基于所述第二数据读取请求所返回的所述第二读取数据。
3.根据权利要求1所述的方法,其特征在于,在所述第二执行阶段中,获取所述智能合约中,所述第二执行阶段对应的第二异步变量语句的步骤之前,所述方法还包括:
获取所述第一执行阶段对应的至少两个指针程序语句;所述至少两个指针程序语句用于指示所述第一执行阶段的后继执行阶段;
根据所述第一读取数据与所述第二读取数据,在所述至少两个指针程序语句中确定满足调度条件的目标指针程序语句;
通过所述智能合约调度至所述目标指针程序语句所指示的第二执行阶段。
4.根据权利要求3所述的方法,其特征在于,所述至少两个指针程序语句中每个指针程序语句分别关联不同的调度条件;
所述根据所述第一读取数据与所述第二读取数据,在所述至少两个指针程序语句中确定满足调度条件的目标指针程序语句,包括:
获取所述第一读取数据与所述第二读取数据之间的数据关系;
在所述每个指针程序语句分别关联的调度条件中,确定所述数据关系所满足的调度条件,将所述数据关系所满足的调度条件确定为目标调度条件;
将与所述目标调度条件关联的指针程序语句,确定为所述目标指针程序语句。
5.根据权利要求1所述的方法,其特征在于,所述合约调用请求中还包括第二变量参数;
所述根据所述目标变量参数、所述第一读取数据以及所述第二读取数据,确定目标读取数据,包括:
若所述目标变量参数包括所述第一变量参数,且所述目标变量参数中不包括所述第二变量参数,则将所述第一读取数据与所述第二读取数据确定为所述目标读取数据;
若所述目标变量参数包括所述第一变量参数,且所述目标变量参数中包括所述第二变量参数,则根据所述第二异步变量语句查询与所述第二变量参数相关联的目标存储器;
根据所述目标存储器、所述第一读取数据以及所述第二读取数据,确定所述目标读取数据。
6.根据权利要求5所述的方法,其特征在于,所述根据所述目标存储器、所述第一读取数据以及所述第二读取数据,确定所述目标读取数据,包括:
按照所述第二异步变量语句所指示的异步请求方式,向所述目标存储器发送目标数据读取请求;
接收所述目标存储器根据所述目标数据读取请求返回的第三读取数据,将所述第三读取数据、所述第一读取数据以及所述第二读取数据确定为所述目标读取数据。
7.根据权利要求1所述的方法,其特征在于,所述根据所述目标读取数据,在所述第二执行阶段中执行所述交易业务,包括:
获取所述第二执行阶段对应的业务逻辑语句;
根据所述业务逻辑语句所指示的数据处理逻辑,对所述目标读取数据进行逻辑运算,得到所述交易业务对应的交易执行结果。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
根据所述交易执行结果生成待添加至区块链的区块;所述区块链为所述智能合约所属的区块链;
将所述区块广播至所述区块链上的共识节点,在所述共识节点通过对所述区块的共识时,将所述区块添加至所述区块链。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取用户终端发送的合约部署请求;所述合约部署请求携带所述第一异步变量函数名、第二异步变量函数名、所述第一异步变量函数名对应的第一异步变量语句以及所述第二异步变量函数名对应的第二异步变量语句;
根据所述第一异步变量函数名与第一执行阶段之间的映射关系,以及所述第二异步变量函数名与第二执行阶段之间的映射关系,创建智能合约;所述智能合约包括所述第一异步变量函数名、所述第二异步变量函数名、所述第一异步变量函数名对应的第一异步变量语句以及所述第二异步变量函数名对应的第二异步变量语句;所述第一执行阶段与所述第二执行阶段均为所述交易业务对应的执行阶段。
10.根据权利要求9所述的方法,其特征在于,所述合约部署请求还携带指针程序语句;
所述方法还包括:
根据所述合约部署请求,获取所述第一执行阶段对应的指针程序语句以及所述第二执行阶段对应的指针程序语句;
将所述第一执行阶段对应的指针程序语句,以及所述第二执行阶段对应的指针程序语句部署于所述智能合约中。
11.一种智能合约的数据处理装置,其特征在于,包括:
请求获取模块,用于获取用于执行交易业务的合约调用请求;所述合约调用请求包括第一异步变量函数名和第一变量参数;所述第一异步变量语句为所述智能合约中属于第一执行阶段的合约语句;
查询模块,用于在所述第一执行阶段中,获取智能合约中所述第一异步变量函数名对应的第一异步变量语句,根据所述第一异步变量语句查询与所述第一变量参数相关联的第一存储器与第二存储器;所述第一存储器为第一读取数据所在的位置,所述第二存储器为第二读取数据所在的位置;
数据获取模块,用于在所述第一执行阶段中,按照所述第一异步变量语句所指示的异步请求方式,分别向所述第一存储器和所述第二存储器发送数据读取请求,得到用于执行所述交易业务的所述第一读取数据和所述第二读取数据;用于发送至所述第二存储器的数据读取请求的发送时间戳,早于所述第一存储器返回所述第一读取数据的返回时间戳;
变量语句获取单元,用于当在所述第一执行阶段中成功读取到所述第一读取数据与所述第二读取数据,且第二执行阶段为非空值时,在所述第二执行阶段中,获取所述智能合约中,所述第二执行阶段对应的第二异步变量语句;所述第二执行阶段属于所述第一执行阶段的后继执行阶段;
参数获取单元,用于获取所述第二异步变量语句所预期读取的目标变量参数;
目标数据确定单元,用于根据所述目标变量参数、所述第一读取数据以及所述第二读取数据,确定目标读取数据;所述目标读取数据为在所述第二执行阶段中,用于执行所述交易业务所需的数据;
业务执行单元,用于根据所述目标读取数据,在所述第二执行阶段中执行所述交易业务。
12.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供网络通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行权利要求1-10任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行权利要求1-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110192640.7A CN112835700B (zh) | 2020-12-07 | 2020-12-07 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011414124.6A CN112199186B (zh) | 2020-12-07 | 2020-12-07 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
CN202110192640.7A CN112835700B (zh) | 2020-12-07 | 2020-12-07 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011414124.6A Division CN112199186B (zh) | 2020-12-07 | 2020-12-07 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112835700A true CN112835700A (zh) | 2021-05-25 |
CN112835700B CN112835700B (zh) | 2022-07-12 |
Family
ID=74034467
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110192640.7A Active CN112835700B (zh) | 2020-12-07 | 2020-12-07 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
CN202011414124.6A Active CN112199186B (zh) | 2020-12-07 | 2020-12-07 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011414124.6A Active CN112199186B (zh) | 2020-12-07 | 2020-12-07 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230011298A1 (zh) |
CN (2) | CN112835700B (zh) |
WO (1) | WO2022121613A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113988845A (zh) * | 2021-08-12 | 2022-01-28 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、设备以及可读存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112835700B (zh) * | 2020-12-07 | 2022-07-12 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180075453A1 (en) * | 2016-09-15 | 2018-03-15 | American Express Travel Related Services Company, Inc. | Systems and methods for blockchain based payment networks |
CN108876360A (zh) * | 2018-06-05 | 2018-11-23 | 北京创世智链信息技术研究院 | 一种基于区块链的数字资金托管方法、装置及*** |
CN110020542A (zh) * | 2018-12-20 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据读写方法及装置、电子设备 |
CN110555700A (zh) * | 2019-09-04 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 区块链智能合约执行方法、装置、计算机可读存储介质 |
CN111008201A (zh) * | 2020-03-09 | 2020-04-14 | 支付宝(杭州)信息技术有限公司 | 并行修改和读取状态树的方法和装置 |
CN111625593A (zh) * | 2020-04-21 | 2020-09-04 | 金蝶软件(中国)有限公司 | 基于区块链的数据处理方法、装置、计算机设备 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101782992A (zh) * | 2010-03-18 | 2010-07-21 | 万易通国际科技(北京)有限公司 | 一种网上交易的***和方法 |
US9015853B2 (en) * | 2012-06-15 | 2015-04-21 | The Regents Of The University Of California | Concealing access patterns to electronic data storage for privacy |
US10089489B2 (en) * | 2015-06-02 | 2018-10-02 | ALTR Solutions, Inc. | Transparent client application to arbitrate data storage between mutable and immutable data repositories |
US10861015B1 (en) * | 2017-01-25 | 2020-12-08 | State Farm Mutual Automobile Insurance Company | Blockchain based account funding and distribution |
CN108170740B (zh) * | 2017-12-18 | 2022-04-26 | 深圳前海微众银行股份有限公司 | 数据迁移方法、***和计算机可读存储介质 |
CN109710694A (zh) * | 2018-12-26 | 2019-05-03 | 深圳市网心科技有限公司 | 数据处理方法、设备、存储介质和区块链*** |
CN109840429B (zh) * | 2019-01-08 | 2020-04-14 | 北京众享比特科技有限公司 | 智能合约部署、调用方法和装置 |
CN110599178A (zh) * | 2019-09-25 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 一种基于智能合约的数据处理方法、装置以及存储介质 |
CN110706108B (zh) * | 2019-09-30 | 2021-08-03 | 支付宝(杭州)信息技术有限公司 | 在区块链中并发执行交易的方法和装置 |
CN110941647A (zh) * | 2019-11-11 | 2020-03-31 | 华中科技大学 | 一种基于dag的区块链的跨链交互方法和*** |
CN111026511B (zh) * | 2019-11-20 | 2023-08-08 | 中国科学院计算技术研究所 | 基于事务数据分区-链间融合的区块链并行***及方法 |
CN112835700B (zh) * | 2020-12-07 | 2022-07-12 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、装置、设备及存储介质 |
-
2020
- 2020-12-07 CN CN202110192640.7A patent/CN112835700B/zh active Active
- 2020-12-07 CN CN202011414124.6A patent/CN112199186B/zh active Active
-
2021
- 2021-11-11 WO PCT/CN2021/129945 patent/WO2022121613A1/zh active Application Filing
-
2022
- 2022-09-20 US US17/948,832 patent/US20230011298A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180075453A1 (en) * | 2016-09-15 | 2018-03-15 | American Express Travel Related Services Company, Inc. | Systems and methods for blockchain based payment networks |
CN108876360A (zh) * | 2018-06-05 | 2018-11-23 | 北京创世智链信息技术研究院 | 一种基于区块链的数字资金托管方法、装置及*** |
CN110020542A (zh) * | 2018-12-20 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据读写方法及装置、电子设备 |
CN110555700A (zh) * | 2019-09-04 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 区块链智能合约执行方法、装置、计算机可读存储介质 |
CN111008201A (zh) * | 2020-03-09 | 2020-04-14 | 支付宝(杭州)信息技术有限公司 | 并行修改和读取状态树的方法和装置 |
CN111625593A (zh) * | 2020-04-21 | 2020-09-04 | 金蝶软件(中国)有限公司 | 基于区块链的数据处理方法、装置、计算机设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113988845A (zh) * | 2021-08-12 | 2022-01-28 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、设备以及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112199186B (zh) | 2021-03-02 |
CN112835700B (zh) | 2022-07-12 |
CN112199186A (zh) | 2021-01-08 |
WO2022121613A1 (zh) | 2022-06-16 |
US20230011298A1 (en) | 2023-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110288345B (zh) | 跨链通信方法、装置、主链节点及存储介质 | |
CN107147704B (zh) | 一种面向区块链的通用服务中间件*** | |
CN101179430B (zh) | 一种分布式***软件版本更新控制装置及方法 | |
CN111091429A (zh) | 电子票据标识分配方法及装置、电子票据生成*** | |
CN112199186B (zh) | 基于智能合约的数据处理方法、装置、设备及存储介质 | |
CN107766132A (zh) | 多任务调度方法、应用服务器及计算机可读存储介质 | |
CN111580884A (zh) | 配置更新方法、装置、服务器和电子设备 | |
CN102404149B (zh) | 一种业务特性的管理***和方法 | |
CN110764752A (zh) | 基于微服务架构实现Restful服务图形化服务编排的***及其方法 | |
CN111208992A (zh) | ***调度工作流生成方法和*** | |
CN100511140C (zh) | 构件化软件***实现脚本语言调用多输出参数接口的方法 | |
CN101969399A (zh) | 客户端调用服务的路由方法及*** | |
CN109586970A (zh) | 资源分配方法、装置及*** | |
CN109309646A (zh) | 一种多媒体转码方法和*** | |
CN110442601A (zh) | 一种Openstack镜像数据并行加速的方法和装置 | |
CN113296987A (zh) | 调用模块的接口调用方法、装置、计算机设备及存储介质 | |
CN113849320A (zh) | 开发方法、控制方法及计算设备 | |
CN113077260A (zh) | 基于区块链的数据访问方法、装置及电子设备 | |
CN113268272B (zh) | 基于私有云的应用交付方法、装置及*** | |
EP4287102A1 (en) | Cross-chain transaction processing method and apparatus, electronic device, and storage medium | |
CN115328457A (zh) | 基于参数配置的表单页面实现方法和装置 | |
CN109150694A (zh) | 动态场景信息的发送方法、显示方法及服务器和移动终端 | |
CN113296898A (zh) | 异步任务处理方法、装置、电子设备和存储介质 | |
CN112306521B (zh) | 中台服务***、方法和存储介质 | |
CN114398082B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40044627 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |