第三类共识算法AVALANCE雪崩共识:Part2

  • Johnathan
  • 更新于 2020-07-22 09:33
  • 阅读 1197

上次聊到了Avalance背后的Snow共识的基本思想,以及它的改进,但是细心的你可能已经发现,Snow共识并没有给交易制定一个全局的序,并且貌似也没有出...

上次聊到了Avalance背后的Snow共识的基本思想,以及它的改进,但是细心的你可能已经发现,Snow共识并没有给交易制定一个全局的序,并且貌似也没有出块相关的概念,那么这到底是为什么呢?

交易的序

Avalance团队利用Snow共识开发了一个点对点电子支付系统Avalance,Avalanche可以说就是Snowball共识的实例,它把所有的交易维护成一个有向无环图DAG(这里只是通过 DAG 解耦需求,只是利用DAG的顶点来批处理请求,把原来需要线性的交易所有交易要排成一根链,现在可以让不相关的交易并发发生,时间前后不要么重要)。需要区分的概念是,DAG本身不是共识,只是能让交易并发,提高吞吐量。

有向五环图的每个顶点就是一个交易,节点每创建一笔交易就把他附在DAG中的一个父交易上(需要注意的是子交易不需要与父交易一定有依赖关系,只是通过父边能够访问到就可以)。而每一组冲突交易(双花交易)的集合就构成一个Snowball的实例(可以看出正常的交易的Snowball实例只会是单例,也就是说只有一个交易)。稍微不同于Snowball的地方是,Snowball不断询问并且使用置信计数器shit来记录冲突交易,而Avalanche利用DAG结构并且使用交易的所有后代的chit累加起来形成一个置信计数d(t),t代表该笔交易,整个的描述如下图所示:

1.png

DAG交易<chit,d(t)>示例图:紫色区域代表多笔冲突的交易,黑色方块代表置信计数器比较大交易

可以看出,Snow共识虽然并不会给交易全局进行排序,但是决定了一个偏序关系(交易序列的相对顺序),这样就可以按照拓扑排序对交易进行排序了。

当然这里明显有个问题就是,没有全局的序,每个节点就需要维护整个DAG图,交易量大了之后也没法减支,官方考虑后期采用epoch来实现全局的序,进而设置检查点。

交易确认

那么还有一个问题就是,我们如何确认一笔交易就已经比较安全,可以接受了呢?

这个地方的处理类似与比特币,协议设定了参数,但是具体的安全性由应用决定。协议制定了两个参数β1和β2,一笔交易可以被接受的条件是满足以下两个条件之一:

  • 置信计数器大于门限β1(d(t)>β1)
  • 连续β2轮成功采样(chit>β2)

那么最终的性能评估又如何呢?

性能评估

吞吐量

采用每次采样k=10个节点,大于alpha=0.8的比例采样成功,β1=11,β2=150,

2.png

吞吐量vs网络规模。左边的是每一个块20笔交易,右边的是每一个块40笔交易

验签瓶颈

3.png

每个块40笔交易。左边验证交易,右边不验证

交易确认延迟

纵轴的概率表示已经确认的交易占全部交易的比例。可以看出大多数交易在0.3秒左右就已经达到确认条件了。

4.png

安全性

横坐标表示恶意节点的比例,分别看下他对吞吐量和延迟的影响:

5.png

对吞吐量影响

6.png ](https://)

对延迟影响

可以看出,吞吐量与而已节点的比例几乎正相关,但是变化率比较小,并且延迟几乎不受影响。

更多的测试

社区的用户,还测试了100,000个节点需要多少轮达成共识:

7.png

总结

Avalanche底层的Snow共识具有以下优点:![图片]8.png

是一个很有创新性的共识基础协议,期待他2020年8月主网上线后的表现!

点赞 1
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Johnathan
Johnathan
Blockchain & AI change the world!