一种区块链节点和交易方法与流程

文档序号:36320139发布日期:2023-12-08 18:38阅读:43来源:国知局
一种区块链节点和交易方法与流程

本发明涉及区块链技术,尤其涉及一种区块链的数据库设计。


背景技术:

1、区块链是一种将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。区块链根据去中心化的协议,构建了一个分布式的结构体系,让价值交换的信息通过分布式传播发送给全网,通过分布式记账确定信息数据内容,盖上时间戳后生成区块数据,再通过分布式传播发送给各个节点,实现分布式存储。

2、智能合约是随着区块链技术发展产生的一种新特性,智能合约实质上是交易双方合约的代码化实例,它根据双方合约规定对接收到的信息进行回应,可以接收和存储价值,也可以输出信息和价值,它扮演着一个可被信任的系统,总是按照事先约定的规则执行操作。

3、在现有的区块链方案中,通过kv(key-value,键值)数据库进行存储。kv数据库是一种非关系型数据库,其数据按照键值对的形式进行组织、索引和存储。例如,在比特币系统中,存储系统由普通文件和kv数据库组成。普通文件用于存储区块链数据,kv数据库用于存储区块链元数据。又例如,在hyperledger(超级账本)fabric系统中,账本包括区块账本、状态账本和历史账本三种账本。其中,区块账本记录智能合约的交易记录,保存在文件系统中;状态账本保存智能合约数据的最新状态,保存在kv数据库中;历史账本保存所有智能合约执行交易的历史记录索引,保存在kv数据库中。

4、在智能合约的相关应用场景中,生成的区块数据关系相对更加复杂。对于kv数据库,如果用户要做复杂的查询,例如对没有key的相关操作记录,需要依次读取所有的区块数据,并逐一筛选,查询效率非常低。同时,如果用户需要将现有的sql(structured querylanguage,结构化查询语言)类型的应用,迁移到区块链中,也需要重新开发kv接口的业务代码,学习成本非常高。


技术实现思路

