对于物联网感知所得到的数据信息,将其存储在将编码技术共识机制相结合的改进区块链上,研究

  1. 解决传统存储方式带来的存储花销问题
  2. 同时解决编码后存储区块链带来的解码通讯信息量过大的问题。

研究方向

  1. 需要存储什么
  2. 传统存储方案
  3. 区块链共识机制中怎么减少存储/通信信息

灵感

编码层面

签名聚合

基于 [[../../论文/区块链/以患者为中心的细粒度访问控制,通过双区块链安全共享电子病历]]

医生对某一病历签名,医院收集全部病历后验证签名,随后加上医院的签名
此后上载到MED链的信息不再存储医生的签名

医院签名就相当于担保了全部医生的签名,因此无需存储医生的签名了。

在签名时采取逐层签名,保留上层聚合签名,去除下层签名的机制
签名聚合

  • 最底层:楼宇的某一层对本楼的信息收集后附带上本楼层的签名
  • 中间层:某个单元收集本单元全部楼层后可以附带上本单元的签名,同时舍去各个楼层的签名
  • 上层:小区收集本校区全部单元楼的消息后,附带上本小区的签名,同时舍去各个单元的签名

拓展思路:最底层仅对应的单元楼存储,其他单元楼不存储(只存储他的哈希值用于校验)
精简区块体

分片存储

[[../../论文/区块链/基于编码的许可链|基于编码的许可链]]

  • 联盟链上的信息分散到楼栋存储
  • 进行两级分片编码
    • 一级编码解决了委员会内部的恶意结点问题
    • 二级编码解决了各个园区内部私有链中恶意结点的问题
    • 两级编码将整个园区的巨量信息分散到每个楼宇存储。
    • 签名可以使用刚刚的聚合签名,只需要验证园区签名即可

解决分片的查询效率

  • 💡因为是并行的,所以效率一般不会太低。而且其他非委员会节点处理的事务并不多。
    • 缓存机制
      • 缓存整个一级编码
      • “局部性原理“:一段时间内会访问,那么下一次也会访问
      • 如何控制缓存大小,操作系统调页算法(最近最久未使用、clock)
    • 二级分片进行最优化管理
      • 分片数量少——单个节点存储量多;分片数量多——通信过程大
      • 找到一个最优化的方案
        • 如果分片数量>某个园区的存储数量,那么主节点预存额外的几个编码,只需额外收集到一个楼宇信息即可完成解码
    • 主节点多存两三个分片,那么需要收到其他的节点的分片数量就少了。
    • 主节点辛苦一点,存储完整的一级编码,如果主节点叛变,可以通过附属楼宇用二级编码来解决
      • 主节点存储的压力仍然不小
      • 不要求一级编码可以满足拜占庭,这样分片数量可以尽量精简一些,只需要二级编码满足拜占庭即可。

每个楼层只需存储他的区块头

共识层面

委员会/分园区共识

基础设想

具体的共识算法参考[[../../论文/区块链/基于编码的许可链|基于编码的许可链]]的分组编码的联盟链设计
在原始论文中,通知其他结点需要存储的信息由主节点承担
可以改进为由“每个委员会”负责。
即我们对非委员会结点也进行了分组

园区为一个组织,如小红、小绿、小紫三个公司

  • 三个公司的主节点作为委员会结点,其运行一套共识机制(如hotstuff)
  • 传送的消息中的签名仅包含本公司的签名(聚合了各个楼层、各个楼栋的签名)
  • 当委员会达成一致的时候,委员会结点向本公司内部传递应该存储的消息编码

无需让每个园区的各个楼宇都参与共识,他们只需要负责存储即可
只要每个园区的“代表”主节点来进行共识即可。

如果一个委员会有问题

  • 发送全网广播
  • 恶意结点的委员会内部开始重新选举
  • 其他委员会不动
  • 委员会内部再选举主节点

委员会的选举

参照[[../../论文/区块链/权威证明共识机制在区块链上的研究和应用|权威证明共识机制在区块链上的研究和应用]]

  • 利用权重值+贡献积分来确定各个园区主节点

IDEA:基于分片存储+动态委员会

楼宇物联网的特性

  1. 分散且集总:
    • 公司间分散(各个公司之间可能隔着马路)
    • 按某个公司集中(公司内部的信息可以联通)
  2. 物联网设备上下级明显:
    • 楼层的监控设备归属某个公司的安保部统一管辖
      ->园区分层特性明显
  1. 部分物联网信息不可传递给其他公司,具有严格的保密性
    ->门限签名

  2. 楼宇中部分设备可以认为固定且权威
    ->赋予较高贡献值

基于共识算法:Hotstuff进行改进

  • 改进层面——
    • 新增信誉值
      • 基于图的信誉值(异步网络)
    • 动态信誉值赋分
      • 成长速度的调整

初始版本