NEAR 开发团队完成了一项堪称年度最令人印象深刻的工程操作:在主网运行期间,面对真实负载,他们直接替换了智能合约的执行引擎。整个过程对用户几乎毫无影响。这绝非普通升级——而是一次悄无声息的基础架构更迭。
为何必须如此?
多年来,NEAR 一直依赖基于 Wasmer 引擎分支构建的自研虚拟机 NearVM。据前核心网络开发者透露,这套"私有"编译器对项目而言无异于一笔"隐形税负"。每次 Rust 语言更新、每项新安全功能,都要由这个小团队独自承担。有一次,项目甚至因在漏洞发现前一天停止与原始 Wasmer 同步,意外避开了其关键安全缺陷。这种局面显然不可持续。
Wasmtime:行业标准护航安全
最终选择的是 Wasmtime——由 Bytecode Alliance 联盟维护的 WebAssembly 参考实现。这不仅是简单的"零件更换",更是转向由整个社区共同发展的标准。安全验证过程精准如外科手术:网络节点并行运行真实流量,通过新旧两套虚拟机逐一比对结果。手续费差异不足 0.002%,执行速度则提升约四倍。
禁忌方案与"减速炸弹"
核心工程难题不在执行环节,而在编译阶段。NEAR 网络中,合约部署需在仅 600 毫秒的区块时间内完成编译。问题在于,优化编译器没有编译时间上限。团队创建了一个 128KB 的测试合约,其编译耗时约 7 秒——足以错过区块窗口并拖慢整个网络。
看似简单的解决方案——设定编译时间限制——却成为禁忌。开发者解释称,不同验证节点的编译耗时各异。某个边缘合约可能被部分节点接受,却被其他节点拒绝。结果就是因编译器单一配置导致网络分裂。共识机制要求完全可预测性,连编译时间也不例外。
优雅解法:Winch 与编译分离
团队没有采用蛮力方案,而是展现了工程智慧。他们引入 Wasmtime 的单遍后端 Winch,并为其补充缺失功能。最终"最差编译情况"从 7.6 秒骤降至 36 毫秒。更巧妙的是,编译被剥离至独立处理器类型,与执行节点解耦。正如 Vadim 所言,链下工作赋予了"协议无法企及的奢侈空间"。
分析师结论:这次升级完美诠释了成熟基础设施应有的样貌。NEAR 不仅更换了引擎,更在不引人注目、不制造炒作的前提下,解决了安全与性能的根本性问题。对我而言,这标志着项目拥有高水准的工程文化——从长远看,这远比声势浩大的营销宣言更具价值。