• Rapid chain


    • 这篇文章中提到 Elastico 运行6个epoch就会退化到公式失败率高达 0.97

    • omnileger 在第一个epoch需要一个初始化的随机种子,来初始化 VRF。这需要 O ( n 2 ) O(n^2) O(n2) 的复杂度,并且OminLedger 需要通过轻节点驱动枷锁和解锁的过程,这户家中节点的负担。

    • 会导致DoS攻击

    • 之前的协议中都要求总的恶意节点数不超过 1/4,这说明他们的防御能力弱。但是这个Rapidchain提升到1/3是因为committee内部使用的同步共识协议。

    • 在每个委员会内部使用同步共识,只需要收集 1/2以上的票,就能证明提交成功

    Bootstrap

    • 根据 hardcode 的硬编码随机种子进行初始化

    • 用hardcode 的硬编码种子,减少对于第三方可靠性随机的依赖

    • 每个节点都能根据seed将整个网络建模成一个二分图,L node是普通节点,R node是 group,这样一个节点可以属于好几个group,每个 group中运行分布式随机数生成算法,生成随机数 s,每个节点建立 ID 得到哈希值 h = H(s || ID),选举h最小的e个节点进入下一轮。直到选出 root group
      请添加图片描述

    • 根小组负责选择参考委员会成员

    • 参考委员会将所有节点的集合随机划分为各个分片委员会,随后进入第一个时代

    Consensus

    IDA-gossip

    • 当一个节点要发送较大的一块数据,使用EC码,将数据分散成小块发送,并让节点之间进行互相广播。
    • 将large message分成 ( 1 − ϕ ) k (1 - \phi)k (1ϕ)k 个chunk, ϕ \phi ϕ 是恶意节点的比例, 并添加 ϕ k \phi k ϕk 个冗余块。
    • 将 k个chunk分成d个不相交的集合,发送给他相邻的d个节点。
    • 为了验证正确性,建立merkle tree,发送Mi块时还需要发送Mi个merkle proof

    同步共识

    • 认为诚实节点之间是通过同步网络连接的,只需要收集到 1/2+1 的投票就行。
    • 因此每个委员会内部对于恶意节点之间的容忍性为 1/2

    跨分片交易

    将跨分片交易的驱动,从client 转移到shard的leader。
    output shard的leader向utxo中的input shard发送相关的交易,input shard执行结束后,output shard处理相关交易。

    Inter-Committee Routing

    简单来说就是每个节点存储同委员会成员全部节点的路由信息,同时只存储属于距离自己所在委员会最近的log(n)个委员会内的log log(n)个节点的信息
    在这里插入图片描述

    POW

    • 也是通过pow来建立身份,加入下一个epoch
    • pow 的结果需要交给 reference commiittee 来认证

    committee recofiguration

    为了保证安全性,要时常将委员会中的节点替换掉。
    这篇文章中使用了有限Cuckoo Rule

    Cuckoo Rule

    [ 0 , 1 ) [0,1) [0,1) 分成k个区域,每个节点被映射到一个区域中。当一个新的节点想要个加入到网络中,他被随机映射到一个区域中,这个点固定区域周围的点被驱逐出这个区域,并加入到其他区域中。

    Bounded Cuckoo Rule

    进入新的echo,新的节点必须要通过POW进行新身份的建立,为了保证在进入新的echo同时也能进行共识,因此原先committe中的节点还在原committee中。

    将committee中节点多的记作acitvate committee,新的节点加入activate committee,activate committee中节点根据 Cuckoo Rule 剔除并加入其他的committee。

    这也算个创新吧

  • 相关阅读:
    在vue项目中使用electron
    selenium 网页自动化-在访问一个网页时弹出的浏览器窗口,我该如何处理?
    python中的并发编程-进程、线程2
    sqllab第三关通关笔记
    C++移动语义
    C++ 二维前缀和 子矩阵的和
    redis,mq如何解决重复支付问题
    MySQL使用GROUP BY分组,根据分组值对应,为null的分组展示为0或自定义数值
    架构与思维:如何应对Redis热Key?
    SpringBoot
  • 原文地址:https://blog.csdn.net/greatcoder/article/details/134504114