CN109542926B - 区块处理方法及计算机存储介质 - Google Patents
区块处理方法及计算机存储介质 Download PDFInfo
- Publication number
- CN109542926B CN109542926B CN201811312301.2A CN201811312301A CN109542926B CN 109542926 B CN109542926 B CN 109542926B CN 201811312301 A CN201811312301 A CN 201811312301A CN 109542926 B CN109542926 B CN 109542926B
- Authority
- CN
- China
- Prior art keywords
- block
- block processing
- processing request
- information
- language
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种区块处理方法及计算机存储介质,涉及计算机技术领域。其中,所述区块处理方法包括:接收区块链中的当前节点发起的区块处理请求;对所述区块处理请求进行解析,获取所述区块处理请求中的操作类型信息、操作对象信息和操作内容信息;基于所述操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令;对所述中间语言表示的操作指令执行映射操作,获得所述SQL语言表示的操作指令;基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理。通过本发明实施例,节省了大量的时间,从而大大提高了区块的处理效率。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种区块处理方法及计算机存储介质。
背景技术
区块链是一种利用了分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链分为三类,分别是:公有区块链、联盟区块链(也称联合区块链、行业区块链)、和私有区块链三种。目前市场上主流的区块链系统有比特币、Ripple、以太坊和Hyperledger Fabric。各个区块链系统在进行区块处理时,需要将区块中存储的事物性描述(用户理解的语言表示的操作指令)直接转换为机器能够识别的机器代码,然后基于机器代码进行相应的区块处理。
然而,由于在将事物性描述转换为机器代码的过程中需要花费大量的时间,从而大大降低了区块处理的效率。此外,各个区块链系统的存储技术各不相同,大部分的区块链系统中的存储系统由普通文件和kv数据库组成。普通文件用于存储区块链数据,kv数据库用于存储区块链元数据。每个区块的数据(区块头和区块里的所有交易)都会序列成字节码的形式写入dat文件中。由于每个普通文件的大小是受限制的,当区块数据的大小超过普通文件的大小阈值时,需要分割普通文件,造成普通文件的个数较多,普通文件的管理较复杂,使得区块链系统在进行区块处理时需要花费大量的时间在普通文件中检索待处理的数据,从而进一步地降低了区块处理的效率。
发明内容
有鉴于此,本发明实施例所解决的技术问题之一在于提供一种区块处理方法及计算机存储介质,用以解决上述问题。
本发明实施例提供一种区块处理方法,所述方法包括:接收区块链中的当前节点发起的区块处理请求;对所述区块处理请求进行解析,获取所述区块处理请求中的操作类型信息、操作对象信息和操作内容信息;基于所述操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令;对所述中间语言表示的操作指令执行映射操作,获得所述SQL语言表示的操作指令;基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理。
本发明实施例还提供一种计算机可读介质,所述计算机存储介质存储有可读程序,所述可读程序包括:用于接收区块链中的当前节点发起的区块处理请求的指令;用于对所述区块处理请求进行解析,获取所述区块处理请求中的操作类型信息、操作对象信息和操作内容信息的指令;用于基于所述操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令的指令;用于对所述中间语言表示的操作指令执行映射操作,获得所述SQL语言表示的操作指令的指令;用于基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理的指令。
由以上技术方案可见,本发明实施例提供的区块处理方案中,对区块链中的当前节点发起的区块处理请求进行解析,获取区块处理请求中的操作类型信息、操作对象信息和操作内容信息;基于区块处理请求中的操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令;对中间语言表示的操作指令执行映射操作,获得SQL语言表示的操作指令;基于SQL语言表示的操作指令,执行区块处理请求对应的区块处理,与现有的其它方式相比,不再将区块中存储的事物性描述直接转换为机器能够识别的代码,而是先根据节点发起的区块处理请求中的操作类型信息、操作对象信息和操作内容信息,生成区块存储的与SQL语言具有映射关系的中间语言表示的操作指令,再对中间语言表示的操作指令执行映射操作,获得SQL语言表示的操作指令,再基于SQL语言表示的操作指令,执行区块处理请求对应的区块处理,节省了大量的时间,从而大大提高了区块的处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1示出了根据本发明实施例一的一种区块处理方法的步骤流程图;
图2示出了根据本发明实施例二的一种区块处理方法的步骤流程图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
下面结合本发明实施例附图进一步说明本发明实施例具体实现。
实施例一
参照图1,示出了根据本发明实施例一的一种区块处理方法的步骤流程图。
本实施例提供的区块处理方法应用于联盟区块链、公有区块链和私有区块链,与现有的区块链中的区块数据结构不相同,本实施例的区块链中的节点的区块数据包括区块头、区块体和hash值,所述区块体包括多条操作指令,所述区块头包括所述多条操作指令的hash值、所述多条操作指令构成的Merkle树的根的值、生成当前区块的时间戳、与所述当前区块相邻的前一区块的hash值,所述区块数据包括的hash值是基于所述区块头和所述区块体生成的。其中,所述多条操作指令中的每条操作指令包括操作类型、表名、JSON化内容。基于本实施例的区块链中的节点的区块数据结构的区块处理方法能够大量节省区块处理时间,从而大大提高了区块的处理效率。
具体地,本实施例的区块处理方法包括以下步骤:
在步骤S102中,接收区块链中的当前节点发起的区块处理请求。
在本发明实施例中,所述区块链可包括联盟区块链、公有区块链和私有区块链中的至少一种,所述区块处理请求可包括区块内容数据增加请求、区块内容数据更新请求、新区块生成请求中的至少一种。可以理解的是,以上描述仅为示例性的,本发明实施例对此不做任何限定。
在具体的实施方式中,区块链中的任何节点在需要时,都可以发出区块处理请求,以请求增加或更新区块内容数据,或者生成新区块。该区块处理请求向全网广播,也即,向区块链中的所有节点包括自身节点发送该区块处理请求。
本实施例从区块链中的一个节点的角度,对区块处理方法进行说明,但本领域技术人员应当明了的是,该节点可以为区块链中的任意节点,或者可以说,区块链中的所有节点对区块处理请求的处理都可参照本发明实施例实现。
在一个具体的例子中,当所述区块处理请求具体为新区块生成请求时,所述区块处理请求中携带有待生成的区块的编号和新区块对应的区块内容的信息。每一个新区块都有一个编号,根据该编号可以确定该新区块是否已经生成,其在区块链中的位置及链接关系等,在实际应用中,本领域技术人员可以采用任意适当的、符合区块链规范的编号,能唯一标识区块且可表征其在区块中的位置即可。而对于区块内容的信息,本领域技术人员也可以根据实际需求,采用任意适当的方式实现,如,新区块的区块内容的摘要信息,等等,本发明实施例对此不作限制。
在步骤S104中,对所述区块处理请求进行解析,获取所述区块处理请求中的操作类型信息、操作对象信息和操作内容信息。
在本申请实施例中,所述操作类型信息包括用于指示进行数据增加操作的信息和/或用于指示进行数据更新操作的信息,所述操作对象信息包括数据表的表名、某个用户的比特币存储账户等,例如,学生信息表、学生成绩表、学生学历表,所述操作内容信息可包括数据表的字段和操作参数,例如,数据表的字段可为学生姓名、学生年龄等,所述操作参数可为学生姓名为小红,学生年龄为8岁等,所述操作内容信息还可包括此次操作比特币的数量。可以理解的是,以上描述仅为示例性的,本发明实施例对此不做任何限定。
在一些可选实施例中,在对所述区块处理请求进行解析时,对所述区块处理请求的字段进行解析,获取所述区块处理请求的内容数据;对所述区块处理请求的内容数据进行语义分析处理,获取所述区块处理请求中的操作类型信息、操作对象信息和操作内容信息。可以理解的是,任何对所述区块处理请求进行解析的实施方式均可适用于此,本发明实施例对此不做任何限定。
在步骤S106中,基于所述操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令。
在本发明实施例中,所述与SQL语言具有映射关系的中间语言可为类似SQL语言的语言或者简版的SQL语言。例如,操作指令包括三个主要字段,分别为“操作类型”、“表名”、“JOSN”三个字段,则采用类似SQL语言的语言表示该操作指令的表示实例为:insert/update table json。其中,“insert/update”为可以对应到SQL语言的具体操作指令,table为一个变量,在每一个具体操作中可以具体化为一个具体的表名,json也为一个变量,在每一个具体操作中可以具体化为一个操作过程或操作结果对应的SQL指令和/或语句。可以理解的是,以上描述仅为示例性的,本发明实施例对此不做任何限定。
在一些可选实施例中,在生成与SQL语言具有映射关系的中间语言表示的操作指令时,可对所述操作类型信息、操作对象信息和操作内容信息进行拼接处理,获得与SQL语言具有映射关系的中间语言表示的操作指令。可以理解的是,任何生成与SQL语言具有映射关系的中间语言表示的操作指令的实施方式均可适用于此,本发明实施例对此不做任何限定。
在步骤S108中,对所述中间语言表示的操作指令执行映射操作,获得所述SQL语言表示的操作指令。
在本发明实施例中,基于所述中间语言与所述SQL语言的映射关系,对所述中间语言表示的操作指令进行转换,获取所述SQL语言表示的操作指令。可以理解的是,以上描述仅为示例性的,本发明实施例对此不做任何限定。
在具体的实施方式中,并不是直接根据区块处理请求,生成机器识别的SQL语言表示的操作指令,而是基于区块处理请求中的操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令,再对中间语言表示的操作指令执行映射操作,获得SQL语言表示的操作指令,节省了区块的处理时间,大大提高了区块的处理效率。可以理解的是,以上描述仅为示例性的,本发明实施例对此不做任何限定。
在步骤S110中,基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理。
在一些可选实施例中,在基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理时,判断预存的区块链的表名数据中是否存在所述SQL语言表示的操作指令中的表名;若不存在,则确定所述区块处理请求为非法请求;若存在,则向所述区块链中的所有节点发送针对所述区块处理请求的确认消息;判断所述所有节点对所述确认消息是否达成共识,若是,则执行所述区块处理请求对应的区块处理。籍此,不仅能够确定区块处理请求的合法性,而且还能够保证区块链中节点的区块数据的一致性。可以理解的是,任何基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理的实施方式均可适用于此,本发明实施例对此不做任何限定。
在一个具体的例子中,判断区块链中的sqlite数据库中存储的表名数据中是否存在所述SQL语言表示的操作指令中的表名,若不存在,则确定所述区块处理请求为非法请求;若存在,则向所述区块链中的所有节点发送针对所述区块处理请求的确认消息;判断所述所有节点对所述确认消息是否达成共识。区块链作为一种先进的分布式系统,解决了在不可信信道上传输可信信息的问题。在区块链中,由于点对点网络下存在较高的网络延迟性,使得各个节点所观察到交易事务(本实施例中具体为区块处理)的先后顺序出现一定差异,因此区块链里也需要一套机制,以在一定的时间内对发生事务的先后顺序达成共识,这就是共识机制。共识机制在区块链内起到决定谁负责区块处理以及维护区块链统一的作用,目前的共识机制基于Paxos算法演化而来。Paxos算法是一种基于消息传递模型的一致性算法,其可以保障在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么所有节点最后能得到一个一致的状态。目前区块链的共识机制大致可以分为PoW(工作量证明)、PoS(权益证明)、PBFT(实用拜占庭容错算法)等。在本步骤中,在通过区块链的共识机制确定所有节点对所述确认消息达成了共识后,即可进行区块处理。可以理解的是,以上描述仅为示例性的,本发明实施例对此不做任何限定。
在一些可选实施例中,在基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理时,基于所述SQL语言表示的操作指令,对所述sqlite数据库中存储的与所述SQL语言表示的操作指令中的表名对应的数据表中的内容数据执行增加操作或更新操作。籍此,能够增加或更新数据表中的内容数据。可以理解的是,任何基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理的实施方式均可适用于此,本发明实施例对此不做任何限定。
在一个具体的例子中,区块链底层存储采用的是rocksDB数据库,区块链的节点中的区块里存放的是中间语言表示的操作指令,各个区块链节点可根据区块里的这些中间语言表示的操作指令,进而将区块的内容数据落地存储在sqlite数据库,可在sqlite数据库中直接查询区块的内容数据。由此可见,区块的元数据存储在rocksDB数据库中,并且区块的内容数据存储在关系型数据库sqlite中。可以理解的是,以上描述仅为示例性的,本发明实施例对此不做任何限定。
通过本申请实施例提供的区块处理方法,对区块链中的当前节点发起的区块处理请求进行解析,获取区块处理请求中的操作类型信息、操作对象信息和操作内容信息;基于区块处理请求中的操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令;对中间语言表示的操作指令执行映射操作,获得SQL语言表示的操作指令;基于SQL语言表示的操作指令,执行区块处理请求对应的区块处理,与现有的其它方式相比,不再将区块中存储的事物性描述直接转换为机器能够识别的代码,而是先根据节点发起的区块处理请求中的操作类型信息、操作对象信息和操作内容信息,生成区块存储的与SQL语言具有映射关系的中间语言表示的操作指令,再对中间语言表示的操作指令执行映射操作,获得SQL语言表示的操作指令,再基于SQL语言表示的操作指令,执行区块处理请求对应的区块处理,节省了大量的时间,从而大大提高了区块的处理效率。
本实施例的区块处理方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:摄像头、终端、移动终端、PC机、服务器、车载设备、娱乐设备、广告设备、个人数码助理(PDA)、平板电脑、笔记本电脑、掌上游戏机、智能眼镜、智能手表、可穿戴设备、虚拟显示设备或显示增强设备(如Google Glass、Oculus Rift、Hololens、Gear VR)等。
实施例二
参照图2,示出了根据本发明实施例二的一种区块处理方法的步骤流程图。
本实施例以一个具体实例的形式对本发明实施例提供的区块处理方法进行说明,与实施例一类似,本实施例的区块处理方法也是基于实施例一的区块链中的节点的区块数据结构实现的。此外,实施例一的区块链中的节点的区块数据结构还预留了功能的拓展性,例如,可增加操作的类型和与特定的业务场景相关的表名。
具体地,本实施例的区块处理方法包括以下步骤:
在步骤S202中,接收区块链中的当前节点发起的区块处理请求。
在本申请实施例中,区块链中的某个节点A发起区块处理请求,节点A向全网广播该区块处理请求。而对于区块链中的其它节点,则接收该区块处理请求,以其中的一个节点如节点B为例,节点B与其它节点一样,会接收节点A发起的上述区块处理请求。需要说明的是,上述描述以不同于发出区块处理请求的节点A的其它节点为例,但本领域技术人员应当明了的是,上述节点B可以为区块链中的任意节点,包括节点A自身。可以理解的是,以上描述仅为示例性的,本发明实施例对此不做任何限定。
在步骤S204中,对所述区块处理请求进行解析,获取所述区块处理请求中的操作类型信息、操作对象信息和操作内容信息。
在一些可选实施例中,在对所述区块处理请求进行解析时,对所述区块处理请求中的字段进行解析,获取所述区块处理请求中的操作类型信息、操作对象信息和操作内容信息。其中,所述字段可包括操作类型字段、操作对象字段、操作内容字段。可以理解的是,任何对所述区块处理请求进行解析的实施方式均可适用于此,本发明实施例对此不做任何限定。
在步骤S206中,基于所述操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令。
在一些可选实施例中,在基于所述操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令时,将所述操作类型信息、操作对象信息和操作内容信息分别作为操作指令生成模板中的操作类型、表名、JSON化内容对应的具体实例;基于所述具体实例,生成与SQL语言具有映射关系的中间语言表示的操作指令。其中,所述操作指令生成模板是预先训练得到的。籍此,能够快速地生成与SQL语言具有映射关系的中间语言表示的操作指令,节省了生成中间语言表示的操作指令的时间,从而有利于提高区块的处理效率。可以理解的是,任何基于所述操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令的实施方式均可适用于此,本发明实施例对此不做任何限定。
在步骤S208中,对所述中间语言表示的操作指令执行映射操作,获得所述SQL语言表示的操作指令。
在一些可选实施例中,在对所述中间语言表示的操作指令执行映射操作,获得所述SQL语言表示的操作指令时,根据所述中间语言表示的操作指令中的操作类型对应的具体实例,确定对应的SQL语言模板,其中,所述SQL语言模板中包括有与所述表名对应的变量和与所述JSON化内容对应的变量;根据所述表名对应的具体实例为所述表名对应的变量赋值,根据所述JSON化内容对应的具体实例为所述JSON化内容对应的变量赋值;根据所述SQL语言模板和赋值后的变量,生成所述SQL语言表示的操作指令。籍此,能够精准地对中间语言表示的操作指令执行映射操作,从而获得SQL语言表示的操作指令。此外,利用SQL语言表示的操作指令中的表名能够快速地检索到待处理的数据,从而进一步地提高区块处理的效率。可以理解的是,任何对所述中间语言表示的操作指令执行映射操作,获得所述SQL语言表示的操作指令的实施方式均可适用于此,本发明实施例对此不做任何限定。
在步骤S210中,基于所述SQL语言表示的操作指令,在所述区块链中发起所述区块处理请求的当前节点中生成新区块。
在一些可选实施例中,在所述区块链中发起所述区块处理请求的当前节点中生成新区块时,接收所述区块链中当前节点发起的新区块生成请求,其中,所述新区块生成请求中携带有所请求的新区块的编号和对应的区块内容的信息;对所述新区块的编号进行校验,对校验成功的所述新区块的编号对应的区块内容的信息进行校验,并在校验成功后预生成新区块;再次对所述新区块的编号进行校验,并在校验成功后向所述区块链中的所有节点发送确认消息;判断所述所有节点对所述确认消息是否达成共识,若是,则根据预生成的所述新区块生成发起所述新区块生成请求的节点的新区块。籍此,能够在区块链中发起区块处理请求的当前节点中生成新区块。可以理解的是,任何在所述区块链中发起所述区块处理请求的当前节点中生成新区块的实施方式均可适用于此,本发明实施例对此不做任何限定。
通过本申请实施例提供的区块处理方法,对区块链中的当前节点发起的区块处理请求进行解析,获取区块处理请求中的操作类型信息、操作对象信息和操作内容信息;基于区块处理请求中的操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令;对中间语言表示的操作指令执行映射操作,获得SQL语言表示的操作指令;基于SQL语言表示的操作指令,在区块链中发起区块处理请求的当前节点中生成新区块,与现有的其它方式相比,不再将区块中存储的事物性描述直接转换为机器能够识别的代码,而是先根据节点发起的区块处理请求中的操作类型信息、操作对象信息和操作内容信息,生成区块存储的与SQL语言具有映射关系的中间语言表示的操作指令,再对中间语言表示的操作指令执行映射操作,获得SQL语言表示的操作指令,再基于SQL语言表示的操作指令,在区块链中发起区块处理请求的当前节点中生成新区块,节省了大量的时间,从而大大提高了生成新区块的效率。
本实施例的区块处理方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:摄像头、终端、移动终端、PC机、服务器、车载设备、娱乐设备、广告设备、个人数码助理(PDA)、平板电脑、笔记本电脑、掌上游戏机、智能眼镜、智能手表、可穿戴设备、虚拟显示设备或显示增强设备(如Google Glass、Oculus Rift、Hololens、Gear VR)等。
实施例三
本发明实施例还提供一种计算机可读介质,所述计算机存储介质存储有可读程序,所述可读程序包括:用于接收区块链中的当前节点发起的区块处理请求的指令;用于对所述区块处理请求进行解析,获取所述区块处理请求中的操作类型信息、操作对象信息和操作内容信息的指令;用于基于所述操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令的指令;用于对所述中间语言表示的操作指令执行映射操作,获得所述SQL语言表示的操作指令的指令;用于基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理的指令。
可选地,所述用于基于所述操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令的指令,包括:用于将所述操作类型信息、操作对象信息和操作内容信息分别作为操作指令生成模板中的操作类型、表名、JSON化内容对应的具体实例的指令;用于基于所述具体实例,生成与SQL语言具有映射关系的中间语言表示的操作指令的指令。
可选地,所述用于对所述中间语言表示的操作指令执行映射操作,获得所述SQL语言表示的操作指令的指令,包括:用于根据所述中间语言表示的操作指令中的操作类型对应的具体实例,确定对应的SQL语言模板的指令,其中,所述SQL语言模板中包括有与所述表名对应的变量和与所述JSON化内容对应的变量;用于根据所述表名对应的具体实例为所述表名对应的变量赋值的指令,用于根据所述JSON化内容对应的具体实例为所述JSON化内容对应的变量赋值的指令;用于根据所述SQL语言模板和赋值后的变量,生成所述SQL语言表示的操作指令的指令。
可选地,所述用于基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理的指令,包括:用于判断预存的区块链的表名数据中是否存在所述SQL语言表示的操作指令中的表名的指令;用于若不存在,则确定所述区块处理请求为非法请求的指令;用于若存在,则向所述区块链中的所有节点发送针对所述区块处理请求的确认消息的指令;用于判断所述所有节点对所述确认消息是否达成共识,若是,则执行所述区块处理请求对应的区块处理的指令。
可选地,所述用于基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理的指令,包括:用于基于所述SQL语言表示的操作指令,在所述区块链中发起所述区块处理请求的当前节点中生成新区块的指令。
可选地,所述操作类型信息包括:用于指示进行数据增加操作的信息和/或用于指示进行数据更新操作的信息。
可选地,所述区块链中的当前节点的区块数据包括区块头、区块体和hash值,所述区块体包括多条操作指令,所述区块头包括所述多条操作指令的hash值、所述多条操作指令构成的Merkle树的根的值、生成当前区块的时间戳、与所述当前区块相邻的前一区块的hash值,所述区块数据包括的hash值是基于所述区块头和所述区块体生成的。
可选地,所述多条操作指令中的每条操作指令包括操作类型、表名、JSON化内容。
通过本申请实施例提供的计算机可读介质,对区块链中的当前节点发起的区块处理请求进行解析,获取区块处理请求中的操作类型信息、操作对象信息和操作内容信息;基于区块处理请求中的操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令;对中间语言表示的操作指令执行映射操作,获得SQL语言表示的操作指令;基于SQL语言表示的操作指令,执行区块处理请求对应的区块处理,与现有的其它方式相比,不再将区块中存储的事物性描述直接转换为机器能够识别的代码,而是先根据节点发起的区块处理请求中的操作类型信息、操作对象信息和操作内容信息,生成区块存储的与SQL语言具有映射关系的中间语言表示的操作指令,再对中间语言表示的操作指令执行映射操作,获得SQL语言表示的操作指令,再基于SQL语言表示的操作指令,执行区块处理请求对应的区块处理,节省了大量的时间,从而大大提高了区块的处理效率。
需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。
上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的文件上传方法。此外,当通用计算机访问用于实现在此示出的文件上传方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的文件上传方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。
Claims (8)
1.一种区块处理方法,其特征在于,所述方法包括:
接收区块链中的当前节点发起的区块处理请求;
对所述区块处理请求进行解析,获取所述区块处理请求中的操作类型信息、操作对象信息和操作内容信息;
基于所述操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令;
对所述中间语言表示的操作指令执行映射操作,获得所述SQL语言表示的操作指令;
基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理,
其中,所述基于所述操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令,包括:
将所述操作类型信息、操作对象信息和操作内容信息分别作为操作指令生成模板中的操作类型、表名、JSON化内容对应的具体实例;
基于所述具体实例,生成与SQL语言具有映射关系的中间语言表示的操作指令。
2.根据权利要求1所述的方法,其特征在于,所述对所述中间语言表示的操作指令执行映射操作,获得所述SQL语言表示的操作指令,包括:
根据所述中间语言表示的操作指令中的操作类型对应的具体实例,确定对应的SQL语言模板,其中,所述SQL语言模板中包括有与所述表名对应的变量和与所述JSON化内容对应的变量;
根据所述表名对应的具体实例为所述表名对应的变量赋值,根据所述JSON化内容对应的具体实例为所述JSON化内容对应的变量赋值;
根据所述SQL语言模板和赋值后的变量,生成所述SQL语言表示的操作指令。
3.根据权利要求2所述的方法,其特征在于,所述基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理,包括:
判断预存的区块链的表名数据中是否存在所述SQL语言表示的操作指令中的表名;
若不存在,则确定所述区块处理请求为非法请求;
若存在,则向所述区块链中的所有节点发送针对所述区块处理请求的确认消息;
判断所述所有节点对所述确认消息是否达成共识,若是,则执行所述区块处理请求对应的区块处理。
4.根据权利要求3所述的方法,其特征在于,所述基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理,包括:
基于所述SQL语言表示的操作指令,在所述区块链中发起所述区块处理请求的当前节点中生成新区块。
5.根据权利要求1-4中任意一项权利要求所述的方法,其特征在于,所述操作类型信息包括:用于指示进行数据增加操作的信息和/或用于指示进行数据更新操作的信息。
6.根据权利要求1-4中任意一项权利要求所述的方法,其特征在于,所述区块链中的当前节点的区块数据包括区块头、区块体和hash值,所述区块体包括多条操作指令,所述区块头包括所述多条操作指令的hash值、所述多条操作指令构成的Merkle树的根的值、生成当前区块的时间戳、与所述当前区块相邻的前一区块的hash值,所述区块数据包括的hash值是基于所述区块头和所述区块体生成的。
7.根据权利要求6所述的方法,其特征在于,所述多条操作指令中的每条操作指令包括操作类型、表名、JSON化内容。
8.一种计算机存储介质,其特征在于,所述计算机存储介质存储有可读程序,所述可读程序包括:
用于接收区块链中的当前节点发起的区块处理请求的指令;
用于对所述区块处理请求进行解析,获取所述区块处理请求中的操作类型信息、操作对象信息和操作内容信息的指令;
用于基于所述操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令的指令;
用于对所述中间语言表示的操作指令执行映射操作,获得所述SQL语言表示的操作指令的指令;
用于基于所述SQL语言表示的操作指令,执行所述区块处理请求对应的区块处理的指令,
其中,所述用于基于所述操作类型信息、操作对象信息和操作内容信息,生成与SQL语言具有映射关系的中间语言表示的操作指令的指令,包括:
用于将所述操作类型信息、操作对象信息和操作内容信息分别作为操作指令生成模板中的操作类型、表名、JSON化内容对应的具体实例的指令;
用于基于所述具体实例,生成与SQL语言具有映射关系的中间语言表示的操作指令的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811312301.2A CN109542926B (zh) | 2018-11-06 | 2018-11-06 | 区块处理方法及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811312301.2A CN109542926B (zh) | 2018-11-06 | 2018-11-06 | 区块处理方法及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542926A CN109542926A (zh) | 2019-03-29 |
CN109542926B true CN109542926B (zh) | 2021-04-09 |
Family
ID=65845126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811312301.2A Active CN109542926B (zh) | 2018-11-06 | 2018-11-06 | 区块处理方法及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542926B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200201838A1 (en) * | 2018-12-20 | 2020-06-25 | Sri International | Middleware to automatically verify smart contracts on blockchains |
CN110275916B (zh) * | 2019-05-23 | 2021-01-12 | 创新先进技术有限公司 | 数据操作记录的存储方法、系统、装置及设备 |
US11204933B2 (en) | 2019-05-23 | 2021-12-21 | Advanced New Technologies Co., Ltd. | Data manipulation record storage method, system, apparatus, and device |
US11093495B2 (en) | 2019-06-25 | 2021-08-17 | International Business Machines Corporation | SQL processing engine for blockchain ledger |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104199831A (zh) * | 2014-07-31 | 2014-12-10 | 深圳市腾讯计算机系统有限公司 | 信息处理方法及装置 |
CN106293653A (zh) * | 2015-05-19 | 2017-01-04 | 深圳市腾讯计算机系统有限公司 | 代码处理方法及装置 |
CN106599061A (zh) * | 2016-11-16 | 2017-04-26 | 成都九洲电子信息系统股份有限公司 | 基于SQLite的嵌入式数据库同步方法 |
US20170264428A1 (en) * | 2016-03-08 | 2017-09-14 | Manifold Technology, Inc. | Data storage system with blockchain technology |
CN108460059A (zh) * | 2017-02-22 | 2018-08-28 | 广州市云润大数据服务有限公司 | 基于分布式数据库的数据操作方法、装置及系统 |
CN108647361A (zh) * | 2018-05-21 | 2018-10-12 | 中国工商银行股份有限公司 | 一种基于区块链的数据存储方法、装置及系统 |
-
2018
- 2018-11-06 CN CN201811312301.2A patent/CN109542926B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104199831A (zh) * | 2014-07-31 | 2014-12-10 | 深圳市腾讯计算机系统有限公司 | 信息处理方法及装置 |
CN106293653A (zh) * | 2015-05-19 | 2017-01-04 | 深圳市腾讯计算机系统有限公司 | 代码处理方法及装置 |
US20170264428A1 (en) * | 2016-03-08 | 2017-09-14 | Manifold Technology, Inc. | Data storage system with blockchain technology |
CN106599061A (zh) * | 2016-11-16 | 2017-04-26 | 成都九洲电子信息系统股份有限公司 | 基于SQLite的嵌入式数据库同步方法 |
CN108460059A (zh) * | 2017-02-22 | 2018-08-28 | 广州市云润大数据服务有限公司 | 基于分布式数据库的数据操作方法、装置及系统 |
CN108647361A (zh) * | 2018-05-21 | 2018-10-12 | 中国工商银行股份有限公司 | 一种基于区块链的数据存储方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109542926A (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542926B (zh) | 区块处理方法及计算机存储介质 | |
US11973869B2 (en) | Maintaining blocks of a blockchain in a partitioned blockchain network | |
US11444787B2 (en) | Method and system for efficient distribution of configuration data utilizing permissioned blockchain technology | |
CN108255653B (zh) | 一种产品的测试方法及其终端 | |
CN108683539B (zh) | 区块链网络的管理方法、装置、介质及电子设备 | |
CN109791591B (zh) | 经由区块链进行身份和凭证保护及核实的方法和系统 | |
CN114944932B (zh) | 将区块添加到被许可的区块链的方法和系统 | |
US20200177388A1 (en) | Cross-blockchain resource transmission | |
CN111262726B (zh) | 一种配置信息更新方法、装置及计算机可读存储介质 | |
CN111258599B (zh) | 固件升级方法、系统和计算机可读存储介质 | |
CN109299058B (zh) | 学历存储方法、学历查询方法及计算机存储介质 | |
US10924281B2 (en) | Method and apparatus for inter-blockchain transmission of authenticable message | |
US11977637B2 (en) | Technique for authentication and prerequisite checks for software updates | |
CN109542851A (zh) | 文件更新方法、装置及系统 | |
CN109586949B (zh) | 区块生成方法及计算机存储介质 | |
CN115186304B (zh) | 一种基于区块链的交易数据校验方法和系统 | |
US20170177696A1 (en) | Usage of modeled validations on mobile devices in online and offline scenarios | |
KR20160048806A (ko) | 인증 문서를 자동으로 생성하는 기법 | |
CN104378397A (zh) | 一种程序包增量更新发布的方法与系统 | |
CN111507694A (zh) | 区块链跨链交互方法及系统 | |
CN111523896B (zh) | 防攻击方法、设备和存储介质 | |
CN116501997A (zh) | 短链接生成方法、装置、电子设备及存储介质 | |
CN112559546B (zh) | 数据库同步方法、装置、计算机设备及可读存储介质 | |
CN114398678A (zh) | 电子文件防篡改的登记验证方法、装置、电子设备及介质 | |
CN109684361B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |