CN110827008B - 一种区块链节点和交易方法 - Google Patents
一种区块链节点和交易方法 Download PDFInfo
- Publication number
- CN110827008B CN110827008B CN201810895962.6A CN201810895962A CN110827008B CN 110827008 B CN110827008 B CN 110827008B CN 201810895962 A CN201810895962 A CN 201810895962A CN 110827008 B CN110827008 B CN 110827008B
- Authority
- CN
- China
- Prior art keywords
- transaction
- sql
- command
- node
- query
- 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.)
- Active
Links
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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
- G06Q20/0658—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed locally
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/10—Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
- G06Q20/102—Bill distribution or payments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种区块链系统的交易方法以及节点设计。客户端通过包含交易数据的SQL写入命令来发起交易或者通过SQL查询命令来进行交易数据的查询,节点通过解析SQL命令,并执行模拟交易,并在获取区块数据后,将区块数据与模拟交易的交易结果进行校验,校验通过后将区块数据转化为用于写入区块数据的SQL写入命令,从而将区块数据写入到RDB数据库。本发明实施例实现了将RDB数据块接入区块链系统,提升了区块链系统的数据查询和处理能力。
Description
技术领域
本发明涉及区块链技术,尤其涉及一种区块链的数据库设计。
背景技术
区块链是一种将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。区块链根据去中心化的协议,构建了一个分布式的结构体系,让价值交换的信息通过分布式传播发送给全网,通过分布式记账确定信息数据内容,盖上时间戳后生成区块数据,再通过分布式传播发送给各个节点,实现分布式存储。
智能合约是随着区块链技术发展产生的一种新特性,智能合约实质上是交易双方合约的代码化实例,它根据双方合约规定对接收到的信息进行回应,可以接收和存储价值,也可以输出信息和价值,它扮演着一个可被信任的系统,总是按照事先约定的规则执行操作。
在现有的区块链方案中,通过KV(Key-value,键值)数据库进行存储。KV数据库是一种非关系型数据库,其数据按照键值对的形式进行组织、索引和存储。普通文件用于存储区块链数据,KV数据库用于存储区块链元数据。又例如,在Hyperledger(超级账本)fabric系统中,账本包括区块账本、状态账本和历史账本三种账本。其中,区块账本记录智能合约的交易记录,保存在文件系统中;状态账本保存智能合约数据的最新状态,保存在KV数据库中;历史账本保存所有智能合约执行交易的历史记录索引,保存在KV数据库中。
在智能合约的相关应用场景中,生成的区块数据关系相对更加复杂。对于KV数据库,如果用户要做复杂的查询,例如对没有Key的相关操作记录,需要依次读取所有的区块数据,并逐一筛选,查询效率非常低。同时,如果用户需要将现有的SQL(Structured QueryLanguage,结构化查询语言)类型的应用,迁移到区块链中,也需要重新开发KV接口的业务代码,学习成本非常高。
发明内容
本发明实施例提供一种使用RDB((Relational Database,关系型数据库)数据库的区块链系统,包括交易方法和节点,实现了客户端基于SQL命令即可发起交易以及完成查询,并将交易数据以及区块数据存储在RDB数据库中。提高了区块链系统的开发和接入的难度,增强了区块链系统与其他系统之间的兼容性,以及区块链系统的数据查询能力。
第一方面,本发明实施例提供了一种区块链方法,该方法由区块链中的一个节点执行,包括:获取获取客户端的交易指令,交易指令包括第一结构化语言SQL写入命令,该SQL写入命令包含该交易指令对应的交易中所包含的交易数据;根据所述交易指令中的第一SQL写入命令,进行模拟交易;并在获取区块数据后,根据所述模拟交易的交易结果对所述区块数据进行校验,并在校验通过后根据区块数据生成第二SQL写入命令,并指示所述RDB数据库执行所述第二SQL写入命令。通过解析SQL写入命令,并进行模拟交易,从而实现了基于SQL命令的背书过程,同时,当过去区块数据后,基于交易结果对数据进行校验,并将区块数据转化为SQL写入命令写入RDB数据库中,从而将区块数据存储到RDB数据库中。由此,实现了基于SQL命令的交易过程,并将记录交易结果的区块数据存储到RDB数据库中。
在一些实现方式中,在执行完模拟交易后,节点将模拟交易的交易结果返回给客户端。
在另一些实现方式中,节点根据模拟交易的结果,生成区块数据。
在一种可能的实现中,在进行模拟交易之前,需要从RDB数据库中获取背书信息。在区块链系统中,根据交易指令进行模拟交易的过程称之为背书过程。在一些背书过程中,除了需要使用交易指令中的信息外,还需要使用其他信息。节点可以根据交易指令,确定用于获取背书信息的第一SQL查询命令,并指示关系型RDB数据库执行所述第一SQL查询命令;从而获取所述RDB数据库执行所述第一SQL查询命令的查询结果,并根据所述交易指令和所述查询结果进行模拟交易。
在一种可能的实现中,背书信息中包含用于判断是否执行模拟交易的信息,则在执行模拟交易时,确认确认所述查询结果是否满足第一预设条件,若满足,则根据所述交易指令进行模拟交易;若不满足,则返回不满足预设条件的结果给客户端。
在另一种可能的实现中,背书信息中包含了用于模拟交易的信息,节点获取所述RDB数据库执行所述第一SQL查询命令的查询结果,并根据所述交易指令和所述查询结果中的信息进行模拟交易。
在一种可能的实现中,节点在在根据区块数据生成第二SQL写入命令时,根据所述区块数据信息中的KV键值,将所述KV键值转化为所述RDB数据库中对应表项的SQL写入命令。
在另一些实现中,节点根据所述交易指令,将所述第一SQL写入命令转化为KV键值,并对所述KV键值进行校验。
在又一写实现中,节点在确定用于获取背书信息的第一SQL查询命令时,根据交易指令中的SQL写入命令转化为KV键值,并根据所述KV键值,确定用于获取背书信息的第一SQL查询命令。
在一种实现方式中,模拟交易的交易结果存储在节点的其他存储空间,例如内存、缓存或者其他非RDB数据库中。在另一种实现方式中,模拟交易的而交易结果存储在RDB数据库中。
在一种实现方式中,模拟交易可以直接通过对RDB数据库的写操作实现。具体的一种实施方式是,根据所述交易指令,将所述第一SQL写入命令转化为KV键值,根据所述KV键值,确定第三SQL写入命令,所述第三SQL写入命令用于将所述模拟交易的交易结果写入所述RDB数据库,并指示所述RDB数据库执行所述第三SQL写入命令。
在另一种实现方式中,也可以直接根据所述交易指令中的第一SQL写入命令,确定第三SQL写入命令,并指示所述RDB数据库执行所述第三SQL写入命令。
将SQL命令转化为KV键值,或者将KV键值转化为SQL命令,是根据如下对应关系进行转化的:SQL写入命令中的表项所对应的K值,根据所述表项的内容确定所述K值所对应的V值。具体的一种实施方式是,在K值中包含SQL命令所要写入的表名,主键键值以及列名,在V值中包含该列名的该主键值下的对应的数据。在一些实现方式中,这类转化通过智能合约来实现。
在一些实现方式中,节点还可以获取客户端的查询指令,所述查询指令包括第二SQL查询命令;根据所述查询指令,指示所述RDB数据库执行所述第二SQL查询命令;获取所述RDB数据库执行所述第二SQL查询命令的查询结果。从而提供给客户端查询RDB数据库中的交易信息的功能。
在一些实现方式中,节点还可以实现避免双花交易的功能。例如,在一种实现方式中,根据所述交易指令,确定用于获取所述交易指令对应的历史交易信息的第三SQL查询命令,并指示所述RDB数据库执行所述第三SQL查询命令;获取所述RDB数据库执行所述第三SQL查询命令的查询结果,并根据所述第三SQL查询命令的查询结果,确认所述交易指令是否为双花交易。
在另一种实现方式中,根据所述区块信息,生成用于查询所述区块对应的历史交易信息的第三SQL查询命令,并指示所述RD数据库执行所述第三SQL查询命令;获取所述RDB数据库执行所述第三SQL查询命令的查询结果,并根据所述第三SQL查询命令的查询结果,确认所述交易指令是否为双花交易。
第二方面,本发明实施例还提供一种区块链系统中的节点装置,该装置包含用于实现前述方法步骤的一个或多个功能单元,当该装置包含多个功能单元时,这些功能单元通常与前述方法步骤一一对应。举例来说,背书模块,用于获取客户端的交易指令,所述交易指令包括第一结构化语言SQL写入命令;并根据所述交易指令,进行模拟交易。校验模块,用于获取区块数据,并根据所述模拟交易的交易结果对所述区块数据进行校验。存储模块,用于在所述校验模块校验通过后,根据所述区块数据生成第二SQL写入命令,并指示所述RDB数据库执行所述第二SQL写入命令。需要说明的是该功能单元可以全部采用软件程序或全部采用硬件或采用软硬件结合实现。
第三方面,本发明实施例还提供一种计算机系统,该计算机系统作为区块链系统中的一个节点。该计算机系统包括至少一个处理器和存储器,其中,该存储器用于存储软件程序,当所述软件程序被所述处理器执行时,该计算机系统的处理器用于执行前述第一方面的方法或者任意一个实现方式中的方法。
第四方面,本发明实施例还提供一种存储介质,用于存储计算机程序,当所述计算机程序被处理器执行时,所述处理器用于实现第一方面提供的任意一种方法。具体的,所述计算机程序可以包括用于实现方法各个步骤的一个或多个程序单元。
可见,本发明实施例提供区块链系统交易方法以及节点,实现了客户端基于SQL命令即可发起交易以及完成查询,并将交易数据以及区块数据存储在RDB数据库中。由于SQL语言的易用性和使用的广泛性,本发明实施例提高了区块链系统的开发和接入的难度,增强了区块链系统与其他系统之间的兼容性,同时,由于RDB数据库对于数据的查询和分析能力更强,因此本发明实施例也提高了块链系统的数据查询和处理能力。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是本发明实施例提供的一种区块链系统的系统架构图;
图2是本发明实施例提供给的一种区块链系统中的节点的逻辑架构图;
图3是本发明实施例提供的一种区块链系统中的交易方法的流程图;
图4是本发明实施例提供的一种在Fabric系统中的交易方法的时序图;
图5是本发明实施例提供的一种在Fabric系统中的查询方法的时序图;
图6是本发明实施例提供的一种区块链系统中的节点的实现的逻辑结构图;
图7是本发明实施例提供的一种区块链系统中的节点的实现的硬件结构图
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。
为了便于对方案的理解,首先介绍的区块链网络架构中的一些概念。
客户端(Client):用户可以通过区块链系统中的客户端实现创建链码,发起交易等功能。客户端可以部署在任意的终端上,通过区块链系统相应的SDK(SoftwareDevelopment Kit,软件开发工具包)实现。该终端通过与区块链网络中的节点进行通信,从而实现客户端相应的功能。
区块(block):在区块链技术中,数据以电子记录的形式被永久储存下来,存放这些电子记录的文件我们就称之为“区块”。区块是按时间顺序一个一个先后生成的,每一个区块记录下它在被创建期间发生的所有价值交换活动,所有区块汇总起来形成一个链式的记录合集。
区块结构(BlockStructure):区块中会记录下区块生成时间段内的交易数据,区块主体实际上就是交易信息的合集。每一种区块链的结构设计可能不完全相同,但大结构上分为块头(header)和块身(body)两部分。块头用于链接到前面的块并且为区块链数据库提供完整性的保证,块身则包含了经过验证的、块创建过程中发生的价值交换的所有记录。
节点(peer):区块链网络中,构建了一个分布式结构的网络系统,让数据库中的所有数据都实时更新并存放于所有参与记录的网络节点中。同时,区块链网络构建一整套协议机制,让全网每一个节点在参与记录的同时也来验证其他节点记录结果的正确性。只有通过协议机制使得符合条件的节点(例如全部节点、大部分节点或者特定的节点)都同时认为这个记录正确时,或者所有参与记录的节点都比对结果一致通过后,记录的真实性才能得到全网认可,记录数据才允许被写入区块中。因此,在区块链网络中,所有节点共同构成了一个去中心化的分布式数据库。
在不同的区块链系统中,节点除了用于存储区块数据外,还存在部分特殊节点。例如背书节点,排序节点。其中,背书节点是执行智能合约状态机,模拟执行交易。背书节点包含预先指定的背书策略集,这些背书的策略集安装了特定的链代码,所有的交易都必须依据背书策略进行交易,因为只有经过背书处理的交易才是合法、被认可的交易。在具体的实现中,背书节点接收到客户端的交易请求后,对执行模拟交易,并根据模拟交易的结果生成背书签名,从而完成对交易的背书。
智能合约(Smart contract):是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约的本质是通过交易行为所触发的计算机代码实现。在不同的区块链系统中,智能合约的实现有所差异。例如,在以太坊系统中,智能合约中的行为由code(代码)来控制,那么智能合约的账户存储合约的状态。在以太坊上核心就是EVM(以太坊虚拟机),合约代码的执行都在EVM中进行。当然每个节点都会有一个EVM,EVM是一个图灵完备的虚拟机。在Fabric系统中,智能合约称为链码(Chaincode),分为系统链码和用户链码。系统链码用来实现系统层面的功能,用户链码实现用户的应用功能。链码被编译成一个独立的应用程序,运行于隔离的Docker容器中。和以太坊相比,Fabric链码和底层账本是分开的,升级链码时并不需要迁移账本数据到新链码当中,真正实现了逻辑与数据的分离,同时,链码采用Go、Java、Nodejs语言编写。
关系数据库(Relational Database,RDB):RDB数据库就是基于关系模型的数据库,也叫关系型数据库。在计算机中,关系数据库是数据和数据库对象的集合。所谓数据库对象是指表、视图、存储过程、触发器等。而管理关系数据库的计算机软件就是关系数据库管理系统(Relational Database Management System,RDBMS)。关系数据库是由数据表和数据表之间的关系组成的。在关系型数据库中,表的关联是一个非常重要的组成部分。表的关联是指数据库中的数据表与数据表之间使用相应的字段实现数据表的连接。
参考图1,是本发明一种实施例的区块链系统架构图。如图所示,本发明实施例的区块链系统架构分为三层,包括协议层、扩展层和应用层,其中,协议层又可以分为存储层和网络层。在不同的具体区块链系统中,三层架构中每层架构的具体实现方式可能存在差异,在本实施例中,仅对区块链系统的基础架构进行介绍。
协议层提供区块链系统的底层能力,维护着网络节点,一般仅提供API供调用。协议层构建了区块链系统的网络环境,并搭建了交易通道,制定了节点奖励机制或者共识机制。从技术上讲,协议层主要包括网络编程、分布式算法、加密签名和数据存储等方面。
从功能和技术上可以进一步将协议层分为网络层和存储层。数据层主要描述区块链数据的存储形式。其中包括了区块数据的链式存储技术,包括时间戳技术、哈希校验技术等;还包含了数据库的实现方式,以及节点调用数据库的接口实现。
网络层的主要目的是实现区块链网络中节点之间的信息交流。区块链网络本质上是一个P2P(点对点)网络。每一个节点既接收信息,也产生信息。节点之间通过维护一个共同的区块链来保持通信。区块链的网络中,节点可以创造新的区块,在新区块被创造后会以广播的形式通知其他节点,其他节点会对这个区块进行验证,当全区块链网络的节点达成共识后,新区块就可以被添加到主链上。
在协议层之上是扩展层,扩展层提供了基于协议层的该区块链系统的功能实现。通过协议层提供的基础能力,扩展层可以实现各类脚本代码、算法机制以及应用机制。例如,智能合约即是拓展层的一种典型应用,节点通过部署的智能合约,实现达到某个条件后自动执行合约。拓展层之上是应用层,封装了区块链的各种应用场景和案例。应用层的实现与用户直接交互的区块链功能,大多采用客户端的形式实现。
在本发明的一些实施例中,在数据层中实现了将RDB数据库作为数据存储的数据库,并适应性的,通过在拓展层中增加用于转化和生成SQL命令的智能合约,从而区块链系统能够实现应用层通过SQL命令发起交易,并最终将区块数据和交易记录保存在RDB数据库中。
参考图2,是本发明一种实施例中一种区块链系统的节点的系统架构图。如图所示,区块链节点是区块链去中心化分布式体统中的一个去中心化节点。区块链节点20和客户端21相连接,处理客户端发起的交易指令,并在区块链系统中执行交易并存储交易结果。在节点中,背书单元201用于完成背书操作。智能合约单元202用于存储和执行智能合约。解析单元203用于解析接收到的交易指令。在一些实现方式中,区块链系统中需要排序节点204,则在具有排序功能的节点中,还包含排序单元,用于接收其他节点发送的带有背书签名的交易,并按照一定顺序打包交易成区块数据。节点还包含非对称加密单元205、数字证书单元206或者数字签名单元207以实现相应的区块链系统功能,以及处理与其他节点进行数据传输的网络单元208以及用于将交易存储到数据库的存储单元209。
在本发明实施例中,节点与RDB数据库22相连接,通过对智能合约、解析单元以及背书单元以及存储单元的的改进,从而时间节点能够直接处理带有SQL命令的交易指令,并将交易信息存储的RDB数据库中。
参考图3是本发明的一个实施例的流程示意图,该实施例应用在图1所示的区块链系统中。该流程方法描述了在本实施例的区块链系统中,一次交易指令如何生成区块数据以及交易数据并保存在数据节点的数据库中。在本实施例中,结合不同的区块链系统,不同的节点角色可能为同一节点所实现,也可能为不同节点所实现。例如,在一些区块链系统中,背书节点和数据节点为同一节点,即同一节点既可以实现背书节点的功能,又可以实现数据节点的功能;又例如,在一些区块链系统中,部分数据节点并不作为背书节点,即这类节点仅具有数据节点的功能而不具备背书节点的功能;又例如,在一些区块链系统中,排序节点与背书节点为同一节点等。
本实施例的方法包括:
S301,客户端向节点发起交易指令。
在一种实现方式中,客户端部署在与节点分离的其他终端上,用户通过客户端进行交易操作后,终端向节点发送交易指令,背书节点通过网络层接收终端发送的交易指令。在另一种实现方式中,客户端部署在节点上,则用户通过客户端进行交易操作后,背书节点可以直接获得该交易操作生成的交易指令。
客户端所生成的交易指令,包含有SQL写入命令,用于指示进行一次交易。在传统区块链系统该中,交易指令一般为业务根据节点提供的API来构建Func()函数实现,由于传统区块链系统中节点采用KV数据库,因此客户端需要根据节点的提供的API,单独的设计相应Func()函数,开发难度较高。在本实施例中,交易指令中包含SQL写入命令,即客户端根据要进行的交易,直接生产对用于存储区块数据的数据库进行操作的SQL写入命令。以下是给出了一种本发明实施例中的交易指令所包含的SQL写入命令的例子:
insert into tablename1(primarykey1,primarykey2,…,colname1,colname2,…)values
(pkv1,pkv2,…,colv1,colv2,…)
在上述SQL命令中,客户端的交易指令指示对存储有交易信息的tablename1表格进行写入,对其表项写入对应的值。
在一些区块链系统中,背书节点接收交易指令后,需要对交易指令进行校验。
在区块链系统中,对交易指令中的KV键值进行校验是指对KV键值的合法性进行校验。例如,在一些实现方式中,需要对K键值的进行校验,确定所述K键值与对应交易的交易历史数据是否冲突;或者,在一些实现方式中,V值进行校验,确定所述V值与历史数据中的数据格式是否冲突。对KV键值的校验在不同的区块链系统的具体实现中有所差异,可以根据本发明实施例在具体的区块链系统的应用来确定实施方式。在本发明实施例中,将交易指令转化为KV键值后再进行校验,可以不改变原有区块链系统中的交易指令校验模块,从而使得本发明实施例可以更简易的应用在不同的区块链系统中。
在一种实现方式中,对交易指令的校验,可以直接根据SQL写入命令进行校验。在这种方式中,通过对SQL写入命令进行解析,以确定所述SQL写入命令是否符合预设的校验条件。
在一种实现方式中,还可以将该交易指令中的SQL写入命令转化为KV键值,并对KV键值进行校验。在这种实现方式中,节点可以采用现有技术中对KV键值的校验方法。
在这种实现方式中,相对于现有技术中的节点校验方法,节点不需要对重构校验模块,仅需要增添一套用于将SQL命令转化为KV键值的模块,在一种实施方式中,可以采用智能合约的方式实现该转化功能。背书节点接收到交易指令后,触发将SQL命令转化为KV键值的智能合约,从而将SQL写入命令转化为KV键值。
在一种实现方式中,在将SQL命令转化为KV键值具体是根据SQL写入命令,确定所述写入命令中的表项所对应的K值,根据所述表项的内容确定所述K值所对应的V值。具体的,在一种实现方式中,在交易信息中声明了主键信息,在K值中包含了表名、主键值以及要写入的列名,在V值中包含了要写入的主键值对应的列的数值,下面给出一个对前述示例的SQL写入命令进行转换的例子:
Key:tablename1 0x00FF pkv10x00FF pkv20x00FF…colname1 0x00FFcolname2…
Value:colv1 0x00FF colv2…
上述KV值中,0x00FF是分隔符,在不同的实施例中可以采用不同的分隔符进行替换。
由于SQL命令转化为KV键值是通过智能合约实现的,而在转化为KV键值后,对KV键值的校验可以采用与现有区块链技术一致的方式。因此,在一些实现方式中,该步骤的实现可以仅通过增加将SQL命令转化为KV键值的智能合约即可实现,而不对背书节点的其他功能架构做出改变。
S302,节点根据交易指令生成用于获取背书信息的SQL查询命令。
节点进行背书操作时,需要进行模拟交易,然后生成签名。在一些实现方式中,在进行模拟交易时,除了交易指令中所包含的交易信息外,还需要获取背书信息。背书信息可以是用于判断所述交易是否满足条件的外部信息;也可以是执行本次交易所需要的相关的交易数据。在另一些实现方式中,节点也可以仅根据交易指令中包含的交易信息执行模拟交易,自这种情况下,S302和S303步骤可以省略。
在一种实现方式中,背书节点直接根据交易指令中的SQL写入命令,确定该次交易所需要的背书信息。
在另一种实现方式中,背书节点通过SQL写入命令所转化为的KV键值,确定该次交易所需要的背书信息。
背书节点根据交易指令,确定该交易对应的背书信息,可以是直接在交易指令的SQL命令中包含对应的写入命令的执行条件,根据该执行条件获取该条件对应的背书信息;也可以通过智能合约编写该交易对应的执行条件或者该交易需要的外部信息的查询功能,通过该交易指令触发智能合约执行以获取该交易对应的背书信息。
在一些实现方式中,根据交易指令生成用于获取背书信息的SQL查询命令通过触发特定的智能合约实现。
S303,节点指示RDB数据库执行所述SQL查询命令,并获取相应的查询结果。
在一些实现方式中,RDB数据库部署在该节点上,则直接调用部署的RDB数据库执行查询命令,获取查询结果;在另一些实现方式中,RDB数据库部署在远端,则发送包含了所述SQL查询命令的指令给RDB数据库,并接收数据库执行所述查询命令后发送的查询结果。
S304,节点根据查询结果,以及交易指令中的交易信息,进行模拟交易。
在区块链系统的背书过程中,模拟交易是指在节点中根据交易信息模拟该交易在区块链系统中执行,并记录交易结果。
在一些实现方式中,背书节点没有进行背书信息的查询,则直接根据交易指令中的交易信息进行模拟交易。例如,在一些仅进行信息写入的交易中,不需要通过背书信息进行交易条件的判断,也不需要根据交易历史信息来确定交易结果,则模拟交易可以直接根据写入信息执行写入操作即可。
在一种实现方式中,当查询结果为判断交易是否满足预设条件的外部信息时,则执行模拟交易时先判断或地区的查询结果是否满足该预设条件,如果满足,则根据交易指令中的交易信息,模拟本次交易。
在一种实现方式中,当查询结果为执行此次模拟交易所需要的数据时,则执行模拟交易时根据交易指令中的交易信息以及查询结果中的数据,模拟本次交易。
执行完模拟交易后,得到模拟交易的结果,模拟交易的结果是指该次交易在区块链系统执行后,对该次交易相关的数据集进行读写后的结果。例如,当交易为一次金融转账类的交易,则模拟交易的结果可能包含了转账双方在本次交易结束后的账户余额情况;又例如,当交易为一次身份存证操作时,则模拟交易的结果可能包含了该次存证操作后数据库的变动情况。可以理解的,模拟交易以及模拟交易的结果在不同的区块链系统以及该系统的不同应用场景中有所不同,可以根据本发明实施例的具体应用场景进行设计和实施。
在一些实现方式中,模拟交易可以通过对数据库执行写操作来完成。在一种具体的实施方式中,背书节点将该交易指令中的交易信息存储到RDB数据库中对应的表项,从而形成该背书节点此次模拟交易的交易结果的记录。在另一种具体的实施方式中,背书节点的交易信息也可以存储到其他数据库或者存储器中,以形成该背书节点此次模拟交易的操作结果的记录。
在一些实现方式中,通过数据库的写入操作来完成交易的模拟交易时,根据交易指令中的SQL写入命令转化为的KV键值来进行写入操作,从而完成模拟交易,具体的,将交易指令中的SQL写入命令转化为对应的KV键值后,再根据KV键值执行模拟交易。在在这种实现方式中,由于模拟交易根据KV键值来确定,因此该模拟交易的执行与现有的区块链系统中节点所执行的模拟交易的方式相一致,当实施本发明实施例的该种实现方式时,可以与现有区块链系统的模拟交易方法更好的衔接。此外,可以使得模拟交易的交易结果的数据格式与根据区块数据中包含的交易信息所执行的交易的结果的数据格式相一致。
S305,节点返回模拟交易的背书结果,区块链系统根据背书结果生成区块数据。
节点完成模拟交易后,区块链系统根据模拟交易的结果生成包含了本次交易的交易信息的区块数据。
在不同的区块链系统中,根据背书结果生成区块数据的过程不同,生成过程中的节点交互流程也不同。本实施例中对如何根据背书结果生成区块数据并不限定。即将本实施例应用在具体的区块链系统中时,参考该区块链系统的区块数据生成流程实现即可。
例如,在一种实现方式中,节点将模拟交易的交易结果以及基于模拟交易结果的签名返回给客户端,客户端搜集到满足条件的背书节点的签名后,向排序节点(Orders)发送包含了了交易内容、交易结果以及签名的交易数据,排序节点接收到的交易数据,对不同交易的交易数据进行排序,并将交易数据按照排序顺序打包成区块数据。将打包后的区块数据广播给其他的节点。
在另一种实现方式中,节点在进行模拟交易之后,与其他节点竞争区块数据打包的权限,通过共识算法确定获得区块数据打包的权限后,该节点将模拟交易的交易数据按照顺序打包成区块数据,并分发给其他节点。
S306,节点获得区块数据,根据区块数据,生成将区块数据写入RDB数据库的SQL写入命令,并指示RDB数据库执行SQL写入命令,将区块数据写入RDB数据库中。如果该节点执行了模拟交易,则在生成SQL写入命令之前,根据模拟交易的交易结果,对区块数据进行校验,当校验通过后,才生成SQL写入命令。
在不同的区块链系统中,数据节点可能和系统中的其他节点角色耦合,因此,数据节点获得的区块数据,可能是该节点本身所生成的,也可能是获取其他节点广播的区块数据。例如,在一些情况下,背书节点即是数据节点,且不存在排序节点,即背书节点完成背书后,可能由该节点生成区块数据,并进行存储,即区块数据可能由该节点自己生成,而不需要从其他节点处获取,或者该数据节点接收其他的数据节点所发送的区块数据。在另一些区块链系统中,区块数据可能由排序节点所生成,则可能该排序节点本身也作为数据节点存储该区块数据,同时,其他数据节点可能是接收该排序节点所发送的区块数据从而获得区块数据。
在一些情况下,一些数据节点并不具有背书功能,即这些节点没有进行模拟交易,则该数据节点在获取到区块数据后,可以直接根据区块数据生成SQL写入命令从而将区块数据存储到RDB数据库中;在另一些情况下,部分数据节点具有背书功能,即该数据节点执行了模拟交易,该节点获取到区块数据后,先将区块数据与模拟交易的交易结果进行校验,之后再根据根据区块数据生成SQL写入命令从而将区块数据存储到RDB数据库中。
节点的RDB数据库中设置有根据区块数据分解成的用于存储区块数据的表。例如,在一种实施方式中,可以将区块头设置为一张表,块身设置为一张表。在一些特定的系统中,还可以设置该系统特定的数据表,例如,在Fabric系统中,可以为区块元数据设置一张表,区块数据的区块头设置一张表,区块数据的块身设置一张表。
在一种实现方式中,节点在存储接收到的区块数据时,可以将区块数据中所包含的KV键值,按照前述的相互转化关系转化为对应表项的SQL写入命令,并指示RDB数据库执行该写入命令,从而将区块数据写入到RDB数据库中。
节点根据模拟交易的交易结果与区块数据中的交易信息进行校验,确定区块数据中记录的交易信息与模拟交易的交易结果的一致性,从而检测区块数据中的交易信息是否发生冲突或者篡改。
在一种实现方式中,节点在S305步骤中进行模拟交易后,将模拟交易的交易结果存储在缓存空间或者其他的非RDB数据库中,节点根据存储的交易结果和区块数据中的交易信息进行校验。
在另一种实现方式中,背书节点在S305步骤中进行模拟交易后,即将模拟交易的交易结果作为中间数据存储到RDB数据库中,并根据存储在RDB数据库中的交易结果与区块数据中的交易信息进行校验。当校验通过后,在生成用于将区块数据写入RDB数据库的写入命令时,在一种实现方式中,可以按照前述方式,将区块数据转化为SQL写入命令,并写入到存储交易的交易信息的表中;或者,模拟交易的交易结果可以按照区块数据在RDB数据库中的存储方式进行存储,并在校验通过后,SQL写入命令可以是指示RDB数据库将存储在用于存储模拟交易的交易信息的表中的模拟交易的交易结果,转存储到用于存储交易的交易信息的表中;或者,可以是指示RDB数据库标记已经存储的模拟交易的交易结果,该标记用于指示该交易结果为已经完成交易的交易结果,从而存储该次交易的交易结果。
在本实施例中,对于RDB数据库的设计可以有多种实现方式,例如,对于一次写入命令,可以将要写入的数据存储在一张表中,也可以存储在多张相关联的表中;对于不同类型数据的写入命令,可以存储在不同的表中,也可以存储在同一张表中。即,本实施例中RDB数据库用于存储交易数据或者区块数据的数据表的设计均是示例性的,在具体的实现中,可以根据具体需要设计不同的表和表项来进行数据存储。此外,用于存储区块数据的RDB数据库,与用于存储交易数据的RDB数据库可以是同一个数据库,也可能是不同的RDB数据库,即在本发明实施例中,仅需要不同的区块链中的节点通过RDB数据库中相互独立的存储空间来存储该节点的数据,但是在具体的实现方式中,多个节点可能共用一个RDB数据库,或者一个节点使用多个不同的RDB数据库。当一个节点使用多个不同的RDB数据库时,本发明实施例在描述中仍然将多个RDB数据库称之为该节点的RDB数据库。该节点可以根据不同的数据类型分别将数据存储到不同的RDB数据库中,例如将交易数据存储到一个RDB数据库,而将区块数据存储到另一个RDB数据库中,在本发明实施例中,将上述数据存储操作均称之为存储到节点的RDB数据库中。也就是说,上述涉及SQL数据写入的方式,以及RDB数据库中用于存储数据的表的设计,可以根据具体的区块链系统以及需要存储的区块链数据进行设计和变化。
在本发明实施例的一些实现方式中,客户端可以通过SQL查询命令对节点进行信息查询。节点接收到客户端所发送的SQL查询命令后,直接指示RDB数据库执行该SQL查询命令,或者基于客户端的SQL查询命令,生成新的SQL查询命令或者将原有客户端的SQL查询命令拆分为多个SQL查询命令,并指示RDB数据库执行,从而得到客户端的查询命令的查询结果。
此外,在本发明实施例中,节点还可以通过一些流程来避免出现双花交易。
在一种实现方式中,背书节点在可以根据交易指令中的信息,对RDB数据库中的交易信息进行查询,从而根据历史交易信息以及交易指令中的信息进行对比,确认是否为双花交易。具体的,可以采用现有了各类避免双花交易的校验方式。
在另一种实现方式中,数据节点可以在获得区块数据后,根据区块数据中的交易信息对RDB数据库中的历史交易信息进行查询,从而根据历史交易信息以及区块数据中的交易信息进行对比,确认是否为双花交易。
在本发明实施例中的一些实现方式中,为了使本发明应用在区块链系统中时,减小对现有区块链的已有架构的改变,可以将本发明实施例中KV键值和SQL命令的相互转换,以及指示RDB数据库进行写入或者查询的步骤,通过智能合约的方式来实现。在这种实现方式中,交易指令中的SQL命令通过智能合约转化为KV键值后,按照区块链系统的原有方式进行校验等步骤,并进行背书,当背书操作中需要获取RDB数据库中的背书信息时,通过智能合约访问RDB数据库以获得相应的背书信息。完成背书后,按照所应用的区块链系统的步骤将返回背书结果,进行共识以及生产区块数据。数据节点接收区块数据后,通过智能合约将区块数据中的KV键值转换为SQL命令,并将区块数据存储到SQL数据库中。
通过本发明实施例,客户端可以通过SQL命令来发起交易指令,区块链节点可以根据交易指令对RDB数据库进行操作,从而将区块数据以及交易结果存储到RDB数据库中。相比于现有技术采用KV数据库存储数据而言,本发明实施例通过采用RDB数据库,简化了客户端发起交易指令的复杂度,提高了区块节点数据库的查询效率。
参考图4,是本发明的又一实施例,该实施例以Fabric系统为例,介绍本发明应用在Fabric系统中的一种实施方式。可以理解的,本实施例是上一实施例在一种区块链系统中的具体实现的示例,上述实施例中的部分实现方式可能并没有在本实施例中实施。对于本领域技术人员而言,可以参考本实施例的示例,得到将上一实施例应用到其他区块链系统的实施方式。
在本实施例中,节点存储有链码(Chaincode)以及Chaincode执行引擎。Chaincode是智能合约在Fabric系统中的一种实现方式。Chaincode包括默认的Chaincode以及用户自定义的Chaincode。默认的Chaincode主要负责完成模拟交易,背书,签名等;用户自定义的Chaincode则由用户基于业务需要来开发,如完成复杂的查询,用户自定义表的构建等。Chaincode执行引擎负责执行Chaincode,从而实现从RDB数据库中查询、更新RDB数据库中的数据。
在本实施例中,每个节点均配置一个RDB数据库,该数据库可以是在该节点上部署,可以是与该节点之外的其他实体上部署,例如部署在该节点所连接的云存储数据库上。不同节点的数据库也可以部署在同一个实体上,例如,多个节点共享一个存储节点,从而该多个节点的数据库都部署在该存储节点上。但是,每个节点均需要连接一个独立的数据库,不同节点之间的数据库是相互独立的。
如表1所示,是本实施例中节点的RDB数据库的示例性的设计。其中,状态账本(World_state)中存储原Fabric系统中world state数据;历史账本(World_state_history)中存储对world state数据的每一次修改记录,区块账本的区块头(block_header)、区块账本的区块数据(block_data)、区块账本的元数据(block_metadata)中共同存储原区块中的数据。
表1
节点中的Chaincode存储并通过Chaincode执行引擎实现如下模块:
BlockRDBStore模块
该模块实现了区块存储的声明的接口,用于管理账本(ledger)中对原始block数据的存储与读取访问,将block中的交易数据解析为存储block_header、block_data、block_metadata的数据结构,并写入RDB的block_header、block_data、block_metadata表。
VersionRDBStore模块
该模块用于将block的数据解析为存储world_state的数据结构,并写入World_state表。
HistoryRDBStore模块
该模块用于将block中的数据解析为存储world_state_history数据结构,写入World_state_history表
上述模块接收区块数据中特定数据格式的key/value键值对,该键值对遵从以下对应关系的格式规则:
key=0x00+table name+0x00+value of primary key 1+0x00+value ofprimary key 2+0x00……
value=value of non key column 1+0x00+value of non key column 2+0x00+……+0x10ffff+0x00
上述对应关系中0x00为分隔符,在具体实现中可以用其他格式的分隔符进行替换。
结合图4,基于上述的节点以及RDB数据库设计,在本实施例中,客户端可以通过发送SQL命令来实现交易的发起,具体如下:
S4001,客户端SDK发起交易,向背书节点(Endorser)包含了SQL写入命令的交易指令(proposal)。
该背书请求包含SQL语言中的insert命令。例如,发起一次余额变动的交易,则该交易指令可以为:insert into account(name,balance)values(David,100)。
S4002,背书节点接收客户端发送的交易指令,由背书节点交易中的方法参数,调用链码(Chaincode)的invoke()方法,触发链码引擎中的sql解析方法,。
S4003,链码引擎对SQL进行解析,根据交易指令中的交易信息以及链码的内容,向数据库发送查询指令查询背书信息。
S4004,链码引擎将SQL转化为KV数据,生成特定数据格式的KV键值对。例如,前述列举的交易指令insert into account(name,balance)values(David,100)通过改格式规则转化,可以得到key:account0x00David0x00balance,value:100。
S4005,背书节点根据转化成的KV数据,对KV键值进行校验,并进行模拟交易。
S4006,背书节点将模拟交易结果返回到链码引擎。
S4007,背书节点调用链码引擎的stub.PutState(),对模拟交易的交易结果进行校验并模拟提交。
S4008,背书节点向客户端返回模拟提交的结果。
S4009,客户端搜集到足够的背书后,向orderer节点提交transaction。
S4010,orderer节点在对交易进行全局排序后,将组合形成的区块数据广播至committer数据节点;
S4011,committer节点在对block进行验证后,调用ledger的RDB相关实例化对象对该block进行处理。
S4012,ledger,由操作RDB存储流程的对象,发起对block数据的解析,形成基于RDB存储结构的数据,及操作数据的sql语句。调用连接RDBM的connector,连接数据库,将解析后的数据入库,并返回操作结果。
此外,若committer节点本身也作为背书节点,则在获取到该block后,根据根据模拟交易的交易结果与该block中的区块信息进行校验,确认区块信息与模拟交易的交易结果一致。
具体的,Fabric系统的ledger模块负责将接收的block数据存储至某指定的数据库中。在本发明中,ledger根据配置文件中数据库类型的选项,形成基于rdb存储结构的对象实例,将block数据进行解析,并存储至关系型数据库中(以mysql为例),具体流程如下:
在ledger的初始化时,选择基于支持RDB结构的provider模块进行的实例化,生成用于处理RDB结构的ledger对象;
对接收到的block数据进行解析,并生成符合RDB存储结构的存储数据。具体为:由statedb模块,将数据解析为versionDB和Business relation结构,对应数据库World_state、Business relation schema存储单元,并生成存储数据的sql语句;由blkstorage模块,将数据分解为header、data、metadata结构,对应数据库中的block_header、block_data、block_metadata存储单元,并生成存储数据的sql语句;由historydb模块,将数据解析为HistoryDB和Business relation history结构,对应数据库world_state_history、Business relation history schema存储单元,并生成存储数据的sql语句。
通过ledger对象,调用数据库连接器connector,执行在步骤二中生成的sql语句,将符合RDB存储结构的存储数据,存入RDB数据库中。
参考图5,在本实施例中,客户端还可以通过SQL命令来对区块数据进行查询,具体如下:
S501,由客户端clientSDK发起交易的背书请求,该交易请求中包含SQL查询query命令,提交至背书节点endorser;
S502,由endorser根据交易中的方法参数,调用链码中的queryBySql()方法,触发链码引擎中的访问RDB数据库的方法,
S503,链码引擎对RDB数据库进行查询访问。
S504,链码引擎将访问的sql及结果的哈希值,写入读集合;
S505,endorser将查询访问的结果写入结果集payload,并返回至客户端。
结合上述实施例,在本发明的又一实施例,可以将本发明应用在其他的区块链系统中。例如,以太坊(Ethereum)系统中,客户端发起交易请求后并将交易请求进行广播。在区块链系统中的节点接收到交易请求,并模拟执行该交易,具体的,调用智能合约,触发sql解析方法,生成特定数据格式的KV键值,并将KV键值放入txpool,以存储模拟交易结果。除了上述列举的现有区块链系统外,随着技术发展出现的其他区块链架构,也可以结合本发明实施例将RDB数据库应用在这些架构中,而不脱离本发明的保护范围。
上述详细阐述了本发明实施例的方法,下面提供了本发明实施例的装置。
请参见图6,图6是本发明实施例提供的一种区块链节点的结构示意图,该节点可以包括多个逻辑单元,各个逻辑单元执行相应的功能。逻辑单元是根据功能和信息的交互进行划分的,可以理解的,各个逻辑单元可以通过软件实现,也可以通过硬件实现,可以通过不同的硬件分别实现,也可以通过共同的硬件实现。此外,逻辑单元的划分也可以根据不同的具体实施方式进行调整,在本实施例中的划分方式仅仅是示例性的。在本实施例中,各个单元的详细描述如下。
背书模块601,该模块用于实现节点的背书功能。具体的,该模块获取客户端的包含SQL写入命令的交易指令,并根据交易指令中的交易信息进行模拟交易。
背书模块的具体功能实现,可以参考前述实施例中的S302、S303和S304步骤。
在一些实现方式中,背书模块根据所述交易指令确定用于获取背书信息的第一SQL查询命令,并指示关系型RDB数据库执行所述第一SQL查询命令;以及,获取所述RDB数据库执行所述第一SQL查询命令的查询结果,并根据所述交易指令和所述查询结果,进行模拟交易。
在一些实现方式中,背书模块判断SQL查询命令查询的背书信息是否满足预设条件,如果满足,则根据交易指令的交易信息执行模拟交易。
在另一些实现方式中,背书模块在执行模拟交易时,需要同时根据SQL查询命令查询的背书信息以及交易指令中的交易信息共同执行模拟交易。
在一些实现方式中,背书模块通过生成SQL写入命令的方式,将模拟交易的交易结果写入RDB数据库,从而完成背书操作。在一种具体的实施方式中,背书模块通过交易指令中的SQL写入命令生成模拟交易的交易结果的SQL写入命令。在另一种具体的实施方式中,背书模块通过后述的转化模块所得到的KV键值,生成模拟交易的交易结果的SQL写入命令。
校验模块602,用于获取区块数据,并根据所述模拟交易的交易结果对所述区块数据进行校验。
在一些实现方式中校验模块还用于获取客户端的交易指令,通过所述转化模块将所述第一SQL写入命令转化为KV键值,并对所述KV键值进行校验。
校验步骤可以参考前述实施例中的S301和S306步骤中的描述。
存储模块603,用于在所述校验模块校验通过后,根据区块数据生成第二SQL写入命令,并指示所述RDB数据库执行所述第二SQL写入命令。
在一些实现方式中,存储模块通过执行转化模块将接收到的区块数据转化成的SQL写入命令,从而将区块数据写入RDB数据库中。在一种具体的实现方式中,存储模块获取区块数据信息,并根据所述区块数据信息中的KV键值,通过所述转化模块将所述KV键值转化为所述RDB数据库中对应表项的写入命令,并指示所述RDB数据库执行所述第三SQL写入命令。
存储模块的具体功能实现,可以参考前述实施例中的S306步骤。
在一些实现方式中,该节点还包括转化模块604,用于将结构化语言SQL命令转化为KV键值,或者用于将KV键值转化成SQL命令。具体的,在一些实现方式中,该模块可以在背书模块需要根据KV键值生成查询背书信息的查询信息或者根据KV键值生成写入模拟交易的交易结果的SQL写入命令时,将交易指令中的SQL写入命令转化为KV键值。在另一些实现方式中,该模块也可以在接收到区块数据后,将包含有KV键值的区块数据转化为SQL写入命令以区块数据存储到RDB数据库中。
转换模块的功能可以通过部署在节点中的智能合约实现。转化模块的具体实现可以参考前述实施例中S302、S304中的描述。
在一些实现方式中,该节点还包括查询模块605,从而提供客户端通过SQL查询命令来对存储的区块数据或者其他数据进行查询。查询模块用于获取客户端的包括SQL查询命令的查询指令;查询模块根据所述查询指令,指示所述RDB数据库执行所述第二SQL查询命令,并获取所述RDB数据库执行SQL查询命令的查询结果。查询模块在指示所述RDB数据库执行SQL查询命令时,可以直接将SQL查询命令发送给RDB数据库执行,也可以根据客户端的SQL查询命令新的查询命令并指示RDB数据库执行。
在一些实现方式中,该节点还包括双花校验模块606,所述模块用于进行防止双花交易产生的校验。在一种实现方式中,双花校验模块可以根据交易指令进行校验。具体的,根据所述交易指令,确定用于获取所述交易指令对应的历史交易信息的第三SQL查询命令,并指示所述RDB数据库执行所述第三SQL查询命令;获取所述RDB数据库执行所述第三SQL查询命令的查询结果,并根据所述第三SQL查询命令的查询结果,确认所述交易指令是否为双花交易。在另一种实现方式中,双花校验模块还可以根据区块信息进行校验,具体的,根据所述区块信息,确定用于查询所述区块对应的历史交易信息的第三SQL查询命令,并指示所述RD数据库执行所述第三SQL查询命令;获取所述RDB数据库执行所述第三SQL查询命令的查询结果,并根据所述第三SQL查询命令的查询结果,确认所述交易指令是否为双花交易。
实施例中所示例的是一种区块链系统节点在实现本发明技术效果时的功能模块设计示例,具体的,可以基于不同的区块链系统实现。即本实施例中的各个功能模块,可以在不同的系统架构中通过软件模块或者硬件模块,或者软硬结合的方式实现。例如,参考图2中所示例的区块链节点系统架构下,本发明中的背书模块、转换模块和校验模块、查询模块以及双花校验模块以都可以通过智能合约单元中所部属的智能合约实现,也可以通过在节点中增加相应的系统功能单元来实现。存储模块可以通过存储单元实现,而与其他节点的交互可以通过P2P网络单元实现。而本发明实施例中的节点在具体的区块链系统中的具体实现,可以参考前述方法实施例所列举的Fabric系统或者以太坊系统中的具体实现方式而得到,即本发明实施例的节点在各类具体的区块链系统中的实现并不脱离本发明实施例的范围。
通过本发明实施例所述的区块链节点,可以实现与该区块链系统的客户端直接通过SQL语言就能发起交易或者查询交易信息,简化了客户端开发的难度。同时,区块链节点使用RDB数据库,提升了节点数据库的查询能力,使得采用这类区块链节点的系统对于复杂的交易数据能够有更强的查询和管理能力。
随着技术的发展,设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,一个方法流程也可以用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(FieldProgrammable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera HardwareDescription Language)、Confluence、CUPL(Cornell University ProgrammingLanguage)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
上述实施例阐明模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。在现有的区块链系统中,对节点的计算能力和网络通信能力有一定的要求,因此一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、服务器、膝上型计算机等。但是,随着技术的发展,硬件设备的计算能力和通信能力会不断增强。因此,可以预见的,在将来的技术实现中,各类具备计算能力和通信能力的硬件设备均可以作为区块链系统中的节点设备。例如蜂窝电话、智能电话、个人数字助理、媒体播放器、车载电脑、物联网设备、导航设备、游戏设备、平板计算机、可穿戴设备或者这些设备中的任何设备的组合均可以作为区块链系统中的一个节点设备。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,如图7所示,是本发明实施例提供的一种节点设备70,该设备70包括处理器701、存储器702和收发器703,所述处理器701、存储器702和收发器703通过总线相互连接。
存储器702包括但不限于是随机存储记忆体(英文:Random Access Memory,简称:RAM)、只读存储器(英文:Read-Only Memory,简称:ROM)、可擦除可编程只读存储器(英文:Erasable Programmable Read Only Memory,简称:EPROM)、或便携式只读存储器(英文:Compact Disc Read-Only Memory,简称:CD-ROM),该存储器702用于相关指令及数据。收发器703用于与其他节点设备或者与客户端接收和发送数据。
处理器701可以是一个或多个中央处理器(英文:Central Processing Unit,简称:CPU),在处理器701是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
该设备70中的处理器701用于读取所述存储器702中存储的程序代码,以执行前述方法实施例中的方法步骤,或者实现前述节点实施例的各个功能模块。因此,本实施例的节点设备各个操作的实现可以对应参照图3、图4、图5、图6所示的方法实施例或者节点实施例的相应描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
Claims (26)
1.一种区块链交易方法,其特征在于,所述方法包括:
获取客户端的交易指令,所述交易指令包括第一SQL写入命令;
根据所述第一SQL写入命令,进行模拟交易;
获取区块数据,根据所述模拟交易的交易结果对所述区块数据进行校验,并在校验通过后根据所述区块数据生成第二SQL写入命令,并指示关系型数据库执行所述第二SQL写入命令。
2.根据权利要求1所述方法,其特征在于,所述根据所述第一SQL写入命令,进行模拟交易包括:
根据交易指令,确定用于获取背书信息的第一SQL查询命令,并指示关系型数据库执行所述第一SQL查询命令;
获取所述关系型数据库执行所述第一SQL查询命令后获取的所述背书信息,并根据所述第一SQL写入命令和所述背书信息进行模拟交易。
3.根据所述权利要求2所述方法,其特征在于,所述根据所述第一SQL写入命令和所述背书信息,进行模拟交易包括:
确认所述背书信息是否满足第一预设条件,若满足,则根据所述第一SQL写入命令进行模拟交易。
4.根据所述权利要求2所述方法,其特征在于,所述背书信息中包含所述交易指令对应的交易所需的信息,
所述根据所述第一SQL写入命令和所述背书信息,进行模拟交易包括:
根据所述交易所需的信息以及所述第一SQL写入命令,进行模拟交易。
5.根据权利要求1至4任意一项所述方法,其特征在于,所述根据所述区块数据生成第二SQL写入命令包括:
获取所述区块数据中的KV键值,并将所述KV键值转化为所述关系型数据库中对应表项的SQL写入命令。
6.根据所述权利要求1至4中任一所述方法,其特征在于,所述方法还包括:
根据所述交易指令,将所述第一SQL写入命令转化为KV键值,并对所述KV键值进行校验,校验结果用于指示是否进行所述模拟交易。
7.根据权利要求6所述方法,其特征在于,所述根据所述交易指令,将所述第一SQL写入命令转化为KV键值具体包括:
根据所述第一SQL写入命令,确定所述写入命令指示的表项所对应的K值,根据所述表项的内容确定所述K值所对应的V值。
8.根据权利要求2至4中任一所述方法,其特征在于,所述根据所述交易指令,确定用于获取背书信息的第一SQL查询命令包括:
根据所述交易指令,将所述第一SQL写入命令转化为KV键值,并根据所述KV键值,确定用于获取背书信息的第一SQL查询命令。
9.根据权利要求1所述的方法,其特征在于,所述根据所述第一SQL写入命令,进行模拟交易包括:
根据所述第一SQL写入命令,将所述第一SQL写入命令转化为KV键值,根据所述KV键值,确定第三SQL写入命令,所述第三SQL写入命令用于将所述模拟交易的交易结果写入所述关系型数据库;
指示所述关系型数据库执行所述第三SQL写入命令。
10.根据权利要求5所述的方法,其特征在于,所述将所述KV键值转化为所述关系型数据库中对应表项的SQL写入命令通过智能合约实现。
11.根据权利要求1所述方法,其特征在于,所述根据所述第一SQL写入命令,进行模拟交易包括:
根据所述第一SQL写入命令,确定第三SQL写入命令,所述第三SQL写入命令用于将所述模拟交易的交易结果写入所述关系型数据库;
指示所述关系型数据库执行所述第三SQL写入命令。
12.根据所述权利要求1至4中任一所述方法,其特征在于,所述方法还包括:
获取客户端的查询指令,所述查询指令包括第二SQL查询命令;
根据所述查询指令,指示所述关系型数据库执行所述第二SQL查询命令;
获取所述关系型数据库执行所述第二SQL查询命令的查询结果。
13.一种区块链节点,其特征在于,所述节点包括:
背书模块,用于获取客户端的交易指令,所述交易指令包括第一SQL写入命令;并根据所述第一SQL写入命令,进行模拟交易;
校验模块,用于获取区块数据,并根据所述模拟交易的交易结果对所述区块数据进行校验;
存储模块,用于在所述校验模块校验通过后,根据所述区块数据生成第二SQL写入命令,并指示关系型数据库执行所述第二SQL写入命令。
14.根据权利要求13所述节点,其特征在于,所述背书模块根据所第一SQL写入命令,进行模拟交易具体包括:
根据所述交易指令确定用于获取背书信息的第一SQL查询命令,并指示关系型数据库执行所述第一SQL查询命令;以及,获取所述关系型数据库执行所述第一SQL查询命令后获取的所述背书信息,并根据所述第一SQL查询命令和所述背书信息,进行模拟交易。
15.根据权利要求14所述节点,其特征在于,所述背书模块根据所述第一SQL查询命令和所述背书信息,进行模拟交易包括:
确认所述背书信息是否满足第一预设条件,若满足,则根据所述第一SQL查询命令进行模拟交易。
16.根据权利要求14所述节点,其特征在于,所述背书信息中包含所述交易指令对应的交易所需的信息,
所述背书模块根据所述交易指令和所述查询结果,进行模拟交易包括:
根据所述交易所需的信息以及所述第一SQL写入命令,进行模拟交易。
17.根据权利要求13至16中任一所述节点,其特征在于,所述节点还包括:
转化模块,用于将结构化语言SQL命令转化为KV键值,或者用于将KV键值转化成SQL命令;
所述存储模块根据所述区块数据生成第二SQL写入命令具体包括:
获取所述区块数据中的KV键值,通过所述转化模块将所述KV键值转化为所述关系型数据库中对应表项的SQL写入命令。
18.根据权利要求17所述节点,其特征在于,所述转化模块用于将结构化语言SQL命令转化为KV键值时,具体包括:
根据所述SQL写入命令,确定所述写入命令中的表项所对应的K值,根据所述表项的内容确定所述K值所对应的V值;
所述转化模块用于将KV键值转化成SQL命令时,具体包括:
根据所述KV键值,确定所述K值对应的关系型数据库的表项,根据所述K值对应的V值确定所述表项中的内容。
19.根据权利要求17所述节点,其特征在于,
所述校验模块还用于,获取客户端的交易指令,通过所述转化模块将所述第一SQL写入命令转化为KV键值,并对所述KV键值进行校验,校验结果用于指示是否进行所述模拟交易。
20.根据权利要求17所述节点,其特征在于,所述背书模块根据所述交易指令确定用于获取背书信息的第一SQL查询命令具体包括:
所述背书模块通过所述转化模块将所述第一SQL写入命令转化为KV键值,根据所述KV键值确定用于获取背书信息的第一SQL查询命令。
21.根据权利要求17所述节点,其特征在于,所述背书模块进行模拟交易具体包括:
所述背书模块通过所述转化模块将所述第一SQL写入命令转化为KV键值,根据所述KV键值,确定第三SQL写入命令,所述第三SQL写入命令用于将所述模拟交易的交易结果写入所述关系型数据库;以及,指示所述关系型数据库执行所述第三SQL写入命令。
22.根据权利要求13至16中任一所述节点,其特征在于,所述背书模块进行模拟交易具体包括:
根据所述交易指令中的第一SQL写入命令,确定第三SQL写入命令,所述第三SQL写入命令用于将所述模拟交易的交易结果写入所述关系型数据库;以及,指示所述关系型数据库执行所述第三SQL写入命令。
23.根据权利要求13至16中任一所述节点,其特征在于,所述节点还包括:
查询模块,用于获取客户端的查询指令,所述查询指令包括第二SQL查询命令;根据所述查询指令,指示所述关系型数据库执行所述第二SQL查询命令;以及,获取所述关系型数据库执行所述第二SQL查询命令的查询结果。
24.根据权利要求17所述的节点,其特征在于,所述转化模块的功能通过执行智能合约实现。
25.一种区块链节点,其特征在于,所述区块链节点包括处理器和存储器,
所述存储器存储有可执行程序指令;
所述处理器读取所述存储器中的所述可执行程序指令以执行权利要求1-12中任意一个权利要求所述方法。
26.一种区块链系统,所述区块链系统包括所述权利要求13-24中任意一个权利要求所述的节点。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310948495.XA CN117171274A (zh) | 2018-08-08 | 2018-08-08 | 一种区块链节点和交易方法 |
CN201810895962.6A CN110827008B (zh) | 2018-08-08 | 2018-08-08 | 一种区块链节点和交易方法 |
EP19846494.3A EP3798861A4 (en) | 2018-08-08 | 2019-07-31 | BLOCKCHAIN NODES AND TRANSACTION PROCEDURES |
PCT/CN2019/098607 WO2020029844A1 (zh) | 2018-08-08 | 2019-07-31 | 一种区块链节点和交易方法 |
US17/166,718 US11847135B2 (en) | 2018-08-08 | 2021-02-03 | Blockchain node and transaction method |
US18/501,225 US20240061861A1 (en) | 2018-08-08 | 2023-11-03 | Blockchain Node and Transaction Method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810895962.6A CN110827008B (zh) | 2018-08-08 | 2018-08-08 | 一种区块链节点和交易方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310948495.XA Division CN117171274A (zh) | 2018-08-08 | 2018-08-08 | 一种区块链节点和交易方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110827008A CN110827008A (zh) | 2020-02-21 |
CN110827008B true CN110827008B (zh) | 2023-07-18 |
Family
ID=69415329
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810895962.6A Active CN110827008B (zh) | 2018-08-08 | 2018-08-08 | 一种区块链节点和交易方法 |
CN202310948495.XA Pending CN117171274A (zh) | 2018-08-08 | 2018-08-08 | 一种区块链节点和交易方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310948495.XA Pending CN117171274A (zh) | 2018-08-08 | 2018-08-08 | 一种区块链节点和交易方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11847135B2 (zh) |
EP (1) | EP3798861A4 (zh) |
CN (2) | CN110827008B (zh) |
WO (1) | WO2020029844A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200226678A1 (en) * | 2019-01-11 | 2020-07-16 | Walmart Apollo, Llc | Systems and Methods for Cryptographically Verifiable Ledgers with Predictive Outcome Generation |
US11792022B2 (en) * | 2020-02-21 | 2023-10-17 | International Business Machines Corporation | Resolution of conflicting data |
CN111680067A (zh) * | 2020-05-28 | 2020-09-18 | 中国工商银行股份有限公司 | 基于区块链的数据处理方法、装置及系统 |
CN111832069B (zh) * | 2020-06-05 | 2023-08-29 | 广东科学技术职业学院 | 基于云计算的多区块链的链上数据存储系统及方法 |
KR102460432B1 (ko) * | 2020-06-30 | 2022-10-27 | 주식회사 트러스트디비 | Rdbms 기반의 분산원장 관리 시스템 및 방법 |
CN112131266B (zh) * | 2020-08-12 | 2023-06-13 | 迅鳐成都科技有限公司 | 一种支持区块链复杂查询的方法、装置、系统及存储介质 |
CN114372051A (zh) * | 2020-10-16 | 2022-04-19 | 华为技术有限公司 | 一种数据处理系统、基于区块链的数据处理方法及设备 |
CN112711592B (zh) * | 2020-12-31 | 2022-06-28 | 中国科学院计算技术研究所数字经济产业研究院 | 基于区块链的数据索引方法 |
CN113379542B (zh) * | 2021-05-28 | 2024-01-09 | 中邮信息科技(北京)有限公司 | 一种区块链交易的查询方法、装置、介质及电子设备 |
CN113327167B (zh) * | 2021-06-24 | 2024-03-22 | 深圳前海微众银行股份有限公司 | 一种区块链数据处理方法 |
CN113449037B (zh) * | 2021-06-29 | 2024-04-12 | 云之富(上海)数据服务有限公司 | 基于ai的sql引擎调用方法、装置、设备及介质 |
CN113328920B (zh) * | 2021-08-04 | 2021-10-29 | 成都飞机工业(集团)有限责任公司 | 一种对设备数据的采集与存储方法 |
CN114095272B (zh) * | 2021-11-30 | 2023-10-31 | 昆明电力交易中心有限责任公司 | 基于内外网安全架构的内网数据上链方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874440A (zh) * | 2017-02-07 | 2017-06-20 | 杭州秘猿科技有限公司 | 一种基于sql数据库的区块链状态存储方法 |
CN107103054A (zh) * | 2017-04-12 | 2017-08-29 | 北京航空航天大学 | 一种私有区块链的智能合约异步执行存储系统与实现方法 |
CN107180350A (zh) * | 2017-03-31 | 2017-09-19 | 唐晓领 | 一种基于区块链的多方共享交易元数据的方法、装置及系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9535948B1 (en) * | 2013-12-16 | 2017-01-03 | Amazon Technologies, Inc. | Data access statement translation |
US20160098723A1 (en) * | 2014-10-01 | 2016-04-07 | The Filing Cabinet, LLC | System and method for block-chain verification of goods |
US10348484B2 (en) * | 2016-10-24 | 2019-07-09 | Mastercard International Incorporated | Method and system for fast tracking navigation of blockchains via data manipulation |
CN107391649A (zh) * | 2017-07-14 | 2017-11-24 | 浙商银行股份有限公司 | 一种提升区块链查询效率的系统及方法 |
US10877962B2 (en) * | 2017-08-11 | 2020-12-29 | International Business Machines Corporation | Deferred update of database hashcode in blockchain |
WO2019178300A1 (en) * | 2018-03-13 | 2019-09-19 | Blockpoint Systems Inc. | Relational blockchain database |
KR102288045B1 (ko) * | 2018-05-21 | 2021-08-10 | 성신여자대학교 연구 산학협력단 | 블록 체인 기반 대상 데이터 관리 방법 및 장치 |
US11169985B2 (en) * | 2018-07-27 | 2021-11-09 | Oracle International Corporation | System and method for supporting SQL-based rich queries in hyperledger fabric blockchains |
-
2018
- 2018-08-08 CN CN201810895962.6A patent/CN110827008B/zh active Active
- 2018-08-08 CN CN202310948495.XA patent/CN117171274A/zh active Pending
-
2019
- 2019-07-31 WO PCT/CN2019/098607 patent/WO2020029844A1/zh active Application Filing
- 2019-07-31 EP EP19846494.3A patent/EP3798861A4/en active Pending
-
2021
- 2021-02-03 US US17/166,718 patent/US11847135B2/en active Active
-
2023
- 2023-11-03 US US18/501,225 patent/US20240061861A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874440A (zh) * | 2017-02-07 | 2017-06-20 | 杭州秘猿科技有限公司 | 一种基于sql数据库的区块链状态存储方法 |
CN107180350A (zh) * | 2017-03-31 | 2017-09-19 | 唐晓领 | 一种基于区块链的多方共享交易元数据的方法、装置及系统 |
CN107103054A (zh) * | 2017-04-12 | 2017-08-29 | 北京航空航天大学 | 一种私有区块链的智能合约异步执行存储系统与实现方法 |
Non-Patent Citations (1)
Title |
---|
Performance and Scalability of Blockchain Networks and Smart Contracts,URL:https://www.diva-portal.org/smash/get/diva2:1111497/FULLTEXT01.pdf;Mattias Scherer;《UMEA》;20170131;第1-46页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117171274A (zh) | 2023-12-05 |
US11847135B2 (en) | 2023-12-19 |
CN110827008A (zh) | 2020-02-21 |
EP3798861A4 (en) | 2021-08-25 |
EP3798861A1 (en) | 2021-03-31 |
US20240061861A1 (en) | 2024-02-22 |
WO2020029844A1 (zh) | 2020-02-13 |
US20210157823A1 (en) | 2021-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110827008B (zh) | 一种区块链节点和交易方法 | |
US11314754B2 (en) | Data processing method, apparatus, and device | |
CN108647361B (zh) | 一种基于区块链的数据存储方法、装置及系统 | |
Kleppmann | Designing data-intensive applications: The big ideas behind reliable, scalable, and maintainable systems | |
CN110874739B (zh) | 实现高完整性、高带宽、低延迟、安全处理的分布式计算和存储网络 | |
CN109857755A (zh) | 一种规则校验方法及装置 | |
WO2020108289A1 (zh) | 一种数据库系统、节点和方法 | |
Li et al. | An integration approach of hybrid databases based on SQL in cloud computing environment | |
CN111241589A (zh) | 一种数据库系统、节点和方法 | |
Xu et al. | ZQL: a unified middleware bridging both relational and NoSQL databases | |
CN111241590A (zh) | 一种数据库系统、节点和方法 | |
US20220300503A1 (en) | Querying distributed databases | |
US20230205761A1 (en) | Method of creating a distributed ledger for a blockchain via encapsulation of off-chain data | |
CN104508656B (zh) | 在分布式计算系统中的自动化文档复制 | |
CN115292415A (zh) | 一种数据库访问方法及装置 | |
US11727022B2 (en) | Generating a global delta in distributed databases | |
CN114817402A (zh) | 分布式数据库于多region部署场景下的SQL执行优化方法 | |
CN111444194B (zh) | 一种块链式账本中索引的清除方法、装置及设备 | |
US11036762B1 (en) | Compound partition and clustering keys | |
WO2020108288A1 (zh) | 一种数据库系统、节点和方法 | |
Singh | A blockchain-based decentralized application for user-driven contribution to Open Government Data | |
CN111324434B (zh) | 计算任务的配置方法、装置及执行系统 | |
Gomes et al. | An object mapping for the Cassandra distributed database | |
CN116049280A (zh) | 将区块数据映射成结构化数据的方法和装置 | |
Penuela et al. | DELTA: A Modular, Transparent and Efficient Synchronization of DLTs and Databases |
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 |