Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第五章:分布式数据库不是区块链

速度的诱惑

2021 年的加密货币牛市中,有一个项目反复出现在每一个“以太坊杀手“榜单的榜首:Solana。

它的宣传口径简单而有力:每秒处理六万五千笔交易,出块时间四百毫秒,手续费不到一美分。在以太坊用户为一笔简单的代币转账支付几十美元 Gas 费、等待十几秒确认的时代,Solana 的数字看起来像来自另一个世界。投资者蜂拥而入,开发者纷纷迁移,SOL 的价格在 2021 年从不到 2 美元飙升至超过 250 美元。

“快“成了最大的卖点。在行业的叙事中,高 TPS(每秒交易数)几乎成了“先进“的代名词。以太坊每秒十几笔,太慢了;比特币每秒七笔,简直是上古遗物。Solana 每秒几万笔——这才是未来。

这个叙事有一个致命的隐含假设:TPS 高就等于可扩容,可扩容就等于好。

但如果我们从序章建立的第一性原理出发,一个尖锐的问题会自然浮现:这个速度是怎么来的?为了获得这个速度,牺牲了什么?

答案会让很多人不舒服。

在展开分析之前,有必要先明确本章的用词:当我们说“区块链“时,指的是比特币所开创的那种系统——一个无许可的、通过开放竞争产生排序权的分布式账本。行业中很多项目都自称“区块链“,但正如我们将看到的,如果一个系统的共识依赖于已知的参与者集合和中心化的协调机制,那么它在本质上更接近一个分布式数据库,而不是比特币意义上的区块链。

PoH:一个精巧的时钟,不是共识

Solana 最核心的技术创新叫做 Proof of History(历史证明,简称 PoH)。这个名字很有迷惑性——它听起来像是和 Proof of Work(工作量证明)、Proof of Stake(权益证明)并列的一种共识机制。很多人也确实这样理解。但这是一个根本性的误读。

PoH 是什么?它是一种可验证延迟函数(Verifiable Delay Function)的特定实现,其核心是一条连续的 SHA-256 哈希链。每一次哈希运算的输出,作为下一次运算的输入,如此不断循环。因为每一步都依赖前一步的结果,这条链只能按顺序生成,不能并行加速——但验证者可以通过并行验证来快速确认结果的正确性。这使得它成为一个可验证的密码学时钟:生成必须消耗时间,但验证可以很快完成,链上的每一个“滴答“都证明了一段时间已经过去。

当交易被插入这条哈希链时,它们获得了一个相对于其他交易的时间顺序。这就是“历史证明“名字的由来——它为事件提供了一个可验证的时间线索。

这个设计确实很精巧。但请注意一个关键区别:PoH 本身不决定哪些交易是有效的,不决定谁有权出块,也不解决节点之间的分歧。它只是一个计时器。

Solana 的实际共识机制是另一个东西:Tower BFT。

Tower BFT 是什么?它是 PBFT(实用拜占庭容错)的一个变体。在这个机制中,验证者通过投票来确认区块。每一票都有一个“锁定期“——你投了一票之后,在一定的时间窗口内不能改投其他分叉。随着你连续投票确认同一条链,锁定期呈指数增长,这使得验证者越来越难以回滚已确认的历史。

PoH 在这个过程中扮演的角色,是为 Tower BFT 提供一个统一的时钟参考,减少验证者之间的通信开销。没有 PoH,Tower BFT 仍然能工作,只是效率会降低。没有 Tower BFT,PoH 本身不能完成任何共识。

为什么这个区分至关重要?

因为 Tower BFT 是一个经典的 BFT 共识算法,而所有 BFT 算法都有一个共同的前提:参与者集合是已知的。 你必须事先知道有哪些节点参与共识,才能计算“三分之二多数“是多少。这和比特币的工作量证明有着根本性的差异——在比特币中,任何人随时可以加入或退出挖矿竞争,不需要任何人的许可,不需要任何注册,网络甚至不需要知道你的存在。

