[发明专利]一种基于SQL数据库的区块链状态存储方法有效
申请号: | 201710066745.1 | 申请日: | 2017-02-07 |
公开(公告)号: | CN106874440B | 公开(公告)日: | 2019-11-12 |
发明(设计)人: | 谢晗剑;岳利鹏 | 申请(专利权)人: | 杭州秘猿科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 邱启旺 |
地址: | 310030 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于SQL数据库的区块链状态存储方法,该方法在链初始化时,生成一个数据库,每个合约可以创建若干数据表,并可以对表结构和表数据进行基于SQL语法的增删改查操作,并封装出一些带权限的接口供其他账户调用。节点在每个高度执行交易后生成数据库变更日志(log),并将log作为世界状态进行持续的哈希存证,以保证各节点数据的一致。该方法解决了区块链只能存储简单数据结构的现状,采用广泛使用的数据表结构,支持增删改查操作,甚至跨合约联合查询,丰富了链上智能合约所能表达的功能,同时降低了链外系统的对接难度。 | ||
搜索关键词: | 一种 基于 sql 数据库 区块 状态 存储 方法 | ||
【主权项】:
1.一种基于SQL数据库的区块链状态存储方法,其特征在于,包括以下步骤(1)生成创世块配置文件,在进行基础配置之后,增加对SQL数据库软件选型、软件版本、协议版本、数据库名称、用户名、密码的配置,所述协议版本的配置方式为:(1.1)在现有SQL基础协议上,指定对表、表结构和表数据的SQL语法增删改查操作;(1.2)删除现有SQL协议中会引发分布式系统不一致的功能,如随机数random函数;(1.3)修改现有SQL协议中关于当前时间的实现方式,由从本地系统时间获取改为从所属高度块的时间戳获取,如now、today函数;(2)在创世块中添加基础账户的智能合约模板,确定基础公私钥账户的数据表结构;(3)所有节点根据创世块配置文件进行初始化,按照配置新建一个数据库实例,生成数据库日志log,将数据库日志哈希后做为初始世界状态哈希state_hash;所述节点拥有完全读写权限,同时为节点外系统创建只读权限账户;(4)用户发起部署合约交易,在合约内部创建若干张表,并指定合约内唯一的表名称;出块节点收到用户发起的部署合约交易,若发起的交易是创建账户交易,则读取基础账户合约模板作为合约代码,否则根据用户自定义合约代码部署合约,生成唯一的地址,再处理基础运算并执行SQL语句以进行状态数据存储,最终写入数据库中的表名称为“%address%_%name%”;合约对自己创建的表具有完全的SQL读写权限,对其他合约创建的表只有SQL读权限;(5)用户发起调用合约交易,出块节点收到用户发起的调用合约交易,则直接处理基础运算并执行SQL语句以进行状态数据存储;(6)出块节点在执行完用户交易后,生成该块的数据库变更日志,将父块的state_hash插入log的首行,将该log哈希后作为当前块的state_hash,生成待验证块并广播;(7)验证节点收到待验证块后,执行块内的交易,并对本地数据库进行操作,生成数据库变更日志,做同样的state_hash运算并与待验证块的state_hash对比,如果state_hash一致则该块合法,如果不一致则非法,并根据log回滚数据库,重新接收其他的待验证块。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州秘猿科技有限公司,未经杭州秘猿科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710066745.1/,转载请声明来源钻瓜专利网。
- 上一篇:一种搜索房产信息的方法及系统
- 下一篇:智能问答方法和装置