imBTC / Uniswap和dForce攻击真的应归咎于新的代币标准吗?

在仅一个周末的时间内,数以百万计的智能合约帐户被盗。 imBTC Uniswap池遭到黑客攻击,并盗走了价值30万的代币。不久之后,对dForce进行了类似的攻击。不过很庆幸大部分失窃的加密货币已经归还。

攻击者刚刚从@dForcenet的@LendfMe(@compound copycat)借贷协议中盗出了2500万美元资金。

这是对#imBTC Uniswap黑客(#ERC777上的可重入执行程序)的后续攻击。

有人声称ERC-777代币标准的某些功能是造成这些攻击的原因。但是,重入攻击是一个众所周知的漏洞,在2016年DAO黑客攻击期间最为人所知,实际上与ERC-777代币标准本身无关。

随着这个年轻行业的发展,重要的是,我们必须认识到协议的优点和缺点,鼓励公开协作和辩论,并共同努力提高我们的行业标准。

指责攻击的代币标准是不可取的,会误导信息,并有可能使旨在解决旧问题的、新的更安全的标准面临风险。相反,我们可以多维度地分析这类事件,并为未来发展做出贡献。

什么是ERC-777?

以太坊代币是在其区块链上运行的数字资产。它们在生态系统中发挥着独特而重要的作用。每个代币都代表智能合约,其他DApp和用户可以与之交互。

因此,引入了代币标准来简化生态系统的许多DApp和代币之间的交互,这是为了提高可组合性。 ERC-20标准最初于2015年开发为代币的标准接口。

随着时间的流逝,以太坊代币开始变得越来越重要,并在生态系统中得到了更广泛的应用。随着代币的用例和应用数量的增加,基本的ERC-20标准已开始显示出了一些局限性,因为更复杂的智能合约对其提出了更高的要求。实际上,该标准最初是为处理基本功能而设计的,因此不适用于各种用例。

尽管当今大多数代币都遵循ERC-20标准,但各种代币都增加了自定义功能,可以更好地满足其需求。结果,非标准功能,称为扩展,已添加到每个代币。例如,ERC-20标准不支持铸造和刻录等功能,必须作为扩展添加。在某些情况下,已经进行了不同的扩展来解决重叠的需求。 ERC-20标准的这种碎片化使其与DApp集成在一起,并使其整体可组合性变得不可必免地复杂。为了解决这种分散问题,社区试图就新标准达成共识。

这项新的ERC-777代币标准于去年推出,这是持续了两年的持续不断的公开讨论的结果。作为功能更强大的标准,它试图在广泛使用的ERC20代币标准上进行改进,作为其完整且正式的扩展。它引入并“定义了与代币交互的高级功能”,从而使代币持有者可以更好地控制其代币。所有ERC-777代币都向后兼容ERC-20标准,这意味着如果DApp或钱包支持ERC-777标准,那么它也可以支持ERC-20。

ERC-20是一种简单的代币格式。许多项目和团队已利用这种简单性,并相对轻松地构建了新的DApp,从而发展了生态系统并吸引了创新。但是,它的局限性也带来了持续的用户体验挑战。

ERC-20标准旨在解决ERC-20标准固有的两个主要问题:

1.ERC-20仅响应以太坊交易,而不直接响应其他代币。这需要两步过程来批准然后转移代币。此缺点导致了许多UX问题,最明显的是仅需要处理2个单独的事务来处理单个请求。 ERC-777智能合约可以在仅接收代币时执行功能,从而消除了对ETH的需求,从而简化了流程。

(3/12)ERC-20标准写于2015年。它非常简单,因此变得如此受欢迎。

但是,对于试图创建可编程货币的系统来说,它的功能非常不足。以太坊的许多用户体验问题都来自ERC-20标准的局限性。

(4/12)ERC20的最大问题是使用代币的整个“批准并拉动”流程。

如果我想使用Uniswap将ETH转换为Dai,我基本上只是发送一些ETH并获得Dai。

但是,如果我想将Dai交换为ETH,我必须先做1笔交易才能批准无限Dai,然后再用另一笔TX交换。