换句话说,PoH 让 Solana 更快了,但它没有让 Solana 变成区块链。Solana 的共识仍然建立在一个已知的、预先确定的验证者集合之上——更接近已知参与者集合的 BFT 型分布式系统,而不是比特币式的开放竞争系统。

被预选的秩序

让我们更仔细地看看 Solana 的出块机制。

在比特币中,没有人知道下一个区块将由谁挖出。全球的矿工同时竞争,谁先解出数学难题,谁就获得下一个区块的排序权。这是一场开放的、实时的、不可预知的竞争。

在 Solana 中,出块者是预先确定的。

Solana 的网络运行被划分为一个个“纪元“(epoch),每个纪元持续大约两到三天。在每个纪元开始之前,系统根据验证者的质押权重,通过一个伪随机算法生成一份“领导者时间表“(leader schedule)。这份时间表精确地规定了在接下来的每一个时间槽(slot,约 400 毫秒)中,由哪个验证者担任出块领导者。

这意味着:在任何给定的时刻,整个网络都知道谁是当前的领导者,谁是下一个领导者,以及接下来几天内每一个时间槽的领导者是谁。

从工程角度看,这种设计的优势显而易见:既然大家都知道下一个领导者是谁,交易可以提前被转发给他,不需要像比特币那样在所有矿工之间广播。这大幅减少了网络通信的冗余,直接推高了吞吐量。

但从去中心化的角度看,这种设计隐含着一个深刻的问题:排序权不是通过竞争获得的,而是被系统分配的。

回想序章的推导。比特币的核心突破在于:在没有可信第三方的条件下,通过能量消耗的竞争,让排序权以一种不可预测、不可操纵的方式产生。正是因为没有人能预知谁会赢得下一个区块,排序权才是不可被俘获的。

而 Solana 的领导者时间表,本质上是一种预先安排的轮值制度。虽然轮值的顺序受质押权重影响,但它仍然是由算法在事前确定的。这意味着攻击者可以提前知道目标——如果你知道某个验证者将在五分钟后出块,你可以提前对它发动针对性的 DDoS 攻击。Solana 确实经历过这种攻击。

更根本的是,这种预选机制将出块权从一个开放的竞争问题,变成了一个准入和分配问题。谁能成为验证者?谁的质押权重够大?谁能被选入领导者时间表?这些问题的答案,决定了谁拥有排序权——而在比特币中,这些问题根本不存在。

硬件的门槛

如果你想运行一个比特币全节点——注意,这里说的是验证节点而非挖矿节点——你需要什么?一台普通的个人电脑就够了。几百 GB 的硬盘空间,几个 GB 的内存,一条普通的家用宽带。任何人,在世界上的任何角落,都可以独立验证比特币的每一笔交易,不需要任何人的许可。

如果你想运行一个 Solana 验证器呢?

Solana 官方文档(Agave/Anza 客户端,2025 年版本)列出的推荐硬件要求是:12 核以上的高频 CPU(主频不低于 2.8 GHz,必须支持 SHA 扩展和 AVX2 指令集),256 GB 以上 ECC 内存,多块企业级 NVMe 固态硬盘(账户数据 1 TB 以上,账本数据 1 TB 以上,快照另需 500 GB 以上),以及至少 1 Gbps 的对称带宽,推荐 10 Gbps。

这是“推荐配置“。在实际运行中,社区普遍认为 512 GB 到 1 TB 的内存、24 核以上 4 GHz 主频的 CPU、以及企业级的网络连接才是具有竞争力的配置。一台合格的 Solana 验证器,硬件成本动辄数万美元。运营成本方面,仅投票交易费用上限约为每天 1.1 SOL,加上带宽、电力和托管费用,年运营成本因 SOL 价格波动而差异显著。

这些数字意味着什么?

意味着运行 Solana 验证器不是普通人能做的事。你需要专业的服务器硬件、专业的网络环境、专业的运维能力,以及持续的资金投入。这不像是在参与一个开放的网络,更像是在运营一个小型数据中心。

