CN113327167A - 一种区块链数据处理方法 - Google Patents
一种区块链数据处理方法 Download PDFInfo
- Publication number
- CN113327167A CN113327167A CN202110704347.4A CN202110704347A CN113327167A CN 113327167 A CN113327167 A CN 113327167A CN 202110704347 A CN202110704347 A CN 202110704347A CN 113327167 A CN113327167 A CN 113327167A
- Authority
- CN
- China
- Prior art keywords
- target
- transaction
- data
- interface
- blockchain
- 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
- 238000003672 processing method Methods 0.000 title abstract description 14
- 238000012545 processing Methods 0.000 claims abstract description 47
- 238000000034 method Methods 0.000 claims description 59
- 238000012795 verification Methods 0.000 claims description 55
- 238000012217 deletion Methods 0.000 claims description 30
- 230000037430 deletion Effects 0.000 claims description 30
- 238000012216 screening Methods 0.000 claims description 30
- 238000003780 insertion Methods 0.000 claims description 25
- 230000037431 insertion Effects 0.000 claims description 25
- 239000007787 solid Substances 0.000 claims description 19
- 238000013507 mapping Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 25
- 230000006870 function Effects 0.000 description 16
- 238000012986 modification Methods 0.000 description 14
- 230000004048 modification Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000007792 addition Methods 0.000 description 5
- 239000013598 vector Substances 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Abstract
本申请实施例公开了一种区块链数据处理方法,该方法包括:接收客户端发送的目标交易;其中,目标交易中包括对区块链状态数据内容进行更改所调用的预编译合约的目标调用接口和交易参数,目标调用接口中包括以下预编译合约接口至少之一:表创建接口、数据插入接口、数据更新接口、数据查询接口和数据删除接口;调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果;发送目标交易至区块链系统中的多个背书节点;若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,基于交易执行结果更新区块链状态数据。本申请实施例还公开了一种区块链数据处理设备和存储介质。
Description
技术领域
本申请涉及区块链存储技术领域,尤其涉及一种区块链数据处理方法。
背景技术
随着计算机技术的飞速发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性和实时性要求,也对技术提出了更高的要求。由于区块链具有去中心化、开放性、自治性和信息不可篡改等特点,在金融科技领域得到的广泛的应用。在区块链运行过程中,区块链数据的操作尤为重要。在区块链数据读写过程中,通常通过运行于虚拟机中的智能合约来实现,即需要智能合约在读写过程中提供相应的读写接口。
目前,智能合约通常只能实现简单的存储、读取等操作,一旦涉及到复杂的增删查改等逻辑操作时,受智能合约语言和虚拟机的限制性能表现不佳,而区块链的一致性和不可篡改性使得升级智能合约语言语法或新增虚拟机指令成本较高,导致难以通过扩展虚拟机指令支持高性能的复杂增删改查操作。
申请内容
为解决上述技术问题,本申请实施例期望提供一种区块链数据处理方法,解决了目前通过智能合约实现复杂的增删改查等逻辑操作的实现过程难以实现的问题,实现了一种简单快捷地实现针对区块链的复杂增删查改等逻辑操作的方法,由于无需修改智能合约的语言,有效提高了智能合约的性能,保证了实现复杂的增删查改等逻辑操作的实现效率。
本申请的技术方案是这样实现的:
第一方面,一种区块链数据处理方法,所述方法应用于区块链数据处理节点,所述方法包括:
接收客户端发送的目标交易;其中,所述目标交易中包括对区块链状态数据内容进行更改所调用的预编译合约的目标调用接口和交易参数,所述目标调用接口中包括以下预编译合约接口至少之一:表创建接口、数据插入接口、数据更新接口、数据查询接口和数据删除接口;
调用所述预编译合约的所述目标调用接口,基于所述交易参数执行所述目标交易,得到交易执行结果;
发送所述目标交易至区块链系统中的多个背书节点;
若检测到区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,基于所述交易执行结果更新所述区块链状态数据;其中,所述广播结果为通过所述区块链系统对多个所述背书节点对所述目标交易进行验证后的验证结果进行确定得到的。
第二方面,一种区块链数据处理设备,所述区块链数据处理设备用于运行区块链数据处理节点,所述设备包括:存储器、处理器和通信总线;其中:
所述存储器,用于存储可执行指令;
所述通信总线,用于实现所述处理器和所述存储器之间的通信连接;
所述处理器,用于执行所述存储器中存储的区块链数据处理程序,实现上述任一项所述的区块链数据处理方法的步骤。
第三方面,一种存储介质,所述存储介质上存储有区块链数据处理程序,所述区块链数据处理程序被处理器执行时实现如上述任一项所述的区块链数据处理方法的步骤。
本申请实施例中,通过对接收到的客户端发送的目标交易后,调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果,并发送目标交易至区块链系统中的多个背书节点,若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,基于交易执行结果更新区块链状态数据,这样,通过预编译合约的目标调用接口,基于交易参数执行目标交易得到交易执行结果后,采用区块链系统对目标交易进行验证,在目标交易通过验证后,才基于交易执行结果更新区块链状态数据,解决了目前通过智能合约实现复杂的增删改查等逻辑操作的实现过程难以实现的问题,实现了一种简单快捷地实现针对区块链的复杂增删查改等逻辑操作的方法,由于无需修改智能合约的语言,有效提高了智能合约的性能,保证了实现复杂的增删查改等逻辑操作的实现效率。
附图说明
图1为本申请实施例提供的一种区块链数据处理方法的流程示意图;
图2为本申请实施例提供的另一种区块链数据处理方法的流程示意图;
图3为本申请实施例提供的又一种区块链数据处理方法的流程示意图;
图4为本申请实施例提供的一种应用场景示意图;
图5为本申请实施例提供的另一种应用场景示意图;
图6为本申请实施例提供的一种创建表的实现流程示意图;
图7为本申请实施例提供的一种插入数据的实现流程示意图;
图8为本申请实施例提供的一种查询数据的实现流程示意图;
图9为本申请实施例提供的一种区块链数据处理设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请的实施例提供一种区块链数据处理方法,参照图1所示,方法应用于区块链数据处理节点,该方法包括以下步骤:
步骤101、接收客户端发送的目标交易。
其中,目标交易中包括对区块链状态数据内容进行更改所调用的预编译合约的目标调用接口和交易参数,目标调用接口中包括以下预编译合约接口至少之一:表创建接口、数据插入接口、数据更新接口、数据查询接口和数据删除接口。
在本申请实施例中,客户端为用户可以操作的设备,例如可以是计算机类设备,用户通常指的是区块链开发者。区块链数据节点为对区块链进行管理的节点。目标交易为用户希望对区块链进行的增删改至少之一所对应的操作。用户对客户端进行操作,以实现对区块链进行管理控制时,客户端将用户发送的控制指令进行交易打包,得到目标交易。预编译合约是运行于区块链系统中的代码和数据的集合,其中,代码用于实现预编译合约的功能,数据复杂存储预编译合约的状态,预编译合约能够用于实现信息的接收和发送功能。预编译合约包括实现多种不同功能的接口,例如表创建接口可以用于实现创建表的功能、数据插入接口可以用于实现表中的行数据插入的功能、数据更新接口可以用于实现表中数据更新的功能和数据删除接口可以用于实现表中的数据删除的功能。交易参数为针对目标调用接口进行调用操作时,所需的操作参数。其中,在调用一些接口的过程中,还可能会调用其他接口,例如在调用数据更新接口的过程中,还需调用数据查询接口,即在调用数据更新接口更新数据的实现过程中,需先调用数据查询接口后查询到相应的数据后,再对相应的数据进行更新。区块链状态数据内容可以存储于区块链数据库中。
步骤102、调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果。
在本申请实施例中,区块链数据处理节点从目标交易中确定客户端调用的目标调用接口后,区块链数据处理节点调用对应的预编译合约的目标调用接口,来基于交易参数执行目标交易,得到交易执行结果。交易执行结果暂存于区块链数据处理节点所运行于的区块链数据处理设备的存储区域中。预编译合约由与区块链底层平台开发相同的语言实现,在预编译合约中提供表操作相关的接口,通过合约地址做确定是否是预编译合约,例如可以预先定义特殊地址如0x100-0x10000作为预编译合约的地址。
步骤103、发送目标交易至区块链系统中的多个背书节点。
在本申请实施例中,区块链数据处理节点将目标交易发送至区块链系统中的多个背书节点后,区块链系统中的多个背书节点对目标交易进行背书验证处理,得到每一背书节点针对目标交易的验证结果,多个背书节点将针对目标交易的验证结果发送给区块链系统,区块链系统接收到的多个针对目标交易的验证结果进行分析,得到用于进行广播通知的广播结果;其中,广播结果为目标交易通过验证或目标交易未通过验证。区块链系统接收到的多个针对目标交易的验证结果进行分析时,若超过一定数量的验证结果为验证通过,确定广播结果为目标交易通过验证,若低于一定数量验证结果为验证通过,确定广播结果为目标交易未通过验证。
步骤104、若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,基于交易执行结果更新区块链状态数据。
其中,广播结果为通过区块链系统对多个背书节点对目标交易进行验证后的验证结果进行确定得到的。
在本申请实施例中,区块链数据库可以是关系型数据库,也可以是键值型数据库。区块链数据处理节点可以获得区块链系统对目标交易进行验证操作的广播结果,在区块链数据处理节点基于广播结果确定目标交易通过验证操作时,根据交易执行结果对区块链状态数据即区块链数据库进行更新处理。区块链数据库的类型不同,更新的方式也不同。
本申请实施例中,通过对接收到的客户端发送的目标交易后,调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果,并发送目标交易至区块链系统中的多个背书节点,若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,基于交易执行结果更新区块链状态数据,这样,通过预编译合约的目标调用接口,基于交易参数执行目标交易得到交易执行结果后,采用区块链系统对目标交易进行验证,在目标交易通过验证后,才基于交易执行结果更新区块链状态数据,解决了目前通过智能合约实现复杂的增删改查等逻辑操作的实现过程难以实现的问题,实现了一种简单快捷地实现针对区块链的复杂增删查改等逻辑操作的方法,由于无需修改智能合约的语言,有效提高了智能合约的性能,保证了实现复杂的增删查改等逻辑操作的实现效率。
基于前述实施例,本申请的实施例提供一种区块链数据处理方法,参照图2所示,该方法应用于区块链数据处理节点,该方法包括以下步骤:
步骤201、接收客户端发送的目标交易。
其中,目标交易中包括对区块链状态数据内容进行更改所调用的预编译合约的目标调用接口和交易参数,目标调用接口中包括以下预编译合约接口至少之一:表创建接口、数据插入接口、数据更新接口、数据查询接口和数据删除接口。
在本申请实施例中,用户可以通过客户端上安装运行的软件开发工具包(Software Development Kit,SDK)来调用智能合约的各个接口来对区块链进行相应的操作,即用户对客户端上安装的SDK进行相应的操作,以调用预编译合约中的增删改查中的一种或者多种操作来对区块链数据库中的表进行修改的操作,用户每次调用增删改和创建表等对应的预编译合约的接口时,SDK均会将这些操作转换成一笔交易,并加上用户的私钥进行签名后发送到区块链上,以便对区块链的区块链数据库进行管理控制。
步骤202、从目标交易中获取合约地址。
在本申请实施例中,合约地址是用于对智能合约进行唯一标识的标识信息。通过交易调用智能合约的接口时,需要提供合约地址。合约地址包括两种类型,一种是用于标识预编译合约的地址,另一种是用于标识智能合约高级语言(Solidity)智能合约的地址,Solidity智能合约通常运行在以太坊虚拟机(Ethereum Virtual Machin,EVM)之上。由于调用目标调用接口时,需确定对应的智能合约的地址,因此,生成目标交易中还包括有智能合约对应的合约地址。
其中,区块链数据处理节点执行步骤202之后,可以选择执行步骤203和步骤205~206,或者可以选择执行步骤204~206;其中,若合约地址为预编译合约对应的地址,选择执行步骤203和步骤205~206,若合约地址为Solidity智能合约对应的地址,选择执行步骤204~206。
步骤203、若合约地址为预编译合约对应的地址,调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果。
在本申请实施例中,在合约地址为预编译合约对应的地址时,区块链数据处理节点可以根据合约地址确定预编译合约,以直接调用预编译合约对应的目标调用接口来根据交易参数执行目标交易,得到交易执行结果。
步骤204、若合约地址为Solidity智能合约对应的地址,通过Solidity智能合约调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果。
在本申请实施例中,在合约地址为Solidity智能合约对应的地址时,区块链数据节点首先需要调用Solidity智能合约,而预编译合约是嵌入在Solidity智能合约中的,因此在Solidity智能合约运行过程中,需要应用到预编译合约对应的功能时,Solidity智能合约回调用预编译合约对应的目标调用接口来实现对应的功能,这样,预编译合约在实现对应的功能得到相应的结果后,会将相应的结果返回至Solidity智能合约,以便Solidity智能合约对相应的结果进行进一步分析,得到最终结果,并将最终结果返回至客户端进行例如显示等操作。即目标调用接口属于预编译合约,而用户在使用过程中,调用的是Solidity智能合约,在实现目标交易时,Solidity智能合约运行过程中会调用预编译合约中的目标调用接口,来基于交易参数执行目标交易,得到交易执行结果。
步骤205、发送目标交易至区块链系统中的多个背书节点。
在本申请实施例中,区块链数据处理节点将目标交易提交至区块链系统中的具有对目标交易进行背书验证功能的背书节点,通过这些具有对目标交易进行背书验证功能的背书节点实现对目标交易的验证操作。在一些应用场景中,区块链数据处理节点也可以具备背书功能,也可以不具备背书功能。
步骤206、若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,基于交易执行结果更新区块链状态数据。
其中,广播结果为通过区块链系统对多个背书节点对目标交易进行验证后的验证结果进行确定得到的。
在本申请实施例中,区块链数据处理节点确定目标交易通过验证操作,即超过一定数量的具有背书功能的节点都认为目标交易可靠时,可以确定目标交易通过验证操作。在区块链数据处理节点确定目标交易通过验证后,基于交易执行结果对区块链数据库进行相应的更新操作。其中,区块链数据库用于存储区块链状态数据。
基于前述实施例,在本申请其他实施例中,执行步骤203或步骤204时,“调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果”具体可以由步骤a11~a13来实现,对应的,步骤206可以由步骤206a或步骤206b~206c来实现,若区块链数据库为关系型数据库,可以选择执行步骤206a,若区块链数据库为键值型数据库,可以选择执行步骤206b~206c:
步骤a11、若目标调用接口为表创建接口,调用表创建接口验证交易参数包括的表元数据信息是否合法。
其中,目标交易包括调用表创建接口验证交易参数包括的表元数据信息是否合法。
在本申请实施例中,表元数据信息至少包括表名和/或列名等信息。在目标调用接口为表创建接口时,区块链数据处理节点在区块链上对交易参数中包括的表元数据信息进行合法性验证,例如验证表元数据信息中包括的表名是否已经存在,若表名已经存在,则表名元数据信息不合法;或者表元数据信息中包括非法字符,则表名元数据信息不合法;或者对交易参数中包括的用户标识信息进行创建表权限判断,若确定该用户标识信息没有创建表权限,则表名元数据信息不合法。
步骤a12、若表创建接口验证表元数据信息合法,确定目标交易执行成功。
在本申请实施例中,在表创建接口验证表元数据信息合法时,表明表可以成功创建,即目标交易执行成功。
步骤a13、确定交易执行结果为表元数据信息。
步骤206a、若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为关系型数据库,将表元数据信息映射至区块链数据库中。
步骤206b、若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为键值型数据库,基于区块链数据库对应的表键值对参数和表元数据信息,构建目标交易对应的目标表键值对。
在本申请实施例中,不同的区块链数据库对应的表键值对参数形式不同,因此,根据对应的区块链数据库对应的表键值对参数,对表元数据信息中的信息进行键值对构建,得到与表键值对参数对应的目标表键值对。
步骤206c、存储目标表键值对至区块链数据库中。
在本申请实施例中,得到目标表键值对后,将目标表键值对存储至区块链数据库中,实现对区块链数据库的更新。
基于前述实施例,在本申请其他实施例中,执行步骤203或步骤204时,“调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果”具体可以由步骤b11~b13来实现,对应的,步骤206可以由步骤206d或步骤206e~206f来实现,若区块链数据库为关系型数据库,可以选择执行步骤206d,若区块链数据库为键值型数据库,可以选择执行步骤206e~206d:
步骤b11、若目标调用接口为数据插入接口,调用数据插入接口验证交易参数包括的第一目标行数据信息是否与区块链数据库中对应的表的行字段匹配。
其中,目标交易包括调用数据插入接口验证交易参数包括的第一目标行数据信息是否与区块链数据库中对应的表的行字段匹配。
在本申请实施例中,数据插入接口用于在区块链数据库中的某一个表中插入一行或多行数据,此时,可以判断交易参数包括的第一目标行数据信息中是否包括区块链数据库中对应的表的行字段所对应的内容。
步骤b12、若数据插入接口验证第一目标行数据信息与区块链数据库中对应的表的行字段匹配,确定目标交易执行成功。
在本申请实施例中,数据插入接口验证第一目标行数据信息与区块链数据库中对应的表的行字段匹配,表明第一目标行数据信息中包括区块链数据库中对应的表的行字段对应的全部必要内容。
步骤b13、确定交易执行结果为第一目标行数据信息。
步骤206d、若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为关系型数据库,将第一目标数行据信息映射至区块链数据库中。
步骤206e、若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为键值型数据库,基于区块链数据库对应的行键值对参数和第一目标行数据信息,构建目标交易对应的第一目标行键值对。
步骤206f、存储第一目标行键值对至区块链数据库中。
基于前述实施例,在本申请其他实施例中,执行步骤203或步骤204时,“调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果”具体可以由步骤c11~c13来实现,对应的,步骤206可以由步骤206g或步骤206h~206i来实现,若区块链数据库为关系型数据库,可以选择执行步骤206g,若区块链数据库为键值型数据库,可以选择执行步骤206h~206i:
步骤c11、若目标调用接口为数据更新接口,调用数据更新接口筛选与交易参数包括的第一筛选条件匹配的第一参考行数据信息。
在本申请实施例中,第一筛选条件是用于标识将要进行更新的数据的条件要求。
步骤c12、调用数据更新接口采用交易参数包括的待更新数据对第一参考行数据中对应的数据进行更新,得到第二目标行数据信息。
其中,目标交易包括调用数据更新接口筛选得到第一参考行数据和基于待更新数据对第一参考行数据中对应的数据进行更新。
步骤c13、确定交易执行结果为第二目标行数据信息。
步骤206g、若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为关系型数据库,采用第二目标数行据信息替换区块链数据库中的第一参考行数据信息。
步骤206h、若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为键值型数据库,基于区块链数据库对应的行键值对参数和第二目标行数据信息,构建目标交易对应的第二目标行键值对。
步骤206i、存储第二目标行键值对至区块链数据库中。
基于前述实施例,在本申请其他实施例中,执行步骤203或步骤204时,“调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果”具体可以由步骤d11~d13来实现,对应的,步骤206可以由步骤206j或步骤206k~206l来实现,若区块链数据库为关系型数据库,可以选择执行步骤206j,若区块链数据库为键值型数据库,可以选择执行步骤206k~206l:
步骤d11、若目标调用接口为数据删除接口,调用数据删除接口筛选与交易参数包括的第二筛选条件匹配的第二参考行数据信息。
在本申请实施例中,第二筛选条件为用于标识需要进行删除的数据的特征限定要求。
步骤d12、采用删除标识信息标识第二参考行数据信息,得到第三参考行数据信息。
在本申请实施例中,删除标识信息可以是用于标识需进行删除的标识信息。
步骤d13、确定交易执行结果为第三参考行数据信息。
步骤206j、若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为关系型数据库,生成删除语句来删除区块链数据库中的第三参考行数据信息。
步骤206k、若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为键值型数据库,基于区块链数据库对应的行键值对参数和第三参考数据信息,构建目标交易对应的第三目标行键值对。
步骤206l、删除区块链数据库中与第三目标行键值对相同的键值对。
基于前述实施例,在本申请其他实施例中,参照图3所示,区块链数据处理节点执行步骤206之后,还用于执行步骤207~208:
步骤207、若接收到客户端发送的包括请求调用预编译合约的数据查询接口和查询条件的查询请求,调用查询请求中包括的数据查询接口筛选与查询请求中的查询条件匹配的目标数据。
在本申请实施例中,由于数据查询过程对区块链数据库中的数据不进行实质性改变,因此,在用户希望查询区块链数据库中的数据时,可以不用使用区块链交易的操作来实现,有效降低了在查询过程中资源的消耗,提高查询效率。
步骤208、发送目标数据至客户端。
在本申请实施例中,区块链数据处理接单查询获取到目标数据后,将目标数据发送至客户端,以使目标数据显示于客户端的显示单元中,以供用户查看目标数据。
基于前述实施例,在本申请其他实施例中,步骤207可以由步骤207a~207b来实现:
步骤207a、若接收到客户端发送的查询请求,且区块链数据库为键值型数据库,从查询请求中确定与区块链数据库匹配的主键。
在本申请实施例中,主键指的是区块链数据库包括的表中的一个列或多列的二组合,用于唯一地标识表中的每一行。
步骤207b、调用数据查询接口,基于主键从区块链数据库中筛选得到与查询条件匹配的目标数据。
需说明的是,步骤207~208还可以与步骤201~206同时执行,也可以在步骤201~206之前执行,还可以作为一个独立实施例来实现。进一步的,步骤a11~a13、步骤b11~b13、步骤c11~c13、步骤d11~d13以及步骤207~208可以根据实际应用场景进行任意组合执行,此处不做具体限定。
基于前述实施例,本申请实施例提供一种直接调用预编译合约实现区块链数据处理方法的逻辑流程示意图,参照图4所示,包括运行于客户端节点上的SDK A1、预编译合约A2、表结构A3和区块链数据库A4。其中,通过预编译合约A2用于将创建表、增删改查表内数据的接口提供给用户,这样,用户可以通过SDK A1直接调用预编译合约A2来实现区块链数据处理方法将数据存储在区块链数据库A4上的表结构中。表结构A3用于存储前述交易执行结果。
或者,参照图5所示,包括运行于客户端节点上的SDK A1、Solidity智能合约A5、预编译合约A2、表结构A3和区块链数据库A4。其中,用户可以通过SDK A1来调用Solidity智能合约A5,Solidity智能合约A5进一步调用预编译合约A2来实现区块链数据处理方法将数据存储在区块链数据库A4上的表结构中。其中,客户端节点与前述客户端对应。
在实现区块链数据处理方法的增删查改等过程中,包括条件结构,条件结构用于存储用户增删改查操作时限定的操作条件,至少包括大于(>)、大于或等于(>=)、小于(<)、小于或等于(<=)、等于(==)、不等于(!=)和条数限制筛选方式,以及筛选条件之间的关系,其中,筛选条件之间的关系具体可以是与(and)和或(or)这两种方式。例如在区块链数据库中具有如下表所示的表名为存证表的表结构。
存证表
编号* | 存证方 | 存证日期 | 存证时间 | 存证类型 | 证据 |
1 | 机构1 | 201x-05-05 | 11:22 | 类型1 | AAA |
2 | 机构2 | 201x-05-06 | 13:55 | 类型2 | BBB |
3 | 机构1 | 201x-05-09 | 19:25 | 类型1 | CCC |
针对上表,用于查询存证表中所有机构1的存证时,筛选条件可以表示为:存证方==机构1;若需要查询存证表中201x年6月之后所有机构1的存证,筛选条件可以表示为:存证方==机构1and存证日期>=201x-06-01。
上表中的数据结构还可以用行结构来表示,即采用行结构表示区块链数据库包括的表中的一行记录,包括存储列名和对应的数据,可以通过列的标题获取行中对应列的数据值。例如对于上述存证表中的第一行数据对应的行结构可以记为:{“编号”:1,”存证方”:”机构1”,”存证日期”:”201x-05-05”,”存证时间”:”11:22”,”存证类型”:”类型1”,”证据”:”AAA”}。
区块链数据库中的表的表结构用于存储用户插入、修改或删除的行,并提供插入、删除、更新和查询的接口。表结构在区块链中主要有两方面的用途,一方面用于存储合约的状态数据和区块链相关的数据,由区块链平台的开发者调用,另一方面借助于编译合约提供给区块链平台的使用者调用。区块链平台的使用者使用表的形式有两种,一种是在编写智能合约时,调用表接口存储或查询数据,然后通过SDK调用智能合约的接口,另一种是使用SDK直接调用平台通过预编译合约提供的创建和操作表的接口。
在区块链数据处理节点调用表创建接口来创建表时,即用户通过创建表的接口,在区块链数据库中上创建一张表时,传入参数即前述交易参数可以包括表名、主键列名和其他列名,最终区块链数据处理节点会返回创建结果。区块链数据节点在创建表时的执行流程可以参照图6所示,包括:步骤31、开始;步骤32、调用表创建接口;步骤33、至少判断表名和列名是否合法,如果合法,执行步骤34,否则执行37;步骤34、判断表名在区块链上是否唯一,若是唯一,执行步骤35,否则执行步骤37;步骤35、判断用户是否有调用权限,若有,执行步骤36,否则,执行步骤37;步骤36、确定表创建成功;步骤37、确定表创建失败;步骤38、结束。其中,至少判断表名和列名是否合法时,如果表名或列名中包含非法字符则表明表名和列名不合法。表创建成功后,所建表的元信息被保存在内存中,只有当建表操作所在的目标交易正常执行,区块经过背书验证后,才会将相应的数据写入数据库中,如果调用所在的交易执行异常,那么建表的操作会被回滚,不会有数据提交到链上。
当交易执行成功,要将数据提交到区块链数据库中时,针对键值型数据库,以创建的是前述存证表为例进行说明,进行需要以表名“存证表”作为键,表的列名、主键和表的编号等元信息作为值编码存储在区块链数据库中。示例性的,假设表前缀是固定的字符“t”,上述存证表的编号为9,主键为编号字段,值可以采用JS对象简谱(JavaScript ObjectNotation,JSON)编码或更高效紧凑的编码算法进行编码处理,对应的,可以得到前述执行交易结果为:键(Key)为存证表,值(Value)为{表编号:9,主键:编号,列名:[存证方,存证日期,存证时间,存证类型,证据]}。针对关系型数据库,需要根据表名、列名拼接结构化查询语言(Structured Query Language,SQL)的建表语句,列默认类型可以使用字符串类型。
在区块链数据处理节点调用数据插入接口来插入数据时,通过调用数据插入接口将一行或一列数据插入到区块链数据库的数据表中,每行数据表示为一个行结构,对应的,数据插入接口实现插入数据的实现流程可以参照图7所示,包括以下步骤:步骤41、开始;步骤42、检查即将插入的行数据中所包含的字段是否都是被插入的数据表中存在的列的字段,若是,执行步骤43,否则执行步骤45;步骤43、判断即将插入的行数据中是否包含主键,如果包含主键,执行步骤44,否则执行步骤45;步骤44、确定数据插入成功;步骤45、确定数据插入失败;步骤46、结束。只有数据插入操作所在的目标交易正常执行,区块经过背书验证后,才会将相应的插入数据写入区块链数据库中,如果调用所在的交易执行异常,那么插入操作会被回滚,不会有数据提交到区块链上。
当目标交易执行成功,要将插入数据提交到区块链节点的数据库时,针对键值型数据库按下述步骤操作:
步骤1.对于不支持前缀查询的键值型数据库,可以采用“表前缀+表编号”的形式存储所有主键的值,其中,主键的值构成一个向量,向量可以选取某种序列化方式编码主键值构成得到。而对于支持前缀查询的键值型数据库则不需要此步骤。示例性的,假设表前缀是固定的字符“t”,上述存证表的编号为9,主键值构成的向量使用JSON编码,在插入数据对应的目标操作执行成功后并在目标交易通过背书验证后,针对键值型数据库,可以得到键为t9,值为[1,2,3]的交易执行结果,并将键为t9,值为[1,2,3]存储在区块链数据库中。
步骤2.对于每一行的数据,以表前缀+表编号+下划线+主键值作为键,以对应行数据作为值存储在数据库中,行数据是按列名顺序存储的向量,使用某种格式编码。示例性的,表前缀是固定的字符“t”,上述存证表的编号为9,使用JSON编码,则上述的存证表的数据编码可以如下所示:
键:t9_1,值:[机构1,201x-05-05,11:22,类型1,AAA]
键:t9_2,值:[机构2,201x-05-06,13:55,类型2,BBB]
键:t9_3,值:[机构1,201x-05-09,19:25,类型1,CCC]
其中,在插入数据至区块链数据库时,对于支持前缀查询的键值型数据库按步骤2将需要插入的数据插入区块链数据库即可。对于不支持前缀查询的键值型数据库,需要将新插入数据的主键追加到以表前缀+表编号为键的值中。示例性的,以前述存证表为例进行说明,表前缀是固定的字符“t”,上述存证表的编号为9,新插入一条编号为4的数据,则插入数据可以表示为键:t9,值:[1,2,3,4]。
对于关系型数据库,根据插入的数据和表的结构,拼接SQL语句插入新数据到表即可。
在区块链数据处理节点调用数据查询接口来查询数据时,区块链数据库中表的数据查询接口入参即交易参数是筛选条件,对应的返回的是符合筛选条件的表中的所有行数据。查询接口具体实现过程可参照图8所示,包括如以下步骤所示:步骤51、开始;步骤52、判断筛选条件中是否包含主键的筛选条件,若包含,执行步骤53,否则执行步骤57;步骤53、获取所有符合条件的主键;步骤54、获取主键对应的行数据;步骤55、根据筛选条件筛选得到行数据;步骤56、返回筛选得到行数据给用户;步骤57、获取查询的区块链数据库的表中的所有主键;步骤58、根据主键分批获取行数据并根据筛选条件筛选得到行数据后,执行步骤56;步骤59、结束。
其中,针对键值型数据库数据进行数据查询时,可以包括下述三个步骤:
步骤一、获取需查询表中所有的主键。针对支持前缀查询的键值型数据库,使用表前缀+表编号+下划线作为前缀条件查询。示例性的,对于上述的存证表使用t9_作为条件查询,即可获取表的所有主键。针对不支持前缀查询的键值型数据库,由于存储时使用表前缀+表编号作为键存储了所有主键的值,因此,读取此键可以获取得到表的所有主键。
步骤二、获取符合条件的主键列表。针对支持前缀查询的键值型数据库,使用表前缀+表编号+下划线作为前缀条件查询。根据条件筛选,返回符合条件的主键列表。针对不支持前缀查询的键值型数据库,使用步骤一中的方法获取所有主键,根据条件筛选返回符合条件的所有主键。
步骤三、根据主键获取行数据。使用表名获取表编号,根据将插入数据提交到区块链节点的数据库时采用的步骤2的操作拼接键,获取行数据并返回。基于同样的原理,可以提供批量接口。示例性的,对于上述存证表,假设要获取主键为3的行数据,则需要从数据库中读取键t9_3对应的值,反序列化后返回。
对于关系型数据库,根据表名和查询条件拼接SQL语句,获取查询的数据并返回即可。
其中,查询时只需要提供表名和查询条件就可以拿到对应的数据,查询条件可以为空,当查询条件为空时返回表内的所有数据,当查询条件不为空时,内置合约基于查询条件先查询出所有符合条件的主键,基于主键获获取行数据后筛选数据,返回符合条件的数据。
在区块链数据处理节点调用数据更新接口来更新数据时,区块链数据库的表的更新接口入参即前述交易参数需包括要更新的行数据和筛选条件,对应的可以返回更新操作所影响的行数。
在调用数据更新接口来更新数据时,可以使用调用数据查询接口来查询数据相同的实现过程来确定得到符合筛选条件的行数据,然后再对符合条件的行数据执行更新,更新后的数据由表结构存储在内存中,当目标交易执行成功且通过背书验证后,将更新后的数据提交到区块链数据库时,针对键值型数据库,基于将插入数据提交到区块链节点的数据库时采用的步骤2的操作拼接键,然后将对应的值设置为更新后的值即可。
对于关系型数据库,根据要更新的数据和表名,拼接对应的SQL语句更新即可。
在调用数据删除接口来删除数据时,数据删除接口的入参即交易参数是筛选条件,对应的返回内容是删除的行数,可以使用调用数据查询接口来查询数据相同的实现过程来确定得到符合筛选条件的行数据,然后将符合筛选条件的行数据标注为删除,并存储于内存中的表结构中,当目标交易执行成功且通过背书验证操作后,将标注为删除的行数据提交到区块链数据库中。
针对键值型数据库,可以根据主键值删除某行数据,根据将插入数据提交到区块链节点的数据库时采用的步骤2的操作拼接键,然后调用数据库的接口删除对应的值。对于不支持前缀查询的键值型数据库,需要相应的删除主键列表中失效的主键。示例性的,对于前述存证表,表前缀是固定的字符“t”,上述存证表的编号为9,删除编号为3的数据,则可以有键:t9,值:[1,2,4]。对于关系型数据库,根据条件和表名拼接删除操作的SQL语句,执行即可。
针对表创建接口、数据插入接口、数据更新接口和数据删除接口失败时,需进行回滚操作,即区块链中目标交易执行过程中发生异常时,会触发回滚操作,回滚操作会把本交易产生的对状态的更改还原,然后再交易收据中标记该交易为失败。在前述的创建表、插入数据、更新数据、删除数据操作中,每一步都会记录操作前数据的值,某笔交易执行时,会记录一个状态起点,当发生回滚时就执行与之前操作相反的操作使表的状态恢复到状态起点的位置。
需要说明的是,本实施例中与其它实施例中相同步骤和相同内容的说明,可以参照其它实施例中的描述,此处不再赘述。
本申请实施例中,通过对接收到的客户端发送的目标交易后,调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果,并发送目标交易至区块链系统中的多个背书节点,若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,基于交易执行结果更新区块链状态数据,这样,通过预编译合约的目标调用接口,基于交易参数执行目标交易得到交易执行结果后,采用区块链系统对目标交易进行验证,在目标交易通过验证后,才基于交易执行结果更新区块链状态数据,解决了目前通过智能合约实现复杂的增删改查等逻辑操作的实现过程难以实现的问题,实现了一种简单快捷地实现针对区块链的复杂增删查改等逻辑操作的方法,由于无需修改智能合约的语言,有效提高了智能合约的性能,保证了实现复杂的增删查改等逻辑操作的实现效率。
基于前述实施例,本申请的实施例提供一种区块链数据处理设备,该区块链数据处理设备用于运行区块链数据处理节点,该区块链数据处理设备可以应用于图1~3对应的实施例提供的区块链数据处理方法中,参照图9所示,该区块链数据处理节点6可以包括:处理器61、存储器62和通信总线63,其中:
存储器62,用于存储可执行指令;
通信总线63,用于实现处理器61和存储器62之间的通信连接;
处理器61,用于执行存储器62中存储的区块链数据处理程序,以实现以下步骤:
接收客户端发送的目标交易;其中,目标交易中包括对区块链数据库内容进行更改所调用的预编译合约的目标调用接口和交易参数,目标调用接口中包括以下预编译合约接口至少之一:表创建接口、数据插入接口、数据更新接口、数据查询接口和数据删除接口;
调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果;
发送目标交易至区块链系统中的多个背书节点;
若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,基于交易执行结果更新区块链状态数据。
在本申请其他实施例中,处理器61执行步骤调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果之前,还用于执行以下步骤:
从目标交易中获取合约地址;
对应的,在本申请其他实施例中,处理器61执行步骤调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果时,可以通过以下步骤来实现:
若合约地址为预编译合约对应的地址,调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果;
若合约地址为Solidity智能合约对应的地址,通过Solidity智能合约调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果。
在本申请其他实施例中,处理器61执行步骤调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果时,可以通过以下步骤来实现:
若目标调用接口为表创建接口,调用表创建接口验证交易参数包括的表元数据信息是否合法;其中,目标交易包括调用表创建接口验证交易参数包括的表元数据信息是否合法;
若表创建接口验证表元数据信息合法,确定目标交易执行成功;
确定交易执行结果为表元数据信息。
在本申请其他实施例中,处理器61执行步骤若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,基于交易执行结果更新区块链状态数据时,可以通过以下步骤来实现:
若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为关系型数据库,将表元数据信息映射至区块链数据库中;其中,区块链数据库用于存储区块链状态数据;
若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为键值型数据库,基于区块链数据库对应的表键值对参数和表元数据信息,构建目标交易对应的目标表键值对;
存储目标表键值对至区块链数据库中。
在本申请其他实施例中,处理器61执行步骤调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果时,可以通过以下步骤来实现:
若目标调用接口为数据插入接口,调用数据插入接口验证交易参数包括的第一目标行数据信息是否与区块链数据库中对应的表的行字段匹配;其中,目标交易包括调用数据插入接口验证交易参数包括的第一目标行数据信息是否与区块链数据库中对应的表的行字段匹配;
若数据插入接口验证第一目标行数据信息与区块链数据库中对应的表的行字段匹配,确定目标交易执行成功;
确定交易执行结果为第一目标行数据信息。
在本申请其他实施例中,处理器61执行步骤若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,基于交易执行结果更新区块链状态数据时,可以通过以下步骤来实现:
若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为关系型数据库,将第一目标数行据信息映射至区块链数据库中;其中,区块链数据库用于存储区块链状态数据;
若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为键值型数据库,基于区块链数据库对应的行键值对参数和第一目标行数据信息,构建目标交易对应的第一目标行键值对;
存储第一目标行键值对至区块链数据库中。
在本申请其他实施例中,处理器61执行步骤调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果时,可以通过以下步骤来实现:
若目标调用接口为数据更新接口,调用数据更新接口筛选与交易参数包括的第一筛选条件匹配的第一参考行数据信息;
调用数据更新接口采用交易参数包括的待更新数据对第一参考行数据中对应的数据进行更新,得到第二目标行数据信息;其中,目标交易包括调用数据更新接口筛选得到第一参考行数据和基于待更新数据对第一参考行数据中对应的数据进行更新;
确定交易执行结果为第二目标行数据信息。
在本申请其他实施例中,处理器61执行步骤若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,基于交易执行结果更新区块链状态数据时,可以通过以下步骤来实现:
若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为关系型数据库,采用第二目标数行据信息替换区块链数据库中的第一参考行数据信息;其中,区块链数据库用于存储区块链状态数据;
若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为键值型数据库,基于区块链数据库对应的行键值对参数和第二目标行数据信息,构建目标交易对应的第二目标行键值对;
存储第二目标行键值对至区块链数据库中。
在本申请其他实施例中,处理器61执行步骤调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果时,可以通过以下步骤来实现:
若目标调用接口为数据删除接口,调用数据删除接口筛选与交易参数包括的第二筛选条件匹配的第二参考行数据信息;
采用删除标识信息标识第二参考行数据信息,得到第三参考行数据信息;
确定交易执行结果为第三参考行数据信息。
在本申请其他实施例中,处理器61执行步骤若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,基于交易执行结果更新区块链状态数据时,可以通过以下步骤来实现:
若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为关系型数据库,生成删除语句来删除区块链数据库中的第三参考行数据信息;其中,区块链数据库用于存储区块链状态数据;
若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,且区块链数据库为键值型数据库,基于区块链数据库对应的行键值对参数和第三参考数据信息,构建目标交易对应的第三目标行键值对;
删除区块链数据库中与第三目标行键值对相同的键值对。
在本申请其他实施例中,处理器61还用于执行以下步骤:
若接收到客户端发送的包括请求调用预编译合约的数据查询接口和查询条件的查询请求,调用查询请求中包括的数据查询接口筛选与查询请求中的查询条件匹配的目标数据;
发送目标数据至客户端。
在本申请其他实施例中,处理器61执行步骤若接收到客户端发送的包括请求调用预编译合约的数据查询接口和查询条件的查询请求,调用查询请求中包括的数据查询接口筛选与查询请求中的查询条件匹配的目标数据时,可以通过以下步骤来实现:
若接收到客户端发送的查询请求,且区块链数据库为键值型数据库,从查询请求中确定与区块链数据库匹配的主键;
调用数据查询接口,基于主键从区块链数据库中筛选得到与查询条件匹配的目标数据。
需要说明的是,本申请实施例中个或者多个程序可被一个或者多个处理器的步骤的解释说明,可以参照图1~3对应的实施例提供的方法实现过程,此处不再赘述。
本申请实施例中,通过对接收到的客户端发送的目标交易后,调用预编译合约的目标调用接口,基于交易参数执行目标交易,得到交易执行结果,并发送目标交易至区块链系统中的多个背书节点,若检测到区块链系统广播的针对目标交易的广播结果,且广播结果指示目标交易通过验证,基于交易执行结果更新区块链状态数据,这样,通过预编译合约的目标调用接口,基于交易参数执行目标交易得到交易执行结果后,采用区块链系统对目标交易进行验证,在目标交易通过验证后,才基于交易执行结果更新区块链状态数据,解决了目前通过智能合约实现复杂的增删改查等逻辑操作的实现过程难以实现的问题,实现了一种简单快捷地实现针对区块链的复杂增删查改等逻辑操作的方法,由于无需修改智能合约的语言,有效提高了智能合约的性能,保证了实现复杂的增删查改等逻辑操作的实现效率。
基于前述实施例,本申请的实施例提供一种计算机可读存储介质,简称为存储介质,该计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如图1~3对应的实施例提供的区块链数据处理方法实现过程,此处不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
Claims (12)
1.一种区块链数据处理方法,其特征在于,所述方法应用于区块链数据处理节点,所述方法包括:
接收客户端发送的目标交易;其中,所述目标交易中包括对区块链状态数据内容进行更改所调用的预编译合约的目标调用接口和交易参数,所述目标调用接口中包括以下预编译合约接口至少之一:表创建接口、数据插入接口、数据更新接口、数据查询接口和数据删除接口;
调用所述预编译合约的所述目标调用接口,基于所述交易参数执行所述目标交易,得到交易执行结果;
发送所述目标交易至区块链系统中的多个背书节点;
若检测到所述区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,基于所述交易执行结果更新所述区块链状态数据;其中,所述广播结果为通过所述区块链系统对多个所述背书节点对所述目标交易进行验证后的验证结果进行确定得到的。
2.根据权利要求1所述的方法,其特征在于,所述调用所述预编译合约的所述目标调用接口,基于所述交易参数执行所述目标交易,得到交易执行结果之前,所述方法还包括:
从所述目标交易中获取合约地址;
对应的,所述调用所述预编译合约的所述目标调用接口,基于所述交易参数执行所述目标交易,得到交易执行结果,包括:
若所述合约地址为所述预编译合约对应的地址,调用所述预编译合约的所述目标调用接口,基于所述交易参数执行所述目标交易,得到交易执行结果;
若所述合约地址为Solidity智能合约对应的地址,通过所述Solidity智能合约调用所述预编译合约的所述目标调用接口,基于所述交易参数执行所述目标交易,得到交易执行结果。
3.根据权利要求1或2所述的方法,其特征在于,所述调用所述预编译合约的所述目标调用接口,基于所述交易参数执行所述目标交易,得到交易执行结果,包括:
若所述目标调用接口为所述表创建接口,调用所述表创建接口验证所述交易参数包括的表元数据信息是否合法;其中,所述目标交易包括调用所述表创建接口验证所述交易参数包括的表元数据信息是否合法;
若所述表创建接口验证所述表元数据信息合法,确定所述目标交易执行成功;
确定所述交易执行结果为所述表元数据信息。
4.根据权利要求3所述的方法,其特征在于,所述若检测到区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,基于所述交易执行结果更新所述区块链状态数据,包括:
若检测到区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,且所述区块链数据库为关系型数据库,将所述表元数据信息映射至所述区块链数据库中;其中,所述区块链数据库用于存储所述区块链状态数据;
若检测到区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,且所述区块链数据库为键值型数据库,基于所述区块链数据库对应的表键值对参数和所述表元数据信息,构建所述目标交易对应的目标表键值对;
存储所述目标表键值对至所述区块链数据库中。
5.根据权利要求1或2所述的方法,其特征在于,所述调用所述预编译合约的所述目标调用接口,基于所述交易参数执行所述目标交易,得到交易执行结果,包括:
若所述目标调用接口为所述数据插入接口,调用所述数据插入接口验证所述交易参数包括的第一目标行数据信息是否与所述区块链数据库中对应的表的行字段匹配;其中,所述目标交易包括调用所述数据插入接口验证所述交易参数包括的第一目标行数据信息是否与所述区块链数据库中对应的表的行字段匹配;
若所述数据插入接口验证所述第一目标行数据信息与所述区块链数据库中对应的表的行字段匹配,确定所述目标交易执行成功;
确定所述交易执行结果为所述第一目标行数据信息。
6.根据权利要求5所述的方法,其特征在于,所述若检测到区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,基于所述交易执行结果更新所述区块链状态数据,包括:
若检测到区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,且所述区块链数据库为关系型数据库,将所述第一目标数行据信息映射至所述区块链数据库中;其中,所述区块链数据库用于存储所述区块链状态数据;
若检测到区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,且所述区块链数据库为键值型数据库,基于所述区块链数据库对应的行键值对参数和所述第一目标行数据信息,构建所述目标交易对应的第一目标行键值对;
存储所述第一目标行键值对至所述区块链数据库中。
7.根据权利要求1或2所述的方法,其特征在于,所述调用所述预编译合约的所述目标调用接口,基于所述交易参数执行所述目标交易,得到交易执行结果,包括:
若所述目标调用接口为所述数据更新接口,调用所述数据更新接口筛选与所述交易参数包括的第一筛选条件匹配的第一参考行数据信息;
调用所述数据更新接口采用所述交易参数包括的待更新数据对所述第一参考行数据中对应的数据进行更新,得到第二目标行数据信息;其中,所述目标交易包括调用所述数据更新接口筛选得到所述第一参考行数据和基于所述待更新数据对所述第一参考行数据中对应的数据进行更新;
确定所述交易执行结果为所述第二目标行数据信息。
8.根据权利要求7所述的方法,其特征在于,所述若检测到区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,基于所述交易执行结果更新所述区块链状态数据,包括:
若检测到区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,且所述区块链数据库为关系型数据库,采用所述第二目标数行据信息替换所述区块链数据库中的所述第一参考行数据信息;其中,所述区块链数据库用于存储所述区块链状态数据;
若检测到区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,且所述区块链数据库为键值型数据库,基于所述区块链数据库对应的行键值对参数和所述第二目标行数据信息,构建所述目标交易对应的第二目标行键值对;
存储所述第二目标行键值对至所述区块链数据库中。
9.根据权利要求1或2所述的方法,其特征在于,所述调用所述预编译合约的所述目标调用接口,基于所述交易参数执行所述目标交易,得到交易执行结果,包括:
若所述目标调用接口为所述数据删除接口,调用所述数据删除接口筛选与所述交易参数包括的第二筛选条件匹配的第二参考行数据信息;
采用删除标识信息标识所述第二参考行数据信息,得到第三参考行数据信息;
确定所述交易执行结果为所述第三参考行数据信息。
10.根据权利要求9所述的方法,其特征在于,所述若检测到区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,基于所述交易执行结果更新所述区块链状态数据,包括:
若检测到区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,且所述区块链数据库为关系型数据库,生成删除语句来删除所述区块链数据库中的所述第三参考行数据信息;其中,所述区块链数据库用于存储所述区块链状态数据;
若检测到区块链系统广播的针对所述目标交易的广播结果,且所述广播结果指示所述目标交易通过验证,且所述区块链数据库为键值型数据库,基于所述区块链数据库对应的行键值对参数和所述第三参考数据信息,构建所述目标交易对应的第三目标行键值对;
删除所述区块链数据库中与所述第三目标行键值对相同的键值对。
11.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
若接收到所述客户端发送的包括请求调用所述数据查询接口和查询条件的查询请求,调用所述查询请求中包括的所述数据查询接口筛选与所述查询请求中的查询条件匹配的目标数据;
发送所述目标数据至所述客户端。
12.根据权利要求11所述的方法,其特征在于,所述若接收到所述客户端发送的包括请求调用所述数据查询接口和查询条件的查询请求,调用所述查询请求中包括的所述数据查询接口筛选与所述查询请求中的查询条件匹配的目标数据,包括:
若接收到所述客户端发送的所述查询请求,且所述区块链数据库为键值型数据库,从所述查询请求中确定与所述区块链数据库匹配的主键;
调用所述数据查询接口,基于所述主键从所述区块链数据库中筛选得到与所述查询条件匹配的所述目标数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110704347.4A CN113327167B (zh) | 2021-06-24 | 2021-06-24 | 一种区块链数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110704347.4A CN113327167B (zh) | 2021-06-24 | 2021-06-24 | 一种区块链数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113327167A true CN113327167A (zh) | 2021-08-31 |
CN113327167B CN113327167B (zh) | 2024-03-22 |
Family
ID=77424631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110704347.4A Active CN113327167B (zh) | 2021-06-24 | 2021-06-24 | 一种区块链数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113327167B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109359159A (zh) * | 2018-09-30 | 2019-02-19 | 深圳前海微众银行股份有限公司 | 分布式存储方法、系统及设备 |
CN110827008A (zh) * | 2018-08-08 | 2020-02-21 | 华为技术有限公司 | 一种区块链节点和交易方法 |
CN110955724A (zh) * | 2019-11-21 | 2020-04-03 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、节点设备及存储介质 |
CN111340470A (zh) * | 2020-02-24 | 2020-06-26 | 中国工商银行股份有限公司 | 区块链交易处理方法、节点及合约容器 |
CN111899096A (zh) * | 2020-06-30 | 2020-11-06 | 山东爱城市网信息技术有限公司 | 一种防止区块链数据膨胀的方法、设备及介质 |
CN112015823A (zh) * | 2020-10-20 | 2020-12-01 | 支付宝(杭州)信息技术有限公司 | 一种区块链数据的删除方法和装置 |
CN112527912A (zh) * | 2021-02-07 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据处理方法、装置及计算机设备 |
US20210149884A1 (en) * | 2018-12-12 | 2021-05-20 | Advanced New Technologies Co., Ltd. | Data processing methods and systems based on blockchain smart contract |
-
2021
- 2021-06-24 CN CN202110704347.4A patent/CN113327167B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110827008A (zh) * | 2018-08-08 | 2020-02-21 | 华为技术有限公司 | 一种区块链节点和交易方法 |
CN109359159A (zh) * | 2018-09-30 | 2019-02-19 | 深圳前海微众银行股份有限公司 | 分布式存储方法、系统及设备 |
US20210149884A1 (en) * | 2018-12-12 | 2021-05-20 | Advanced New Technologies Co., Ltd. | Data processing methods and systems based on blockchain smart contract |
CN110955724A (zh) * | 2019-11-21 | 2020-04-03 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、节点设备及存储介质 |
CN111340470A (zh) * | 2020-02-24 | 2020-06-26 | 中国工商银行股份有限公司 | 区块链交易处理方法、节点及合约容器 |
CN111899096A (zh) * | 2020-06-30 | 2020-11-06 | 山东爱城市网信息技术有限公司 | 一种防止区块链数据膨胀的方法、设备及介质 |
CN112015823A (zh) * | 2020-10-20 | 2020-12-01 | 支付宝(杭州)信息技术有限公司 | 一种区块链数据的删除方法和装置 |
CN112527912A (zh) * | 2021-02-07 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据处理方法、装置及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113327167B (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109840429B (zh) | 智能合约部署、调用方法和装置 | |
CN107577427B (zh) | 用于区块链系统的数据迁移方法、设备和存储介质 | |
US11343103B2 (en) | Sending cross-chain authenticatable messages | |
CN111104392B (zh) | 一种数据库迁移方法、装置、电子设备及存储介质 | |
CN110032599B (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
KR101643022B1 (ko) | 카탈로그-기반 소프트웨어 컴포넌트 관리 | |
US20210099283A1 (en) | Pruning entries in tamper-evident data stores | |
TWI726573B (zh) | 基於區塊鏈的資料壓縮、查詢方法及裝置和電子設備 | |
CN108614702B (zh) | 字节码优化方法及装置 | |
US20170351506A1 (en) | Automating feature graduation | |
WO2019076102A1 (zh) | 一种数据回滚方法、系统、设备及计算机可读存储介质 | |
CN110032568B (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
CN110599166A (zh) | 一种区块链内获取交易依赖关系的方法及装置 | |
US11720607B2 (en) | System for lightweight objects | |
WO2016177075A1 (zh) | 一种业务数据关联关系校验方法、装置及可读存储介质 | |
CN113327167B (zh) | 一种区块链数据处理方法 | |
US9009731B2 (en) | Conversion of lightweight object to a heavyweight object | |
CN107277108B (zh) | 一种区块链的节点处的消息处理方法、装置及系统 | |
CN115221559A (zh) | 数据账户的访问授权方法及装置 | |
CN115203746A (zh) | 数据账户的访问授权方法及装置 | |
CN113835690A (zh) | 读写分离多数据源组件及其工作方法 | |
CN110851287A (zh) | 数据处理方法、装置及计算机可读存储介质 | |
CN111737964A (zh) | 表格动态处理方法、设备及介质 | |
CN111159198B (zh) | 参数交易处理方法及装置、计算机设备及可读存储介质 | |
Lavoie | 2P-BFT-Log: 2-Phases Single-Author Append-Only Log for Adversarial Environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |