攻击事件不足以使我们质疑 ERC777 代币标准的安全性,重要的是,我们必须了解使用创新技术的风险以及如何将风险降至最低。 推荐阅读:《链闻精选好文|连续三月遭受严酷考验的 DeFi 会更强吗?》 原文标题:《DeFi 攻击频发:ERC777 难辞其咎?》 DeFi 协议 Uniswap 及 dForce 于 4 月 18、19 日相继受到重入攻击,损失金额高达数千万美元。有惊无险的是,dForce 已追回被盗资产并归还用户。一时之间,矛头直指 ERC777 代币标准。然而,ERC777 本质上作为 ERC20 的扩展,目的是增加新功能从而提升用户体验。我们是否真的要因噎废食?DeFi 又应该如何突破安全瓶颈? 仅仅只是一个周末的时间,智能合约帐户被盗金额高达数千万美元。 Uniswap 的 imBTC 资金池遭到黑客攻击,导致价值 30 万的代币丢失。时隔不久,dForce 也遭到了类似的攻击,尽管大部分的失窃加密货币目前已被归还。这两起事件都是利用重入攻击向量漏洞发起攻击。 有人声称 ERC777 代币标准的某些函数存在漏洞是造成这两起攻击的原因。但是,重入攻击漏洞已司空见惯,尤其在 2016 年的 DAO 攻击发生期间名声大噪。因此实际上,攻击与 ERC777 代币标准本身无关。 重要的是,随着这个新兴行业的发展,我们必须要认识到各种协议的优点和缺点,鼓励开放协作与争议,共同致力于提高行业标准。 怪罪于代币标准是无建设性的,并且会误导大众。旨在解决旧问题的新代币标准本身更具备安全性,却因此或许面临被质疑的风险。反之,我们要对这种不断演变的事实进行周全的分析并采取行动。 ERC777 是什么?以太坊代币即运行于以太坊之上的数字货币,在生态系统中发挥着独特而重要的作用。各个代币由其智能合约表示,其他 DApp 和用户与这些智能合约进行交互。 因此,以太坊引进了代币标准,以此来简化生态系统中的诸多 DApp 与代币之间的交互,从而提高可组合性。秉承着成为 「标准代币接口」 的目标,ERC20 代币标准最初于 2015 年投入开发。此处是 ERC20 代币标准运作机制的相关指南。 随着时间的推移,以太坊代币与生态系统建立起越来越多的联系,应用范围越来越广泛。代币的用例和应用日益增多,更加复杂的智能合约对基本 ERC20 代币标准提出了更高的要求,因此其部分局限性也随之开始显现。 实际上,最初该标准是为处理基本功能性而设的,因此不适用于所有用例。 尽管当今大多数代币都遵循 ERC20 标准,但仍有部分代币在此基础上根据自身需求添加自定义功能。结果,部分非标准功能 (称为 「扩展功能 (extension)」 ) 已添加到各个代币。 譬如,ERC20 标准不支持铸造和销毁功能,但事实上这些功能是必需的,于是便被添加为扩展功能。在某些情况下,功能需求部分重合,因此各种代币添加的扩展功能不尽相同。 ERC20 标准的这种分散性使 DApp 集成过程,甚至整体可组合性不必要地复杂化。为了解决这种分散性问题,社区试图就新标准达成共识。 经过持续两年的开放讨论,这项新的 ERC777 代币标准于去年推出。ERC777 代币标准的功能更为强大,它 「试图对广泛使用的 ERC20 代币标准进行改良」,并成为其正式化的完全扩展版本。 它引入并 「明确了与代币交互所需的高级功能」,使代币持有者能够更好地控制其资产。所有 ERC777 代币都向后兼容 ERC20 标准,这意味着如果 DApp 或钱包支持 ERC777 标准,那么也就支持 ERC20 标准。 ERC20 是一种简单的代币格式。正是得益于其简易性,目前已有众多项目和团队利用该标准相对轻松地构建了新的 DApp,既促进了生态系统的发展,也激发了创新创造活力。然而,它的局限性也使其面临用户体验方面的持续挑战。 ERC777 标准旨在解决 ERC20 标准固有的两个主要问题1.ERC20 仅对以太币 (ETH) 交易做出响应。批准并转账需要进行两个步骤,这一缺点导致诸多用户体验问题。最明显的问题是,处理单个请求需要发起两笔独立的交易。ERC777 则能通过执行功能实现代币的转入,无需借助 ETH 作为媒介,从而简化了转账流程。 2. 「用户操作失误」 导致价值数百万美元的代币丢失。用户通常将其代币发送到智能合约,而不是区块链目的地址。由于尚未界定在处理此类错误的情况下 ERC20 代币标准的这一特征 「是一个软件 bug,可归类为软件漏洞」。相比之下,ERC777 智能合约能够检测到此类错误并拒绝错误的代币转账行为。 ERC777 标准与某些协议不兼容ERC777 标准的特定函数是其独特的特征。这些函数实现了协议之间的互操作性,这对于扩展以太坊生态系统至关重要。 但是,由于 ERC777 代币标准是去年才引入的,所以这些特征可能与某些协议不相兼容,尤其是某些先前部署的智能合约。 鉴于以太坊的快速发展以及新兴去中心化金融智能合约的日益复杂,存在不兼容性不足为奇。但重要的是,也要尽快解决协议中的这些问题,因为它们暴露在攻击向量的入侵之下。对于其他各种不兼容性来说也是一样的道理,不仅仅是针对 ERC777 标准。 随着该新标准的采用率越来越高,其他项目也就必须支持 ERC777 代币,或者以其他方式实施必要的安全措施,以保护自身项目免受此类攻击。不幸的是,许多项目并没有做到以上两点。 在某些情况下,例如,即使 Uniswap 团队公布了 V.1 版本存在此问题,也只是不鼓励用户锁定其 ERC777 代币到流动性池中。 Uniswap 团队似乎还错误地以为,转账代币时受到重入攻击,合约仍处于安全状态。请注意,这种假设对于任何一种智能合约都不成立,但是某些协议还是将代币转账(不仅是 ETH 转账)错误地假定为比正常情况更安全。不幸的是,上上个周末发生的重入攻击正是操纵了此漏洞。 发起重入攻击即操纵智能合约中进行交互 (进行「交流」和互操作) 的函数对合约进行攻击。例如,用户兑换其代币时或许会涉及三个智能合约;智能合约 A (一种 dApp 或协议如 Uniswap) 与智能合约 B (代币智能合约如 imBTC,或另一种 dApp 或协议) 进行交互,然后智能合约 B 与智能合约 C (任何能够由黑客创建,只为盗取资金的智能合约) 进行交互。 如果智能合约 C 受攻击者劫持,它可以发送代币请求,但会伪造收到资金的确认信息。发送代币至智能合约 C 的请求仍然执行,但是攻击者可以继续假装从未收到代币。由于这是一个自动化过程,因此无法进行干预,除非用户意识到正在受到攻击并终止合约。 前车之鉴这种攻击向量暴露在被攻击的风险下。作为以太坊互操作性的一项关键特征,它可以通过多种方式加以操纵。代币智能合约也是发起重入攻击的工具之一。最近发生的 imToken / Uniswap 和 dForce 攻击就是如此。 我们不能因噎废食,攻击事件并不足以为 DeFi 时代划上句号,甚至不足以使我们质疑 ERC777 代币标准的安全性。 ERC777 代币的数量正在稳定增长。诸如 Augur 之类的团队正在决定将其代币格式从 ERC20 升级为 ERC777。随着 DeFi 行业的发展,我们必须了解使用此类创新技术的风险以及如何将风险降至最低,这一点至关重要。 这种漏洞的优点在于,它属于代码错误,而非传统金融行业中普遍存在的固有的系统性缺陷——腐败、过度监管和排斥性。通过 DeFi,我们已经将信任从人类转移到代码身上。因此,尽管总会有人存心利用代码,但是至少代码本身并没有从人类身上获利的企图。当今的经济体系却并非如此。 作为 DeFi 行业的一份子,我们应该不断改进标准,使每次迭代都变得更强大、更安全。目前,ERC777 具有一系列优势,能为代币持有者和 DApp 带来价值。我们应该始终致力于改进 ERC777 标准以及今后所有的标准。DeFi 要脱颖而出,突破口正在于此。 (责任编辑:admin1) |