m out_of n 方法与传统的 gossip 协议相比,在性能上也有所提升。在带宽上的提升是显而易见的,我们不对此进行过多分析。在这里,我们主要分析另外两个性能指标,及交易重复率 和交易打包率 。重申一下,交易重复率是指,当一个新的区块生成后,区块中的总交易数 减去有效交易数 除以区块中的总交易数 ,即 。交易打包率 (我们依旧假设全网在 ~ 时间段内会收到 笔不同的交易,其中 为每个节点在该时间段内可以接收交易的上限数量)。
我们首先来分析在 m out_of n 方法与传统的 gossip 协议方法这两种方法的情况下,共识节点的交易池的交易数情况。在 m out_of n 方法中,由于在 ~ 时间段内,有 笔不同的交易会发送到异步共识网络,因此,全网总共收到了 笔交易。这样一来,每个共识节点平均就收到了 笔交易。在传统的 gossip 协议中,全网总共收到了 笔交易。这样一来,每个共识节点平均就收到了 笔交易。当 时,m out_of n 方法中的节点交易池并没有达到饱和,每个节点的交易池中只有 笔交易。对于传统的 gossip 协议,每个节点的交易池中的交易数为 。在 m out_of n 方法中,当 时,共识节点的交易池的交易数才达到饱和。而在传统的 gossip 协议中,共识节点的交易池早在 时已经达到饱和。这意味着,当 时,在 m out_of n 方法中,所有发送到异步共识网络中的交易可以全部被共识节点接收;相反,在传统的 gossip 协议中,有不多于 笔交易是无法被共识节点接收并放入交易池的。因此,在逻辑上就可以推导出 m out_of n 方法相比于传统的 gossip 协议可以有效提升交易打包率,从而降低交易延时。实验分析如下图所示:
由上面的图可以发现,虽然使用 m out_of n 方法后的交易打包率相比使用 gossip 协议后的交易打包率有所提升,随着 的增大,两种方法所呈现的效果变得接近,且呈现的规律相同。
另外,在 m out_of n 方法中,由于一笔交易不需要发送给所有节点,而是发送给 个节点,这使得任意两个节点的交易池相似度会低于在传统的 gossip 协议模式下的任意两个节点的交易池相似度(之前的图已经证实这一点)。这使得在 m out_of n 方法下的交易重复率也比传统的 gossip 协议方法下的交易重复率更低,正如我们的实验分析结果所示:
我们可以看到,使用 m out_of n 方法时的交易重复率比使用 gossip 方法的交易重复率要低;同时,使用 m out_of n 方法时的交易打包率比使用 gossip 方法的交易打包率要高。然而,当使用 m out_of n 方法时,这两个性能指标的提升并不显著。对于交易重复率,提升不显著的原因是:
基于上面的推理,我们可以进一步发现,在使用 m out_of n 方法后,异步共识算法出现了一个新的不可能三角问题。“三角”分别为交易重复率,交易丢失率,交易打包率。在使用传统的 gossip 协议或者其他类似广播协议时,并不存在这个不可能三角问题,这是因为传统的广播协议不会存在交易丢失率这个性能指标,也就是一旦交易被发送到异步共识网络,交易一定会被打包并上链,不存在不会被上链的情况。这是牺牲了网络带宽总消耗的结果(一笔交易会发送给所有节点,因此一定会发送给诚实节点)——极致的冗余带来了 % 的安全。然而,在现实中,我们并不需要将交易丢失率降低到 。相反,如果我们能够让交易丢失率维持在一个很低的概率,同时极大的降低网络带宽的消耗,也是一个不错的权衡。然而,虽然 m out_of n 方法实现了交易丢失率和网络带宽消耗之间的权衡,我们仍发现,现有的方案中,存在上述所说的不可能三角。也就是说,上面三个性能指标,想提升其中的两个指标,必须建立在牺牲另外一个指标的基础之上。
综上,我们提出了 m out_of n 方法,该方法可以极大地降低异步网络中的节点在接收交易时的带宽损耗;同时,在相同参数( 等参数)环境下,相比于 gossip 协议等方法,m out_of n 方法不仅降低了交易重复率,同时还提升了交易打包率。然而,m out_of n 引入了新的性能参数——交易丢失率,以及上面论述的不可能三角问题。显然,m out_of n 方法带来了诸多好处,即使引入了交易丢失率这一性能指标,在良好的变量控制下(让交易丢失率足够小的同时,去降低交易重复率和交易打包率,同时减小对带宽的消耗)因此,在基于 m out_of n 方法上,如何在维持较低的交易丢失率的情况下,进一步去减小交易重复率和增大交易打包率,是未来的重点研究方向。