AleoNet/snarkOS 验证节点广播异常费用交易导致网络阻塞问题分析
2025-06-13 10:15:23作者:邵娇湘
在区块链网络 AleoNet 的共识实现 snarkOS 中,发现了一个可能导致整个网络停止运行的严重问题。该问题允许异常验证节点通过广播包含特殊费用交易(Fee Transaction)的证书,使网络陷入无法继续出块的停滞状态。
问题原理
在 snarkOS 的共识机制中,验证节点需要对接收到的交易进行"推测执行"(speculate),以验证交易的有效性。然而,系统在设计时特别规定不对费用交易(Fee Transaction)进行推测执行,这原本是为了防止某些特殊情况下的问题。
问题出在验证节点对批量提议(BatchPropose)的验证过程中。虽然单个节点不会主动创建包含费用交易的批量提议,但当异常节点构造并广播这样的批量提议时,其他正常节点在签名确认前没有检查批量提议中是否包含费用交易。一旦这样的批量提议获得足够签名形成证书并被提交到链上,整个网络的区块执行流程就会被阻塞。
技术细节
在 snarkOS 的代码实现中,关键问题出现在以下方面:
- 交易推测执行模块明确拒绝处理费用交易,直接返回错误
- 批量提议验证阶段缺少对费用交易的检查
- 共识机制允许包含费用交易的证书被提交
当系统尝试执行包含费用交易的区块时,由于无法完成推测执行阶段,整个区块处理流程会被中止,导致网络无法继续产生新的区块。
问题影响
该问题可能造成以下严重后果:
- 单个异常节点即可发动干扰,影响整个网络的可用性
- 干扰成功后需要人工干预才能恢复网络运行
- 可能被利用进行不当行为
解决方案
开发团队提出了多个修复方案,最终确定的解决方案是在验证节点对批量提议进行签名前,增加对费用交易的检查。具体措施包括:
- 在批量提议验证阶段明确检查是否包含费用交易
- 拒绝为包含费用交易的批量提议签名
- 确保只有合规的交易类型能够进入共识流程
经验教训
这一事件为区块链共识机制的设计提供了重要启示:
- 必须对所有可能进入共识流程的交易类型进行严格验证
- 防御性编程在分布式系统中尤为重要
- 边界条件和异常情况的处理需要特别关注
- 测试网络应尽可能模拟真实场景
该问题的发现和修复过程展示了开源社区协作的价值,也提醒区块链项目需要持续加强共识层的安全性审计。
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0231
GLM-5.2智谱开源 GLM-5.2,这是针对长文本任务的最新旗舰模型。相较于前代产品 GLM-5.1,它在长文本任务处理能力上实现了显著飞跃,并且首次在稳定的 100 万 token 上下文中提供这一能力。Jinja00
JoyAI-VL-Interaction-Preview京东开源首个开源、视觉驱动的实时交互模型——它能实时监控视频流,并自主决定何时发言、保持沉默或委托任务。Jinja00
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0151
kornia🐍 空间人工智能的几何计算机视觉库Python02
PaddleParallel Distributed Deep Learning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)C++02
项目优选
收起
暂无描述
Dockerfile
782
5.11 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
892
2.06 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
471
473
Ascend Extension for PyTorch
Python
764
972
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
710
1.43 K
deepin linux kernel
C
32
16
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
432
151
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.11 K
1.15 K
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
2.27 K
681
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.04 K
272