关系型数据库操作太过复杂,希望可以模仿Hyledger Fabric使用非关系新数据库作为状态数据库
使用技术:spring,springboot,websocket,springmvc,mybatis,sqlite,levelDB,
实现分布式存诸,联盟角色共同维护一个数据库
区块中包含指令,指令是对数据库操作称为HXSQL(对sql语句的封装)
解析并执行HXQL
HXQL对象(执行操作,操作对象,操作类容)
存在问题:HXQL并不能完全解析成sql,只能转化成对应的ORM操作
pbft 算法
所有角色=3f+1(f为最大容错率)
采用两个本地轻量级数据库分别存储,区块链和共同维护的数据库
-
levelDB(键值对存储)
存储区块信息,以及最后一个区块的hash
-
sqlite(关系型数据库)//应用层数据区
- 角色 (公钥(id),权限列表,状态,内容) 权限 商品(hash,描述(content),) 交易
创建NodeSeedServer(节点种子服务器) 节点注册,监听节点变化,通知各节点,实现P2P(端对端,节点与每个节点建立websocket长连接实现网状模型)网络
执行流程:
节点携带局域网IP 连接种子服务器(websocket长连接),服务器记录IP
种子服务器响应当前所有几点给连接节点
连接节点与服务器返回的所有节点相连(与自身也相连)
监听服务器几点变化
TODO(未做):
客户端下线重连
- 生产
- 检验
- 出厂 --> 出现分支(商品与批次分离)
- 销售
- 运输
- 使用 ##用户查询商品交易信息(流程)
区块链就是将区块链起来保存在sqlite数据库中 通过公钥(数字身份证书)连接服务器获取权限信息 1.注册当前节点ip(方便广播) 广播有新节点加入
各节点运行 -- 创世块内容绝对可信 有以下几个角色
- CA(颁发证书)
在创世块中注册ca,建初始化表
CA权限,对 role 新增 (颁发数字身份证书),修改
角色注册,填写信息(申请证书->与ca产生交易记录区块指令中)
- 厂家 发布产品(新增数据)-> output 商品ID 厂家送检测 -> 与检查机构产生一次交易
- 检测机构 (产生检测信息)
- 商家 以上是节点
- 用户