一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于RPCA共识机制的数据库查询日志信息上链的方法与流程

2021-10-20 00:26:00 来源:中国专利 TAG:
一种基于rpca共识机制的数据库查询日志信息上链的方法
技术领域
:1.本发明涉及区块链
技术领域
:,特别涉及基于rpca共识机制的数据库查询日志信息上链的方法。
背景技术
::2.区块链技术蓬勃发展,目前已经进入到第三代区块链技术发展阶段。区块链技术从金融阶段进入多行业发展阶段。而在此过程中,产生了许多新的需求,同时也呼唤新的解决方法。在医疗场景下,通过链上链下日志存储患者信息已经是普遍认同的一种方法,这种方法将传统数据库的日志放进了区块链网络中,在提高原有系统的不可篡改性、可审计性和开放性的同时,不需要对医院原有的数据做出太大的改动。3.从需求角度看,由于金融场景所限,已有区块链网络并不存在查询日志上链的需求。查询,即查询本地账本信息,由于网络内每个节点的副本都是相同的,且所有交易记录均公开,即每个账户都可以查询到其他所有账户的交易信息。但在医疗场景下,患者的信息是极其敏感的,需要有完整的访问记录,所以将查询日志放入区块链十分有必要。4.从技术角度看,已有的区块链系统对于交易事务(transaction,以下简称事务)的增加、删除、修改,都已经记录在区块链上。而插入、删除、修改属于将数据写入区块链网络的操作,仅仅需要少量信息即可,如成功与否、数据库受影响条数等。而查询不同,属于从区块链网络中读取数据,同时也需要将数据(查询条件等)写入区块链中。但是目前所见区块链网络均为查询本节点的区块链账本,而并没有将任何查询日志信息放进区块链日志的功能。5.瑞波(ripple)是世界上第一个开放的支付网络,瑞波区块链网络是一个经过验证的优秀的金融区块链网络,其所使用的共识机制rpca(rippleconsensusalgorithm)是pbft(实用拜占庭容错算法)之外,一个低延迟的共识机制。在医疗场景下的区块链网络中,rpca相比于pbft具有更大的灵活性。基于rpca共识协议,我们提出一种数据查询日志信息上链的具体方法以解决目前出现的问题。技术实现要素:6.鉴于现有技术中的上述缺陷或不足,本发明提供一种基于rpca共识协议的数据库查询日志上链的方法。该方法对于rpca协议机制下的区块链网络进行了流程上的创新改造,使其能够实现查询日志上链。7.为了实现数据查询同时将日志上链的功能,需要定义新的命令、事务类型和相关处理类。在本场景下,区块链中存储的不是患者的数据,而是传统数据库的日志,此处将区块链日志数据库和患者数据库分别称为dlog与ddata。8.本发明首先定义了新的事务类型,用于处理查询日志上链的操作;其次定义了兼容链上和链下数据库的访问类,用于检查查询语句的有效性;最后,通过先共识再查询的方式,将查询日志存放在区块链网络上,同时返回查询到的实际数据。9.进一步地,所述方法的具体步骤如下:10.step1、在瑞波网络中定义新的事务类型,用于处理新类型事务;具体的,定义事务类型recordquerylog,用于处理查询日志上链;11.step2、定义事务转换为sql语句查询的处理类,此处命名为tx2sqlop,用于兼容读写访问数据库dlog与数据库ddata;定义方法将事务解析为数据库操作;定义方法对查询条件进行校验;12.step3、定义(远程过程调用)rpc服务命令r_get_on_chain,是一种能用于在数据查询的同时将日志上链的客户端操作;在rpc命令列表中添加r_get_on_chain命令,添加命令指向的处理方法dogetrecordonchain;13.step4、利用r_get_on_chain命令的处理方法dogetrecordonchain处理数据查询,且在处理数据查询的同时将数据库查询日志信息存储到区链中。14.进一步地,所述step1的具体步骤如下:15.step1.1、定义处理“起飞准备”的方法,检查事务中是否提供相关字段,包括数据拥有者,要操作的数据库表,查询条件;填充事务序列号以及前一账本序列号;16.step1.2、定义处理“声明准备”的方法,检查账户名是否合法,数据库表名是否合法;17.step1.3、定义处理“应用事务”的方法,为事务产生hash,用于后续的事务唯一标志;调用当前打开账本,更新相关状态;18.step1.4、定义调用step2的处理类,进行数据库ddata的尝试性sql语句执行,得到执行成功与否的结果。19.进一步地,所述step4的具体步骤如下:20.step4.1、校验调用者身份;医疗场景下,对权限需要严格控制,患者仅能查询自己的记录,而只有经过授权的医生才能查询相应患者的记录;这一步需要确保发送者的账户和密钥是否有权限查询所要求的记录;21.step4.2、根据step1的事务,验证查询日志信息通过后,提交事务到rpca共识机制中进行共识处理,该事务中除正常的事务元信息外,还包括了查询日志的序列化信息,该信息将发送到共识网络中,等待达成共识;在共识成功后,事务会存储到区块链数据库,进行下一步;否则跳到step4.6;22.step4.3、反序列化上链事务,提取其中的事务内容信息;此处定义了事务类型recordquerylog的查询条件信息;23.step4.4、解析查询日志信息,并将其组织为查询sql语句,调用全局的数据库连接并查询数据;24.step4.5、查询得到结果,将结果整理为适合rpc网络发送的格式;25.step4.6、添加返回结果的hash校验,组织rpc的返回结果;如果查询到了数据,则返回相应数据;否则返回错误信息和错误类型。26.本发明的有益效果是:27.本发明首先定义新的事务类型,用于处理查询日志上链的操作;其次定义可以兼容链上和链下数据库的访问类来检查查询语句有效性;最后,通过先共识再查询的方式,将查询日志存放在区块链网络上,同时返回查询到的实际数据。通过本发明提出的方法,可以将经过共识的患者数据库查询日志保存入区块链,为传统数据库的不可篡改性、审计性和开放性提供了更加坚实的保障。附图说明28.通过阅读参照以下附图所作的详细描述,本技术的其它特征、目的和优点将会变得更明显:29.图1为本发明瑞波区块链网络节点服务处理rpc请求的过程;30.图2为本发明查询日志上链处理方法dogetrecordonchain的流程图;31.图3为本发明tx2sqlop对查询上链信息的检查过程;32.图4为本发明示例查询的rpc请求;33.图5为本发明示例查询的rpc响应。具体实施方式34.实施例1:如图1‑3所示,一种基于rpca共识机制的数据库查询日志信息上链的方法,首先定义了新的事务类型,用于处理查询日志上链的操作;其次定义了兼容链上和链下数据库的访问类,用于检查查询语句的有效性;最后,通过先共识再查询的方式,将查询日志存放在区块链网络上,同时返回查询到的实际数据。35.进一步地,所述方法的具体步骤如下:36.step1、在瑞波网络中定义新的事务类型,用于处理新类型事务;具体的,定义事务类型recordquerylog,用于处理查询日志上链;37.step1.1、定义处理“起飞准备”的方法,检查事务中是否提供相关字段,包括数据拥有者,要操作的数据库表,查询条件;填充事务序列号以及前一账本序列号;38.step1.2、定义处理“声明准备”的方法,检查账户名是否合法,数据库表名是否合法;39.step1.3、定义处理“应用事务”的方法,为事务产生hash,用于后续的事务唯一标志;调用当前打开账本,更新相关状态;40.step1.4、定义调用step2的处理类,进行数据库ddata的尝试性sql语句执行,得到执行成功与否的结果。41.step2、定义事务转换为sql语句查询的处理类,此处命名为tx2sqlop,用于兼容读写访问数据库dlog与数据库ddata;定义方法将事务解析为数据库操作;定义方法对查询条件进行校验;42.step3、定义(远程过程调用)rpc服务命令r_get_on_chain,是一种能用于在数据查询的同时将日志上链的客户端操作;在rpc命令列表中添加r_get_on_chain命令,添加命令指向的处理方法dogetrecordonchain;43.step4、利用r_get_on_chain命令的处理方法dogetrecordonchain处理数据查询,且在处理数据查询的同时将数据库查询日志信息存储到区链中。44.step4.1、校验调用者身份;医疗场景下,对权限需要严格控制,患者仅能查询自己的记录,而只有经过授权的医生才能查询相应患者的记录;这一步需要确保发送者的账户和密钥是否有权限查询所要求的记录;45.step4.2、根据step1的事务,验证查询日志信息通过后,提交事务到rpca共识机制中进行共识处理,该事务中除正常的事务元信息外,还包括了查询日志的序列化信息,该信息将发送到共识网络中,等待达成共识;在共识成功后,事务会存储到区块链数据库,进行下一步;否则跳到step4.6;46.step4.3、反序列化上链事务,提取其中的事务内容信息;此处定义了事务类型recordquerylog的查询条件信息;47.step4.4、解析查询日志信息,并将其组织为查询sql语句,调用全局的数据库连接并查询数据;48.step4.5、查询得到结果,将结果整理为适合rpc网络发送的格式;49.step4.6、添加返回结果的hash校验,组织rpc的返回结果;如果查询到了数据,则返回相应数据;否则返回错误信息和错误类型。50.按照上述步骤定义之后,可以通过客户端调用r_get_on_chain命令,并传入相关参数来进行查询。图4和图5给出了一个成功的查询示例,该示例使用postman软件通过rpc方式调用对区块链网络进行访问。图4为发出的rpc请求,图5为得到的rpc返回结果。51.图4中可以看到调用方法为r_get_on_chain,传入参数包括参与共识offline,账户私钥secret,事务内容tx_json。事务内容中包括事务类型recordquerylog,发送rpc请求者账户account,数据权限所属账户owner,查询表tables,查询条件raw。该请求对表名为table_test2的表进行查询,条件为id=1orname=”alice”,通过json格式描述。图5中可见得到了正确的结果,包含表示校验diff的0,代表校验通过;表示查询到的符合条件的数据lines,代表数据数组;表示rpc通信状态status的success,代表成功;表示本次上链交易序列号的tx_hash,代表上链事务的hash序列号,该序列号可以使用原有的tx命令查看交易的详细内容。52.上面结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