测试网养不起工作量证明:EIP-225 与 Clique 权威证明的账 图 1
测试网养不起工作量证明:EIP-225 与 Clique 权威证明的账 · 图 1

一句话的共识:签名者轮着说话

工作量证明的直觉是”谁的算力多谁说了算”,权威证明的直觉恰好相反:一组彼此认识的地址轮流对区块签名,谁当班谁出块,其余人只认当班者的章。EIP-225 在 2017 年 3 月给出的 Clique 协议,就是把这套直觉压进以太坊既有区块头结构的最小实现——不出新链格式、不改虚拟机,任何客户端嵌进一套验证规则就能跑。

直接导火索写在提案的动机里:以太坊第一个官方测试网 Morden 退役后,2017 年初重启的 Ropsten 沿用工作量证明,结果被恶意参与者利用低难度做实验——攻击者慢慢把区块 gas 上限从约 470 万吹到 90 亿,塞进巨型交易让整个网络瘫痪,期间还反复触发长重组。问题被总结得很干脆:没有价值支撑的 PoW 网络,安全性等于肯投入的算力,而攻击算力在这张网上几乎免费。重建一百次测试网都不解决问题。

当班、顶班与分数

Clique 把授权签名者排成有序名单,每个高度按名单顺序指定一人当班,BLOCK_PERIOD(建议十五秒)到点即可出块。轮到的人出的块算分记 2,没轮到但出于故障切换提前出的块算分记 1——正常链上分数会自然堆向当班者的分支。签名本身藏在 extraData 字段末尾的 65 字节里,用普通 secp256k1 签名就能从区块头恢复出签名者地址,协议复用这个字段而不是发明新机制。

换人不靠治理会,靠区块头投票

签名者名单怎么增删是 PoA 系统最容易内讧的地方。Clique 的答案是把投票做进区块头:miner 字段平时填零,想投票时填目标地址,nonce 字段填全 F 表示赞成加入、全 0 表示赞成剔除;一个检查点周期(建议三万个区块,称为 epoch)内同一目标攒够严格多数,名单在下个检查点生效,名单正文写进检查点区块的 extraData 中段、按字节升序排列,且检查点区块里投票字段必须清零。

这套设计把”谁有资格改规则”的争议压缩成”当前名单里大多数人是否同意”,代价也很诚实:它只在名单内部形成多数,名单本身怎么来的不在协议里——那是创世配置和链下治理的事。

一笔算术:九个签名者的节奏

拿建议参数推一遍:名单上有九个签名者时,SIGNER_LIMIT 等于九除以二取整再加一,即五——每个签名者在连续九个区块的窗口里最多签一个;BLOCK_PERIOD 按建议取十五秒,与旧工作量证明主网的目标出块间隔同量级,这正是提案选这个数目的原因——让测试网的节奏尽量贴近主网。这个公式的用意很直白:任何单一签名者都攒不出连续统治链的能力,哪怕他从不掉线;想长期不出块地”消失”,也只让链慢不乱。反过来看安全边界:要制造一条与诚实多数对抗的分叉链,攻击者需要同时掌握名单里过半的密钥,或者让多数签名者集体同谋——两种情况下”攻击成本”都从买电变成了钓人,这既是 PoA 的弱点,也是它被限定在许可环境的理由。

为什么测试网用它是划算的

PoA 的账很简单:安全假设从”攻击者买不起算力”换成”大多数签名者不作恶、密钥不外泄”,而测试网的环境恰好让这条假设便宜——签名者是少数几台公开服务器,密钥轮换可控,作恶动机稀薄。换到的收益是网络对刷垃圾交易和重组攻击免疫:你没法用算力投票,攻击面变成偷几个签名私钥,成本完全不同量级。这也是今天很多联盟链和测试环境仍沿用 Clique 谱系方案的原因。

与主网的关系

主网从未使用 Clique;它解决的是”无价值链上 PoW 不安全”这一特定问题。读资料时注意 EIP-225 状态是 Final 的标准轨提案、类别核心,但不代表主网激活——PoA 系方案的主场在测试网和专用链。本文只讨论协议机制,不构成任何投资建议。