尽管区块链行业的发展日趋成熟,但是智能合约的开发仍是一个相对较新的领域。因此,为了应对新的漏洞和安全危机,以及满足开发新的最佳实践的需要,ALOKEX不断完善安全性方面的问题。学习最佳实践只是ALOKEX智能合约开发者在安全性方面踏出的第一步。 智能合约编程需要一种不同于传统的工程思维。智能合约失败的代价很高,更新迭代需要较大工程量,这使得它在某些方面更类似于硬件编程或金融服务编程,而不是web或者移动端开发。因此,仅仅防御已知的风险是远远不够的,还需要掌握新的开发理念。ALOKEX总结以下九大措施。 准备应急措施 任何重要的合约都会出现故障。因此,开发者必须做好充足的准备,以便及时应对漏洞。 出现故障时暂停合约 (“断路器”)。 管理风险资金的数量 (限制流量,最大化利用率)。 准备有效的升级路径以修复和改进bug。 防患未然 最好是在完整的产品发布之前发现bug。 全面测试合约,并在发现新的攻击向量时添加相应测试。 alpha测试网版本发布之后,提供bug赏金。 分阶段推出,每个阶段更新功能并添加新测试。 保持智能合约的简洁性 复杂性会提高出现故障的概率。 确保合约逻辑简单。 模块化代码以使合约和函数保持较小。 请尽可能使用既有工具或代码 (例如不要使用自己的随机数生成器)。 在保证清晰度的前提下再考虑性能。 只在系统中需要去中心化的部分使用区块链技术。 保持更新 跟进新的安全性措施。 检查智能合约,以最快的速度定位新漏洞。 尽快升级到任何工具或库的最新版本。 采用可能有效的保障安全性的新技术。 了解EVM的特性 尽管开发者对以太坊编程较熟悉,但仍需要注意一些陷阱。 要特别小心外部合约调用,该过程可能会执行恶意代码并改变控制流 (control flow)。 要明白,开发者的公共函数是公开的,可能会被恶意调用,调用顺序也可能是任意的。任何人都可以查看智能合同中的隐私数据。 注意gas成本和区块gas限制。 注意,区块链上的时间戳是不精确的:矿工可以在几秒内影响交易执行的时间。 随机性是区块链上一个重要的特性,大多数产生随机数的方法在区块链上是具有博弈性的。 基本权衡因素 在评估智能合约系统的结构和安全性时,需要考虑多种基本的权衡。对于所有智能合约系统的普遍建议是,在这些权衡之间找到平衡点。 从软件工程的角度来看,理想的智能合约系统是模块化的,即重用代码而不是复制代码,以及支持可升级的组件。而从安全架构的角度来看,理想的智能合约系统可能同样会使用这种模式,尤其是面对更为复杂的智能合约系统。 然而,当安全性和软件工程最佳实践出现不一致时,也会有一些例外情况发生。而在每种情况下,可通过选择合约系统上的最佳性能组合来达到平衡,例如: 固定版本vs.可升级 整块化vs.模块化 复制vs.重用 固定版本vs.可升级 当多个资源 (包括此资源) 强调自身的延伸性时 (比如可中断的、可升级的或可修改的模式),那么就需要在延伸性和安全性之间找到一个平衡点。 延伸性增加了复杂性和潜在的受攻击性。如果智能合约系统在预先规定的有限时间内能够完成的功能非常有限,那么这时简洁性比复杂性要有效得多,例如,无治理的限时代币发售合约系统。 整块化vs.模块化 独立的整块化合约允许信息在本地识别和读取。虽然整块化合约一般不被重视,但对于数据和流的极端本地化存在争议,例如代码审计的效率优化。 与本文考虑的其他因素一样,在简单的短期合约中,安全性最佳实践趋向于与软件工程最佳实践相悖;而在更复杂的永久合约系统中,两者趋于相一致。 —- 编译者/作者:币圈吴铭涛 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
ALOKEX数字交易所崛起和创新实践保障用户安全巩固用户财产透明式操作让用户更
2020-08-29 币圈吴铭涛 来源:区块链网络
- 上一篇:币圈的韭菜真的理解顺势和趋势吗
- 下一篇:币圈葛净:8.29以太坊下午行情分析及策略
LOADING...
相关阅读:
- 蜂巢贸易伙伴与蜂巢创造新的社会体验2020-08-29
- Emurgo,Ergo为Cardano的Goguen时代推出了Oracle Core2020-08-29
- 不想错过致富的机会你就来ALOKEX.ALOKEX会全心全意守护你带你走向财富道2020-08-29
- 九月大事件2020-08-29
- 区块新看点|Anyswap、Uniswap或Trustswap:哪种交换协议最适合DeFi用户?2020-08-29