长篇干货|以太坊智能合约 —— ***安全开发指南(附代码) (11)

奖励的价值将根据影响的严重程度而变化。 奖励轻微的“无害”错误从0.05 BTC开始。 主要错误,例如导致协商一致的问题,将获得最多5个BTC的奖励。 在非常严重的漏洞的情况下,更高的奖励是可能的(高达25 BTC)。

6 安全相关的文件和程序

当发布涉及大量资金或重要任务的合约时,必须包含适当的文档。有关安全性的文档包括:

规范和发布计划

规格说明文档,图表,状态机,模型和其他文档,帮助审核人员和社区了解系统打算做什么。

许多bug从规格中就能找到,而且它们的修复成本最低。

发布计划所涉及到的参考前文列出的详细信息和完成日期。

状态

当前代码被部署到哪里

编译器版本,使用的标志以及用于验证部署的字节码的步骤与源代码匹配

将用于不同阶段的编译器版本和标志

部署代码的当前状态(包括未决问题,性能统计信息等)

已知问题

合约的主要风险。例如, 你可能会丢掉所有的钱,黑客可能会通过投票支持某些结果

所有已知的错误/限制

潜在的攻击和解决办法

潜在的利益冲突(例如,筹集的Ether将纳入自己的腰包,像Slock.it与DAO一样)

历史记录

测试(包括使用统计,发现的错误,测试时间)

已审核代码的人员(及其关键反馈)

程序

发现错误的行动计划(例如紧急情况选项,公众通知程序等)

如果出现问题,就可以降级程序(例如,资金拥有者在被攻击之前的剩余资金占现在剩余资金的比例)

负责任的披露政策(例如,在哪里报告发现的bug,任何bug赏金计划的规则)

在失败的情况下的追索权(例如,保险,罚款基金,无追索权)

联系信息

发现问题后和谁联系

程序员姓名和/或其他重要参与方的名称

可以询问问题的论坛/聊天室

7 安全工具

Oyente - 根据这篇文章分析Ethereum代码以找到常见的漏洞。

(地址:https://github.com/melonproject/oyente

~loiluu/papers/oyente.pdf)

solidity-coverage - Solidity代码覆盖率测试

(地址:https://github.com/sc-forks/solidity-coverage)

Solgraph - 生成一个DOT图,显示了Solidity合约的功能控制流程,并highlight了潜在的安全漏洞。

(地址:https://github.com/raineorshine/solgraph)

8 Linters

Linters通过约束代码风格和排版来提高代码质量,使代码更容易阅读和查看。

Solium - 另一种Solidity linting。

(地址:https://github.com/duaraghav8/Solium)

Solint - 帮助你实施代码一致性约定来避免你合约中的错误的Solidity linting

(地址:https://github.com/SilentCicero/solint)

Solcheck - 用JS写的Solidity linter,(实现上)深受eslint的影响。

(地址:https://github.com/federicobond/solcheck)

9 将来的改进

编辑器安全警告:编辑器将很快能够实现醒常见的安全错误,而不仅仅是编译错误。 Solidity浏览器即将推出这些功能。

新的能够被编译成EVM字节码的函数式编程语言: 像Solidity这种函数式编程语言相比面向过程编程语言能够保证功能的不变性和编译时间检查。通过确定性行为来减少出现错误的风险。(更多相关信息请参阅: Curry-Howard 一致性和线性逻辑)

本文来源:GitHub

2 contributors:AlexXiong97、 tolak

本文翻译自:https://github.com/ConsenSys/smart-contract-best-practices。

为了使语句表达更加贴切,个别地方未按照原文逐字逐句翻译,如有出入请以原文为准。

以下是我们的社区介绍,欢迎各种合作、交流、学习:)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgxdjj.html