[发明专利]一种基于SQL数据库的区块链状态存储方法有效
| 申请号: | 201710066745.1 | 申请日: | 2017-02-07 |
| 公开(公告)号: | CN106874440B | 公开(公告)日: | 2019-11-12 |
| 发明(设计)人: | 谢晗剑;岳利鹏 | 申请(专利权)人: | 杭州秘猿科技有限公司 |
| 主分类号: | G06F16/22 | 分类号: | G06F16/22 |
| 代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 邱启旺 |
| 地址: | 310030 浙江省杭州*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 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回滚数据库,重新接收其他的待验证块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州秘猿科技有限公司,未经杭州秘猿科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710066745.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种搜索房产信息的方法及系统
- 下一篇:智能问答方法和装置





