为了达到亚秒级的确认时间和Solana成为世界上第一个网络规模的区块链所需的交易处理能力,仅仅快速形成共识是不够的。它必须开发一种方法来快速验证大规模的交易块,同时在整个网络上快速复制这些交易。为了实现这一点,Solana网络上的交易验证过程广泛使用了CPU设计中常见的一种优化,称为流水线(Pipelining)。
当有一个输入数据流需要通过一系列的步骤来处理,并且有不同的硬件负责每一个步骤时,流水线是一个合适的过程。解释这个问题的最典型的比喻是一个洗衣机和烘干机,它们依次清洗/烘干/折叠几件衣服。洗涤必须发生在干燥之前,干燥必须发生在折叠之前,但这三项操作中的每一项都是由一个单独的单元来完成的。
为了最大限度地提高效率,人们创建了一个阶段性的流水线。我们将洗衣机称为一个阶段,烘干机称为另一个阶段,折叠过程称为第三个阶段。为了运行这个流水线,在第一件衣服被添加到烘干机之后,人们将第二件衣服添加到洗衣机中。同样,在第二件衣服进入烘干机,第一件衣服被折叠之后,再将第三件衣服加入洗衣机。通过这种方式,人们可以同时对三件衣服进行处理。考虑到无限的负载,该管道将始终以管道中最慢的阶段的速度完成负载。
"我们需要找到一种方法,让所有硬件一直保持忙碌。这就是网卡、CPU核心和所有的GPU核心。为了做到这一点,我们从CPU的设计中借鉴了经验",Solana公司创始人兼CTO Greg Fitzgerald解释说,"我们在软件中创建了一个四级交易处理器。我们称它为TPU,即我们的交易处理单元。"
在Solana网络上,Pipeline机制--交易处理单元--在内核层面通过数据获取,在GPU层面通过签名验证(Signature Verification),在CPU层面通过银行业务(Banking),在内核空间通过写入(Writing)。当TPU开始向验证者发送区块时,它已经取到了下一组数据包,验证了它们的签名,并开始计入代币。
验证器节点同时运行两个流水线进程,一个用于领导者模式,称为TPU,一个用于验证者模式,称为TVU。在这两种情况下,被流水线化的硬件是相同的,网络输入、GPU卡、CPU核心、写到磁盘和网络输出。它用这些硬件做什么是不同的。TPU的存在是为了创建账本条目,而TVU的存在是为了验证它们。
"我们知道签名验证将是一个瓶颈,但也知道这是一个无上下文的操作,我们可以卸载到GPU上"Fitzgerald说,"即使在卸载了这个最昂贵的操作之后,仍然有一些额外的瓶颈,例如与网络驱动器的互动,以及管理智能合约中限制并发的数据依赖。"
在这个四级管道的GPU并行化之间,在任何特定的时刻,The Solana TPU可以同时在5万个交易上取得进展。"这一切都可以用一台低于5000美元的现成计算机来实现"Fitzgerald解释说, "不是什么超级计算机。"
随着GPU卸载到Solana的交易处理单元上,网络可以影响单节点效率,实现这一点是Solana自成立以来的目标。
"下一个挑战是以某种方式将区块从领导者节点传到所有验证者节点,并以一种不使网络拥挤和使吞吐量陷入困境的方式进行"Fitzgerald继续说道,"为此,我们想出了一个区块传播策略,我们称之为Turbine(参考我们之前写的这篇文章)。
"通过Turbine,我们将验证器节点分为多个级别,每个级别的大小至少是其上面一个级别的两倍。通过这种结构,这些不同的层次,确认时间最终与树的高度成正比,而不是其中的节点数量,后者要大得多。每当网络大小翻倍时,你会看到确认时间有一个小的颠簸,但仅此而已。"