CN115114372A - 基于区块链的数据处理方法、装置、设备及可读存储介质 - Google Patents
基于区块链的数据处理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN115114372A CN115114372A CN202210609432.7A CN202210609432A CN115114372A CN 115114372 A CN115114372 A CN 115114372A CN 202210609432 A CN202210609432 A CN 202210609432A CN 115114372 A CN115114372 A CN 115114372A
- Authority
- CN
- China
- Prior art keywords
- result
- consensus
- data
- block
- transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/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
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- 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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Computer Networks & Wireless Communication (AREA)
- Economics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Signal Processing (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Computer Hardware Design (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于区块链的数据处理方法、装置、设备及可读存储介质,方法包括:第一节点接收第二节点发送的针对区块的上链请求;基于上链请求获取区块中的交易数据的第一预执行结果,根据第一预执行结果以及关系数据模型所指示的数据完整性约束规则,对区块进行共识,得到区块的共识结果;第一预执行结果是指第一节点基于交易数据对应的结构化查询语言指令,对交易数据所涉及的交易关联操作进行预执行后所得到的执行结果;在区块的共识结果为共识通过结果时,将区块存储至关系型数据库中。采用本申请,可以在区块链业务中,提升业务数据的关系操作的灵活性,进而提升数据处理效率以及准确率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于区块链的数据处理方法、装置、设备及可读存储介质。
背景技术
区块链是一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链还可以进行数据加密传输、节点识别和安全访问,是一种先进的分布式基础架构。目前,因为区块链的不可篡改性与真实性,对于区块链的应用也越来越多。
通常情况下,区块链主要采用以键值对的方式,来存储链上数据。例如,对于未花费交易输出(Unspent Transaction Output,UTXO)数据、账户数据以及交易状态数据等等,均可以采用键值方式进行存储。
然而,键值方式是一种较为简单的数据存储方式,能够处理简单的业务场景,但是随着区块链应用的扩展,业务场景所产生的业务数据之间的关联关系变得越来越复杂,简单的键值存储方式难以准确描述业务数据之间的关联关系。若期望通过简单的键值存储方式来准确描述业务数据之间的复杂的关联关系,需要通过非常多的数据操作,工作效率并不高的同时,还增加了一定的时间与人力成本。
发明内容
本申请实施例提供一种基于区块链的数据处理方法、装置、设备以及可读存储介质,可以在区块链业务中,提升业务数据的关系操作的灵活性,进而提升数据处理效率以及准确率。
本申请实施例一方面提供了一种基于区块链的数据处理方法,包括:
第一节点接收第二节点发送的针对区块的上链请求;上链请求用于请求将区块存储到区块链对应的关系型数据库中,关系型数据库是指基于关系数据模型所建立的数据库;
基于上链请求获取区块中的交易数据的第一预执行结果,根据第一预执行结果以及关系数据模型所指示的数据完整性约束规则,对区块进行共识,得到区块的共识结果;第一预执行结果是指第一节点基于交易数据对应的结构化查询语言指令,对交易数据所涉及的交易关联操作进行预执行后所得到的执行结果;结构化查询语言指令是指操作关系型数据库来执行交易关联操作的指令;
在区块的共识结果为共识通过结果时,将区块存储至关系型数据库中。
本申请实施例一方面提供了一种基于区块链的数据处理装置,包括:
请求接收模块,用于接收第二节点发送的针对区块的上链请求;上链请求用于请求将区块存储到区块链对应的关系型数据库中,关系型数据库是指基于关系数据模型所建立的数据库;
执行结果获取模块,用于基于上链请求获取区块中的交易数据的第一预执行结果;
区块共识模块,用于根据第一预执行结果以及关系数据模型所指示的数据完整性约束规则,对区块进行共识,得到区块的共识结果;第一预执行结果是指第一节点基于交易数据对应的结构化查询语言指令,对交易数据所涉及的交易关联操作进行预执行后所得到的执行结果;结构化查询语言指令是指操作关系型数据库来执行交易关联操作的指令;
区块存储模块,用于在区块的共识结果为共识通过结果时,将区块存储至关系型数据库中。
在一个实施例中,执行结果获取模块包括:
事务创建单元,用于基于上链请求创建针对区块的初始数据库事务;
指令执行单元,用于在初始数据库事务中,执行交易关联操作所指示的结构化查询语言指令,得到指令执行结果;
结果确定单元,用于将指令执行结果确定为交易数据的第一预执行结果。
在一个实施例中,区块存储模块包括:
目标事务获取单元,用于获取与区块相关联的目标数据库事务;目标数据库事务包含交易数据中的结构化查询语言指令,以及第一预执行结果;
事务存储单元,用于将目标数据库事务存储至关系型数据库中。
在一个实施例中,上链请求携带第二预执行结果,第二预执行结果是指第二节点基于交易数据中的结构化查询语言指令,对交易数据中的交易关系操作进行预执行后所得到的执行结果;
区块共识模块包括:
结果比对单元,用于将第一预执行结果与第二预执行结果进行比对,得到比对结果;
因素共识单元,用于若第一预执行结果与第二预执行结果之间的比对结果为匹配结果,则基于关系数据模型所指示的数据完整性约束规则,获取结构化查询语言指令所包含的主键值、结构化查询语言指令所包含的外键值,以及结构化查询语言指令所对应的数据类型;
因素共识单元,还用于对主键值、外键值以及数据类型进行共识,得到主键值、外键值以及数据类型共同对应的因素共识结果;
第一结果确定单元,用于将因素共识结果确定为区块的共识结果;
第二结果确定单元,用于若第一预执行结果与第二预执行结果之间的比对结果为不匹配结果,则将区块的共识结果为共识失败结果。
在一个实施例中,第二节点的数量为至少两个,第二预执行结果的数量为至少两个;
结果比对单元包括:
相同结果获取子单元,用于根据至少两个第二预执行结果与第一预执行结果组成预执行结果集合,将预执行结果集合中为相同结果的预执行结果,确定为待统计预执行结果;
运算子单元,用于统计待统计预执行结果的数量,将待统计预执行结果的数量作为统计数量;
数量统计子单元,用于统计第一预执行结果与至少两个第二预执行结果对应的结果总数量;
比值确定子单元,用于确定运算数量与结果总数量之间的数量比值;
比对结果确定子单元,用于根据数量比值确定第一预执行结果与第二预执行结果之间的比对结果。
在一个实施例中,比对结果确定子单元,还具体用于将数量比值与比值阈值进行比较;
比对结果确定子单元,还具体用于若数量比值大于比值阈值,则将第一预执行结果与第二预执行结果之间的比对结果,确定为匹配结果;
比对结果确定子单元,还具体用于若数量比值小于比值阈值,则将第一预执行结果与第二预执行结果之间的比对结果,确定为不匹配结果。
在一个实施例中,因素共识单元包括:
第一因素共识子单元,用于对主键值进行共识,得到主键值对应的第一因素共识子结果;
第二因素共识子单元,用于对外键值进行共识,得到外键值对应的第二因素共识子结果;
第三因素共识子单元,用于对数据类型进行共识,得到数据类型对应的第三因素共识子结果;
共识结果确定子单元,用于根据第一因素共识子结果、第二因素共识子结果以及第三因素共识子结果,确定主键值、外键值以及数据类型共同对应的因素共识结果。
在一个实施例中,数据完整性约束规则包括为主键值所配置的唯一性约束规则;
第一因素共识子单元,还具体用于获取主键值所指示的目标实体对象;
第一因素共识子单元,还具体用于基于唯一性约束规则,遍历关系型数据库中所包含的已存实体对象集合;
第一因素共识子单元,还具体用于若已存实体对象集合中不存在与目标实体对象相同的已存实体对象,则将目标实体对象确定为唯一实体对象,确定主键值对应的第一因素共识子结果为因素共识通过结果;
第一因素共识子单元,还具体用于若已存实体对象集合中存在与目标实体对象相同的已存实体对象,则将目标实体对象确定为重复实体对象,确定主键值对应的第一因素共识子结果为因素共识失败结果。
在一个实施例中,数据完整性约束规则包括为外键值所配置的参照有效性约束规则;
第二因素共识子单元,还具体用于基于参照有效性约束规则,在结构化查询语言指令中确定外键值所指示的参照对象,以及参照对象所属的对象文件;
第二因素共识子单元,还具体用于获取对象文件,对对象文件进行遍历;
第二因素共识子单元,还具体用于若对象文件中包含参照对象,则将参照对象确定为有效参照对象,确定外键值对应的第二因素共识子结果为因素共识通过结果;
第二因素共识子单元,还具体用于若对象文件中未包含参照对象,则将参照对象确定为无效参照对象,确定外键值对应的第二因素共识子结果为因素共识失败结果。
在一个实施例中,数据完整性约束规则包括关系型数据库所支持的标准数据类型集合;
第三因素共识子单元,还具体用于遍历标准数据类型集合;
第三因素共识子单元,还具体用于若标准数据类型集合中存在与数据类型相同的标准数据类型,则将数据类型确定为有效数据类型,将数据类型对应的第三因素共识子结果确定为因素共识通过结果;
第三因素共识子单元,还具体用于若标准数据类型集合中不存在与数据类型相同的标准数据类型,则将数据类型确定为无效数据类型,将数据类型对应的第三因素共识子结果确定为因素共识失败结果。
在一个实施例中,共识结果确定子单元,还具体用于若第一因素共识子结果、第二因素共识子结果以及第三因素共识子结果均为因素共识通过结果,则将主键值、外键值以及数据类型共同对应的因素共识结果确定为共识通过结果;
共识结果确定子单元,还具体用于若第一因素共识子结果、第二因素共识子结果以及第三因素共识子结果中存在至少一个因素共识子结果为因素共识失败结果,则将主键值、外键值以及数据类型共同对应的因素共识结果确定为共识失败结果。
在一个实施例中,上链请求携带数字签名;数字签名是由第二节点基于第二节点的私钥对区块进行签名后所得到;
基于区块的数据处理装置还包括:
验签模块,用于获取第二节点的公钥,基于公钥对数字签名进行验签;
步骤执行模块,用于若验签通过,则执行基于上链请求获取区块中的交易数据的第一预执行结果,根据第一预执行结果以及关系数据模型所指示的数据完整性约束规则,对区块进行共识,得到区块的共识结果的步骤;
通信暂停模块,用于若验签未通过,则将第二节点标记为异常节点,在目标时间段内暂停与异常节点之间的数据通信。
本申请实施例一方面提供了一种计算机设备,包括:处理器和存储器;
存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,执行本申请实施例中的方法。
本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行本申请实施例中一方面提供的方法。
在本申请实施例中,当第一节点接收到某个节点(如第二节点)发送的针对区块的上链请求时,会基于区块中的交易数据的结构化查询语言指令,对交易数据中的交易关联操作进行预执行得到执行结果(可称之为第一预执行结果)后,再基于该第一预执行结果与关系数据模型所指示的数据完整性约束规则对区块进行共识,在区块的共识结果为共识通过结果时,再将该区块存储至区块链对应的关系型数据库(基于关系数据模型所建立的数据库)中。应当理解,本申请对于区块链的链上数据,采用关系型数据库来进行存储,而对于关系型数据库,主要通过结构化语言查询指令对其进行访问,那么本申请可以通过结构化查询语言指令来对交易数据进行关系操作。由于关系数据模型可以直观、灵活的存储和访问结构化指令,通过简单的指令即可直观且准确的呈现业务数据之间错综复杂的关联关系,那么通过结构化查询语言指令,即可灵活且准确地对本申请中的交易数据进行关系操作,无需花费过多的人力与时间,即可很好地提升交易数据的关系操作的灵活性与准确性,进而提升数据处理效率与准确率;同时,本申请还可以在区块链共识流程中,加入对关系数据模型的数据完整性约束,即本申请的共识流程,不仅可以基于交易数据的执行结果进行共识,还可以基于数据完整性约束规则进行共识,由此可以确保写入关系型数据库中的数据是符合数据完整性约束规则的,可以进一步提升写入数据的准确性。综上,本申请可以在区块链业务中,提升业务数据的关系操作的灵活性,进而提升数据处理效率以及准确率,同时可以减少数据处理成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种***架构示意图;
图2是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图;
图3是本申请实施例提供的一种基于数据完整性约束规则,对区块进行共识的流程示意图;
图4是本申请实施例提供的一种***逻辑架构图;
图5是本申请实施例提供的一种***流程图;
图6是本申请实施例提供的一种数据处理装置的结构示意图;
图7是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请所提供的基于区块链的数据处理方法可应用于区块链网络。区块链网络包括对区块链上的数据区块进行记录和查询的相关节点构成的网络,区块链网络中的每个节点即为区块链节点,是能够对数据区块进行查询或记录的计算机设备。由于本申请实施例所提供的方案涉及区块链等相关技术,为便于理解,以下将优先对区块链以及区块链的相关概念进行阐述。
1、区块链:狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前获取的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求;广义上,区块链还指代区块链结构实现的分布式记账技术,包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等。区块链的目标是实现一个分布的数据记录账本,此账本只允许添加,不允许删除。账本底层的基本结构是一个线性的链表。链表由一个个“区块”串联组成,后继区块中记录前继区块的哈希(Hash)值,每个区块(以及区块中的交易)是否合法,可通过计算哈希值的方式进行快速检验。若网络中的节点提议添加一个新的区块,必须经过共识机制对区块达成共识确认。
应当理解的是,区块链是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链本质上是一个去中心化的数据库,该数据库中的每个节点均存储一条相同的区块链,区块链网络将节点区分为核心节点、数据节点以及轻节点,其中核心节点负责区块链全网的共识,也就是说核心节点为区块链网络中的共识节点。对于区块链网络中交易数据被写入账本的过程可以为,客户端发送交易数据至数据节点或轻节点,随后该交易数据以接力棒的方式在区块链网络中的数据节点或轻节点之间传递,直到共识节点收到该交易数据,共识节点再将该交易数据打包进区块,与其他共识节点之间进行共识,在共识通过后,将携带该交易数据的区块写入账本。
其中,可以理解的是,区块链***中可以包括有智能合约,该智能合约在区块链***中可以理解为是一种区块链各节点(包括共识节点)可以理解并执行的代码,可以执行任意逻辑并得到结果。用户可以通过客户端发起一个交易业务请求的方式,调用区块链上已经部署的智能合约,随后,区块链上的数据节点或轻节点可以将该交易业务请求发送至共识节点,而区块链上的各个共识节点可以分别运行该智能合约。应当理解,区块链中可以包括一个或多个智能合约,这些智能合约可以标识号(Identity document,ID)或名称来进行区分,而客户端发起的交易业务请求中,也可以携带智能合约的标识号或名称,以此指定区块链需要运行的智能合约。而若客户端所指定的智能合约为需要读取数据的合约,则各个共识节点会访问本地账本来进行数据的读取,最后各个共识节点会互相验证执行结果是否一致(也就是进行共识),若一致则可以将执行结果存入各自的本地账本中,并将执行结果返回至客户端。
2、区块链节点:区块链网络将节点区分为共识节点(也可以称作核心节点)以及同步节点(可以包括数据节点以及轻节点)。其中,共识节点负责区块链全网的共识业务;同步节点负责同步共识节点的账本信息,即同步最新的区块数据。无论是共识节点还是同步节点,其内部构造都包括网络通信组件,因为区块链网络本质是一个点对点(Peer to Peer,P2P)网络,需通过P2P组件与区块链网络中的其他节点进行通信。区块链网络中的资源和服务都分散在各个节点上,信息的传输和服务的实现都直接在节点之间进行,无需中间环节或中心化的服务器(第三方)介入。
3、公钥(public key)与私钥(private key):公钥与私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密数据、验证数字签名等。通过这种算法能够确保得到的密钥对是唯一的,使用这种密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密,例如,用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
4、哈希值:也称作信息特征值或特征值,哈希值是通过哈希算法将任意长度的输入数据转换为密码并进行固定输出而生成的,不能通过解密哈希值来检索原始输入数据,它是一个单向的加密函数。在区块链中,每个区块(除了初始区块)都包含前继区块的哈希值,前继区块被称为当前区块的父区块。哈希值是区块链技术中的潜力核心基础和最重要的方面,它保留了记录和查看数据的真实性,以及区块链作为一个整体的完整性。
5、智能合约(Smart Contract):是一种旨在以信息化方式传播、验证或执行合同的计算机协议。在区块链***当中,智能合约(简称合约)是一种区块链各节点可以理解并执行的代码,可以执行任意逻辑并得到结果。在实际应用中,智能合约通过区块链上的交易来管理与试用。每条交易相当于对区块链***的一个远程过程调用(Remote ProcedureCall,RPC)请求。如果说智能合约相当于可执行程序,区块链就相当于提供运行环境的操作***。区块链可以包含多个合约,以合约账号(Identity,ID)、标识号或名称来区分。例如,智能合约中可以包含治理共识委员会合约,其主要用于管理共识节点,可以包括记录共识节点的节点状态,动态地加入共识节点,剔除异常共识节点等。
6、钱包,用于提供进行数字资产的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链***中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询数字资产地址(也可称之为数字资源地址)中剩余的数字资产(或称之为数字资源)。
请参见图1,图1是本申请实施例提供的一种***架构示意图。如图1所示,该***可以包括区块链网络100a、应用服务器100b以及终端设备集群。其中,区块链网络100a可以包括:区块链节点10a、区块链节点10b、区块链节点10c以及区块链节点10d,可以理解的是,区块链网络100a可以包括一个或多个区块链节点,本申请实施例不对区块链节点的数量进行限制。可以理解的是,在该区块链网络100a中,区块链节点10a、区块链节点10b、区块链节点10d均能够通过与区块链节点10c之间的网络连接进行数据交互。应当理解,区块链网络100a中的每个区块链节点(例如,区块链节点10a、区块链节点10b、区块链节点10c、区块链节点10d),均可以用于维护同一区块链(比如,图1所示的区块链10e),该区块链网络100a中的任意两个区块链节点之间可以形成点对点(P2P,Peer To Peer)网络,该点对点网络可以采用P2P协议,其中,该P2P协议是一个运行在传输控制协议(TCP,Transmission ControlProtocol)协议之上的应用层协议。在分布式***中,任何设备如服务器、终端设备等都可以加入而成为区块链节点。
其中,可以理解的是,如图1所示的区块链节点10a、区块链节点10b、区块链节点10c以及区块链节点10d等可以分别与需要接入区块链网络100a中的相应角色(即相应业务场景下的实体对象)之间存在一一对应关系。这里的业务场景具体可以包含电子票据场景、社交场景、资源发行场景、支付场景等。此时,相应业务场景下的业务数据信息具体可以包含电子票据场景下的电子票据信息、社交场景下的数据交互信息、资源发行场景下的资源发行信息、支付场景下的资产流转记录等,这里将不对相应的业务场景下的业务数据信息具体内容进行一一列举。
可以理解的是,上述***可以包括一个或者多个应用服务器,这里将不对应用服务器的数量进行限制;如图1所示的应用服务器100b可以与区块链网络100a进行网络连接,以便于能够通过与区块链网络100a之间的网络连接进行数据交互。应用服务器100b可以为,具备处理与区块链网络100a中的数据相关联的业务功能的应用所对应的后台服务器。
终端设备集群可以包括终端设备100c、终端设备100d、终端设备100e、…、终端设备100f,可以理解的是,终端设备集群可以包括一个或多个终端设备,本申请实施例不对终端设备的数量进行限制。其中,终端集群之间可以存在网络连接,例如终端设备100c与终端设备100d之间存在网络连接。同时,终端集群中的任一终端设备可以与应用服务器100b存在网络连接,例如终端设备100f与应用服务器100b之间存在网络连接。同时,终端集群中的任一终端设备可以与区块链网络100a存在网络连接,例如终端设备100d与区块链网络100a之间存在网络连接。同时,终端集群中的任一终端设备可以与存储设备200a存在网络连接,例如终端设备100f与存储设备200a之间存在网络连接。其中,上述网络连接不限定连接方式,可以通过有线网络方式进行直接或间接地连接,也可以通过无线网络方式进行直接或间接地连接,还可以通过其它方式,本申请在此不做限制。
应当理解,如图1所示的终端集群中的每个终端设备均可以安装有应用客户端(也可称之为目标应用),应用服务器100b可未该应用客户端所对应的后台服务器,当该应用客户端运行于各终端设备中时,可以分别与上述图1所示的应用服务器100b之间进行数据交互,即上述的网络连接。其中,该应用客户端(目标应用)可以为视频应用、直播应用、社交应用、即时通信应用、游戏应用、音乐应用、购物应用、小说应用、浏览器、数字资产应用、数字资源应用等具备数据处理功能的应用客户端,该应用客户端还可以具备处理数字资产的功能。其中,该应用客户端可以为独立的客户端,也可以为集成在某客户端(例如,社交客户端、教育客户端以及多媒体客户端等)中的嵌入式子客户端,在此不做限定。以目标应用为社交应用为例,应用服务器100b可以为包括社交应用对应的后台服务器、数据处理服务器等多个服务器的集合,因此,每个终端设备均可以通过该社交应用对应的应用客户端与应用服务器100b进行数据传输,如每个终端设备均可以通过社交应用的应用客户端,将业务数据的投放请求上传至应用服务器100b,进而应用服务器100b可以将该业务数据的投放请求下发给其它终端设备或传送至区块链网络100a。
可以理解的是,在本申请的具体实施方式中,涉及到用户信息等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
为便于后续理解和说明,本申请实施例可以在图1所示的终端集群中选择一个终端设备作为目标终端设备,例如以终端设备100c作为目标终端设备。目标终端设备可发送交易数据至数据节点或轻节点,随后该交易数据以接力棒的方式在区块链网络中的数据节点或轻节点之间传递,直到共识节点收到该交易数据,共识节点再将该交易数据打包进区块,与其他共识节点之间进行共识,在共识通过后,将携带该交易数据的区块写入账本。
为了提高区块链对于业务场景的适用性,使得区块链可以更好地描述不同业务场景下不同业务数据之间的关联关系,本申请提供一种基于关系型数据库(基于关系数据模型所建立的数据库)来存储链上数据的数据处理方法,由于关系数据模型具备更为灵活的数据操作方式以及更为严谨的数据完整性约束规则,那么采用关系数据模型所对应的关系型数据库后,可以使得用户能够在智能合约中自定义关系数据结构、关系操作、数据约束条件等等,由此可以很好地提升合约开发工作效率;同时,由于关系数据模型支持结构化信息,那么通过关系数据模型灵活的数据操作方式,也可以使得用户在智能合约中通过结构化查询语言(Structured Query Language,SQL)语句,对数据进行更为灵活地关系操作,可以简化操作流程,提升数据处理效率。而为了提升数据处理的严谨性以提升准确性,本申请还可以将关系数据模型的数据完整性约束规则也引入到区块链的共识流程中,也就是说,本申请中的共识节点们在对区块进行共识时,还需要额外基于关系数据模型的数据完整性约束,对区块进行共识。
为便于理解,以某个共识节点(如第一节点)接收到另一共识节点(如第二节点)针对某个区块的上链请求为例,第二节点期望与第一节点共同对该区块进行共识,并在共识通过后将该区块存储到第一节点与第二节点共同维护的区块链中。由于本申请采用关系型数据库来存储区块链的链上数据,则将区块存储到区块链中,可以是指将区块中的数据存储到区块链对应的关系型数据库中。本申请中,第一节点可基于该上链请求,调用交易数据所对应的智能合约,通过智能合约对区块中的每个交易数据进行预执行,得到一个预执行结果。应当理解,由于本申请中的关系操作都可通过SQL语句进行操作,那么对交易数据进行预执行可以为执行区块中所有交易数据所产生的结构化查询语言命令(SQL命令,也可称之为结构化查询语言指令),可以理解的是,每一个结构化查询语言指令可以对应一个逻辑步骤,那么当执行完一个交易数据所涉及的所有结构化查询语言命令时,也就是执行完该交易数据所对应的执行逻辑,所得到的命令执行结果即可为该交易数据的执行结果。也就是说,执行结构化查询语言指令,也就是执行交易数据所涉及的相应的逻辑操作(本申请可称之为交易关联操作),当执行完所有逻辑操作所指示的结构化查询语言指令时,可得到一个指令执行结果,该指令执行结果即可为对应的交易数据的预执行结果(这里可将第一节点所得到的预执行结果称之为第一预执行结果)。
同理,第二节点也可以得到一个预执行结果(这里可将第二节点所得到的预执行结果称之为第二预执行结果)。第一节点可基于第一预执行结果、第二预执行结果以及关系数据模型所指示的数据完整性约束规则,对区块进行共识,得到该区块的共识结果。在该区块的共识结果为共识通过结果时,即可将该区块存储到关系型数据库中。其中,对于第一节点基于第一预执行结果、第二预执行结果以及关系数据模型所指示的数据完整性约束规则,对区块进行共识,得到该区块的共识结果的具体实现方式,可以参见后续图2所对应实施例中的描述。
上述可知,本申请实施例提供的方法可以由计算机设备执行,计算机设备包括但不限于终端设备、应用服务器或区块链节点。上述应用服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。上述终端设备可以包括:智能手机、平板电脑、笔记本电脑、桌上型电脑、智能电视、智能音箱、台式计算机、智能手表、车载设备等携带多媒体数据处理功能(例如,视频数据播放功能、音乐数据播放功能)的智能终端,但并不局限于此。
可以理解的是,上述应用服务器100b、终端设备100c、终端设备100d、终端设备100e...、终端设备100f均可以为区块链网络100a中的区块链节点,全文叙述的数据(例如交易数据)可以进行存储,存储方式可以是区块链节点根据数据生成区块,并将区块添加至区块链中进行存储的方式。在如区块链的分布式***中,任意形式的计算机设备,比如应用服务器、终端设备等电子设备都可以通过加入该点对点网络而成为该区块链***中的一个节点。
进一步地,请参见图2,图2是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图。本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。其中,该基于区块链的数据处理方法可由计算机设备执行,这里的计算机设备可以是指应用服务器(如,上述图1所对应实施例中的应用服务器),也可以是指终端设备(如,上述图1所对应实施例中终端设备集群中的任一终端设备),还可以是指集成有应用服务器与终端设备的设备。如图2所示,该基于区块链的数据处理方法的流程可以至少包括以下步骤S101-步骤S103:
步骤S101,第一节点接收第二节点发送的针对区块的上链请求;上链请求用于请求将区块存储到区块链对应的关系型数据库中,关系型数据库是指基于关系数据模型所建立的数据库。
本申请中,第一节点与第二节点可均为区块链中的节点,如第一节点与第二节点均可为区块链中的核心节点(也可称为共识节点),核心节点可以接收来自区块链中的数据节点或轻节点发送的交易数据,该交易数据可以由终端设备所发送至数据节点或轻节点。其中,该交易数据可以为终端设备根据用户发起的交易业务所产生的数据,在获得用户授权后,终端设备可以将该交易数据发送至数据节点或轻节点。当核心节点接收到不同数据节点发送的交易数据后,可以将接收到的交易数据暂时缓存于交易池内,核心节点在一段时间内接收到数据节点发送的交易数据后,可以从交易池内获取到一个或多个交易数据,并根据这些交易数据生成区块。若生成区块的节点期望将该区块存储到区块链中,则该节点需要向区块链中的共识节点发起针对该区块的共识请求,而区块链的共识节点基于该共识请求可一起对该区块进行共识,在区块通过共识后,即可将该区块存储到区块链中。其中,由于节点是期望将该区块存储到区块链中发起的共识请求,则该共识请求也可称为上链请求。
应当理解的是,本申请可基于关系数据模型建立一个关系型数据库,并采用该关系型数据库来存储区块链的链上数据。也就是说,若期望将区块存储到区块链中,则可以是指将区块存储到区块链对应的关系型数据库中。其中,为便于理解关系数据模型以及关系型数据库,以下将对关系数据模型以及关系型数据库进行详细阐述。关系数据模型是指用二维表的形式表示实体和实体间联系的数据模型,其是在关系结构的数据库中用二维表格的形式表示实体以及实体之间的联系的模型,也就是说,关系数据模型主要采用表,来表达数据和数据间关系。例如,为了表达实体a和实体b之间的多对多关系,可以创建三张表,其中两个表分别用于表达实体a和b,第三张表可以用于表达实体a与实体b之间的关系。在关系数据模型中,现实世界的实体以及实体间的各种联系均用关系来表示。
其中,关系数据库***是支持关系数据模型的数据库***,其基于关系数据模型所建立,为具备关系结构的数据库,也可称为关系型数据库。关系型数据库主要采用关系数据模型来组织数据,其以行和列的形式来存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库,关系型数据库主要用于事务处理,主要包括Oracle、DB2、MySQL、Microsoft SQL Server、Microsoft Access等数据库。
可以理解的是,对应关系型数据库以及关系型数据库,主要支持结构化信息,也就是说,可以通过结构化语言对其进行访问,实现对关系型数据库的增删改查等操作,而结构化语言可以包括结构化查询语言(Structured Query Language,SQL)。那么在本申请中,用户可在区块链的智能合约中自定义结构化的数据存储方式,由此可基于结构化查询语言语句(如SQL语句)对关系型数据库进行访问,以基于关系数据模型来存储区块链的数据。例如,可基于SQL语法,在安装智能合约时定义关系型数据库的表结构,其主要可采用以下实现方式:在智能合约的初始化方法中,调用智能合约提供的应用程序编程接口(Application Programming Interface,API)来执行建表SQL。当然,对于在安装智能合约时定义关系型数据库的表结构的具体实现方式,并不限定于上述实现方式,还可为其他任一能够在智能合约中定义关系型数据库的表结构的方式,例如,其具体实现方式还可为:在智能合约的安装包中,将建表的SQL命令写入特定文件或特定文件目录,由此也可以在智能合约中定义关系型数据库的表结构。当在相应的智能合约中定义完成关系型数据库的表结构后,对于区块中的交易数据,即可采用相应的智能合约对交易数据进行处理,当基于相应的智能合约处理交易数据时,即可在智能合约中,执行交易数据所涉及的SQL命令,通过执行SQL命令即可访问关系型数据库,实现对关系型数据库的增删改查。其中,对于交易数据所涉及的SQL命令,可以由用户(指令编写对象)编写;用户也可以通过在智能合约中部署相应的程序(如程序模板或程序函数,例如用户可以在智能合约中自定义结构化的数据存储,由此智能合约即可支持用户通过结构化查询语言命令来对数据进行关系操作,例如,对数据进行增、删、改、查等操作),当调用智能合约时,智能合约可以根据交易数据所涉及的逻辑操作,以及合约中部署的程序来确定相应的SQL命令。
步骤S102,基于上链请求获取区块中的交易数据的第一预执行结果,根据第一预执行结果以及关系数据模型所指示的数据完整性约束规则,对区块进行共识,得到区块的共识结果;第一预执行结果是指第一节点基于交易数据对应的结构化查询语言指令,对交易数据所涉及的交易关联操作进行预执行后所得到的执行结果;结构化查询语言指令是指操作关系型数据库来执行交易关联操作的指令。
本申请中,第一预执行结果可以是指第一节点对区块中的交易数据进行预执行后所得到的执行结果。其中,应当理解的是,由于本申请采用关系型数据库来存储区块链的链上数据,而对于关系型数据库也主要采用结构化信息(如结构化查询语言)来进行访问,那么对于第一节点预执行区块中的交易数据的过程也可通过结构化查询语言命令进行预执行,例如,第一节点在接收到上链请求后,可以调用根据交易数据的内容调用相应的智能合约,该智能合约中被定义有关系型数据库的表结构,通过该智能合约可以执行交易数据所涉及到的所有结构化查询语言命令(也可称之为结构化查询语言指令,如SQL命令),对于执行结构化查询语言指令的过程,也就是执行交易数据的过程,对于结构化查询语言指令的执行结果,也可以作为交易数据的执行结果(也就是预执行结果)。
应当理解的是,对于一个交易业务(交易数据),其可以分为不同的交易逻辑操作步骤,而一个交易逻辑操作步骤即可对应一个结构化查询语言指令(如SQL命令),当然,一个交易逻辑操作步骤也可对应多个不同的结构化查询语言指令(也就是说,执行一个交易逻辑操作步骤需要执行多个结构化查询语言指令)。在执行结构化查询语言指令时,可按照交易逻辑操作步骤的执行顺序,依次对相应的结构化查询语言指令进行执行,而一个结构化查询语言指令可对应一个指令执行结果(是否执行成功的结果),当一个交易业务所涉及的所有结构化查询语言指令均可成功执行时,所有的结构化查询语言指令的指令执行结果均为成功执行的结果时,可以认为该交易业务所涉及的结构化查询语言指令最终的指令执行结果为成功执行结果(也可称之为正常执行结果);相应的,若一个交易业务所涉及的所有结构化查询语言指令中,存在某一个或多个结构化查询语言指令无法成功执行,那么这个结构化查询语言指令的指令执行结果即为执行失败结果,此时,可以认为该交易业务所涉及的结构化查询语言指令最终的指令执行结果为执行失败结果(也可称之为异常执行结果)。
应当理解,由于一个交易数据所涉及的所有交易逻辑操作步骤中,这些交易逻辑操作步骤均具有一定关联性,例如,一个交易数据所涉及的所有交易逻辑操作步骤包括交易逻辑操作步骤1、交易逻辑操作步骤2以及交易逻辑操作步骤3,交易逻辑操作步骤2必须依赖于交易逻辑操作步骤1的执行结果才能执行,而交易逻辑操作步骤3必须依赖于交易逻辑操作步骤2的执行结果才能执行,该交易逻辑操作步骤1、交易逻辑操作步骤2以及交易逻辑操作步骤3之间存在依赖执行关系。那么相应的,本申请根据交易逻辑操作步骤的这种关联性,将交易逻辑操作步骤称为交易关联操作,也就是说,一个交易数据可以涉及多个交易关联操作。为便于理解,以用户a通过用户终端100c发起一笔转账交易业务(用户a转账5000元至用户b,该转账交易业务可以是指一个交易数据),用户a可以通过用户终端100c选择区块链中的智能合约(例如,选择具有转账业务逻辑的且包含关系数据结构的智能合约A),也就是用户a可以选择区块链中用于执行该转账交易业务的智能合约。应当理解,对于智能合约对该转账交易业务的执行逻辑可以为以下5个步骤:
1、在区块链中读取用户a的余额。
2、在区块链中读取用户b的余额。
3、做转账的逻辑判断,修改用户a与用户b的余额。
4、将用户a的最新余额写入区块链。
5、将用户b的最新余额写入区块链。
其中,上述每一个步骤可以理解为一个交易关联操作,则该转账交易业务(转账交易数据)所设计的交易关联操作包含5个,每个交易关联操作可以对一个结构化查询语言指令,每个交易关联操作所对应的结构化查询语言指令,即可为该交易数据所涉及到的结构化查询语言指令,而执行一个交易关联操作所指示的结构化查询语言指令,即可得到一个指令执行结果(这里为便于与所有指令最终的指令执行结果进行区别,可将一个结构化查询语言指令的指令执行结果称为指令执行子结果)。例如,以上述交易关联操作1为例,对于在区块链中读取用户a的余额的这一个交易关联操作,可以对应一个结构化查询语言指令(如结构化查询语言指令P),该结构化查询语言指令可用于操作关系型数据库,用于在该关系型数据库中查询用户a的账户地址下所对应的余额(在关系型数据库中体现为一个数值)。而基于关系型数据库可返回一个数值,该数值即为该用户a的余额。当然,若关系型数据库成功返回用户a的余额,则该结构化查询语言指令P的指令执行子结果即可为成功执行结果;而若该指令无法执行,导致无法访问数据库(例如,指令格式不正确或其他异常原因),那么该结构化查询语言指令P的指令执行子结果即可为异常执行结果。应当理解,当一个交易数据所涉及到的所有结构化查询语言指令,其所有的指令执行子结果均为成功执行结果时,可认为所有的结构化查询语言指令对应的最终的指令执行结果为成功执行结果,那么该交易数据的执行结果(如第一预执行结果)为成功执行结果,而若交易数据所涉及到的所有结构化查询语言指令中,存在某个结构化查询语言指令的指令执行子结果为有异常执行结果时,则可认为所有的结构化查询语言指令对应的最终的指令执行结果为异常执行结果,那么该交易数据的执行结果(如第一预执行结果)为异常执行结果。
可以理解的是,由于关系型数据库主要用于事务处理,则为了响应于关系型数据库,本申请中的第一节点在接收到针对区块的上链请求后,可以开启一笔数据库事务,当前区块中所有交易数据所涉及到的结构化查询语言指令(如SQL命令),均可以在该数据库事务中进行执行,以得到交易数据的第一预执行结果。也就是说,对于基于上链请求获取区块中的交易数据的第一预执行结果的具体实现方式可为:可以基于上链请求创建针对区块的初始数据库事务;在初始数据库事务中,可以执行交易关联操作所指示的结构化查询语言指令,得到指令执行结果;随后,即可将指令执行结果确定为交易数据的第一预执行结果。其中,这里的指令执行结果可以是指一个交易数据的所有结构化查询语言指令的最终的指令执行结果,也就是说,一个交易数据所涉及到的所有结构化查询语言指令的最终的指令执行结果,可以作为该交易数据的预执行结果(如第一预执行结果)。
如上述可知,对于区块链中的每个共识节点(包括第一节点与第二节点),均可以基于交易数据对应的结构化查询语言指令,来执行交易数据所涉及的交易关联操作,从而可以得到交易数据对应的预执行结果。而对于某个共识节点而言,可以基于自身的预执行结果以及其他共识节点的预执行结果,来对交易数据所属的区块进行共识,在共识通过后,可以将该区块存储到区块链中。以第一节点与第二节点为例,本申请可以将第一节点基于交易数据对应的结构化查询语言指令,对交易数据所涉及的交易关联操作进行预执行后所得到的执行结果称为第一预执行结果,可以将第二节点基于交易数据对应的结构化查询语言指令,对交易数据所涉及的交易关联操作进行预执行后所得到的执行结果称为第二预执行结果,而第二节点向第一节点发送的上链请求中可以携带该第二预执行结果,那么第一节点可以基于第一预执行结果、第二预执行结果以及关系数据模型所指示的数据完整性约束规则,对该区块进行共识。
通过上述可知,应当理解,对于根据第一预执行结果以及关系数据模型所指示的数据完整性约束规则,对区块进行共识,得到区块的共识结果的具体实现方式可为:可以将第一预执行结果与第二预执行结果进行比对,得到比对结果;若第一预执行结果与第二预执行结果之间的比对结果为匹配结果,则可以基于关系数据模型所指示的数据完整性约束规则,获取结构化查询语言指令所包含的主键值、结构化查询语言指令所包含的外键值,以及结构化查询语言指令所对应的数据类型,再对主键值、外键值以及数据类型进行共识,得到主键值、外键值以及数据类型共同对应的因素共识结果,随后即可将因素共识结果确定为区块的共识结果;而若第一预执行结果与第二预执行结果之间的比对结果为不匹配结果,则可以将区块的共识结果为共识失败结果。
应当理解,各个共识节点可以将自身得到的预执行结果与其他各个共识节点的预执行结果进行对比验证,而在实际场景中,共识节点的数量会存在至少两个(一般是两个以上),各个共识节点所组成的集群可称之为共识节点集群,当共识节点集群中存在一定比例的共识节点的预执行结果为相同结果时,即可认为该预执行结果的对比验证为验证通过结果(预执行结果是能匹配上的),那么此时即可进行下一步,基于数据完整性约束规则对区块再次进行共识;而若预执行结果的对比验证为验证失败结果(预执行结果不能匹配上),那么此时可以直接将区块的共识结果确定为共识失败结果。
为便于理解,以第二节点的数量为至少两个为例,由于一个第二节点可以得到一个预执行结果(第二预执行结果),那么至少两个第二节点中的每个第二节点均可以基于交易数据对应的结构化查询语言指令,对交易数据所涉及的交易关联操作进行预执行后得到一个第二预执行结果,也就是说,第二预执行结果的数量也为至少两个;以第二节点的数量为至少两个、第二预执行结果的数量为至少两个为例,对于将第一预执行结果与第二预执行结果进行比对,得到比对结果的具体实现方式可为:可以根据至少两个第二预执行结果与第一预执行结果组成预执行结果集合,然后可以将预执行结果集合中为相同结果的预执行结果,确定为待统计预执行结果;随后可以统计待统计预执行结果的数量,并将待统计预执行结果的数量作为统计数量;同时,也可以统计第一预执行结果与至少两个第二预执行结果对应的结果总数量;随后,可以确定运算数量与结果总数量之间的数量比值,根据数量比值可以确定第一预执行结果与第二预执行结果之间的比对结果。
其中,对于根据数量比值确定第一预执行结果与第二预执行结果之间的比对结果的具体实现方式可为:可以将数量比值与比值阈值进行比较;若数量比值大于比值阈值,则可以将第一预执行结果与第二预执行结果之间的比对结果,确定为匹配结果;而若数量比值小于比值阈值,则可以将第一预执行结果与第二预执行结果之间的比对结果,确定为不匹配结果。
可以理解的是,第一节点可以将自身的第一预执行结果与其他至少两个第二预执行结果进行比对,可以将第一预执行结果与至少两个第二预执行结果组成预执行结果集合,预执行结果集合中包含的每个第一预执行结果与每个第二预执行结果,均可以称之为预执行结果;可以将该集合中为相同结果的预执行结果,确定为待统计预执行结果,并统计待统计预执行结果的数量,可将该数量称为统计数量。也就是说,可以统计第一预执行结果与其他至少两个第二预执行结果中的相同预执行结果的数量,若相同预执行结果的数量与结果总数量之间的比值(如上述数量比值)超过比值阈值(该阈值可为人为预设数值),则可表明共识节点集群中有超过比例的共识节点的执行结果均相同,此时可以认为预执行结果验证成功,为了确保区块俩的共识节点集群中,所有诚实节点能得到一致的结果,提升区块链的健壮性,可以进一步对基于关系数据模型的数据完整性约束规则,进行进一步地共识,例如,可以基于上述主键值、上述外键值以及上述数据类型进行共识,得到所述主键值、所述外键值以及所述数据类型共同对应的因素共识结果,然后可以将所述因素共识结果确定为所述区块的共识结果。对于基于上述主键值、上述外键值以及上述数据类型进行共识,得到所述主键值、所述外键值以及所述数据类型共同对应的因素共识结果的具体实现方式,可以参见后续图3所对应实施例中的描述。
需要说明的是,区块链中,为保证数据传输的可靠性与真实性,共识节点可通过己方的私钥以及对方的公钥进行身份验证,在验证通过后,在进行后续处理。例如,以第二节点向第一节点发送针对区块的上链请求为例,第二节点可以基于第二节点的私钥对区块进行签名,得到数字签名,并将携带该数字签名的上链请求发送至第一节点,而第一节点可基于第二节点的公钥对该数字签名进行验签,在验签通过后,再进行后续处理。以上链请求携带数字签名,数字签名是由第二节点基于第二节点的私钥对所述区块进行签名后所得到的为例,其具体实现方式可为:第一节点可以获取第二节点的公钥,基于公钥对数字签名进行验签;若验签通过,则可以进行后续处理,例如可以执行基于上链请求获取区块中的交易数据的第一预执行结果,根据第一预执行结果以及关系数据模型所指示的数据完整性约束规则,对区块进行共识,得到区块的共识结果的步骤;而若验签未通过,则可以将第二节点标记为异常节点,在目标时间段内暂停与异常节点之间的数据通信。
应当理解,若验签未通过,则可以认为该第二节点为不可靠的节点(称为异常节点,例如恶意节点),此时为了确保数据传输安全,可以在一定时间(如目标时间段,)内,暂停与异常节点的数据通信。
步骤S103,在区块的共识结果为共识通过结果时,将区块存储至关系型数据库中。
本申请中,在区块的共识结果为共识通过结果时,可以将区块存储到区块链中,本申请主要采用关系型数据库存储链上数据,那么可以将区块的数据存储到关系型数据库中。具体的,通过上述可知,在执行交易数据对应的结构化语言查询指令时,可以创建一笔数据库事务(如上述初始数据库事务),然后在该初始数据库事务中执行结构化语言查询指令,得到指令执行结果(作为交易数据的第一预执行结果)。那么本申请在区块的共识结果为共识通过结果时,可以提交整个区块的数据库事务(包含结构化查询语言指令以及第一预执行结果,可称之为目标数据库事务),也就是可以存储区块的数据库事务至关系型数据库中。
也就是说,对于将区块存储至关系型数据库中的具体实现方式可为:可以获取与区块相关联的目标数据库事务;其中,目标数据库事务包含交易数据中的结构化查询语言指令,以及第一预执行结果;将目标数据库事务存储至关系型数据库中。目标数据库事务可以理解为包含有结构化查询语言指令以及第一预执行结果的初始数据库事务。
进一步地,请参见图3,图3是本申请实施例提供的一种基于数据完整性约束规则,对区块进行共识的流程示意图。其中,该流程可以对应于上述图2所对应实施例中,对主键值、外键值以及数据类型进行共识,得到主键值、外键值以及数据类型共同对应的因素共识结果,再将因素共识结果确定为区块的共识结果的流程。该流程也可由计算机设备执行,这里的计算机设备可以是指应用服务器(如,上述图1所对应实施例中的应用服务器),也可以是指终端设备(如,上述图1所对应实施例中终端设备集群中的任一终端设备),还可以是指集成有应用服务器与终端设备的设备。如图3所示,该流程可以至少包括以下步骤S301-步骤S304:
步骤S301,对主键值进行共识,得到主键值对应的第一因素共识子结果。
具体的,为了提升数据安全性,关系数据模型规定了数据完整性,该数据完整性用于约束关系型数据库中的数据需要满足的条件,所以也可称之为数据完整性约束规则。其中,数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性可以包括实体完整性(Entity Integrity)、域完整性(Domain Integrity)、参照完整性(Referential Integrity)以及用户自定义完整性(User-defined Integrity)。
其中,实体完整性是指表中行的完整性。主要用于保证操作的数据(记录)非空、唯一且不重复。即实体完整性要求每个关系(表)有且仅有一个主键,每一个主键值必须唯一,而且不允许为“空”(NULL)或重复。例如,属性a是基本关系R的主属性,则属性a不能取空值,即主属性不可为空值。其中的空值(NULL)不是0,也不是空隔或空字符串,而是没有值。实际上,空值是指暂时“没有存放的值”、“不知道”或“无意义”的值。由于主键是实体数据(记录)的唯一标识,若主属性取空值,关系中就会存在不可标识(区分)的实体数据(记录),这与实体的定义矛盾,而对于非主属性可以取空值(NULL),因此,将此规则称为实体完整性规则。如学籍关系(表)中主属性“学号”(列)中不能有空值,否则无法操作调用学籍表中的数据(记录)。
域完整性是指数据库表中的列必须满足某种特定的数据类型或约束。其中,约束又可以包括取值范围、精度等规定。表中的CHECK、FOREIGN KEY约束和DEFAULT、NOT NULL定义都属于域完整性的范畴。
参照完整性(Referential Integrity)属于表间规则。对于永久关系的相关表,在更新、***或删除记录时,如果只改其一,就会影响数据的完整性。如删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录。对于更新、***或删除表间数据的完整性,统称为参照完整性。通常,在客观现实中的实体之间存在一定联系,在关系数据模型中实体及实体间的联系都是以关系进行描述,因此,操作时就可能存在着关系与关系间的关联和引用。
在关系型数据库中,关系之间的联系是通过公共属性实现的。这个公共属性经常是一个表的主键,同时是另一个表的外键。参照完整性体现在两个方面:实现了表与表之间的联系,外键的取值必须是另一个表的主键的有效值,或是“空”值。例如,属性组F是关系模式R1的主键,同时F也是关系模式R2的外键,则在R2的关系中,F的取值只允许两种可能:空值或等于R1关系中某个主键值。R1称为“被参照关系”模式,R2称为“参照关系”模式。
用户定义完整性(User-defined Integrity)是对数据表中字段属性的约束,用户定义完整性规则(User-defined integrity)也称域完整性规则。包括字段的值域、字段的类型和字段的有效规则(如小数位数)等约束,是由确定关系结构时所定义的字段的属性决定的。如,百分制成绩的取值范围在0~100之间等。
基于上述实体完整性、域完整性、参照完整性以及用户自定义完整性所分别规定的数据要求,本申请可以对区块进行共识,本申请可以将实体完整性、域完整性、参照完整性以及用户自定义完整性所分别规定的数据要求称之为数据完整性约束规则,那么基于数据完整性约束规则,本申请可以对区块进行共识。
应当理解,由于实体完整性约束规则用于规定主键值须具备唯一性,则实体完整性约束规则也可称为唯一性约束规则,基于唯一性约束规则,本申请可以对区块中,交易数据所对应的结构化查询语言指令进行共识,其中,由于唯一性约束规则为规定表的每一行在表中是唯一的实体,那么在对结构化查询语言指令进行验证共识时,可以获取到结构化查询语言指令中包含的主键值,若该结构化查询语言指令中包含主键值,且该主键值所指示的目标实体对象为唯一实体,则即可认为该结构化查询语言指令满足唯一性约束规则。而若该结构化查询语言指令中包含主键值,但该主键值所指示的目标实体对象并非为唯一实体,则即可确定该结构化查询语言指令未满足唯一性约束规则。
应当理解,可以将结构化查询语言指令是否满足唯一性约束规则的结果,作为第一因素共识子结果。例如,若结构化查询语言指令是满足唯一性约束规则的,则可以将该第一因素共识子结果确定为因素共识通过结果;而若结构化查询语言指令未满足唯一性约束规则,则可以将第一因素共识子结果确定为因素共识失败结果(即因素共识未通过结果)。
也就是说,在数据完整性约束规则中包含为主键值配置的唯一性约束规则的情况下,对于对主键值进行共识,得到主键值对应的第一因素共识子结果的具体实现方式可为:获取主键值所指示的目标实体对象;基于唯一性约束规则,可以遍历关系型数据库中所包含的已存实体对象集合;若已存实体对象集合中不存在与目标实体对象相同的已存实体对象,则可以将目标实体对象确定为唯一实体对象,并确定主键值对应的第一因素共识子结果为因素共识通过结果;而若已存实体对象集合中存在与目标实体对象相同的已存实体对象,则可以将目标实体对象确定为重复实体对象,并确定主键值对应的第一因素共识子结果为因素共识失败结果。其中,遍历关系型数据库中所包含的已存实体对象集合中,具体可以是指在关系型数据库中获取到该结构化查询语言指令中该主键值所属的表(可称之为目标表格),再遍历该目标表格中该主键值所指示的行参数,查询该行参数中是否存在与目标实体对象相同的已存实体对象,若存在,则可以将目标实体对象确定为重复实体对象,此时可以表明该主键值未满足唯一性约束规则,那么可以确定主键值对应的第一因素共识子结果为因素共识失败结果;而若不存在,则可以将目标实体对象确定为唯一实体对象,此时可以确定主键值满足了唯一性约束规则,那么可以确定主键值对应的第一因素共识子结果为因素共识通过结果。
当然,在一种可行的情况下,遍历关系型数据库中所包含的已存实体对象集合,也可以是指遍历关系型数据库中的所有表中包含的已存实体对象。遍历关系型数据库中的所有表中包含的已存实体对象的遍历方式更为严格,此种遍历方式是要求关系型数据库中的每个实体对象均为唯一的实体对象,而不是要求某个表中的某个实体对象在该表中为唯一的实体对象。
步骤S302,对外键值进行共识,得到外键值对应的第二因素共识子结果。
具体的,通过上述可知,参照完整性实现了表与表之间的联系,外键的取值必须是另一个表的主键的有效值,也就是说,外键值所指示的参照对象,在另一个表中需要为有效对象(有效参照对象)。则参照完整性也可以称之为参照有效性约束规则,在该数据完整性约束规则包括为外键值所配置的参照有效性约束规则时,基于参照有效性约束规则,本申请可以对区块中,交易数据所对应的结构化查询语言指令进行共识,其中,由于参照有效性约束规则为规定外键值须为另一个表的有效主键值,那么在对结构化查询语言指令进行验证共识时,可以获取到结构化查询语言指令中包含的外键值,若该结构化查询语言指令中包含外键值,且该外键值所指示的参照对象为被参照表中的有效参照对象,则即可认为该结构化查询语言指令满足参照有效性约束规则。而若该结构化查询语言指令中包含外键值,但该外键值所指示的参照对象并非为有效参照对象,则即可确定该结构化查询语言指令未满足参照有效性约束规则。
也就是说,在数据完整性约束规则中包括为外键值配置的参照有效性约束规则时,对于对外键值进行共识,得到外键值对应的第二因素共识子结果的具体实现方式可为:基于参照有效性约束规则,可以在结构化查询语言指令中确定外键值所指示的参照对象,以及参照对象所属的对象文件;随后,可以获取到对象文件,并对对象文件进行遍历;若对象文件中包含参照对象,则可以将参照对象确定为有效参照对象,并确定外键值对应的第二因素共识子结果为因素共识通过结果;而若对象文件中未包含参照对象,则可以将参照对象确定为无效参照对象,并确定外键值对应的第二因素共识子结果为因素共识失败结果。
可以理解的是,本申请中的对象文件可以是指外键值所参照的表(可称之为被参照表,或被参照文件),在关系型数据库中,写入每个表中的实体对象均需要满足一定的约束条件,那么当某个实体对象被写入某个表中时,可认为该实体对象在该表中是有效的。那么当获取到外键值所指示的参照对象以及该参照对象所属的对象文件时,可遍历该对象文件,若该对象文件中确实包含有该参照对象(如,该参照对象确实为该对象文件中的某个实体对象),则可以认为该参照对象为有效参照对象,此时可以确定该外键值满足该参照有效性约束规则,那么可以将外键值对应的第二因素共识子结果确定为因素共识通过结果;而若该对象文件中未包含有该参照对象(如,该参照对象并非为该对象文件中的任一实体对象),则可以认为该参照对象并非为有效参照对象(换言之,为无效参照对象),此时可以确定该外键值未满足该参照有效性约束规则,那么可以将外键值对应的第二因素共识子结果确定为因素共识失败结果。
步骤S303,对数据类型进行共识,得到数据类型对应的第三因素共识子结果。
具体的,通过上述可知,域完整性是指数据库表中的列必须满足某种特定的数据类型或约束,对于域完整性约束规则也可称之为类型约束规则,若将该关系数据模型所约束的数据类型称之为标准数据类型,则该类型约束规则中可以包含有该关系型数据库所能够支持的标准数据类型集合(可由一个或多个标准数据类型组成)。基于类型约束规则,本申请可以对区块中,交易数据所对应的结构化查询语言指令进行共识,对于结构化查询语言指令,可以获取到该结构化查询语言指令中所包含的用于指示数据类型的类型描述字段,若该类型描述字段所描述的数据类型,为该关系数据模型所规定的标准数据类型中的某一种,则可以认为该结构化查询语言指令满足该类型完整性,此时可以将该数据类型对应的第三因素共识子结果确定为因素共识通过结果;而若该类型描述字段所描述的数据类型,非关系数据模型所规定的标准数据类型中的任一种,则可以认为该结构化查询语言指令未满足该类型完整性,此时可以将该数据类型对应的第三因素共识子结果确定为因素共识失败结果。
步骤S304,根据第一因素共识子结果、第二因素共识子结果以及第三因素共识子结果,确定主键值、外键值以及数据类型共同对应的因素共识结果。
具体的,在确定出主键值、外键值以及数据类型分别对应的因素共识子结果后,即可基于主键值、外键值以及数据类型分别对应的因素共识子结果确定出主键值、外键值以及数据类型共同对应的因素共识结果。其具体方式可为:若第一因素共识子结果、第二因素共识子结果以及第三因素共识子结果均为因素共识通过结果,则可以将主键值、外键值以及数据类型共同对应的因素共识结果确定为共识通过结果;而若第一因素共识子结果、第二因素共识子结果以及第三因素共识子结果中存在至少一个因素共识子结果为因素共识失败结果,则可以将主键值、外键值以及数据类型共同对应的因素共识结果确定为共识失败结果。
需要说明的是,上述基于数据完整性约束规则对区块进行共识的方式,仅为一种可行的举例描述,基于数据完整性约束规则对区块进行共识的方式并非仅限定于此,例如,还可以将用户定义完整性也纳入共识流程中,即可以基于实体完整性约束规则、域完整性约束规则、参照完整性约束规则以及用户定义完整性约束规则,共同对区块进行共识。对于其他基于数据完整性约束规则对区块进行共识的方式,可以用于提高数据的可靠性与安全性即可,这里将不再进行一一举例说明。
需要说明的是,上述对主键值、外键值以及数据类型的共识,主要是基于某个节点(如第一节点)而言,也就是说,由单个共识节点来确定主键值、外键值以及数据类型是否符合相应的数据完整性约束规则。在可行的情况下,当某个节点得到主键值、外键值以及数据类型分别对应的因素共识子结果后,也可以与其他共识节点进行通信,在超过比例的共识节点的因素共识子结果一致时,再将该一致的因素共识子结果作为该主键值,或外键值,或数据类型对应的因素共识子结果。也就是说,主键值、外键值以及数据类型分别对应的因素共识子结果并非由一个共识节点所确定,也可以由所有的共识节点来确定,从而可以加强数据的严谨性与可靠性,进而进一步提升区块链的健壮性,保证数据的可靠性。
可以理解的是,在基于第一预执行结果以及数据完整性约束规则,对区块进行共识时,可以先基于数据完整性约束规则对区块进行共识,再基于数据完整性约束规则对区块进行共识得到的共识结果为共识通过结果后,再基于第一预执行结果对区块进行共识,以得到最终的共识结果;当然,也可以基于第一预执行结果对区块进行共识,在共识通过后,再基于数据完整性约束规则对区块进行共识,以得到最终的共识结果。本申请对于两者的执行顺序,不进行限制。
本申请对于区块链的链上数据,采用关系型数据库来进行存储,而对于关系型数据库,主要通过结构化语言查询指令对其进行访问,那么本申请可以通过结构化查询语言指令来对交易数据进行关系操作。由于关系数据模型可以直观、灵活的存储和访问结构化指令,通过简单的指令即可直观且准确的呈现业务数据之间错综复杂的关联关系,那么通过结构化查询语言指令,即可灵活且准确地对本申请中的交易数据进行关系操作,无需花费过多的人力与时间,即可很好地提升交易数据的关系操作的灵活性与准确性,进而提升数据处理效率与准确率;同时,本申请还可以在区块链共识流程中,加入对关系数据模型的数据完整性约束,即本申请的共识流程,不仅可以基于交易数据的执行结果进行共识,还可以基于数据完整性约束规则进行共识,由此可以确保写入关系型数据库中的数据是符合数据完整性约束规则的,可以进一步提升区块链的健壮性,从而提升写入数据的准确性。综上,本申请可以在区块链业务中,提升业务数据的关系操作的灵活性,进而提升数据处理效率以及准确率,同时可以减少数据处理成本。
进一步地,请参见图4,图4是本申请实施例提供的一种***逻辑架构图。如图4所示,该***逻辑架构可以包括客户端、区块链节点集群。其中,区块链节点集群可以是指共识节点集群,区块链节点集群中包含的区块链节点可以是指共识节点。其中,每个共识节点中可以包括远程过程调用(Remote Procedure Call,RPC)服务组件、交易池、共识引擎、调度器、虚拟机以及存储组件。为便于理解,以下将对该***架构中包含的各个内容进行阐述。
客户端:客户端可以是指上述应用客户端,该客户端可以是指区块链交易或查询请求的发起方。也就是说,用户可通过客户端发起交易数据(或交易请求,如查询请求)。
RPC服务组件:RPC服务组件可以对客户端提供区块链的服务API,当客户端发起交易数据后,若区块链节点接收到了该交易数据,则该区块链节点中的RPC服务组件可以将该交易数据发往交易池;而当客户端发起交易请求(如查询请求)时,该RPC服务组件可以调用虚拟机执行该查询请求,其中,对于区块链中的已有数据的查询可以直接访问存储组件。
交易池:交易池是用于临时缓存接收到的新交易数据的地方,对于新接收到的交易数据可以调用虚拟机以查验该交易数据是否有效;当需要产生新区块时,也是从交易池中取出一批交易数据打包成区块,当区块提交后,可以从交易池中清理掉这批交易数据。
共识引擎:共识引擎可以用于负责区块链中的共识工作,共识引擎可以与其他区块链节点(如共识节点)进行通信,通过共识以确保区块链中的诚实节点能够对新区块达成一致。若达成一致(如超过比例的共识节点的结果一致),则可以提交新区块;若未达成一致,则可以回滚对于该新区块的提案。需要说明的是,在本申请中,共识引擎在与其他区块链节点之间进行共识时,除了需要对智能合约的执行结果进行共识以外,还需要对关系数据模型的数据完整性约束规则进行共识,对于不满足数据完整性约束规则的交易,进行一致否决。其中,对于基于执行结果(如预执行结果)以及数据完整性约束规则,对区块进行共识的具体实现方式,可以参见上述图2-图3所对应实施例中的描述,这里将不再进行赘述。
调度器:调度器主要负责区块处理的调度工作,可用于响应共识引擎的区块请求(如上链请求或共识请求),调用虚拟机执行区块中的交易数据所对应的智能合约,以预执行区块中的交易数据;同时,调度器还可以调用存储组件来存储区块中的内容。需要说明的是,本申请中的调度器在区块验证阶段,还会调度存储组件开启一笔数据库事务,该数据库事务用于执行区块中所有交易数据所产生的结构化查询语言命令(如SQL命令),由此可以是指最终区块共识验证的内容,可以包含该SQL命令的执行结果,从而提升区块链的健壮性。
虚拟机:虚拟机主要为智能合约的执行环境,当调度器调用智能合约时,该智能合约可在虚拟机中进行执行。需要说明的是,本申请的区块链为基于关系数据模型的区块链,则虚拟机需要为智能合约提供支持关系操作的API,允许智能合约开发者通过SQL操作关系型数据库。其中,当虚拟机在运行智能合约时,若解析到SQL命令,则可以将SQL命令传递至存储组件,使得存储组件可以执行关系型数据库相应的关系操作。
存储组件:存储组件主要用于负责区块链上数据的存储。本申请在关系数据模型的区块链中,需要保证数据操作的原子性,则存储组件可以组织区块中的所有交易数据所涉及的所有SQL命令,并以单个事务(称之为数据库事务,如上述初始数据库事务、目标数据库事务)的方式进行提交。其中,在提交事务之前,需要在交易模拟执行(预执行)时,及时验证SQL命令是否能执行成功,确保共识后的交易数据一定能成功修改关系型数据库。
对于一个区块链节点中,各个组件对区块进行共识,以及将区块存储到区块链中的具体实现方式,可以参见上述图2-图3所对应实施例中,对于第一节点对区块进行共识,并将区块存储到区块链中的描述,这里将不再进行赘述。
本申请实施例中,对于区块链的链上数据,采用关系型数据库来进行存储,而对于关系型数据库,主要通过结构化语言查询指令对其进行访问,那么本申请可以通过结构化查询语言指令来对交易数据进行关系操作。由于关系数据模型可以直观、灵活的存储和访问结构化指令,通过简单的指令即可直观且准确的呈现业务数据之间错综复杂的关联关系,那么通过结构化查询语言指令,即可灵活且准确地对本申请中的交易数据进行关系操作,无需花费过多的人力与时间,即可很好地提升交易数据的关系操作的灵活性与准确性,进而提升数据处理效率与准确率;同时,本申请还可以在区块链共识流程中,加入对关系数据模型的数据完整性约束,即本申请的共识流程,不仅可以基于交易数据的执行结果进行共识,还可以基于数据完整性约束规则进行共识,由此可以确保写入关系型数据库中的数据是符合数据完整性约束规则的,可以进一步提升区块链的健壮性,从而提升写入数据的准确性。综上,本申请可以在区块链业务中,提升业务数据的关系操作的灵活性,进而提升数据处理效率以及准确率,同时可以减少数据处理成本。
为便于理解,请参见图5,图5是本申请实施例提供的一种***流程图。该***流程主要为一个区块链节点中各个组件对于一个新区块的执行流程,其中,该区块链节点中所包含的各个组件主要为以上述图4所示。如图5所示,该流程可以至少包括以下步骤S41-步骤S49:
步骤S41,共识引擎向调度器发起验证区块的请求。
具体的,验证区块的请求可以是指对区块的共识请求(或上链请求),共识引擎在提议新区块或接受到其他共识节点广播的新区块时,可以向调度器发起区块验证请求(共识请求)。
步骤S42,调度器向存储组件发起启动区块预执行的请求。
具体的,调度器接收到区块验证请求后,可以调用存储组件,以启动区块预执行命令。
步骤S43,存储组件开启数据库事务。
具体的,数据库事务可以对应于上述初始数据库事务,存储组件可以开启一笔数据库事务,获取到并维护事务句柄。应当理解,当前区块中的所有交易数据所需要执行的SQL命令,都可以在该数据库事务中进行执行。
步骤S44,调度器向虚拟机发送模拟执行交易数据的请求。
具体的,调度器可以依次将区块中的交易数据的执行请求发送至虚拟机。
步骤S45,虚拟机访问交易数据。
具体的,虚拟机可以根据各个交易数据的内容,调用并执行相应的智能合约。在智能合约的执行过程中,若解析出访问关系型数据库的请求(如解析出如SQL的结构化查询语言指令),那么虚拟机可以将访问关系型数据库的结构化查询语言指令发送给存储组件。
步骤S46,存储组件执行结构化查询语言指令。
具体的,这里的结构化查询语言指令可以是指SQL命令,存储组件可以依次执行一笔交易数据中的所有SQL命令,以模拟执行相应的交易数据。需要说明的是,当一笔交易中的所有SQL命令都执行成功,则可以调用SQL标准中的相应字段(可称为保存字段,如SAVEPOINT)设置保存点,如果当前交易数据执行过程中遇到异常,则可以回滚到上一笔正常交易数据所设置的保存点处,通过保存点的方式可以回滚区块中的某一个异常的交易数据对关系型数据库的写操作,而不影响区块中正常交易数据的写操作。
步骤S47,共识引擎发起提交或撤销区块的命令。
具体的,如果区块验证成功(如区块的共识结果为共识通过结果),则共识引擎可以向调度器发起提交区块的命令;相反,若区块验证失败(如区块的共识结果为共识通失败结果),则共识引擎可以向调度器发起撤销区块的命令。
步骤S48,调度器向存储组件发送提交或撤销区块的命令。
具体的,调度器接收到区块提交或撤销的命令后,可以向存储组件发送该命令。
步骤S49,存储组件提交或回滚数据库事务。
具体的,如果存储组件接收到区块提交的命令,则可以提交整个区块的数据库事务,保证区块中的写操作的原子性;而若存储组件接收到撤销区块的命令,则存储组件可以回滚整个区块的数据库事务,使得数据库回退到该区块预执行之前的状态。
具体的,对于步骤S41-步骤S49的具体实现方式,可以参见上述图2-图3所对应实施例中的描述,这里将不再进行赘述。
本申请实施例中,对于区块链的链上数据,采用关系型数据库来进行存储,而对于关系型数据库,主要通过结构化语言查询指令对其进行访问,那么本申请可以通过结构化查询语言指令来对交易数据进行关系操作。由于关系数据模型可以直观、灵活的存储和访问结构化指令,通过简单的指令即可直观且准确的呈现业务数据之间错综复杂的关联关系,那么通过结构化查询语言指令,即可灵活且准确地对本申请中的交易数据进行关系操作,无需花费过多的人力与时间,即可很好地提升交易数据的关系操作的灵活性与准确性,进而提升数据处理效率与准确率;同时,本申请还可以在区块链共识流程中,加入对关系数据模型的数据完整性约束,即本申请的共识流程,不仅可以基于交易数据的执行结果进行共识,还可以基于数据完整性约束规则进行共识,由此可以确保写入关系型数据库中的数据是符合数据完整性约束规则的,可以进一步提升区块链的健壮性,从而提升写入数据的准确性。
进一步地,请参见图6,图6是本申请实施例提供的一种数据处理装置的结构示意图。该数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件;该数据处理装置可以用于执行图3所示的方法。如图6所示,该数据处理装置1可以包括:请求接收模块11、执行结果获取模块12、区块共识模块13以及区块存储模块14。
请求接收模块11,用于接收第二节点发送的针对区块的上链请求;上链请求用于请求将区块存储到区块链对应的关系型数据库中,关系型数据库是指基于关系数据模型所建立的数据库;
执行结果获取模块12,用于基于上链请求获取区块中的交易数据的第一预执行结果;
区块共识模块13,用于根据第一预执行结果以及关系数据模型所指示的数据完整性约束规则,对区块进行共识,得到区块的共识结果;第一预执行结果是指第一节点基于交易数据对应的结构化查询语言指令,对交易数据所涉及的交易关联操作进行预执行后所得到的执行结果;结构化查询语言指令是指操作关系型数据库来执行交易关联操作的指令;
区块存储模块14,用于在区块的共识结果为共识通过结果时,将区块存储至关系型数据库中。
其中,请求接收模块11、执行结果获取模块12、区块共识模块13以及区块存储模块14的具体实现方式,可以参见上述图2所对应实施例中步骤S101-步骤S103的描述,这里将不再进行赘述。
在一个实施例中,执行结果获取模块12可以包括:事务创建单元121、指令执行单元122以及结果确定单元123。
事务创建单元121,用于基于上链请求创建针对区块的初始数据库事务;
指令执行单元122,用于在初始数据库事务中,执行交易关联操作所指示的结构化查询语言指令,得到指令执行结果;
结果确定单元123,用于将指令执行结果确定为交易数据的第一预执行结果。
其中,事务创建单元121、指令执行单元122以及结果确定单元123的具体实现方式,可以参见上述图2所对应实施例中步骤S102的描述,这里将不再进行赘述。
在一个实施例中,区块存储模块14可以包括:目标事务获取单元141以及事务存储单元142。
目标事务获取单元141,用于获取与区块相关联的目标数据库事务;目标数据库事务包含交易数据中的结构化查询语言指令,以及第一预执行结果;
事务存储单元142,用于将目标数据库事务存储至关系型数据库中。
其中,目标事务获取单元141以及事务存储单元142的具体实现方式,可以参见上述图2所对应实施例中步骤S103的描述,这里将不再进行赘述。
在一个实施例中,上链请求携带第二预执行结果,第二预执行结果是指第二节点基于交易数据中的结构化查询语言指令,对交易数据中的交易关系操作进行预执行后所得到的执行结果;
区块共识模块13可以包括:结果比对单元131、因素共识单元132、第一结果确定单元133以及第二结果确定单元134。
结果比对单元131,用于将第一预执行结果与第二预执行结果进行比对,得到比对结果;
因素共识单元132,用于若第一预执行结果与第二预执行结果之间的比对结果为匹配结果,则基于关系数据模型所指示的数据完整性约束规则,获取结构化查询语言指令所包含的主键值、结构化查询语言指令所包含的外键值,以及结构化查询语言指令所对应的数据类型;
因素共识单元132,还用于对主键值、外键值以及数据类型进行共识,得到主键值、外键值以及数据类型共同对应的因素共识结果;
第一结果确定单元133,用于将因素共识结果确定为区块的共识结果;
第二结果确定单元134,用于若第一预执行结果与第二预执行结果之间的比对结果为不匹配结果,则将区块的共识结果为共识失败结果。
其中,结果比对单元131、因素共识单元132、第一结果确定单元133以及第二结果确定单元134的具体实现方式,可以参见上述图2所对应实施例中步骤S102的描述,这里将不再进行赘述。
在一个实施例中,第二节点的数量为至少两个,第二预执行结果的数量为至少两个;
结果比对单元131可以包括:相同结果获取子单元1311、运算子单元1312、数量统计子单元1313、比值确定子单元1314以及比对结果确定子单元1315。
相同结果获取子单元1311,用于根据至少两个第二预执行结果与第一预执行结果组成预执行结果集合,将预执行结果集合中为相同结果的预执行结果,确定为待统计预执行结果;
运算子单元1312,用于统计待统计预执行结果的数量,将待统计预执行结果的数量作为统计数量;
数量统计子单元1313,用于统计第一预执行结果与至少两个第二预执行结果对应的结果总数量;
比值确定子单元1314,用于确定运算数量与结果总数量之间的数量比值;
比对结果确定子单元1315,用于根据数量比值确定第一预执行结果与第二预执行结果之间的比对结果。
其中,相同结果获取子单元1311、运算子单元1312、数量统计子单元1313、比值确定子单元1314以及比对结果确定子单元1315的具体实现方式,可以参见上述图2所对应实施例中步骤S102的描述,这里将不再进行赘述。
在一个实施例中,比对结果确定子单元1315,还具体用于将数量比值与比值阈值进行比较;
比对结果确定子单元1315,还具体用于若数量比值大于比值阈值,则将第一预执行结果与第二预执行结果之间的比对结果,确定为匹配结果;
比对结果确定子单元1315,还具体用于若数量比值小于比值阈值,则将第一预执行结果与第二预执行结果之间的比对结果,确定为不匹配结果。
在一个实施例中,因素共识单元132可以包括:第一因素共识子单元1321、第二因素共识子单元1322、第三因素共识子单元1323以及共识结果确定子单元1324。
第一因素共识子单元1321,用于对主键值进行共识,得到主键值对应的第一因素共识子结果;
第二因素共识子单元1322,用于对外键值进行共识,得到外键值对应的第二因素共识子结果;
第三因素共识子单元1323,用于对数据类型进行共识,得到数据类型对应的第三因素共识子结果;
共识结果确定子单元1324,用于根据第一因素共识子结果、第二因素共识子结果以及第三因素共识子结果,确定主键值、外键值以及数据类型共同对应的因素共识结果。
其中,第一因素共识子单元1321、第二因素共识子单元1322、第三因素共识子单元1323以及共识结果确定子单元1324的具体实现方式,可以参见上述图3所对应实施例中步骤S301-步骤S304的描述,这里将不再进行赘述。
在一个实施例中,数据完整性约束规则包括为主键值所配置的唯一性约束规则;
第一因素共识子单元1321,还具体用于获取主键值所指示的目标实体对象;
第一因素共识子单元1321,还具体用于基于唯一性约束规则,遍历关系型数据库中所包含的已存实体对象集合;
第一因素共识子单元1321,还具体用于若已存实体对象集合中不存在与目标实体对象相同的已存实体对象,则将目标实体对象确定为唯一实体对象,确定主键值对应的第一因素共识子结果为因素共识通过结果;
第一因素共识子单元1321,还具体用于若已存实体对象集合中存在与目标实体对象相同的已存实体对象,则将目标实体对象确定为重复实体对象,确定主键值对应的第一因素共识子结果为因素共识失败结果。
在一个实施例中,数据完整性约束规则包括为外键值所配置的参照有效性约束规则;
第二因素共识子单元1322,还具体用于基于参照有效性约束规则,在结构化查询语言指令中确定外键值所指示的参照对象,以及参照对象所属的对象文件;
第二因素共识子单元1322,还具体用于获取对象文件,对对象文件进行遍历;
第二因素共识子单元1322,还具体用于若对象文件中包含参照对象,则将参照对象确定为有效参照对象,确定外键值对应的第二因素共识子结果为因素共识通过结果;
第二因素共识子单元1322,还具体用于若对象文件中未包含参照对象,则将参照对象确定为无效参照对象,确定外键值对应的第二因素共识子结果为因素共识失败结果。
在一个实施例中,数据完整性约束规则包括关系型数据库所支持的标准数据类型集合;
第三因素共识子单元1323,还具体用于遍历标准数据类型集合;
第三因素共识子单元1323,还具体用于若标准数据类型集合中存在与数据类型相同的标准数据类型,则将数据类型确定为有效数据类型,将数据类型对应的第三因素共识子结果确定为因素共识通过结果;
第三因素共识子单元1323,还具体用于若标准数据类型集合中不存在与数据类型相同的标准数据类型,则将数据类型确定为无效数据类型,将数据类型对应的第三因素共识子结果确定为因素共识失败结果。
在一个实施例中,共识结果确定子单元1324,还具体用于若第一因素共识子结果、第二因素共识子结果以及第三因素共识子结果均为因素共识通过结果,则将主键值、外键值以及数据类型共同对应的因素共识结果确定为共识通过结果;
共识结果确定子单元1324,还具体用于若第一因素共识子结果、第二因素共识子结果以及第三因素共识子结果中存在至少一个因素共识子结果为因素共识失败结果,则将主键值、外键值以及数据类型共同对应的因素共识结果确定为共识失败结果。
在一个实施例中,上链请求携带数字签名;数字签名是由第二节点基于第二节点的私钥对区块进行签名后所得到;
基于区块的数据处理装置1还可以包括:验签模块15、步骤执行模块16以及通信暂停模块17。
验签模块15,用于获取第二节点的公钥,基于公钥对数字签名进行验签;
步骤执行模块16,用于若验签通过,则执行基于上链请求获取区块中的交易数据的第一预执行结果,根据第一预执行结果以及关系数据模型所指示的数据完整性约束规则,对区块进行共识,得到区块的共识结果的步骤;
通信暂停模块17,用于若验签未通过,则将第二节点标记为异常节点,在目标时间段内暂停与异常节点之间的数据通信。
其中,验签模块15、步骤执行模块16以及通信暂停模块17的具体实现方式,可以参见上述图2所对应实施例中步骤S102的描述,这里将不再进行赘述。
本申请实施例中,对于区块链的链上数据,采用关系型数据库来进行存储,而对于关系型数据库,主要通过结构化语言查询指令对其进行访问,那么本申请可以通过结构化查询语言指令来对交易数据进行关系操作。由于关系数据模型可以直观、灵活的存储和访问结构化指令,通过简单的指令即可直观且准确的呈现业务数据之间错综复杂的关联关系,那么通过结构化查询语言指令,即可灵活且准确地对本申请中的交易数据进行关系操作,无需花费过多的人力与时间,即可很好地提升交易数据的关系操作的灵活性与准确性,进而提升数据处理效率与准确率;同时,本申请还可以在区块链共识流程中,加入对关系数据模型的数据完整性约束,即本申请的共识流程,不仅可以基于交易数据的执行结果进行共识,还可以基于数据完整性约束规则进行共识,由此可以确保写入关系型数据库中的数据是符合数据完整性约束规则的,可以进一步提升区块链的健壮性,从而提升写入数据的准确性。综上,本申请可以在区块链业务中,提升业务数据的关系操作的灵活性,进而提升数据处理效率以及准确率,同时可以减少数据处理成本。
进一步地,请参见图7,图7是本申请实施例提供的一种计算机设备的结构示意图。如图7所示,上述图6所对应实施例中的基于区块链的数据处理装置1可以应用于上述计算机设备8000,上述计算机设备8000可以包括:处理器8001,网络接口8004和存储器8005,此外,上述计算机设备8000还包括:用户接口8003,和至少一个通信总线8002。其中,通信总线8002用于实现这些组件之间的连接通信。其中,用户接口8003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口8003还可以包括标准的有线接口、无线接口。网络接口8004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器8005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器8005可选的还可以是至少一个位于远离前述处理器8001的存储装置。如图7所示,作为一种计算机可读存储介质的存储器8005中可以包括操作***、网络通信模块、用户接口模块以及设备控制应用程序。
在图7所示的计算机设备8000中,网络接口8004可提供网络通讯功能;而用户接口8003主要用于为用户提供输入的接口;而处理器8001可以用于调用存储器8005中存储的设备控制应用程序,以实现:
接收第二节点发送的针对区块的上链请求;上链请求用于请求将区块存储到区块链对应的关系型数据库中,关系型数据库是指基于关系数据模型所建立的数据库;
基于上链请求获取区块中的交易数据的第一预执行结果,根据第一预执行结果以及关系数据模型所指示的数据完整性约束规则,对区块进行共识,得到区块的共识结果;第一预执行结果是指第一节点基于交易数据对应的结构化查询语言指令,对交易数据所涉及的交易关联操作进行预执行后所得到的执行结果;结构化查询语言指令是指操作关系型数据库来执行交易关联操作的指令;
在区块的共识结果为共识通过结果时,将区块存储至关系型数据库中。
应当理解,本申请实施例中所描述的计算机设备8000可执行前文图2到图3所对应实施例中对该基于区块链的数据处理方法的描述,也可执行前文图6所对应实施例中对该基于区块链的数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的数据处理的计算机设备8000所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图2到图3所对应实施例中对上述基于区块链的数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例中一方面提供的方法。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (16)
1.一种基于区块链的数据处理方法,其特征在于,包括:
第一节点接收第二节点发送的针对区块的上链请求;所述上链请求用于请求将所述区块存储到区块链对应的关系型数据库中,所述关系型数据库是指基于关系数据模型所建立的数据库;
基于所述上链请求获取所述区块中的交易数据的第一预执行结果,根据所述第一预执行结果以及所述关系数据模型所指示的数据完整性约束规则,对所述区块进行共识,得到所述区块的共识结果;所述第一预执行结果是指所述第一节点基于所述交易数据对应的结构化查询语言指令,对所述交易数据所涉及的交易关联操作进行预执行后所得到的执行结果;所述结构化查询语言指令是指操作所述关系型数据库来执行所述交易关联操作的指令;
在所述区块的共识结果为共识通过结果时,将所述区块存储至所述关系型数据库中。
2.根据权利要求1所述的方法,其特征在于,所述基于所述上链请求获取所述区块中的交易数据的第一预执行结果,包括:
基于所述上链请求创建针对所述区块的初始数据库事务;
在所述初始数据库事务中,执行所述交易关联操作所指示的所述结构化查询语言指令,得到指令执行结果;
将所述指令执行结果确定为所述交易数据的第一预执行结果。
3.根据权利要求1所述的方法,其特征在于,所述将所述区块存储至所述关系型数据库中,包括:
获取与所述区块相关联的目标数据库事务;所述目标数据库事务包含所述交易数据中的所述结构化查询语言指令,以及所述第一预执行结果;
将所述目标数据库事务存储至所述关系型数据库中。
4.根据权利要求1所述的方法,其特征在于,所述上链请求携带第二预执行结果,所述第二预执行结果是指所述第二节点基于所述交易数据中的结构化查询语言指令,对所述交易数据中的交易关系操作进行预执行后所得到的执行结果;
所述根据所述第一预执行结果以及所述关系数据模型所指示的数据完整性约束规则,对所述区块进行共识,得到所述区块的共识结果,包括:
将所述第一预执行结果与所述第二预执行结果进行比对,得到比对结果;
若所述第一预执行结果与所述第二预执行结果之间的比对结果为匹配结果,则基于所述关系数据模型所指示的数据完整性约束规则,获取所述结构化查询语言指令所包含的主键值、所述结构化查询语言指令所包含的外键值,以及所述结构化查询语言指令所对应的数据类型,对所述主键值、所述外键值以及所述数据类型进行共识,得到所述主键值、所述外键值以及所述数据类型共同对应的因素共识结果,将所述因素共识结果确定为所述区块的共识结果;
若所述第一预执行结果与所述第二预执行结果之间的比对结果为不匹配结果,则将所述区块的共识结果为共识失败结果。
5.根据权利要求4所述的方法,其特征在于,所述第二节点的数量为至少两个,所述第二预执行结果的数量为至少两个;
所述将所述第一预执行结果与所述第二预执行结果进行比对,得到比对结果,包括:
根据至少两个第二预执行结果与所述第一预执行结果组成预执行结果集合,将所述预执行结果集合中为相同结果的预执行结果,确定为待统计预执行结果;
统计所述待统计预执行结果的数量,将所述待统计预执行结果的数量作为统计数量;
统计所述第一预执行结果与所述至少两个第二预执行结果对应的结果总数量;
确定所述统计数量与所述结果总数量之间的数量比值,根据所述数量比值确定所述第一预执行结果与所述第二预执行结果之间的所述比对结果。
6.根据权利要求5所述的方法,其特征在于,所述根据所述数量比值确定所述第一预执行结果与所述第二预执行结果之间的所述比对结果,包括:
将所述数量比值与比值阈值进行比较;
若所述数量比值大于所述比值阈值,则将所述第一预执行结果与所述第二预执行结果之间的所述比对结果,确定为匹配结果;
若所述数量比值小于所述比值阈值,则将所述第一预执行结果与所述第二预执行结果之间的所述比对结果,确定为不匹配结果。
7.根据权利要求4所述的方法,其特征在于,所述对所述主键值、所述外键值以及所述数据类型进行共识,得到所述主键值、所述外键值以及所述数据类型共同对应的因素共识结果,包括:
对所述主键值进行共识,得到所述主键值对应的第一因素共识子结果;
对所述外键值进行共识,得到所述外键值对应的第二因素共识子结果;
对所述数据类型进行共识,得到所述数据类型对应的第三因素共识子结果;
根据所述第一因素共识子结果、第二因素共识子结果以及所述第三因素共识子结果,确定所述主键值、所述外键值以及所述数据类型共同对应的因素共识结果。
8.根据权利要求7所述的方法,其特征在于,所述数据完整性约束规则包括为所述主键值所配置的唯一性约束规则;
所述对所述主键值进行共识,得到所述主键值对应的第一因素共识子结果,包括:
获取所述主键值所指示的目标实体对象;
基于所述唯一性约束规则,遍历所述关系型数据库中所包含的已存实体对象集合;
若所述已存实体对象集合中不存在与所述目标实体对象相同的已存实体对象,则将所述目标实体对象确定为唯一实体对象,确定所述主键值对应的第一因素共识子结果为因素共识通过结果;
若所述已存实体对象集合中存在与所述目标实体对象相同的已存实体对象,则将所述目标实体对象确定为重复实体对象,确定所述主键值对应的第一因素共识子结果为因素共识失败结果。
9.根据权利要求7所述的方法,其特征在于,所述数据完整性约束规则包括为所述外键值所配置的参照有效性约束规则;
所述对所述外键值进行共识,得到所述外键值对应的第二因素共识子结果,包括:
基于所述参照有效性约束规则,在所述结构化查询语言指令中确定所述外键值所指示的参照对象,以及所述参照对象所属的对象文件;
获取所述对象文件,对所述对象文件进行遍历;
若所述对象文件中包含所述参照对象,则将所述参照对象确定为有效参照对象,确定所述外键值对应的第二因素共识子结果为因素共识通过结果;
若所述对象文件中未包含所述参照对象,则将所述参照对象确定为无效参照对象,确定所述外键值对应的第二因素共识子结果为因素共识失败结果。
10.根据权利要求7所述的方法,其特征在于,所述数据完整性约束规则包括所述关系型数据库所支持的标准数据类型集合;
所述对所述数据类型进行共识,得到所述数据类型对应的第三因素共识子结果,包括:
遍历所述标准数据类型集合;
若所述标准数据类型集合中存在与所述数据类型相同的标准数据类型,则将所述数据类型确定为有效数据类型,将所述数据类型对应的第三因素共识子结果确定为因素共识通过结果;
若所述标准数据类型集合中不存在与所述数据类型相同的标准数据类型,则将所述数据类型确定为无效数据类型,将所述数据类型对应的第三因素共识子结果确定为因素共识失败结果。
11.根据权利要求7所述的方法,其特征在于,所述根据所述第一因素共识子结果、第二因素共识子结果以及所述第三因素共识子结果,确定所述主键值、所述外键值以及所述数据类型共同对应的因素共识结果,包括:
若所述第一因素共识子结果、所述第二因素共识子结果以及所述第三因素共识子结果均为因素共识通过结果,则将所述主键值、所述外键值以及所述数据类型共同对应的因素共识结果确定为共识通过结果;
若所述第一因素共识子结果、所述第二因素共识子结果以及所述第三因素共识子结果中存在至少一个因素共识子结果为因素共识失败结果,则将所述主键值、所述外键值以及所述数据类型共同对应的因素共识结果确定为共识失败结果。
12.根据权利要求1所述的方法,其特征在于,所述上链请求携带数字签名;所述数字签名是由所述第二节点基于所述第二节点的私钥对所述区块进行签名后所得到;
所述方法还包括:
获取所述第二节点的公钥,基于所述公钥对所述数字签名进行验签;
若验签通过,则执行所述基于所述上链请求获取所述区块中的交易数据的第一预执行结果,根据所述第一预执行结果以及所述关系数据模型所指示的数据完整性约束规则,对所述区块进行共识,得到所述区块的共识结果的步骤;
若验签未通过,则将所述第二节点标记为异常节点,在目标时间段内暂停与所述异常节点之间的数据通信。
13.一种基于区块链的数据处理装置,其特征在于,包括:
请求接收模块,用于接收第二节点发送的针对区块的上链请求;所述上链请求用于请求将所述区块存储到区块链对应的关系型数据库中,所述关系型数据库是指基于关系数据模型所建立的数据库;
执行结果获取模块,用于基于所述上链请求获取所述区块中的交易数据的第一预执行结果;
区块共识模块,用于根据所述第一预执行结果以及所述关系数据模型所指示的数据完整性约束规则,对所述区块进行共识,得到所述区块的共识结果;所述第一预执行结果是指所述第一节点基于所述交易数据对应的结构化查询语言指令,对所述交易数据所涉及的交易关联操作进行预执行后所得到的执行结果;所述结构化查询语言指令是指操作所述关系型数据库来执行所述交易关联操作的指令;
区块存储模块,用于在所述区块的共识结果为共识通过结果时,将所述区块存储至所述关系型数据库中。
14.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供网络通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使所述计算机设备执行权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行权利要求1-12任一项所述的方法。
16.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序存储在计算机可读存储介质中,所述计算机程序适于由处理器读取并执行,以使得具有所述处理器的计算机设备执行权利要求1-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210609432.7A CN115114372A (zh) | 2022-05-31 | 2022-05-31 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210609432.7A CN115114372A (zh) | 2022-05-31 | 2022-05-31 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115114372A true CN115114372A (zh) | 2022-09-27 |
Family
ID=83327028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210609432.7A Pending CN115114372A (zh) | 2022-05-31 | 2022-05-31 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115114372A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116684425A (zh) * | 2023-07-28 | 2023-09-01 | 腾讯科技(深圳)有限公司 | 区块链的数据处理方法、***、装置和计算机设备 |
CN117591303A (zh) * | 2024-01-18 | 2024-02-23 | 腾讯科技(深圳)有限公司 | 基于区块链的业务处理方法、区块链***、介质及设备 |
-
2022
- 2022-05-31 CN CN202210609432.7A patent/CN115114372A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116684425A (zh) * | 2023-07-28 | 2023-09-01 | 腾讯科技(深圳)有限公司 | 区块链的数据处理方法、***、装置和计算机设备 |
CN116684425B (zh) * | 2023-07-28 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 区块链的数据处理方法、***、装置和计算机设备 |
CN117591303A (zh) * | 2024-01-18 | 2024-02-23 | 腾讯科技(深圳)有限公司 | 基于区块链的业务处理方法、区块链***、介质及设备 |
CN117591303B (zh) * | 2024-01-18 | 2024-05-07 | 腾讯科技(深圳)有限公司 | 基于区块链的业务处理方法、区块链***、介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11743137B2 (en) | Systems, methods, and apparatuses for implementing a metadata driven rules engine on blockchain using distributed ledger technology (DLT) | |
US11811769B2 (en) | Systems, methods, and apparatuses for implementing a declarative, metadata driven, cryptographically verifiable multi-network (multi-tenant) shared ledger | |
US11469886B2 (en) | System or method to implement record level access on metadata driven blockchain using shared secrets and consensus on read | |
US11803537B2 (en) | Systems, methods, and apparatuses for implementing an SQL query and filter mechanism for blockchain stored data using distributed ledger technology (DLT) | |
US11899817B2 (en) | Systems, methods, and apparatuses for storing PII information via a metadata driven blockchain using distributed and decentralized storage for sensitive user information | |
US11886421B2 (en) | Systems, methods, and apparatuses for distributing a metadata driven application to customers and non-customers of a host organization using distributed ledger technology (DLT) | |
US11824864B2 (en) | Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (DLT) | |
US11783024B2 (en) | Systems, methods, and apparatuses for protecting consumer data privacy using solid, blockchain and IPFS integration | |
US11824970B2 (en) | Systems, methods, and apparatuses for implementing user access controls in a metadata driven blockchain operating via distributed ledger technology (DLT) using granular access objects and ALFA/XACML visibility rules | |
US11875400B2 (en) | Systems, methods, and apparatuses for dynamically assigning nodes to a group within blockchains based on transaction type and node intelligence using distributed ledger technology (DLT) | |
JP2022529967A (ja) | ブロックチェーン・ネットワークからのデータの抽出 | |
KR20200011435A (ko) | 파라미터화 가능 스마트 계약 | |
US20180183600A1 (en) | Method and system for providing validated, auditable, and immutable inputs to a smart contract | |
CN109417483A (zh) | 用于分区区块链和增强被许可的区块链的隐私的方法和*** | |
CN112840617A (zh) | 存储区块链资源的区块链通知板 | |
US10958420B2 (en) | Method and system for blockchain-implemented project management | |
CN115114372A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
US20230342437A1 (en) | Blockchain-based system and method for publishing an operating system | |
JP2023513848A (ja) | ブロックチェーンに関連するサービスのプラットフォームのための計算サービス | |
US20230334344A1 (en) | Distributed ledger based machine-learning model management | |
CN117057806B (zh) | 基于区块链的数据处理方法、装置及相关设备 | |
CN115062349A (zh) | 数据资产管理***及方法、装置、存储介质及电子设备 | |
CN117121440A (zh) | 统一资源标识符 | |
CN115204870A (zh) | 区块链应用的管理方法、装置、计算机设备和存储介质 | |
CN117335956A (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 |