CN110879900A - 一种基于区块链系统的数据处理方法及装置 - Google Patents
一种基于区块链系统的数据处理方法及装置 Download PDFInfo
- Publication number
- CN110879900A CN110879900A CN201911081181.4A CN201911081181A CN110879900A CN 110879900 A CN110879900 A CN 110879900A CN 201911081181 A CN201911081181 A CN 201911081181A CN 110879900 A CN110879900 A CN 110879900A
- Authority
- CN
- China
- Prior art keywords
- contract
- intelligent
- data file
- file corresponding
- intelligent contract
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Abstract
本发明实施例涉及金融科技(Finetch)技术领域,公开了一种基于区块链系统的数据处理方法及装置,接收获取第一智能合约的合约数据的查询请求后,根据智能合约与数据文件的对应关系,确定第一智能合约对应的数据文件,并使用第一合约和第二合约从第一智能合约对应的数据文件中获取查询请求对应的数据。本发明实施例中,第一合约用于创建和打开区块链系统中的数据文件,第二合约用于对第一合约打开的数据文件进行操作,通过使用第一合约和第二合约从智能合约对应的数据文件中获取智能合约的合约数据,可以无需使用智能合约的合约地址创建智能合约的合约对象,该种方式操作简单,便于实现,且可以提高数据处理的效率。
Description
技术领域
本发明涉及金融科技(Finetch)技术领域,尤其涉及一种基于区块链系统的数据处理方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,然而,由于金融行业的安全性、实时性要求,金融科技领域也对技术提出了更高的要求。区块链系统中部署有大量的智能合约,区块链系统的功能由智能合约来实现,智能合约是运行在区块链系统上的一份代码和数据的集合,代码用于实现智能合约的逻辑,而数据用于存储智能合约的状态。
在区块链系统中,智能合约的逻辑和数据基于智能合约的地址实现,而智能合约的合约地址是在智能合约被部署到区块链系统时被自动分配给智能合约的,该地址用于存储智能合约的代码和数据,不同智能合约的合约地址不同。如此,当获取智能合约的合约数据时,节点需要先根据智能合约的合约地址创建智能合约的合约对象,然后才能使用智能合约的合约对象到智能合约的地址处获取其合约数据;显然地,采用该种方式,由于智能合约的合约对象和智能合约的地址是绑定的,要想获取智能合约的合约数据,必须创建智能合约的合约对象,才能访问到智能合约的地址处存储的合约数据,由此可知,该种方式需要执行较为复杂的操作过程,导致数据处理的效率较低。
综上,目前亟需一种基于区块链系统的数据处理方法,用以解决现有技术通过智能合约的合约对象获取智能合约的合约数据所导致的数据处理的效率较低的技术问题。
发明内容
本发明实施例提供一种基于区块链系统的数据处理方法及装置,用以解决现有技术通过智能合约的合约对象获取智能合约的合约数据所导致的数据处理的效率较低的技术问题。
第一方面,本发明实施例提供的一种基于区块链系统的数据处理方法,包括:
接收查询请求,所述查询请求用于获取第一智能合约的合约数据;根据智能合约与数据文件的对应关系,确定所述第一智能合约对应的数据文件的标识,根据所述第一智能合约对应的数据文件的标识,使用所述第一合约打开所述第一智能合约对应的数据文件,并生成所述第二合约的合约对象,使用所述第二合约的合约对象从所述第一智能合约对应的数据文件中获取所述查询请求对应的数据;其中,所述第一智能合约对应的数据文件是所述第一智能合约的合约数据的备份,所述第一智能合约对应的数据文件是通过第一合约和第二合约得到的,所述第一合约用于对创建和打开所述区块链系统中的数据文件,所述第二合约用于对所述第一合约打开的数据文件进行操作。
在上述设计中,第一合约可以创建和打开区块链系统中的任一数据文件,第二合约可以对第一合约打开的数据文件进行操作,通过使用第一合约和第二合约生成智能合约对应的数据文件,当需要获取智能合约的合约数据时,只要查询得到智能合约对应的数据文件的标识,就可以使用第一合约和第二合约打开对应的数据文件,相比于现有技术需要使用智能合约的合约地址创建智能合约的合约对象才能获取到智能合约的合约数据的方式来说,该种方式操作简单,便于实现,且可以提高数据处理的效率。
在一种可能的设计中,所述第一智能合约对应的数据文件是通过第一合约和第二合约得到的,包括:根据所述第一合约的合约地址创建所述第一合约的合约对象,并使用所述第一合约的合约对象的第一接口在所述区块链系统中创建所述第一智能合约对应的初始数据文件;进一步地,通过所述第一合约的合约对象的第二接口打开所述第一智能合约对应的初始数据文件时,生成所述第二合约的合约对象;使用所述第二合约的合约对象的各个接口将所述第一智能合约的合约数据写入所述第一智能合约对应的初始数据文件,得到所述第一智能合约对应的数据文件。
在上述设计中,第一合约和第二合约可以对已存在的任意智能合约的合约数据进行备份,得到任意智能合约对应的数据文件,从而可以在保护智能合约的合约数据的基础上便于用户对已存在的智能合约的合约数据进行查询,提高用户的体验;且,上述设计还可以支持用户的个性化设置,比如可以仅对用户选择的智能合约的合约数据进行备份,而无需对全部的智能合约的合约数据进行备份,从而可以降低数据文件在区块链系统中的资源占用率,降低对区块链系统的影响。
在一种可能的设计中,所述第一智能合约对应的数据文件是通过第一合约和第二合约得到的,包括:检测到使用所述第一智能合约执行交易得到的交易结果首次写入所述第一智能合约的合约地址时,根据所述第一合约的合约地址创建所述第一合约的合约对象,并使用所述第一合约的合约对象的第一接口在所述区块链系统中创建所述第一智能合约对应的初始数据文件;进一步地,通过所述第一合约的合约对象的第二接口打开所述第一智能合约对应的初始数据文件时,生成所述第二合约的合约对象;使用所述第二合约的合约对象的各个接口将所述交易结果写入所述第一智能合约对应的初始数据文件,得到所述第一智能合约对应的数据文件。
在上述设计中,第一合约和第二合约在检测到智能合约首次向其地址写入数据时,可以自动创建该智能合约对应的数据文件,该过程可以自动对区块链系统中任意智能合约的合约数据进行备份,且无需人为干预,从而可以降低维护成本,提高管理智能合约的合约数据的灵活性。
在一种可能的设计中,所述方法还包括:获取第二智能合约执行交易得到的交易结果,所述第二智能合约为所述第一智能合约的升级合约;进一步地,通过所述第一合约和所述第二合约将所述第二智能合约执行交易得到的交易结果写入所述第一智能合约对应的数据文件,并建立所述第二智能合约与所述第一智能合约对应的数据文件的对应关系。
在上述设计中,通过自动建立新版本智能合约与旧版本智能合约的数据文件的对应关系,并将新版本智能合约的交易结果存储在该数据文件中,使得新版本智能合约能够直接基于旧版本智能合约的合约数据来执行后续的交易,由此可知,该种方式可以自动维持智能合约在升级后的逻辑与数据的对应关系,在保证交易的准确性的基础上,提高了区块链系统的数据处理能力。
在一种可能的设计中,所述第一合约使用第一类型语言编写,所述第一类型语言为区块链系统中节点的本地语言;所述第一合约的合约地址通过如下方式得到:接收所述第一合约的部署请求,所述部署请求包括所述第一合约的合约地址;按照所述第一合约的合约地址将所述第一合约部署在所述区块链系统上。
在上述设计中,通过设置第一合约由本地语言编写,可以无需人为将第一合约的代码修改为虚拟机可读的代码,从而可以降低人工操作的成本;且,通过为第一合约设置固定的合约地址,使得区块链系统可以通过固定的合约地址来创建第一合约的合约对象,相对于现有技术每次都需要使用不同智能合约的合约地址创建不同智能合约的合约对象才能获取到不同智能合约的合约数据的方式来说,可以降低数据处理量,提高数据的处理效率。
第二方面,本发明实施例提供了一种基于区块链系统的数据处理装置,所述装置包括:
收发模块,用于接收查询请求;所述查询请求用于获取第一智能合约的合约数据;
确定模块,用于根据智能合约与数据文件的对应关系,确定所述第一智能合约对应的数据文件的标识;所述第一智能合约对应的数据文件是所述第一智能合约的合约数据的备份;所述第一智能合约对应的数据文件是通过第一合约和第二合约得到的;
处理模块,用于根据所述第一智能合约对应的数据文件的标识,使用所述第一合约打开所述第一智能合约对应的数据文件,并生成所述第二合约的合约对象;
获取模块,用于使用所述第二合约的合约对象从所述第一智能合约对应的数据文件中获取所述查询请求对应的数据;
其中,所述第一合约用于对创建和打开所述区块链系统中的数据文件,所述第二合约用于对所述第一合约打开的数据文件进行操作。
在一种可能的设计中,所述处理模块还用于:根据所述第一合约的合约地址创建所述第一合约的合约对象,并使用所述第一合约的合约对象的第一接口在所述区块链系统中创建所述第一智能合约对应的初始数据文件;进一步地,通过所述第一合约的合约对象的第二接口打开所述第一智能合约对应的初始数据文件时,生成所述第二合约的合约对象,并使用所述第二合约的合约对象的各个接口将所述第一智能合约的合约数据写入所述第一智能合约对应的初始数据文件,得到所述第一智能合约对应的数据文件。
在一种可能的设计中,所述处理模块还用于:检测到使用所述第一智能合约执行交易得到的交易结果首次写入所述第一智能合约的合约地址时,根据所述第一合约的合约地址创建所述第一合约的合约对象,并使用所述第一合约的合约对象的第一接口在所述区块链系统中创建所述第一智能合约对应的初始数据文件;进一步地,通过所述第一合约的合约对象的第二接口打开所述第一智能合约对应的初始数据文件时,生成所述第二合约的合约对象,并使用所述第二合约的合约对象的各个接口将所述交易结果写入所述第一智能合约对应的初始数据文件,得到所述第一智能合约对应的数据文件。
在一种可能的设计中,所述获取模块还用于:获取第二智能合约执行交易得到的交易结果,所述第二智能合约为所述第一智能合约的升级合约;相应地,所述处理模块还用于:通过所述第一合约和所述第二合约将所述第二智能合约执行交易得到的交易结果写入所述第一智能合约对应的数据文件,并建立所述第二智能合约与所述第一智能合约对应的数据文件的对应关系。
在一种可能的设计中,所述第一合约使用第一类型语言编写,所述第一类型语言为区块链系统中节点的本地语言;具体实施中,所述收发模块还用于:接收所述第一合约的部署请求,所述部署请求包括所述第一合约的合约地址;相应地,所述处理模块还用于:按照所述第一合约的合约地址将所述第一合约部署在所述区块链系统上。
第三方面,本发明实施例提供了一种计算设备,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行上述第一方面任意所述的基于区块链系统的数据处理方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行上述第一方面任意所述的基于区块链系统的数据处理方法。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种区块链系统的架构示意图;
图2为本发明实施例提供的一种基于区块链系统的数据处理方法对应的流程示意图;
图3为本发明实施例提供的一种基于区块链系统的数据处理装置的结构示意图;
图4为本发明实施例提供的一种计算设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
金融科技(Fintech)技术领域通常涉及到多种交易,比如,银行的交易可以包括售卡交易、存款交易、贷款交易、保险交易、理财交易等,银行每天的交易量可以达到数千笔甚至数万笔。随着区块链技术的逐步发展,金融科技领域也可以使用区块链技术来处理交易,举例来说,若多家银行之间涉及到相关交易,则可以通过设置联盟链来同步地处理各项相关交易,或者还可以将法院、客户等同时上链,共同维护联盟链的安全和稳定。
区块链系统可以是由多个节点组成的点对点(Peer To Peer,P2P)网络。P2P是一种运行在传输控制协议(Transmission Control Protocol,TCP)之上的应用层协议,在区块链系统中的节点可以彼此对等,系统中不存在中心节点,因此每个节点都可以随机地连接其它节点。在区块链系统中,每个节点内部都可以设置有预设数据库,各个节点通过预设数据库共同维护区块链系统中的公共账本,节点内部的预设数据库可以存储区块链系统中的区块数据;其中,区块数据包括区块头和区块体,区块头包括上一区块的哈希值、本区块的哈希值、本区块的块高、时间戳等信息,区块体包括交易数据,比如区块链系统中的节点对该区块进行共识的过程中处理待处理交易所生成的交易数据。
图1为本发明实施例提供的一种区块链系统的架构示意图,如图1所示,区块链系统中可以包括一个或多个节点,比如节点101、节点102、节点103与节点104,节点101~节点104中的任意两个节点可以通信连接,从而共同维护区块链系统。其中,任意两个节点可以通过有线方式连接,或者也可以通过无线方式连接,具体不作限定。
本发明实施例中,区块链系统中的节点可以具有多种功能,比如,路由功能、交易功能、区块链功能和共识功能等。具体地说,区块链系统中的节点可以把其他节点传送过来的交易数据等信息传送给更多的节点以实现节点之间的通信;或者,区块链系统中的节点可以用于支持用户进行交易;或者,区块链系统中的节点可以用于记录历史上的所有交易;或者,区块链系统中的节点可以通过验证和记录交易生成区块链中的新区块。实际应用中,路由功能是区块链系统中的每个节点必须具有的功能,而其它功能可由本领域技术人员根据实际需要进行设置。
需要说明的是,区块链系统中的一个节点可以在一台物理机(服务器)上,且一个节点具体可以是指服务器中运行的一个进程或者一系列进程。比如,区块链网络中的节点101可以为一个服务器上运行的一个进程,或者也可以为是指服务器,具体不作限定。
如图1所示,该系统架构中还可以包括客户端200,客户端200可以通过接入区块链网络与区块链系统中的任一节点连接。具体实施中,客户端200可以将交易发送给区块链系统中的任一节点,区块链系统中的某一节点在接收到交易后,可以将交易同步给区块链系统中的其它节点。该节点在同步交易后,还可以将交易存储在节点内部的交易池中;相应地,其它节点在接收到该节点同步的交易后,也可以将交易存储在其它节点内部的交易池中。如此,若某一节点确定处理多条交易,则可以从内部的交易池中获取多条交易,进而进行后续的交易处理及区块共识。
其中,交易可以以栈的形式存储在交易池中;如此,若某一节点确定处理多条交易,则可以从内部的交易池中获取最早入栈的多条交易进行后续的处理及共识过程。
基于图1所示意的系统架构,图2为本发明实施例提供的一种基于区块链系统的数据处理方法对应的流程示意图,该方法应用于区块链系统中的任一节点,比如节点101、节点102、节点103或节点104,该方法包括:
步骤201,接收查询请求。
其中,查询请求用于获取第一智能合约的合约数据,第一智能合约可以为区块链系统中部署的任一智能合约。
在一个示例中,查询请求可以包括第一智能合约的标识和查询参数。其中,第一智能合约的标识可以为唯一性标识,比如第一智能合约的合约名称、第一智能合约的合约地址等,第一智能合约的标识用于唯一标识第一智能合约;相应地,查询参数用于标识待查询的第一智能合约的合约数据。
本发明实施例中,查询请求可以由客户端200发送给节点,或者也可以由区块链系统中的其它节点发送给节点,不作限定。
步骤202,根据智能合约与数据文件的对应关系,确定所述第一智能合约对应的数据文件的标识。
本发明实施例中,节点中可以存储有智能合约与数据文件的对应关系,智能合约对应的数据文件为使用第一合约和第二合约对智能合约的合约数据进行备份得到的,智能合约对应的数据文件中可以备份有智能合约的全部合约数据,或者也可以备份有智能合约的部分合约数据,不作限定。
具体实施中,若查询请求用于获取第一智能合约的合约数据,则节点可以先根据智能合约与数据文件的对应关系确定是否存在第一智能合约对应的数据文件,若不存在第一智能合约对应的数据文件,则说明节点并未使用第一合约和第二合约对第一智能合约的合约数据进行备份,即第一智能合约的合约数据仅存储在第一智能合约的合约地址处,因此,节点只能从第一智能合约的合约地址处获取第一智能合约的合约数据。比如,节点可以先根据第一智能合约的合约地址创建第一智能合约的合约对象,再调用第一智能合约的合约对象的获取接口从第一智能合约的合约地址处获取第一智能合约的合约数据。
相应地,若存在第一智能合约对应的数据文件,则说明节点已使用第一合约和第二合约对第一智能合约的合约数据进行了备份,节点可以从第一智能合约对应的数据文件中获取第一智能合约的合约数据,如此,节点可以根据智能合约与数据文件的对应关系确定第一智能合约对应的数据文件的标识,并根据第一智能合约对应的数据文件的标识确定第一智能合约对应的数据文件,从而从第一智能合约对应的数据文件中获取第一智能合约的合约数据。
需要说明的是,智能合约与数据文件的对应关系的存储方式可以由本领域技术人员根据经验进行设置,比如可以以对应关系表的形式存储,或者也可以以对应关系表图的形式存储,或者还可以以对应关系键值对的形式存储,具体不作限定。
下面以采用对应关系表的形式存储智能合约与数据文件的对应关系为例描述数据处理方法的具体实现过程。
本发明实施例中,节点可以对区块链系统中部署的每个智能合约的合约数据进行备份,得到每个智能合约对应的数据文件,或者也可以仅对用户选定的智能合约的合约数据进行备份,得到某些智能合约对应的数据文件。相应地,当备份得到某一智能合约对应的数据文件后,节点还可以将某一智能合约和数据文件的对应关系添加到智能合约和数据文件的对应关系表中。
其中,智能合约和数据文件的对应关系表中可以存储智能合约的标识和智能合约对应的数据文件的标识,如此,节点在接收到查询第一智能合约的合约数据的查询请求后,若确定存在第一智能合约对应的数据文件,则可以根据第一智能合约的标识从第一智能合约和数据文件的对应关系表中查询得到第一智能合约对应的数据文件的标识。
步骤203,根据所述第一智能合约对应的数据文件的标识,使用所述第一合约打开所述第一智能合约对应的数据文件,并生成所述第二合约的合约对象。
本发明实施例中,节点预先在区块链系统中部署了第一合约和第二合约,第一合约用于创建和打开区块链系统中的任一数据文件,第二合约用于对第一合约打开的数据文件进行操作,操作的方式可以包括增加数据、删除数据、修改数据和查询数据,还可以包括其它操作,比如统计和值等,不作限定。
其中,第一合约和第二合约均可以基于数据文件的标识对数据文件进行操作,数据文件的标识可以为数据文件的文件名,也可以为数据文件的存储位置,不作限定。
作为一个示例,数据文件为数据表,数据文件的标识为数据表的表名,如此,第一合约可以基于数据表的表名打开数据表,或者可以在创建数据表后为数据表分配对应的表名;相应地,第二合约可以基于第一合约所打开的数据表的表名对数据表中的数据进行操作。
基于该示例,当数据文件为数据表时,数据表的存储方式可以基于区块链系统底层的存储方式进行设置,比如若区块链系统底层使用键值对数据库存储数据,则数据表的类型可以为键值对数据表,且表名为键Key,表数据为键对应的值Value,或者,若区块链系统底层使用关系型数据库存储数据,则数据表的类型可以为关系型数据表。
具体实施中,当确定第一智能合约对应的数据文件的标识后,节点可以获取合约与地址的对应关系,由于合约与地址的对应关系中存储有区块链系统中部署的任意合约与所述任意合约的合约地址,因此节点可以从该对应关系中确定出第一合约的合约地址,并可以使用第一合约的合约地址创建第一合约的合约对象;其中,第一合约的合约对象能够基于数据文件的标识在区块链系统中创建和打开数据文件。如此,节点可以将第一智能合约对应的数据文件的标识作为第一合约的合约对象的参数,从而使用第一合约的合约对象打开第一智能合约对应的数据文件;相应地,当第一合约执行打开数据文件的操作时,节点可以生成第二合约的合约对象,以使第二合约的合约对象与第一合约打开的数据文件相关联。
由此可知,第二合约可以为设置在第一合约中的动态合约,第二合约与第一合约为嵌套与被嵌套的关系,第一合约可以创建和打开动态的第二合约,而被创建或被打开的第二合约能够对第一合约打开的数据文件进行操作。
在一个示例中,第一合约的合约对象包括第一接口和第二接口,第一接口用于在区块链系统中创建数据文件,而第二接口用于在区块链系统中打开数据文件。具体实施中,节点可以将第一智能合约对应的数据文件的标识作为第一合约的合约对象的第二接口的参数,从而调用第一合约的合约对象的第二接口打开第一智能合约对应的数据文件;相应地,第一合约的合约对象的第二接口与第二合约关联,当第二接口被调用时,节点可以自动创建第二合约的合约对象,并可以为第二合约的合约对象分配临时地址。
其中,第二合约的合约对象对应的临时地址用于节点调用第二合约的合约对象的接口,节点在为第二合约的合约对象分配临时地址后,还可以将第二合约的合约对象与临时地址的对应关系存储在节点的执行上下文中,以使区块链系统中的以太坊虚拟机(Environment Virtual Machine,EVM)在后续的交易过程中能够获取到该临时地址,并完成对第二合约的合约对象的接口的调用。
步骤204,使用所述第二合约的合约对象从所述第一智能合约对应的数据文件中获取所述查询请求对应的数据。
本发明实施例中,第二合约的合约对象包括查询接口,当节点生成第二合约的合约对象后,可以基于第二合约的合约对象的临时地址调用第二合约的合约对象的查询接口,并可以在查询接口中设置第一智能合约对应的数据文件的标识和查询参数,以使得该查询接口能够从第一智能合约对应的数据文件中查询得到查询参数对应的第一智能合约的合约数据。
举例来说,表1为第一智能合约对应的一种数据文件的结构示意表,若查询参数为“账户0X7a1”,第二合约的查询接口用于获取查询参数对应的全部数据,则查询得到的数据为“资产编号:101001、资产描述:笔记本电脑、资产状态:发放中、资产价值:10000”。
表1:一种数据文件的示意
账户 | 资产编号 | 资产描述 | 资产状态 | 资产价值 |
0x8fvc | 101002 | 电脑包 | 注销 | 150 |
0X3d6 | 103001 | 显示器 | 正常 | 3000 |
0X7a1 | 101001 | 笔记本电脑 | 发放中 | 10000 |
在一个示例中,由于动态合约的合约地址在处块后会被清空,因此,当第二合约的合约对象的接口调用完成后,节点还可以自动将节点的执行上下文中第二合约的合约对象与临时地址的对应关系删除,从而及时清空无用的临时地址,降低无用信息在区块链系统中的资源占用率,提高数据处理的效率。
本发明实施例中的数据处理方法可以包括使用阶段(使用智能合约对应的数据文件查询智能合约的合约数据)和创建阶段(创建智能合约对应的数据文件),上述过程描述了使用阶段的具体实现过程,下面介绍创建阶段的实现过程,由于创建阶段可以分为部署合约子阶段和备份数据子阶段,因此下面分别从部署合约子阶段和备份数据子阶段描述创建智能合约对应的数据文件的过程。
部署合约子阶段
部署合约子阶段是指将第一合约和第二合约部署到区块链系统的每个节点的过程,由于第二合约为第一合约内嵌套的动态合约,因此第二合约的合约地址是在第一合约调用第二接口时自动分配的临时地址,因此,第二合约不涉及部署过程。
相应地,第一合约的部署过程存在多种可能,下面描述两种可能的部署方式:
在一种可能的部署方式中,第一合约使用第一类型语言编写,第一类型语言为区块链系统中节点的本地语言(即Native语言),比如C语言、C++语言、Java语言等。在该种部署方式中,第一合约的合约地址可以由开发人员进行设置,从而第一合约的合约地址是预先设置的固定地址。
具体实施中,开发人员使用节点的本地语言编写第一合约后,可以根据第一合约的合约逻辑和第一合约的合约地址生成第一合约的部署请求,并将第一合约的部署请求发送给区块链系统的任一节点,以使该节点将第一合约的部署请求同步给区块链系统的其它节点;相应地,针对于区块链系统中的任一节点,该节点接收到第一合约的部署请求后,可以按照部署请求中第一合约的合约地址在该节点中创建对应的路径,然后将第一合约的合约逻辑存储在该路径下,从而实现第一合约部署在该节点中的部署过程。
进一步地,区块链系统中的每个节点部署完第一合约后,均可以向其它节点发送部署结果,以使其它节点对部署结果进行共识,若共识通过,则区块链系统成功部署第一合约,若共识不通过,则区块链系统可以向开发人员反馈部署失败的响应消息。
在该种部署方式中,通过设置第一合约由本地语言编写,可以无需人为将第一合约的代码修改为虚拟机可读的代码,从而可以降低人工操作的成本;且,通过为第一合约设置固定的合约地址,使得区块链系统可以通过固定的合约地址来创建第一合约的合约对象,相对于现有技术每次都需要使用不同智能合约的合约地址创建不同智能合约的合约对象才能获取到不同智能合约的合约数据的方式来说,可以降低数据处理量,提高数据的处理效率。
在另一种可能的部署方式中,第一合约采用第二类型编程语言进行编写,第二类型编程语言是指Solidity语言。在该种部署方式中,第一合约的合约地址是在被部署在区块链系统时由区块链系统随机分配给第一合约的,从而第一合约的合约地址是随机地址。
具体实施中,开发人员使用节点的本地语言编写第一合约后,还可以对第一合约进行编辑,以将第一合约的本地语言转化为虚拟机能够解析的Solidity语言,如此,开发人员可以根据第一合约的合约逻辑生成第一合约的部署请求,并将第一合约的部署请求发送给区块链系统的任一节点,以使该节点将第一合约的部署请求同步给区块链系统的其它节点;相应地,针对于区块链系统中的任一节点,该节点接收到第一合约的部署请求后,可以按照虚拟机为第一合约分配的随机合约地址在该节点中创建对应的路径,然后将第一合约的合约逻辑存储在该路径下,从而实现第一合约部署在该节点中的部署过程。
进一步地,区块链系统中的每个节点部署完第一合约后,均可以向其它节点发送部署结果,以使其它节点对部署结果进行共识,若共识通过,则区块链系统成功部署第一合约,若共识不通过,则区块链系统可以向开发人员反馈部署失败的响应消息。
在该种部署方式中,通过设置第一合约由Solidity语言编写,可以有虚拟机为第一合约随机分配地址,而无需人为设定第一合约的地址,从而自动化程度更高,灵活性更好。
需要说明的是,如论采用何种部署方式,区块链系统在成功部署第一合约后,均可以将第一合约和第一合约的合约地址存储在合约与地址的对应关系中,如此,区块链系统中的任一节点可以从合约与地址的对应关系中查询得到第一合约的合约地址,以完成对第一合约的调用。
备份数据子阶段
备份数据子阶段是指使用部署好的第一合约和第二合约将区块链系统中任意智能合约的合约数据备份到智能合约对应的数据文件的过程,节点可以自动对区块链系统中的任一智能合约的合约数据进行备份,也可以对设定的智能合约的合约数据进行备份,不作限定。
相应地,合约数据的备份过程可以存在多种可能,下面主要描述两种可能的备份方式:
在一种可能的备份方式中,节点可以对区块链系统中已存在合约数据的智能合约进行备份。具体实施中,某一智能合约的合约数据已存储在该智能合约的合约地址,当需要对该智能合约的合约数据进行备份时,节点可以先根据第一合约的合约地址创建第一合约的合约对象,然后调用第一合约的合约对象的第一接口在区块链系统中创建该智能合约对应的初始数据文件,并记录该智能合约对应的初始数据文件的标识;其中,智能合约对应的初始数据文件可以为占用了预设存储空间的空文件。
进一步地,节点可以调用第一合约的合约对象的第二接口打开该智能合约对应的初始数据文件,从而生成第二合约的合约对象以及第二合约的合约对象的临时地址;相应地,节点可以根据该智能合约的合约地址创建该智能合约的合约对象,并可以调用该智能合约的合约对象的接口从该智能合约的合约地址处获取该智能合约的合约数据,然后可以使用第二合约的合约对象的临时地址调用第二合约的合约对象的写入接口,并基于该智能合约对应的初始数据文件的标识将该智能合约的合约数据写入该智能合约对应的初始数据文件中,以得到该智能合约对应的数据文件,完成对该智能合约的合约数据的备份。
在上述备份方式中,第一合约和第二合约可以对已存在的任意智能合约的合约数据进行备份,得到任意智能合约对应的数据文件,从而可以在保护智能合约的合约数据的基础上便于用户对已存在的智能合约的合约数据进行查询,提高用户的体验;且,上述备份方式还可以支持用户的个性化设置,比如可以仅对用户选择的智能合约的合约数据进行备份,而无需对全部的智能合约的合约数据进行备份,从而可以降低数据文件在区块链系统中的资源占用率,降低对区块链系统的影响。
在另一种可能的备份方式中,节点可以对区块链系统中未存入合约数据的智能合约进行备份。具体实施中,某一智能合约的合约地址处还未存储有智能合约的合约数据,若节点检测到使用该智能合约执行交易得到的交易结果首次写入该智能合约的合约地址时,节点可以根据第一合约的合约地址创建第一合约的合约对象,并可以调用第一合约的合约对象的第一接口在区块链系统中创建该智能合约对应的初始数据文件,并可以通过第一合约的合约对象的第二接口打开该智能合约对应的初始数据文件,从而生成第二合约的合约对象以及第二合约的合约对象的临时地址。
进一步地,节点可以使用第二合约的合约对象的临时地址调用第二合约的合约对象的写入接口,并基于该智能合约对应的初始数据文件的标识将该智能合约的交易结果写入该智能合约对应的初始数据文件中,以得到该智能合约对应的数据文件,完成对该智能合约的合约数据的备份。
在上述备份方式中,第一合约和第二合约在检测到智能合约首次向其地址写入数据时,可以自动创建该智能合约对应的数据文件,该过程可以自动对区块链系统中任意智能合约的合约数据进行备份,且无需人为干预,从而可以降低维护成本,提高管理智能合约的合约数据的灵活性。
需要说明的是,如论采用何种备份方式,区块链系统在成功将智能合约的合约数据备份到智能合约对应的数据文件(即创建智能合约对应的数据文件)后,均可以将该智能合约的标识和该智能合约对应的数据文件的标识存储在智能合约与数据文件的对应关系中,如此,区块链系统中的任一节点可以从智能合约与数据文件的对应关系中查询得到智能合约对应的数据文件的标识,以从智能合约对应的数据文件中获取智能合约的合约数据。
在一个示例中,当检测到区块链系统中部署了第一智能合约的升级合约(比如第二智能合约)时,节点还可以自动建立第二智能合约与第一智能合约对应的数据文件的对应关系,并可以将第一智能合约从区块链系统中废弃,如此,可以实现新版本智能合约的逻辑与旧版本智能合约的数据的对应。具体实施中,当获取第二智能合约执行交易得到的交易结果后,若确定第二智能合约为第一智能合约的升级合约,则节点可以根据第一合约的合约地址创建第一合约的合约对象,然后可以通过第一合约的合约对象的第二接口打开第一智能合约对应的数据文件,从而生成第二合约的合约对象以及第二合约的合约对象的临时地址;进一步地,节点可以使用第二合约的合约对象的临时地址调用第二合约的合约对象的写入接口,并可以基于第一智能合约对应的数据文件的标识将第二智能合约的交易结果写入第一智能合约对应的数据文件中,进而可以建立第二智能合约与第一智能合约对应的数据文件的对应关系。
在上述示例中,通过自动建立新版本智能合约与旧版本智能合约的数据文件的对应关系,并将新版本智能合约的交易结果存储在该数据文件中,使得新版本智能合约能够直接基于旧版本智能合约的合约数据来执行后续的交易,由此可知,该种方式可以自动维持智能合约在升级后的逻辑与数据的对应关系,在保证交易的准确性的基础上,提高了区块链系统的数据处理能力。
本发明的上述实施例中,接收查询请求,所述查询请求用于获取第一智能合约的合约数据;根据智能合约与数据文件的对应关系,确定所述第一智能合约对应的数据文件的标识,根据所述第一智能合约对应的数据文件的标识,使用所述第一合约打开所述第一智能合约对应的数据文件,并生成所述第二合约的合约对象,使用所述第二合约的合约对象从所述第一智能合约对应的数据文件中获取所述查询请求对应的数据;其中,所述第一智能合约对应的数据文件是所述第一智能合约的合约数据的备份,所述第一智能合约对应的数据文件是通过第一合约和第二合约得到的,所述第一合约用于对创建和打开所述区块链系统中的数据文件,所述第二合约用于对所述第一合约打开的数据文件进行操作。本发明实施例中,第一合约可以创建和打开区块链系统中的任一数据文件,第二合约可以对第一合约打开的数据文件进行操作,通过使用第一合约和第二合约生成智能合约对应的数据文件,当需要获取智能合约的合约数据时,只要查询得到智能合约对应的数据文件的标识,就可以使用第一合约和第二合约打开对应的数据文件,相比于现有技术需要使用智能合约的合约地址创建智能合约的合约对象才能获取到智能合约的合约数据的方式来说,操作简单,便于实现,且可以提高数据处理的效率。
针对上述方法流程,本发明实施例还提供一种基于区块链系统的数据处理装置,该装置的具体内容可以参照上述方法实施。
图3为本发明实施例提供的一种基于区块链系统的数据处理装置的结构示意图,包括:
收发模块301,用于接收查询请求,所述查询请求用于获取第一智能合约的合约数据;
确定模块302,用于根据智能合约与文件的对应关系,确定所述第一智能合约对应的数据文件的标识;所述第一智能合约对应的数据文件是所述第一智能合约的合约数据的备份;所述第一智能合约对应的数据文件是通过第一合约和第二合约得到的;
处理模块303,用于根据所述第一智能合约对应的数据文件的标识,使用所述第一合约打开所述第一智能合约对应的数据文件,并生成所述第二合约的合约对象;
获取模块304,用于使用所述第二合约的合约对象从所述第一智能合约对应的数据文件中获取所述查询请求对应的数据;
其中,所述第一合约用于对创建和打开所述区块链系统中的数据文件,所述第二合约用于对所述第一合约打开的数据文件进行操作。
可选地,所述处理模块303还用于:
根据所述第一合约的合约地址创建所述第一合约的合约对象,并使用所述第一合约的合约对象的第一接口在所述区块链系统中创建所述第一智能合约对应的初始数据文件;
通过所述第一合约的合约对象的第二接口打开所述第一智能合约对应的初始数据文件时,生成所述第二合约的合约对象;使用所述第二合约的合约对象的各个接口将所述第一智能合约的合约数据写入所述第一智能合约对应的初始数据文件,得到所述第一智能合约对应的数据文件。
可选地,所述处理模块303还用于:
检测到使用所述第一智能合约执行交易得到的交易结果首次写入所述第一智能合约的合约地址时,根据所述第一合约的合约地址创建所述第一合约的合约对象,并使用所述第一合约的合约对象的第一接口在所述区块链系统中创建所述第一智能合约对应的初始数据文件;
通过所述第一合约的合约对象的第二接口打开所述第一智能合约对应的初始数据文件时,生成所述第二合约的合约对象;使用所述第二合约的合约对象的各个接口将所述交易结果写入所述第一智能合约对应的初始数据文件,得到所述第一智能合约对应的数据文件。
可选地,所述获取模块304还用于:获取第二智能合约执行交易得到的交易结果,所述第二智能合约为所述第一智能合约的升级合约;
所述处理模块303还用于:通过所述第一合约和所述第二合约将所述第二智能合约执行交易得到的交易结果写入所述第一智能合约对应的数据文件,并建立所述第二智能合约与所述第一智能合约对应的数据文件的对应关系。
可选地,所述第一合约使用第一类型语言编写,所述第一类型语言为区块链系统中节点的本地语言;
所述收发模块301还用于:接收所述第一合约的部署请求,所述部署请求包括所述第一合约的合约地址;
所述处理模块303还用于:按照所述第一合约的合约地址将所述第一合约部署在所述区块链系统上。
从上述内容可以看出:本发明的上述实施例中,接收查询请求,所述查询请求用于获取第一智能合约的合约数据;根据智能合约与数据文件的对应关系,确定所述第一智能合约对应的数据文件的标识,根据所述第一智能合约对应的数据文件的标识,使用所述第一合约打开所述第一智能合约对应的数据文件,并生成所述第二合约的合约对象,使用所述第二合约的合约对象从所述第一智能合约对应的数据文件中获取所述查询请求对应的数据;其中,所述第一智能合约对应的数据文件是所述第一智能合约的合约数据的备份,所述第一智能合约对应的数据文件是通过第一合约和第二合约得到的,所述第一合约用于对创建和打开所述区块链系统中的数据文件,所述第二合约用于对所述第一合约打开的数据文件进行操作。本发明实施例中,第一合约可以创建和打开区块链系统中的任一数据文件,第二合约可以对第一合约打开的数据文件进行操作,通过使用第一合约和第二合约生成智能合约对应的数据文件,当需要获取智能合约的合约数据时,只要查询得到智能合约对应的数据文件的标识,就可以使用第一合约和第二合约打开对应的数据文件,相比于现有技术需要使用智能合约的合约地址创建智能合约的合约对象才能获取到智能合约的合约数据的方式来说,操作简单,便于实现,且可以提高数据处理的效率。
基于同一发明构思,本发明实施例还提供了一种计算设备,如图4所示,包括至少一个处理器401,以及与至少一个处理器连接的存储器402,本发明实施例中不限定处理器401与存储器402之间的具体连接介质,图4中处理器401和存储器402之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本发明实施例中,存储器402存储有可被至少一个处理器401执行的指令,至少一个处理器401通过执行存储器402存储的指令,可以执行前述的基于区块链系统的数据处理方法中所包括的步骤。
其中,处理器401是终端设备的控制中心,可以利用各种接口和线路连接终端设备的各个部分,通过运行或执行存储在存储器402内的指令以及调用存储在存储器402内的数据,从而实现数据处理。可选的,处理器401可包括一个或多个处理单元,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理下发指令。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。在一些实施例中,处理器401和存储器402可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器401可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合基于区块链系统的数据处理实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器402可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器402是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器402还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行图2任意所述的基于区块链系统的数据处理方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种基于区块链系统的数据处理方法,其特征在于,所述方法包括:
接收查询请求,所述查询请求用于获取第一智能合约的合约数据;
根据智能合约与数据文件的对应关系,确定所述第一智能合约对应的数据文件的标识;所述第一智能合约对应的数据文件是所述第一智能合约的合约数据的备份;所述第一智能合约对应的数据文件是通过第一合约和第二合约得到的;
根据所述第一智能合约对应的数据文件的标识,使用所述第一合约打开所述第一智能合约对应的数据文件,并生成所述第二合约的合约对象;
使用所述第二合约的合约对象从所述第一智能合约对应的数据文件中获取所述查询请求对应的数据;
其中,所述第一合约用于对创建和打开所述区块链系统中的数据文件,所述第二合约用于对所述第一合约打开的数据文件进行操作。
2.根据权利要求1所述的方法,其特征在于,所述第一智能合约对应的数据文件是通过第一合约和第二合约得到的,包括:
根据所述第一合约的合约地址创建所述第一合约的合约对象,并使用所述第一合约的合约对象的第一接口在所述区块链系统中创建所述第一智能合约对应的初始数据文件;
通过所述第一合约的合约对象的第二接口打开所述第一智能合约对应的初始数据文件时,生成所述第二合约的合约对象;使用所述第二合约的合约对象的各个接口将所述第一智能合约的合约数据写入所述第一智能合约对应的初始数据文件,得到所述第一智能合约对应的数据文件。
3.根据权利要求1所述的方法,其特征在于,所述第一智能合约对应的数据文件是通过第一合约和第二合约得到的,包括:
检测到使用所述第一智能合约执行交易得到的交易结果首次写入所述第一智能合约的合约地址时,根据所述第一合约的合约地址创建所述第一合约的合约对象,并使用所述第一合约的合约对象的第一接口在所述区块链系统中创建所述第一智能合约对应的初始数据文件;
通过所述第一合约的合约对象的第二接口打开所述第一智能合约对应的初始数据文件时,生成所述第二合约的合约对象;使用所述第二合约的合约对象的各个接口将所述交易结果写入所述第一智能合约对应的初始数据文件,得到所述第一智能合约对应的数据文件。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
获取第二智能合约执行交易得到的交易结果,所述第二智能合约为所述第一智能合约的升级合约;
通过所述第一合约和所述第二合约将所述第二智能合约执行交易得到的交易结果写入所述第一智能合约对应的数据文件,并建立所述第二智能合约与所述第一智能合约对应的数据文件的对应关系。
5.根据权利要求4所述的方法,其特征在于,所述第一合约使用第一类型语言编写,所述第一类型语言为区块链系统中节点的本地语言;
所述第一合约的合约地址通过如下方式得到:
接收所述第一合约的部署请求,所述部署请求包括所述第一合约的合约地址;
按照所述第一合约的合约地址将所述第一合约部署在所述区块链系统上。
6.一种基于区块链系统的数据处理装置,其特征在于,所述装置包括:
收发模块,用于接收查询请求,所述查询请求用于获取第一智能合约的合约数据;
确定模块,用于根据智能合约与文件的对应关系,确定所述第一智能合约对应的数据文件的标识;所述第一智能合约对应的数据文件是所述第一智能合约的合约数据的备份;所述第一智能合约对应的数据文件是通过第一合约和第二合约得到的;
处理模块,用于根据所述第一智能合约对应的数据文件的标识,使用所述第一合约打开所述第一智能合约对应的数据文件,并生成所述第二合约的合约对象;
获取模块,用于使用所述第二合约的合约对象从所述第一智能合约对应的数据文件中获取所述查询请求对应的数据;
其中,所述第一合约用于对创建和打开所述区块链系统中的数据文件,所述第二合约用于对所述第一合约打开的数据文件进行操作。
7.根据权利要求6所述的装置,其特征在于,所述处理模块还用于:
根据所述第一合约的合约地址创建所述第一合约的合约对象,并使用所述第一合约的合约对象的第一接口在所述区块链系统中创建所述第一智能合约对应的初始数据文件;
通过所述第一合约的合约对象的第二接口打开所述第一智能合约对应的初始数据文件时,生成所述第二合约的合约对象;使用所述第二合约的合约对象的各个接口将所述第一智能合约的合约数据写入所述第一智能合约对应的初始数据文件,得到所述第一智能合约对应的数据文件。
8.根据权利要求6所述的装置,其特征在于,所述处理模块还用于:
检测到使用所述第一智能合约执行交易得到的交易结果首次写入所述第一智能合约的合约地址时,根据所述第一合约的合约地址创建所述第一合约的合约对象,并使用所述第一合约的合约对象的第一接口在所述区块链系统中创建所述第一智能合约对应的初始数据文件;
通过所述第一合约的合约对象的第二接口打开所述第一智能合约对应的初始数据文件时,生成所述第二合约的合约对象;使用所述第二合约的合约对象的各个接口将所述交易结果写入所述第一智能合约对应的初始数据文件,得到所述第一智能合约对应的数据文件。
9.根据权利要求7或8所述的装置,其特征在于,所述获取模块还用于:获取第二智能合约执行交易得到的交易结果,所述第二智能合约为所述第一智能合约的升级合约;
所述处理模块还用于:通过所述第一合约和所述第二合约将所述第二智能合约执行交易得到的交易结果写入所述第一智能合约对应的数据文件,并建立所述第二智能合约与所述第一智能合约对应的数据文件的对应关系。
10.根据权利要求9所述的装置,其特征在于,所述第一合约使用第一类型语言编写,所述第一类型语言为区块链系统中节点的本地语言;
所述收发模块还用于:接收所述第一合约的部署请求,所述部署请求包括所述第一合约的合约地址;
所述处理模块还用于:按照所述第一合约的合约地址将所述第一合约部署在所述区块链系统上。
11.一种计算设备,其特征在于,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行权利要求1~5任一权利要求所述的方法。
12.一种计算机可读存储介质,其特征在于,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行权利要求1~5任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911081181.4A CN110879900B (zh) | 2019-11-07 | 2019-11-07 | 一种基于区块链系统的数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911081181.4A CN110879900B (zh) | 2019-11-07 | 2019-11-07 | 一种基于区块链系统的数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110879900A true CN110879900A (zh) | 2020-03-13 |
CN110879900B CN110879900B (zh) | 2023-05-12 |
Family
ID=69729188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911081181.4A Active CN110879900B (zh) | 2019-11-07 | 2019-11-07 | 一种基于区块链系统的数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110879900B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966731A (zh) * | 2020-10-23 | 2020-11-20 | 支付宝(杭州)信息技术有限公司 | 一种在区块链系统中查询数据的方法和装置 |
CN113259478A (zh) * | 2021-06-17 | 2021-08-13 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行交易的方法、装置及区块链系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423945A (zh) * | 2017-04-13 | 2017-12-01 | 葛武 | 基于区块链技术的智能能源交易管理系统及方法 |
US20190179821A1 (en) * | 2017-08-01 | 2019-06-13 | Zhongan Information Technology Service Co., Ltd. | Method and system for accessing out-of-chain data based on consortium block chain |
CN109981646A (zh) * | 2019-03-26 | 2019-07-05 | 阿里巴巴集团控股有限公司 | 基于区块链的资源转移方法及装置和电子设备 |
CN110046999A (zh) * | 2019-02-28 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 区块链交易方法和装置 |
CN110188112A (zh) * | 2019-05-31 | 2019-08-30 | 深圳前海微众银行股份有限公司 | 一种区块链智能合约的变更记录的追溯方法及装置 |
-
2019
- 2019-11-07 CN CN201911081181.4A patent/CN110879900B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423945A (zh) * | 2017-04-13 | 2017-12-01 | 葛武 | 基于区块链技术的智能能源交易管理系统及方法 |
US20190179821A1 (en) * | 2017-08-01 | 2019-06-13 | Zhongan Information Technology Service Co., Ltd. | Method and system for accessing out-of-chain data based on consortium block chain |
CN110046999A (zh) * | 2019-02-28 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 区块链交易方法和装置 |
CN109981646A (zh) * | 2019-03-26 | 2019-07-05 | 阿里巴巴集团控股有限公司 | 基于区块链的资源转移方法及装置和电子设备 |
CN110188112A (zh) * | 2019-05-31 | 2019-08-30 | 深圳前海微众银行股份有限公司 | 一种区块链智能合约的变更记录的追溯方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966731A (zh) * | 2020-10-23 | 2020-11-20 | 支付宝(杭州)信息技术有限公司 | 一种在区块链系统中查询数据的方法和装置 |
CN113259478A (zh) * | 2021-06-17 | 2021-08-13 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行交易的方法、装置及区块链系统 |
CN113259478B (zh) * | 2021-06-17 | 2021-11-02 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行交易的方法、装置及区块链系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110879900B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111163129B (zh) | 一种基于跨链网络的资源处理方法及装置 | |
CN110020542B (zh) | 数据读写方法及装置、电子设备 | |
CN110032599B (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
CN110032598B (zh) | 字段更新方法及装置、电子设备 | |
CN109669709A (zh) | 一种区块链升级的数据迁移方法及数据迁移系统 | |
CN112153085A (zh) | 一种数据处理方法、节点及区块链系统 | |
CN111026767B (zh) | 区块链的数据存储方法、装置及硬件设备 | |
CN111209090B (zh) | 一种云平台中虚拟机的创建方法、组件及服务器 | |
WO2020259035A1 (zh) | 一种业务代码的生成、执行方法及装置 | |
CN110347545A (zh) | 一种业务平台缓存策略的测试方法及装置 | |
US20230275771A1 (en) | Pre-execution of block chain transaction in parallel during block consensus | |
US20230289782A1 (en) | Smart contract-based data processing | |
WO2021057482A1 (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
CN112400182A (zh) | 区块链中智能合约的执行方法及装置和电子设备 | |
CN110879900B (zh) | 一种基于区块链系统的数据处理方法及装置 | |
CN111563098A (zh) | 结构化与非结构化数据查询方法、设备、存储介质及装置 | |
CN111796937A (zh) | 基于内存的资源分配方法、计算机设备及存储介质 | |
CN113128998B (zh) | 一种区块链系统的业务处理方法、装置及系统 | |
CN110263047B (zh) | 一种数据中心节点分配方法、装置、系统及计算机设备 | |
WO2023226461A1 (zh) | 一种多域数据融合的方法、装置和存储介质 | |
CN111899096A (zh) | 一种防止区块链数据膨胀的方法、设备及介质 | |
CN111124631A (zh) | 一种基于区块链网络的任务处理方法及装置 | |
CN114022148B (zh) | 基于区块链的交易冲突检测方法、装置、设备和存储介质 | |
WO2022143242A1 (zh) | 基于区块链的交易分发执行方法、装置服务器及存储介质 | |
CN111429125B (zh) | 账户管理方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |