欢迎致电:4000-6000-75 服务时间:9:00-18:00

互金范官方微博

weibo@互金范

互金范官方VIP群

QQ群:530737849

您的位置: 首页区块链以太坊智能合约安全最佳实践系列教程

以太坊智能合约安全最佳实践系列教程

2019-10-22 12:44:59  45
以太坊和区块链应用程序建设,是具有一定高度实验性的。因此,随着新的bug和安全风险的发现以及最新的实践开发,您应该期待区块链安全环境应有不断的变化。 因此,遵循本文档中的安全实践将会是您作为智能合约开发人员将要做的安全工作的开始。

智能合约编程需要的工程思维方式与您惯常的思维方式不同。 失败的代价可能很高,并且要做出修正非常困难,这使其在某种程度上与Web或移动开发相比,更类似于硬件编程或金融服务编程。因此,已知抵御漏洞还远远不够。相反,你更需要学习一种新的发展哲学:

为失败做准备

任何优秀的智能合约代码都会有错误。因此,您的代码必须能够优雅地响应bug和漏洞

· 出问题时暂停智能合约(“断路器circuit breaker”)
· 金额风险管理(限制利率,最大使用率)
· 为修复bug和改进提供有效的升级路径

谨慎发布

在正式发布完整版本之前,最好多遍检查代码。

· 彻底测试智能合约,并在发现新的攻击漏洞时再次进行测试。
· 从Alpha Testnet版本开始提供漏洞赏金。
· 分阶段推出,在每个阶段增加代码漏洞测试。

保持智能合约简单

复杂性增加了bug的可能性。

· 确保简单合约逻辑。
· 模块化代码以减少智能合约功能。
· 尽可能使用已知的编程的工具或代码(例如不要滚动自己的随机数生成器)。
· 尽可能保持智能合约的架构清晰。

保持版本更新

使用“安全通知”部分中列出的资源跟踪新的安全发展。

· 一旦发现任何新的bug,请检查您的智能合约。
· 尽快升级到工具或库的最新版本。
· 采用最新的安全技术。

清楚区块链功能

尽管您的许多编程经验都与以太坊编程相关,但仍有一些陷阱需要注意。

· 对于外部智能合约调用要格外小心,这可能会引发恶意代码或恶意更改控制流程。
· 清楚你的公共功能是对外开放的,可能会被恶意地以任意调用。任何人都可以查看智能合约中的私人数据。
· 牢记gas成本和区块链gas限制。
· 请注意,时间戳在区块链上是不精确的,矿工可以在几秒钟的时间内影响交易的执行时间。
· 随机性在区块链上并非无关紧要,大多数随机数生成方法在区块链上都是可改的。

基本的权衡:简单性与复杂性案例

在评估智能合约系统的结构和安全性时,需要考虑多方面因素。任何智能合约系统的一般建议是在这些基本权衡找到适当的平衡。

从软件工程角度出发,理想的智能合约系统是模块化的,可以重用代码而不是重复代码,并支持可升级组件。来自安全架构偏见的理想智能合约系统可能会共享这种思想,尤其是在更复杂的智能合约系统的情况下。

但是,在某些重要例外情况下,安全性和软件工程最佳实践可能会不一致。在每种情况下,都可以通过确定沿智能合约系统维度的最佳属性组合来获得适当的平衡,例如:

· 刚性与可升级
· 整体化与模块化
· 复制与重用

刚性与可升级

尽管包括该资源在内的多种资源都强调可延展性特征,例如可停止,可升级或可修改模式,但可延展性与安全性之间存在根本的权衡。

根据定义,可延展性模式会增加复杂性和潜在的攻击面。在智能合约系统在预定义的有限时间段内执行非常有限的功能集的情况下,例如在无治理的有限时间范围内的代币销售合约系统中,简单性在复杂性方面特别有效。

整体化与模块化

完整的独立智能合约使所有代码在本地都是可识别和可读的。尽管很少有人高度关注以整体形式存在的智能合约系统,但对于数据和流的极端局部性(例如在优化代码审查效率的情况下)存在争议。

与此处考虑的其他折衷方法一样,安全最佳实践趋向于从简单的短期智能合约中脱离软件工程最佳实践,而在更复杂的永久智能合约系统中趋向于软件工程最佳实践。

