DeepHash专栏|Monoxide:突破区块链不可能三角的极简架构(19)

既然 , 每个全节点都需要同步并跟踪所有共识组中的块头 , 我们将修改连弩挖矿的出块数据结构 , 改为一次出所有的块头 , 而不是按逐个共识组出块头 , 不可用的块头(哈希难度未达到挖矿难度的)用其哈希值代替 。 当然区块本身仍旧是逐个共识组分开广播的 。 同时为了实现这个优化 , 我们将引入一个全局的特殊广播子网 , 仅用来传播块头或者成批的块头 , 并要求所有全节点和挖矿节点加入这个特殊的广播子网 。 这样就可以省去原先每个块头的算力证明部分 , 将带宽消耗将降到 O(n):

BlockHeadSize × n / BlockInterval

优化之后 , 对于每个全节点来说 , 这仍旧是一个不容忽视的开销 。 N 总能大到一定程度 , 使得本地带宽被耗尽 。 那么我们来推演一下这个天花板到底是多少 。 约束全节点带宽为 15Mbps , 即上限为 1.88MB/s 。 以 Bitcoin 协议为基础 , 我们设定其出块间隔为 1 分钟 , 出块大小为 8MB 。

这样单个共识组单链吞吐量将约为 560 TPS , 区块传输开销为 0.13MB/s 。 当共识组数量为 65536 个的时候 , 全网块头传输开销也为 0.13MB/s 。 加起来之后 , 也远小于带宽上限 , 有足够的剩余带宽用于下行广播 。 然后 , 这个时候全网吞吐量约为 15M TPS 左右 , 状态容量在几百 TB 的数量级 。 无论是再多的共识组总量 , 还是再高的共识组单链吞吐量 , 都会逐渐使得全节点本地带宽显得局促 。

推荐阅读