2.由于用户错误,丢失了数百万美元的代币。用户通常将其代币发送到智能合约,而不是目标区块链地址。 ERC-20无法检测到此错误,因为在处理此类错误的情况下,尚未定义转移功能的标准行为。 ERC20代币标准设计的此功能是一个软件错误,可以归类为软件漏洞。相比之下,ERC-777智能合约能够检测到此类错误,并拒绝错误的代币传输。

ERC-777标准与某些协议不兼容

ERC-777标准的特殊功能是独特的功能。这些功能实现了协议之间的互操作性,这对于扩展以太坊生态系统至关重要。但是,由于ERC-777代币标准是去年才引入的,因此这些功能还可能导致某些协议不兼容,尤其是对于某些先前部署的智能合约。

鉴于以太坊的快速发展以及去中心化金融领域中智能合约的日益复杂性,不兼容是不足为奇的。但是,协议必须尽快解决这些问题,因为它们可能容易受到攻击。对于所有不兼容性,可以说是相同的,而不仅仅是ERC-777标准。

随着采用新标准的发展,项目必须增加对ERC-777代币的支持,或者以其他方式实施必要的安全措施,以保护自己免受此类攻击。不幸的是,各种项目都没有做到以上两点。在某些情况下,例如Uniswap V.1,该问题已由团队公开发布,该团队不鼓励用户将其ERC-777代币添加到其流动性池中。

似乎还错误地认为代币转移被认为是“可重入的”。请注意,从未对任何其他智能合约类型做出此假设,但是某些协议错误地决定将代币传输,而不仅仅是ETH传输,并假定这么做比正常安全。不幸的是,这种假设也包括周末进行的这两次重入攻击。

当互通的智能合约中的功能,允许合约彼此“对话”并互操作被利用时,就会发生重入攻击。例如,当用户想要交换其代币时,可能涉及三个智能合约。智能合约A(dApp或协议,例如Uniswap)与智能合约B(代币的智能合约,例如imBTC或另一个dApp或协议)进行交互,然后与智能合约C(任何种类的智能合约)进行交互。可以由攻击者创建,其唯一目的是窃取资金。

如果智能合约C受攻击者控制,它可以发送代币请求,但会伪造对收到资金的确认。发送代币到智能合约C的请求仍然执行,但是攻击者可以继续假装从未收到代币。由于这是一个自动化流程,因此无法进行干预,除非你知道攻击正在发生,然后终止合约。

得到的启示

这种攻击媒介早已暴露。作为以太坊互操作性的一项关键功能,它可以通过多种方式加以利用。代币智能合约也可以用作执行重入攻击的工具。这就是在周末的imToken / Uniswap和dForce攻击期间发生的情况。

请务必注意,这些攻击不会标志着DeFi的结束,甚至不会质疑ERC-777代币标准的安全性。 ERC-777代币的数量正在稳定增长。诸如Augur之类的团队正在决定将其ERC-20代币升级为ERC-777格式。随着行业的发展,我们都必须了解使用此类创新技术的风险以及如何将这些风险降至最低,这一点很重要。

这种错误是代码错误,而不是传统金融行业中普遍存在的内置系统缺陷,即腐败,过度监管和排他性。通过DeFi,我们已经将信任从人们转移到了代码。因此,尽管总会有一些人希望利用该代码,但是至少代码本身并不打算利用这些人。对于我们今天的经济体系而言,情况并非如此。

作为一个行业,我们应该不断改进我们的标准,使每个新迭代都更强大,更安全。目前,ERC-777具有一系列优势,可为代币持有者和DApp带来价值。我们应该努力不断修订此标准以及所有将来的标准,来提高标准。因为,这将使DeFi脱颖而出。

——感谢阅读,全文完——

原文链接:https://medium.com/@provablethings/is-a-new-token-standard-really-to-blame-for-the-imbtc-uniswap-and-dforce-attacks-31c62e2bc799

你可能感兴趣的:(imBTC / Uniswap和dForce攻击真的应归咎于新的代币标准吗?)