数据验证了这一点。尽管 Solana 验证者数量在 2024 年一度保持在 1,500 以上,但独立验证者的比例持续萎缩,大量小型验证者因入不敷出而退出。运营成本持续攀升,盈亏平衡所需的质押量高度依赖 SOL 价格、佣金率和 MEV 收入结构,但对大多数缺乏充足委托质押的小型验证者而言,维持运营在经济上是不可持续的。

这就是高 TPS 的隐藏账单。Solana 之所以快,不是因为它在技术上有什么魔法,而是因为它对验证者提出了极高的硬件要求。当你要求每个节点都配备 512 GB 内存和万兆网络时,网络当然可以处理更多交易——但代价是,只有少数人能够承担这些成本。

验证者的集中化是这种架构的结构性结果,不是偶然的。质押权重高度集中在头部验证者手中,少数大型机构验证者控制着网络的绝大部分共识权力。Solana Foundation Delegation Program 的退场机制——每引入一个新验证者(onboard 1),就有三个表现不达标的验证者失去基金会委托(offboard 3)——对硬件和性能设有极其严苛的考核标准,小型验证者因无法承担成本而被自然筛选出局,质押权重进一步向头部机构集中。

一个只有几百个高配置服务器组成的网络,验证者是已知实体,出块权按时间表轮换——这个描述听起来像什么?

它听起来像是一个分布式数据库集群。

当“区块链“需要人工重启

2021 年 9 月 14 日,Solana 网络遭遇了有史以来最严重的一次宕机。

事情的起因并不复杂。一个叫 Grape Protocol 的项目在 Raydium 上启动了代币发售(IDO),大量套利机器人涌入,每秒向网络发送超过 40 万笔交易——远超网络的处理能力。根据官方事故分析(RCA),这些洪泛流量导致验证者节点的 forwarder queue 无界增长,内存迅速耗尽。与此同时,资源密集型的区块加剧了节点负担,验证者纷纷崩溃,网络产生大量无法达成共识的分叉,最终共识完全停摆。

然后发生了什么?

全球各地的 Solana 工程师和验证者在 Discord 的 #mb-validators 频道上开始紧急协调。他们需要做的事情包括:诊断故障原因、编写修复补丁、发布新版本的客户端软件、协调全球一千多个验证者同时升级并重启、就从哪一个区块高度重新开始达成一致。

整个过程用了 17 个小时。

17 个小时里,整个网络完全瘫痪。没有任何交易被处理。任何人的资产都无法转移。用户能做的只有一件事:等待。等待工程师在 Discord 上商量出解决方案,等待验证者完成升级,等待网络重启。

这不是唯一的一次。

2022 年,Solana 至少经历了五次重大的网络性能事件。1 月份,高计算量交易和大量重复交易分别造成了两次网络拥堵。4 月 30 日,共识机制本身出现故障,网络停止出块。5 月 26 日,共识故障导致网络时钟漂移。6 月 1 日,主网再次停摆约 4.5 小时。9 月底到 10 月,一个验证器节点故障在错误的区块高度生成了重复区块,分叉选择逻辑中的 bug 导致其他验证者无法在正确的链上继续构建,网络再次停摆。

2023 年 2 月 25 日,若干自定义 block-forwarding 服务在处理异常大的区块数据时反复转发,最终压垮了去重逻辑与区块传播协议 Turbine,导致长时间的性能降级和部分不可用。

2024 年 2 月 6 日,一个叫 LoadedPrograms 的函数中的 bug 导致区块生产完全停止,宕机近五个小时。

而且这只是官方承认的宕机事件。第三方监控服务的记录显示,还存在多次未被官方公开报告的网络性能异常和中断,其中一些持续时间相当长。

