以太坊开发者需要知道的四项安全性原则,以及一些基本权衡。
尽管区块链行业的发展日趋成熟,但是智能合约的开发仍是一个相对较新的领域。因此,为了应对新的漏洞和安全危机,以及满足开发新的最佳实践的需要,我们应该不断完善安全性方面的问题。学习最佳实践只是智能合约开发者在安全性方面踏出的第一步。
智能合约编程需要一种不同于传统的工程思维。智能合约失败的代价很高,更新迭代需要较大工程量,这使得它在某些方面更类似于硬件编程或金融服务编程,而不是web或者移动端开发。因此,仅仅防御已知的风险是远远不够的,还需要掌握新的开发理念。
准备应急措施
任何重要的合约都会出现故障。因此,开发者必须做好充足的准备,以便及时应对漏洞。
红杉资本合伙人Divya Gupta即将离职,任职期间负责加密货币和AI领域投资:金色财经报道,红杉资本合伙人Divya Gupta即将从该公司离职,Gupta在红杉资本从事加密货币和人工智能的种子期和早期投资,并在该公司工作了不到一年。
此前红杉资本就投资FTX的1.5亿美元损失向投资者致歉,不过红杉资本的一位发言人表示,他没有参与FTX的投资。消息称,FTX的内爆可能促使最活跃的投资者重新评估他们的加密策略。(The Information)[2022/12/7 21:27:28]
出现故障时暂停合约?(“断路器”)。
管理风险资金的数量?(限制流量,最大化利用率)。
准备有效的升级路径以修复和改进bug。
欧洲央行管委霍尔茨曼:对10月份来说,加息75个基点是“不错的数字”:9月28日消息,欧洲央行管委霍尔茨曼表示,下周欧洲央行官员将在塞浦路斯讨论量化紧缩问题。10月欧洲央行或加息75个基点,且不认为利率会在2023年下调。(金十)[2022/9/28 22:37:28]
防患未然
最好是在完整的产品发布之前发现bug。
全面测试合约,并在发现新的攻击向量时添加相应测试。
alpha测试网版本发布之后,提供bug赏金。
分阶段推出,每个阶段更新功能并添加新测试。
保持智能合约的简洁性
复杂性会提高出现故障的概率。
确保合约逻辑简单。
微众银行副行长兼首席信息官马智涛:区块链可有效促进数据要素流动,助力大湾区一体化融合发展:7月20日消息,中国(深圳)综合开发研究院发布《数“链”大湾区—区块链助力粤港澳大湾区一体化发展报告(2022)》。报告提出,以区块链为代表的数字技术在破解粤港澳大湾区制度差异坚冰、支撑实体经济跨越和赋能社会治理创新等方面能够发挥重要作用,可有力助推粤港澳大湾区一体化发展步入2.0新时代。
微众银行副行长兼首席信息官马智涛在会上表示,粤港澳大湾区融合发展面临着制度性差异、缺乏数字基础设施等核心挑战。区块链,尤其是联盟链,是技术领域公认的传递信任的机器。基于区块链技术以及以个人为主导的分布式数据传输协议,可以有效促进数据要素的流动,助力大湾区一体化融合发展。[2022/7/20 2:26:23]
模块化代码以使合约和函数保持较小。
Crypto.Com CEO澄清谣言:平台未实施提款限制,也未开展存款推广活动:7月6日消息,Crypto.Com首席执行官Kris Marszalek在推特上针对有关该交易所的最新谣言澄清道,Crypto.Com没有实施提款限制,也没有开展关于存款的额外推广活动。
有传言称,这家位于新加坡的交易所改变了其提款政策,并推出了“特别存款推广”,对此,Marszalek称这两种说法都属于FUD,是“虚假的标题党”。
他进一步表示,该公司“目前状况良好”,并声称它可能是今年全球最大的三家加密货币交易所之一。Marszalek透露,在市场低迷的情况下,该公司选择了“优化单位经济”。在去年的大规模扩张之后,该交易所实现了创纪录的收入,目前可以应对收入和交易活动的大幅下降。注:所谓的“优化单位经济”可能指的是Marszalek早些时候宣布的裁员5%(约260名员工)。(Crypto Potato)[2022/7/6 1:54:37]
请尽可能使用既有工具或代码?(例如不要使用自己的随机数生成器)。
在保证清晰度的前提下再考虑性能。
只在系统中需要去中心化的部分使用区块链技术。
保持更新
跟进新的安全性措施。
检查智能合约,以最快的速度定位新漏洞。
尽快升级到任何工具或库的最新版本。
采用可能有效的保障安全性的新技术。
了解EVM的特性
尽管开发者对以太坊编程较熟悉,但仍需要注意一些陷阱。
要特别小心外部合约调用,该过程可能会执行恶意代码并改变控制流(controlflow)。
要明白,开发者的公共函数是公开的,可能会被恶意调用,调用顺序也可能是任意的。任何人都可以查看智能合同中的隐私数据。
注意gas成本和区块gas限制。
注意,区块链上的时间戳是不精确的:矿工可以在几秒内影响交易执行的时间。
随机性是区块链上一个重要的特性,大多数产生随机数的方法在区块链上是具有博弈性的。
基本权衡因素
在评估智能合约系统的结构和安全性时,需要考虑多种基本的权衡。对于所有智能合约系统的普遍建议是,在这些权衡之间找到平衡点。
从软件工程的角度来看,理想的智能合约系统是模块化的,即重用代码而不是复制代码,以及支持可升级的组件。而从安全架构的角度来看,理想的智能合约系统可能同样会使用这种模式,尤其是面对更为复杂的智能合约系统。
然而,当安全性和软件工程最佳实践出现不一致时,也会有一些例外情况发生。而在每种情况下,可通过选择合约系统上的最佳性能组合来达到平衡,例如:
固定版本vs.可升级
整块化vs.模块化
复制vs.重用
固定版本vs.可升级
当多个资源?(包括此资源)?强调自身的延伸性时?(比如可中断的、可升级的或可修改的模式),那么就需要在延伸性和安全性之间找到一个平衡点。
延伸性增加了复杂性和潜在的受攻击性。如果智能合约系统在预先规定的有限时间内能够完成的功能非常有限,那么这时简洁性比复杂性要有效得多,例如,无治理的限时代币发售合约系统。
整块化vs.模块化
独立的整块化合约允许信息在本地识别和读取。虽然整块化合约一般不被重视,但对于数据和流的极端本地化存在争议,例如代码审计的效率优化。
与本文考虑的其他因素一样,在简单的短期合约中,安全性最佳实践趋向于与软件工程最佳实践相悖;而在更复杂的永久合约系统中,两者趋于相一致。
复制vs.重用
从软件工程的角度来看,智能合约系统希望能够在需要时最大化重用功能。在Solidity语言中,有许多重用合约代码的方法。实现代码重用的最安全的方式通常是:使用自己之前经过验证和部署的合约。
如果之前部署的合约无法使用,开发者通常就需要依靠复制功能了。OpenZeppelin的Solidity库尝试提供一些模式,使得安全代码可以在无需复制的情况下被重用。任何合约安全分析都必须将目标智能合约系统中还没有与风险资金建立相当信任级别的重用代码包含在内。
现如今,在以太坊上创建应用软件无疑是最令软件工程师激动的前沿领域,但这需要持续不断的威胁建模?(threatmodeling)、安全审计,还需要做好周全计划以应对故障发生。
原文链接:https://media.consensys.net/the-smart-contract-security-mindset-a09f5f8f5f4f
来源|?ConsenSysMedia
技术应当在多种场景下长时间地运行来检验可靠性。随着我国将区块链上升为国家战略和纳入“新基建”,各行各业都在对区块链技术展开研究,国内腾讯、阿里巴巴、百度等大型科技企业都在研发自己的区块链底层框架.
1900/1/1 0:00:00尊敬的BiONE用户:LMD将于2020年8月4日16:16(UTC8)开启充提币功能,8月5日16:16,LMD/USDT交易对正式开放交易,敬请关注.
1900/1/1 0:00:00币汐柔:8.1比特币和以太坊逆流而上不断突破新高晚间建议多单为主市场不能改变,但是交易可以,看待趋势的眼光,在很大程度上决定了交易会有怎样的走向,优秀的交易者并非与生俱来带着光环.
1900/1/1 0:00:00:大饼在昨日白盘一直都属于一个震荡上行的趋势,每迎接一次上涨都价格都会进行一次回调,但回调的力度都并不是很大,三少昨日也是抓到几波机会给到大家精准策略,直到晚间九点左右.
1900/1/1 0:00:00人生总是有得有失的,岂能尽善尽美,别让生活的压力挤走快乐,真正的痛苦,没有人能与你分担。你只能把它从一个肩,换到你的另一个肩。生活就像一架钢琴:白键是快乐,黑键是悲伤.
1900/1/1 0:00:00随着Filecoin热度越来越高,越来越多的人开始关注到IPFS/Filecoin这个领域,但有一个问题随之而来:IPFS/Filecoin合法吗?相信很多小伙伴在了解IPFS的时候都有看到过:.
1900/1/1 0:00:00