Turbine是Solana的一项创新技术,在公链之间的竞争中,Turbine发挥着非常大的作用。Turbine的这一项创新技术,到底在那些方面有着拥有着领先的地位?
区块链技术中的可扩展性三元悖论问题与带宽有关。如今,在大多数区块链网络中,鉴于每个节点有固定的带宽,增加节点数量将增加把所有数据传播到所有节点所需的时间。
这是一个所有区块链网络所面对的重要问题。
现如今出现了许多新颖的数据传播技术,每一种都在根据特定的应用进行优化。例如,BitTorrent是为通过TCP向大群人提供大文件而优化的,而MediaFLO则是为物理层的数据传播而优化的协议,目的是提高无线网络上多点广播的效率。
而Solana的区块传播协议涡轮机(Turbine),是如何解决区块链的可扩展性三元悖论问题的呢?
高性能区块链的挑战之一是网络如何将大量的数据传播给大量的对等体。例如,一个由2万个验证器组成的网络。领导者(leader)需要将一个128MB的区块(约50万笔交易)传输给2万个验证器。要想实现传播,需要领导者与每个验证者产生一个独特的连接,并将整个128MB的数据传输20000次。
显而易见,一般没有足够的带宽来容纳这么多的连接。
针对这一问题的解决方案——Turbine,在很大程度上借鉴了BitTorrent,但是两者之间在主要的技术细节上还是有一些区别。
通过将数据分成较小的数据封包,Turbine协议致力于帮助区块链节点间的数据传输变得更加容易。得益于此,Solana可以解决带宽限制的问题,并提高其整体容量,使得交易可以更快地完成。
Turbine针对流式传输进行了优化,使用UDP传输数据,并在领导者(区块生产者)流式传输数据时,实现了每个数据包在网络中的随机路径。领导者将一个128MB数据块分成大小不超过64KB的数据包,并将每个数据包传输到不同的验证器。
然后,每个验证器将数据包重传给一组称为“邻居”(neighborhood)的对等体。每个邻居负责将部分数据传输到其下面的每个邻居。
如果领导者以擦除码的形式传输该区块33%的数据包,那么网络可以放弃任何33%的数据包并且不丢失该区块。
领导者甚至可以根据网络状况动态地调整这个数字。这些都是由领导者从以前的区块中观察到的丢包率做出的决定。
并非所有的验证器都是平等的,最重要的验证器是那些拥有最多质押的验证器。
因此,相应的传播将会进行优先排序。权益加权选择算法构建了一个树,使质押较高的验证器在邻居中更接近领导者。每个验证者都独立计算相同的树。
虽然擦除码可以修复故障,但在树中的敌对节点可能会导致故障,特别是当与DoS(拒绝服务攻击)相结合时。
Solana如何处理这种日蚀攻击(Eclipse Attack)?
扇出算法。
Solana的扇出算法使用基于数据包数字签名的随机源为每个数据包生成一棵权益加权树。由于每个数据包采取不同的路径,而且路径是事先不知道的,邻居级的日蚀攻击需要几乎完全控制网络。
这种技术可以扩展到200到1000个节点之间。支持1 gbps的网卡每秒可以传输100万个数据包。如果网络连接允许,单个验证器可以在一秒钟内将最多64kb的数据包发送给1,000台机器。