每一次宕机,恢复流程都是相同的:工程师在 Discord 上发布通知,验证者在群组中讨论回滚到哪个区块高度,大家下载新版本的客户端,协调重启时间,然后手动重启各自的节点。整个过程需要验证者之间的人工协调——没有任何自动化机制可以让网络自行恢复。

现在,问一个简单的问题:这种恢复方式,与传统中心化系统的运维流程有什么本质区别?

2021 年 10 月,Facebook(Meta)经历了一次长达六小时的全球宕机。由于内部工具——包括 Workplace(内部通信)、门禁系统——同样依赖于自身基础设施,工程师一度连机房都无法进入。恢复的过程是紧急协调、手动排查、逐步重启。

Solana 的宕机恢复方式,与任何一家科技公司的运维流程,在本质上没有区别。都是一群已知的、可识别的技术人员,在一个中心化的通信渠道上,通过人工协调来恢复系统。Facebook 的工程师依赖内部工具协调,Solana 的验证者在 Discord 上协调——两者的恢复都依赖于链下的、中心化的通信基础设施。

对比一下比特币。

比特币自 2009 年 1 月 3 日上线以来,从未通过协调重启全网来恢复运行。当 2013 年 3 月的一个软件 bug 导致比特币网络短暂分叉时,开发者、矿池与商户之间确实发生了紧急协调——bitcoin.org 发出警报,建议运行 0.8.0 的大型矿池切回 0.7 版本,商户暂停处理交易。但关键区别在于:比特币网络本身从未停止运行。没有集群重启,没有基金会统一发布指令让所有节点同步重启。矿工们各自做出了回滚到更保守软件版本的决定,网络通过工作量证明的自然机制恢复了共识。

为什么?

因为比特币的共识机制不依赖于任何特定参与者的在线状态或配合。矿工来了就挖,走了就走。有人掉线了,其他矿工继续挖。算力波动了,难度自动调整。整个系统像一台自行运转的机器——它的设计目标就是不需要任何人来“管理“它。

而 Solana 的系统,从架构上就需要管理者。当网络停摆时,需要有人来决定从哪个区块高度重启。需要有人来发布修复补丁。需要有人来协调验证者的行动。这些“有人“,就是 Solana 基金会和核心开发团队。他们在 Solana 网络中扮演的角色,和银行的 IT 运维团队在银行系统中扮演的角色,是结构性相同的。

“可扩容“的真正含义

到了这里,支持者可能会说:“Solana 确实有一些中心化的问题,但至少它解决了区块链的可扩容性难题。以太坊每秒十几笔,比特币每秒七笔——这根本无法满足全球支付的需求。Solana 证明了高吞吐量是可能的。”

这个论点的前半部分是对的:比特币和以太坊当前的吞吐量确实不够。但后半部分隐含了一个致命的概念偷换。

什么是“可扩容“?

如果你问一个普通人,答案可能很简单:处理更多交易。TPS 越高,可扩容性越好。

但在分布式系统的语境中,“可扩容“有一个更精确的含义。它不仅仅是“TPS 高”。它是在不牺牲系统核心属性的前提下提升吞吐量的能力。

对于区块链来说,核心属性是什么?是去中心化和安全性。

一个中心化的数据库——比如 Visa 的支付网络——每秒可以处理数万笔交易。但没有人会把 Visa 叫做“高度可扩容的区块链“。为什么?因为它的高吞吐量是建立在完全中心化的架构之上的。Visa 有自己的数据中心,有自己的服务器集群,有自己的运维团队。它快,是因为它不需要在数千个独立节点之间达成共识。

如果“可扩容“仅仅意味着“TPS 高“,那最好的区块链就是一台强大的服务器上运行的 MySQL 数据库——它每秒能处理几十万笔交易,远超任何区块链。

这显然是荒谬的。

真正的可扩容,是在保持去中心化和安全性的前提下提升吞吐量。这才是困难的地方。因为去中心化意味着数据需要在多个独立节点之间传播和验证,这天然地对吞吐量施加了约束。突破这个约束而不损害去中心化——这才是“可扩容“这个词应该描述的成就。