复制与重用

从软件工程的角度来看,智能合约系统希望在合理的情况下最大程度地提高重用率。在Solidity中有许多重用智能合约代码的方法。通常使用经过验证的,以前拥有的,已拥有的智能合约是实现代码重用的最安全方法。

如果没有自有的先前部署的智能合约,通常会依赖代码复制。诸如OpenZeppelin的Solidity Library之类的工作试图提供一种模式,以使安全代码可以重复使用而无需重复。任何智能合约安全分析都必须包括任何以前未建立过与目标智能合约系统中的风险资金相对应的信任级别的重用代码。

接下来半个月将是以太坊智能合约安全实操的课程。欢迎大家持续关注,同时区块链研究实验室官网将会提供以太坊solidity在线编程功能。

(文章来源:http://www.hujinfai.com/news/7857.html)

免责声明:本站系本网编辑或转载,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容!

相关阅读

  • 加密货币世界的无限战争,ASIC与反ASIC

    互金范区块链网讯:自比特币诞生之初,社区就一直在争论是否应对抗日益强大的挖矿硬件。在比特币的早期阶段,挖矿是通过CPU(大多数计算机中的标准处理单元)完成的,这...2019-10-31 12:10:40
    模式区块挖矿以太门罗
  • 浅谈资产跨链

    互金范区块链网讯:资产交换是加密世界的第一需求。也是行业发展的源动力。随着区块链浪潮席卷全球,持续影响人类社会商业文明。一方面带来了原生加密资产的持续爆发,另一...2019-11-06 14:07:32
    资产用户节点以太中心
  • Web3.0 宏观逻辑思辨

    互金范区块链网讯:「除了比特币,我们一无所有。」在区块链诞生的第十个年头,这是许多人的真实想法。实际上,一个技术诞生了十年还没有应用落地,是一个很常见的现象。信...2019-10-22 13:00:19
    互联网世界区块以太中心
  • Hodling VS DeFi:什么是投资的最佳姿势?

    互金范区块链网讯:写在前面:本文为对Compound、Uniswap Pools、TokenSets以及单纯持有以太坊和比特币的收益分析。本文作者为DeFi应用...2019-11-07 14:12:57
    收益价格以太策略回报率
  • 曾经的区块链十大天王项目,还剩几个?

    互金范区块链网讯:2017、2018 年 ICO 最火的时候,社群里曾广为流传一张名为「2018 十大天王级私募」的图片,上面罗列着以太坊杀手 Dfinity、...2019-10-21 13:19:22
    项目区块代币以太天王
  • 如果比特币有了智能合约......

    互金范区块链网讯:11 月 16 日,波卡生态技术流项目 ChainX 即将发布全球首个比特币智能合约平台。这将带来什么样的改变?比特币的智能合约可以做什么呢?...2019-11-07 14:01:48
    智能合约以太价值模型
  • 智能合约(in)安全性–数据越权访问( Broken Acc...

    互金范区块链网讯:本篇博客文章是该系列文章的第一篇,将讲述一些现实中智能合约的安全漏洞,它们是如何被利用的,产生了什么影响和相应的代码修复。本篇文章讲述的智能合...2019-10-29 14:15:15
    智能合约以太函数调用
  • 颠覆以太坊经济的 3 种抵押方式

    互金范区块链网讯:本文要点· 一项以太坊 2.0 背后经济模式的最新分析表明,验证节点一开始就有望获得年化 4.6 - 10.3% 的收益;· 运行以太坊 2....2019-10-29 13:38:45
    网络节点区块验证以太
  • 以太坊带来的有关去中心化应用程序的教训

    互金范区块链网讯:以太坊是公认的首个去中心化应用程序的区块链平台,在这方面,它无疑是先驱。然而,它在发展的鼎盛阶段遭遇了扩容难题,目前还在寻求解决之道。在达世币...2019-10-29 13:31:09
    交易区块以太中心应用程序
  • 区块链技术:智能合约

    互金范区块链网讯:比特币的起源区块链的历史起始于比特币,它是世界上第一个加密货币。它的创造者是一个被称为“中本聪”的神秘人。此人提出了一个愿景,就是创造一种完全...2019-10-29 12:21:47
    用户交易区块合约以太