问题修复
审查智能合约项目是否符合 Trail of Bits…
适用于智能合约项目(尤其 Solidity)的开发最佳实践审查、架构与可升级性/delegatecall proxy 评估,以及测试策略改进建议。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
审查智能合约项目是否符合 Trail o通用
解决思路
- 使用 Building Secure Contracts - Development Guidelines 作为评估框架。
- 系统分析代码库,并提供基于 Trail of Bits 开发指南的指导。
- 生成文档和规范:提供 plain English 描述、架构图和代码文档。
- 优化 on-chain/off-chain 架构(仅当适用)。
- 审查可升级性模式(如果项目有升级)。
- 检查 delegatecall/proxy 实现(如果存在)。
- 评估实现质量(函数、继承、事件)。
- 识别常见陷阱。
- 审查依赖。
- 评估测试套件并提出改进。
- Phase 1 Discovery & Context:探查代码库以理解项目结构和目标平台。
- Phase 1:识别合约/模块文件及其用途。
- Phase 1:查找现有文档。
- Phase 1:识别架构模式(proxies、upgrades 等)。
- Phase 1:检查测试设置。
- Phase 1:识别依赖。
- Phase 2 Documentation Generation:创建纯英文系统描述。
- Phase 2:生成架构图(Solidity 使用 Slither printers)。
- Phase 2:给出代码文档建议(Solidity 使用 NatSpec)。
- Phase 3 Architecture Analysis:分析 on-chain vs off-chain 组件分布(如适用)。
- Phase 3:分析可升级性方法(如适用)。
- Phase 3:分析 delegatecall proxy 模式(如存在)。
- Phase 4 Implementation Review:评估函数组合和清晰度。
- Phase 4:评估继承结构。
- Phase 4:评估事件记录实践。
- Phase 4:评估常见陷阱存在情况。
- Phase 4:评估依赖质量。
- Phase 4:评估测试覆盖和技术。
- Phase 5 Recommendations:提供优先级改进建议。
- Phase 5:提供最佳实践指导。
- Phase 5:提供可操作下一步。
- Assessment Area 1 Documentation & Specifications:检查纯英文系统描述。
- Assessment Area 1:检查架构图。
- Assessment Area 1:检查 NatSpec 完整性(Solidity)。
- Assessment Area 1:识别文档缺口。
- Assessment Area 2 On-Chain vs Off-Chain Computation:分析复杂度。
- Assessment Area 2:识别 gas 优化机会。
- Assessment Area 2:检查 verification vs computation 模式。
- Assessment Area 3 Upgradeability:权衡 migration vs upgradeability。
- Assessment Area 3:检查数据分离模式。
- Assessment Area 3:检查升级流程文档。
- Assessment Area 4 Delegatecall Proxy Pattern:检查存储布局一致性。
- Assessment Area 4:检查初始化模式。
- Assessment Area 4:检查函数遮蔽风险。
- Assessment Area 4:运行 Slither 可升级性检查。
- Assessment Area 5 Function Composition:评估函数大小和清晰度。
- Assessment Area 5:评估逻辑分组。
- Assessment Area 5:评估模块化。
- Assessment Area 6 Inheritance:评估层级深度/宽度。
- Assessment Area 6:识别 diamond problem 风险。
- Assessment Area 6:进行继承可视化。
- Assessment Area 7 Events:检查关键操作覆盖。
- Assessment Area 7:检查事件命名一致性。
- Assessment Area 7:检查 indexed 参数。
- Assessment Area 8 Common Pitfalls:检查重入模式。
- Assessment Area 8:检查整数溢出/下溢。
- Assessment Area 8:检查访问控制问题。
- Assessment Area 8:检查平台特定漏洞。
- Assessment Area 9 Dependencies:评估库质量。
- Assessment Area 9:管理版本。
- Assessment Area 9:使用依赖管理器。
- Assessment Area 9:检测复制代码。
- Assessment Area 10 Testing & Verification:分析覆盖率。
- Assessment Area 10:使用 fuzzing 技术。
- Assessment Area 10:使用 formal verification。
- Assessment Area 10:集成 CI/CD。
- Assessment Area 11 Platform-Specific Guidance:给出 Solidity 版本建议。
- Assessment Area 11:检查编译器警告。
- Assessment Area 11:检查 inline assembly 警告。
- Assessment Area 11:使用平台特定工具。
- 需要详细标准、最佳实践和具体检查时,查阅 ASSESSMENT_AREAS.md。
- 输出系统文档:纯英文描述。
- 输出系统文档:架构图。
- 输出系统文档:文档缺口。
- 输出架构分析:on-chain/off-chain 评估。
- 输出架构分析:可升级性审查。
- 输出架构分析:proxy 模式安全审查。
- 输出实现审查:函数组合分析。
- 输出实现审查:继承评估。
- 输出实现审查:事件覆盖。
- 输出实现审查:陷阱识别。
- 输出实现审查:依赖评估。
- 输出实现审查:测试分析。
- 输出优先级建议:CRITICAL(立即处理)。
- 输出优先级建议:HIGH(部署前处理)。
- 输出优先级建议:MEDIUM(生产质量处理)。
- 输出优先级建议:LOW(有更好)。
- 输出总体评估和 path to production。
- 需要完整示例分析报告时,查阅 EXAMPLE_REPORT.md。
- 需要各交付物模板和示例时,查阅 DELIVERABLES.md。
- Assessment Process 1:识别所有合约/模块文件。
- Assessment Process 1:查找现有文档。
- Assessment Process 1:定位测试文件。
- Assessment Process 1:检查 proxies/upgrades。
- Assessment Process 1:识别依赖。
- Assessment Process 2:创建纯英文系统描述。
- Assessment Process 2:生成架构图(如果工具可用)。
- Assessment Process 2:识别文档缺口。
- Assessment Process 3:评估 on-chain/off-chain 分布(如适用)。
- Assessment Process 3:审查可升级性方法(如适用)。
- Assessment Process 3:审计 proxy 模式(如存在)。
- Assessment Process 4:分析函数、继承、事件。
- Assessment Process 4:检查常见陷阱。
- Assessment Process 4:评估依赖。
- Assessment Process 4:评估测试。
- Assessment Process 5:呈现发现时带文件引用。
- Assessment Process 5:询问关于设计决策的澄清问题。
- Assessment Process 5:建议优先级改进。
- Assessment Process 5:提供可操作下一步。
- 不要因“系统简单,描述覆盖一切”而跳过:纯英文描述会遗漏安全关键细节;完成全部 5 阶段:文档、架构、实现、依赖、建议。
- 不要因“未检测到升级,跳过可升级性部分”:可升级性可能是隐式的(ownable 模式、delegatecall);在宣布 N/A 前搜索 proxy 模式、delegatecall、存储冲突。
- 不要未经核验就说“不适用”:过早缩减范围会遗漏漏洞;在跳过任何指南部分前,用显式代码库搜索核验。
- 不要因“架构简单,无需分析”而跳过:显而易见的架构也有微妙信任边界;分析 on-chain/off-chain 分布、访问控制流、外部依赖。
- 不要因“常见陷阱不适用此代码库”而跳过:每个代码库都有常见陷阱;用 grep/code search 系统检查所有指南陷阱。
- 不要因“测试存在,测试指南已满足”而跳过:测试存在 ≠ 测试质量;检查覆盖率、property-based tests、integration tests、失败案例。
- 不要只给通用最佳实践:通用建议不可操作;提供项目特定发现,带 file:line 引用。
- 不要以为“用户从发现中知道如何改进”:未排优先级的发现 = 无行动计划;生成带具体下一步的优先级改进路线图。
- 只分析相关部分,不臆想未出现的 upgrades。
- 适应平台(Solidity、Rust、Cairo 等)。
- 使用可用工具(Slither 等),但不可用时也能工作。
- 为所有发现提供 file references 和 line numbers。
- 对无法从代码推断的设计决策提问。
适用边界 · 注意事项
- 不适用于非智能合约/非区块链项目。
- 不能替代正式安全审计或形式化验证本身,只提供按指南的评估与建议。
- 若无法访问代码库、项目目标、现有文档或部署计划,无法完成项目特定分析。