Solana 做到了这一点吗?

它提升了 TPS。但它是通过提高硬件门槛、减少验证者数量、采用预选领导者机制来实现的。它的高吞吐量,不是“不牺牲去中心化的前提下获得的“,而恰恰是“以牺牲去中心化为代价换来的“。

这就像一个人通过截肢减轻了体重,然后宣布自己解决了肥胖问题。数字确实变了,但代价是你失去了一条腿。

两种截然不同的哲学

到此为止,我们已经从技术层面分析了 Solana 的架构选择。但更深层的分歧不在技术细节,而在设计哲学。

比特币的设计基于一个核心假设:秩序应该从竞争中自发涌现,而不是由某个权威来安排。

矿工们不是被分配了出块任务的“值班员“。他们是一群自利的经济人,在一个开放的竞技场上争夺每一个区块的排序权。谁能以最低的成本消耗最多的能量,谁就更有可能赢得下一个区块。这种竞争是无许可的——任何人可以随时加入或退出,不需要任何人的批准。出块权在每一个十分钟的周期里都被重新争夺,没有人享有永久的优势。

这种机制看起来“低效“——大量的能量被消耗在竞争中,最终只有一个矿工的区块被接受。但正是这种“低效“保证了排序权不会被任何人垄断。它是一种用能量换取去中心化的设计——效率低了,但安全高了,而且不依赖于任何参与者的善意。

Solana 的设计基于一个截然不同的假设:秩序应该被高效地安排和维护。

验证者是已知的实体,通过质押代币获得参与共识的资格。出块权按照时间表分配——系统知道接下来几天内每一个时间槽由谁出块。网络的性能通过对硬件的高要求来保障——验证者需要运行昂贵的专用服务器。当网络出现问题时,基金会协调验证者进行修复和重启。

这种设计的效率确实高。但它的逻辑,本质上是一种“受管理的秩序“——由已知的参与者、按照预定的规则、在中心化的协调下维护系统的运行。

序章中我们引用过白皮书的一段关键描述:

“Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone.”

“节点可以随意离开和重新加入网络,接受工作量证明链作为它们离开期间所发生事件的证明。”

比特币的节点可以随意来去。Solana 的验证者不能——如果你是当前时间槽的领导者却掉线了,这个时间槽就会被跳过,网络性能就会下降。系统的正常运行依赖于预选的验证者按时履职。

在比特币的世界观里,没有任何参与者是不可或缺的。在 Solana 的世界观里,预选的领导者是系统运转的必要条件。

这两种哲学的分歧,不是“哪种更好“的偏好问题。它们导向根本不同的系统属性:

一种系统的安全性来自物理世界的能量消耗——不受链上任何规则的管辖,不可被任何多数派投票推翻。

另一种系统的安全性来自内部代币的质押——如果足够多的质押者串通,规则本身就可以被修改。

一种系统在创建者消失后仍然可以永远运行——就像中本聪在 2011 年消失后比特币依然运转至今。

另一种系统在基金会停止运作的那一天,就面临着无法从下一次宕机中恢复的风险。

分布式系统的分类

让我们把视角拉高,看看 Solana 在分布式系统的谱系中处于什么位置。

在计算机科学中,“分布式系统“是一个宽泛的概念。任何由多台计算机协作完成任务的系统都是分布式系统。Google 的搜索引擎是分布式系统。亚马逊的云服务是分布式系统。你公司的内部数据库集群也可能是分布式系统。

分布式系统之间的差异,不在于“是否分布式“,而在于对参与者的假设

传统的 BFT(拜占庭容错)系统——比如 PBFT——假设参与者集合是已知的、固定的。你需要事先确定有哪些节点参与共识,然后在这些节点之间运行投票协议。如果其中不超过三分之一的节点是恶意的,系统就能正确运行。

以太坊的 PoS 系统也假设参与者集合是已知的——验证者通过质押 ETH 来注册身份,系统知道有哪些验证者,并按权重分配出块权。

Solana 同样如此——验证者是已知实体,出块者按时间表预定,安全性依赖于三分之二质押多数的诚实假设。

比特币的 PoW 系统做了一个完全不同的假设:参与者集合是未知的、不断变化的。任何人可以随时开始挖矿,任何人可以随时停止。网络不需要知道有多少矿工、他们是谁、他们在哪里。系统的安全性不依赖于特定参与者的诚实,而依赖于一个经济学事实:诚实挖矿比作弊更赚钱。

PBFT 等传统 BFT以太坊 PoSSolana比特币 PoW
参与者已知已知已知任何人
出块者预定预定预定竞争产生
外部能耗大量
宕机恢复人工协调社会共识基金会协调自动调整

前三列之间的差异是程度上的——参与门槛的高低、质押机制的细节、治理结构的形式。

它们与第四列之间的差异是性质上的

比特币和前三者之间,存在一道不可逾越的鸿沟。Solana 在协议层是无许可的——任何人可以启动一个验证者节点加入主网。但有效参与共识的经济门槛极高,且活跃验证者集合是已知的、可枚举的。在比特币中,排序权通过消耗物理世界的能量来争夺——代价是外部的、不可逆的、不受链上规则管辖的。在 Solana(以及所有 PoS 系统)中,排序权通过质押内部代币来获得——代价是内部的、可逆的、受链上规则管辖的。

这不是程度的差异,是类别的差异。

Solana 是一个高性能的分布式数据库。它有出色的工程实现,有精巧的时钟机制,有令人印象深刻的吞吐量数字。但给分布式数据库加上一个代币,不会把它变成区块链——正如给一辆出租车加上一个计价器,不会把它变成一辆自动驾驶汽车。关键的区别不在于装备,而在于是否还需要一个司机。

真正的问题

整个 Part 1 的旅程走到了这里,一个更大的图景已经浮现。

第一章,我们看到了行业的碎片化——数百条链、数十种协议、无数座桥,用户在转一笔 USDT 时需要先搞清楚网络拓扑。这是多链世界的必然结果。

然后我们看到了 Layer 2 的虚假承诺、跨链桥的安全噩梦、PoS 系统的信任回归。每一个“解决方案“都制造了新的问题。每一次“创新“都在离中本聪的初衷越走越远。

而在本章,我们看到了一个最具代表性的案例:一个被誉为“区块链未来“的项目,在剥开所有的市场叙事之后,其核心架构竟然是一个需要基金会在 Discord 上协调重启的分布式数据库。

所有这些弯路,有一个共同的根源:它们都在试图用中心化的方法来解决去中心化的问题。

多链是因为单链不够用——但为什么不够用?因为以太坊的设计限制了吞吐量。为什么不直接扩大吞吐量?因为以太坊社区选择了 PoS 和分片的路径,而不是在 PoW 框架下的工程优化。Layer 2 是因为 Layer 1 太慢——但 Layer 2 引入了新的信任假设。跨链桥是因为资产被困在不同的链上——但桥本身就是一个可被攻击的信任中心。PoS 降低了能耗——但同时移除了安全机制。Solana 提升了 TPS——但代价是回归了中心化的架构。

一条弯路通向下一条弯路。每一个补丁都在创造下一个需要被补丁的漏洞。

问题不在于这些项目的工程师不够聪明——他们中的很多人极具才华。问题在于方向。当你走上了一条错误的路,走得越快,离目的地越远。


我们已经用了五章的篇幅,走遍了这个行业最主要的弯路。我们看到了碎片化的世界、断裂的桥梁、被稀释的共识、以及被伪装成区块链的分布式数据库。

这些弯路的共同之处在于:它们都偏离了一个原点。

那个原点是一篇九页的论文,发表于 2008 年 10 月 31 日,标题是《比特币:一种点对点的电子现金系统》。

现在,让我们回到源头,看看比特币到底是什么。