无进位乘法是二进制域证明栈中的核心运算。节点在启动时选择 x86-64 或 ARM64 实现,而域表示、见证布局与序列化证明保持不变。在参考笔记本上,AVX2+VPCLMUL 实现将 Poseidon2b 批量哈希加速 5.4 倍,并把含 2^24 个位置的实测证明时间从 34.9 秒降至 18.9 秒。
为何二进制域内核主导性能
ParanO(1)d 的证明机制工作在含有 2128 个元素的二元扩域 GF(2128) 上。Poseidon2b 是证明栈与工作量证明哈希采用的密码学置换,也实现在同一个域上。加法是 XOR;乘法是无进位多项式乘法,再进行约减。因此,决定证明者、验证者和工作量证明哈希吞吐量的关键原语,是硬件无进位乘法,而不是普通整数乘法。
架构约束比“让快机器更快”严格得多。不同机器上的证明形状、见证数据布局和交互记录字节必须完全一致。面向特定指令集架构(ISA)的后端可以改变执行方式,却绝不能改变被证明的断言。
统一布局,运行时分派
| 平台 | 基线 | 宽路径 | 通道模型 |
|---|---|---|---|
| x86-64 | SSE4.1 + PCLMULQDQ | AVX2 + VPCLMULQDQ | 两个打包域元素 |
| x86-64 | — | AVX-512 + VPCLMULQDQ | 四通道算术,更宽的批处理分块 |
| ARM64 | NEON + PMULL | 寄存器域批处理内核 | 每个 128 位向量承载一个域元素 |
发行版二进制在启动时检测宿主,并选择其支持的最宽实现。逻辑打包类型始终固定。AVX-512 处理相邻逻辑包,而不重新定义它们的含义,因此启用它不会改变证明或见证数据的序列化。
让 Poseidon2b 全程留在寄存器中
如果每一轮都要在标量内存表示与向量寄存器之间往返,即使采用向量实现也会浪费时间。寄存器域内核让四个通道的置换状态在完整调度期间始终保留在向量寄存器中。平方使用专门的二进制域路径;乘法使用 VPCLMULQDQ 或 PMULL;轮常数和线性层也不离开所选表示。
7 月 9 日的 AVX2+VPCLMULQDQ 实现在开发笔记本上得到了两项相互关联的测量:
完整证明的提速低于孤立哈希基准,因为完整的证明生成流程还要组装见证数据、执行多项式承诺方案(PCS)运算和非哈希代数。这个差异很有价值:它指出下一处瓶颈,而不会把微基准包装成端到端结论。
在正确边界使用平坦基
代码采用平坦的 128 位多项式基表示,它与伽罗瓦/计数器模式(GCM)所使用的无进位域乘法兼容。塔式基则把同一个域写成一系列较小的嵌套扩域,适合证明代数中的部分运算。若每次标量运算都在这两种表示之间转换,指令集带来的优势就会消失。因此,多线性扩展(MLE)求值和 Poseidon2b 批处理让长时间运行的热点循环留在平坦基中,只在协议明确规定的边界转换表示。
无论使用哪个后端,域元素始终是同一个数学元素。运行时分派选择乘法与哈希的实现,而不是选择共识参数。
可移植,但不隐藏标量模式
正式节点需要能够承受证明工作负载的硬件支持。x86-64 要求 SSE4.1 与 PCLMULQDQ;ARM64 要求 NEON 与 PMULL。更宽的路径只是可选加速器。标量实现仍可作为参考并用于差分测试,但若正式节点在未提示的情况下退回标量实现,兼容性功能就会演变成活性故障。
这对虚拟机尤其重要。物理处理器可能支持 PCLMULQDQ,而虚拟机监控器暴露给客户机的通用 CPU 却不包含它。节点检查客户机可见的特性,并明确报告缺失指令,而不是进入意外缓慢的模式。
如何核验各后端
每条优化路径都会与规范标量语义比较。无论分块是否完整,批量摘要都必须与标量摘要相同;域乘法必须与参考约减一致;运行时选择也不得在特性门控通过前调用启用了 target_feature 的函数。
由此得到的设计具备三项实用性质:
- 证明字节可在不同机器之间移植;
- 验证者不信任矿工的优化结果,而是自行重算规范摘要;
- 新的 ISA 层级可以接入同一分派界面,而无需增加协议分支。
为何域选择经受住了实现检验
Frobenius 运算是二元域上线性的重复平方映射;它简化证明代数,无进位乘法则让同一个域在现代 CPU 上切实可用。5.4× 的内核结果之所以重要,是因为证明格式保持不变的同时,端到端性能也获得了可测量的提升。协议算术与机器算术在一种稳定表示上汇合。