1、本发明实施例提供一种使用rdb((relational database,关系型数据库)数据库的区块链系统,包括交易方法和节点,实现了客户端基于sql命令即可发起交易以及完成查询,并将交易数据以及区块数据存储在rdb数据库中。提高了区块链系统的开发和接入的难度,增强了区块链系统与其他系统之间的兼容性,以及区块链系统的数据查询能力。

2、第一方面,本发明实施例提供了一种区块链方法,该方法由区块链中的一个节点执行,包括:获取获取客户端的交易指令,交易指令包括第一结构化语言sql写入命令,该sql写入命令包含该交易指令对应的交易中所包含的交易数据;根据所述交易指令中的第一sql写入命令,进行模拟交易;并在获取区块数据后,根据所述模拟交易的交易结果对所述区块数据进行校验,并在校验通过后根据区块数据生成第二sql写入命令,并指示所述rdb数据库执行所述第二sql写入命令。通过解析sql写入命令,并进行模拟交易,从而实现了基于sql命令的背书过程,同时,当过去区块数据后,基于交易结果对数据进行校验,并将区块数据转化为sql写入命令写入rdb数据库中,从而将区块数据存储到rdb数据库中。由此,实现了基于sql命令的交易过程,并将记录交易结果的区块数据存储到rdb数据库中。

3、在一些实现方式中,在执行完模拟交易后,节点将模拟交易的交易结果返回给客户端。

4、在另一些实现方式中,节点根据模拟交易的结果,生成区块数据。

5、在一种可能的实现中,在进行模拟交易之前,需要从rdb数据库中获取背书信息。在区块链系统中,根据交易指令进行模拟交易的过程称之为背书过程。在一些背书过程中,除了需要使用交易指令中的信息外,还需要使用其他信息。节点可以根据交易指令,确定用于获取背书信息的第一sql查询命令,并指示关系型rdb数据库执行所述第一sql查询命令;从而获取所述rdb数据库执行所述第一sql查询命令的查询结果,并根据所述交易指令和所述查询结果进行模拟交易。

6、在一种可能的实现中,背书信息中包含用于判断是否执行模拟交易的信息,则在执行模拟交易时,确认确认所述查询结果是否满足第一预设条件,若满足,则根据所述交易指令进行模拟交易;若不满足,则返回不满足预设条件的结果给客户端。

7、在另一种可能的实现中,背书信息中包含了用于模拟交易的信息,节点获取所述rdb数据库执行所述第一sql查询命令的查询结果,并根据所述交易指令和所述查询结果中的信息进行模拟交易。

8、在一种可能的实现中,节点在在根据区块数据生成第二sql写入命令时,根据所述区块数据信息中的kv键值,将所述kv键值转化为所述rdb数据库中对应表项的sql写入命令。

9、在另一些实现中,节点根据所述交易指令,将所述第一sql写入命令转化为kv键值,并对所述kv键值进行校验。

10、在又一写实现中,节点在确定用于获取背书信息的第一sql查询命令时,根据交易指令中的sql写入命令转化为kv键值,并根据所述kv键值,确定用于获取背书信息的第一sql查询命令。

11、在一种实现方式中,模拟交易的交易结果存储在节点的其他存储空间,例如内存、缓存或者其他非rdb数据库中。在另一种实现方式中,模拟交易的而交易结果存储在rdb数据库中。

12、在一种实现方式中,模拟交易可以直接通过对rdb数据库的写操作实现。具体的一种实施方式是,根据所述交易指令,将所述第一sql写入命令转化为kv键值,根据所述kv键值,确定第三sql写入命令,所述第三sql写入命令用于将所述模拟交易的交易结果写入所述rdb数据库,并指示所述rdb数据库执行所述第三sql写入命令。

13、在另一种实现方式中,也可以直接根据所述交易指令中的第一sql写入命令,确定第三sql写入命令,并指示所述rdb数据库执行所述第三sql写入命令。

14、将sql命令转化为kv键值,或者将kv键值转化为sql命令,是根据如下对应关系进行转化的:sql写入命令中的表项所对应的k值,根据所述表项的内容确定所述k值所对应的v值。具体的一种实施方式是,在k值中包含sql命令所要写入的表名,主键键值以及列名,在v值中包含该列名的该主键值下的对应的数据。在一些实现方式中,这类转化通过智能合约来实现。

15、在一些实现方式中,节点还可以获取客户端的查询指令,所述查询指令包括第二sql查询命令;根据所述查询指令,指示所述rdb数据库执行所述第二sql查询命令;获取所述rdb数据库执行所述第二sql查询命令的查询结果。从而提供给客户端查询rdb数据库中的交易信息的功能。

16、在一些实现方式中,节点还可以实现避免双花交易的功能。例如,在一种实现方式中,根据所述交易指令,确定用于获取所述交易指令对应的历史交易信息的第三sql查询命令,并指示所述rdb数据库执行所述第三sql查询命令;获取所述rdb数据库执行所述第三sql查询命令的查询结果,并根据所述第三sql查询命令的查询结果,确认所述交易指令是否为双花交易。

17、在另一种实现方式中,根据所述区块信息,生成用于查询所述区块对应的历史交易信息的第三sql查询命令,并指示所述rd数据库执行所述第三sql查询命令;获取所述rdb数据库执行所述第三sql查询命令的查询结果,并根据所述第三sql查询命令的查询结果,确认所述交易指令是否为双花交易。

18、第二方面,本发明实施例还提供一种区块链系统中的节点装置,该装置包含用于实现前述方法步骤的一个或多个功能单元,当该装置包含多个功能单元时,这些功能单元通常与前述方法步骤一一对应。举例来说,背书模块,用于获取客户端的交易指令,所述交易指令包括第一结构化语言sql写入命令;并根据所述交易指令,进行模拟交易。校验模块,用于获取区块数据,并根据所述模拟交易的交易结果对所述区块数据进行校验。存储模块,用于在所述校验模块校验通过后,根据所述区块数据生成第二sql写入命令,并指示所述rdb数据库执行所述第二sql写入命令。需要说明的是该功能单元可以全部采用软件程序或全部采用硬件或采用软硬件结合实现。

19、第三方面,本发明实施例还提供一种计算机系统,该计算机系统作为区块链系统中的一个节点。该计算机系统包括至少一个处理器和存储器,其中,该存储器用于存储软件程序,当所述软件程序被所述处理器执行时,该计算机系统的处理器用于执行前述第一方面的方法或者任意一个实现方式中的方法。

20、第四方面,本发明实施例还提供一种存储介质,用于存储计算机程序,当所述计算机程序被处理器执行时,所述处理器用于实现第一方面提供的任意一种方法。具体的,所述计算机程序可以包括用于实现方法各个步骤的一个或多个程序单元。

21、可见,本发明实施例提供区块链系统交易方法以及节点,实现了客户端基于sql命令即可发起交易以及完成查询,并将交易数据以及区块数据存储在rdb数据库中。由于sql语言的易用性和使用的广泛性,本发明实施例提高了区块链系统的开发和接入的难度,增强了区块链系统与其他系统之间的兼容性,同时,由于rdb数据库对于数据的查询和分析能力更强,因此本发明实施例也提高了块链系统的数据查询和处理能力。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1