-
这篇文章中提到 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。
这也算个创新吧