okx

无限代币授权:开启新的可能

时间:2023-08-08|浏览:179

近来以太坊上最火爆的领域就是DeFi。主要的DeFi应用包括ERC20代币的借贷、质押和交易。若想在Uniswap、Aave和Yearn等DeFi协议上使用ERC20代币,你需要授权dApp来使用这些代币。这就是所谓的ERC20授权。这些授权对于DeFi平台的运作来说必不可少,但是如果不加以控制,那将是非常危险的。

ERC20授权的必要性

有了以太坊上的原生代币ETH,你就可以将ETH发送至该智能合约,同时调用智能合约功能。这是通过所谓的可支付函数(payablefuntion)实现的。但是,由于ERC20代币本身就是智能合约,你无法通过直接将代币发送到智能合约来调用其函数。

因此,ERC20标准让智能合约使用transferFrom函数代表用户转移代币。为此,用户需要允许智能合约代表他们转移代币。

这样一来,用户就可以将代币“存入”智能合约,同时智能合约会更新其状态来显示这笔存款。相反,如果你将ERC20代币发送至该智能合约,则合约不会更新其状态(例如,将这笔存款记入你的账户)。

例如,如果你将DAI“存入”Aave来赚取利息,你首先要允许Aave合约从你的钱包中取出一些DAI。然后你调用Aave合约里的函数,指定你想要存入的DAI的数量。然后,Aave合约使用transferFrom函数从你的钱包中取出相应数量的DAI,并将同等数量的aDAI代币记入你的账户。

无限ERC20授权的危害

将特定数量的ERC20代币(如100DAI)存入合约时,你就可以选择将授权额设成这个数量。然而,许多应用会向用户要求无限授权。

这会带来极好的用户体验,因为用户不需要在每次存款时重新授权。设置无限授权后,用户只需要同意一次,之后存款时就不会再重复这一过程。

但是,该设置存在很大的弊端。众所周知,即使是成熟的项目,也有可能存在漏洞。一旦你给了这些平台无限授权,不只是你的存款会陷入风险之中,你的钱包中的代币也是如此。

在Devcon5上,我第一次与PaulBerg谈到了这个问题。在这次大会上,Paul就本文所讨论的问题做了陈述。在开发Sablier时,Paul在他的智能合约中发现了一个漏洞(已经修复了!),不仅所有存入该智能合约的DAI(100美元)有风险,所有测试者的钱包中的DAI(1万美元)也是如此!

实际风险

长期以来,无限授权的风险主要是理论上的。在Paul所开发的Sablier平台正式上线之前,这个漏洞就被修复了。当时,还没有出现利用ERC20授权的攻击,但是只要平台继续要求无限授权,迟早会出状况。

去年,我们已经看到了几起利用ERC20授权的攻击事件。

意外漏洞

今年早些时候,Bancor出现了一个漏洞,危及用户资金。执行ERC20transferFrom函数的函数变成了public属性(不再是private合约私有属性),因此任何人都可以执行该函数,并取走用户钱包中的资金。Bancor执行了一次白帽黑客攻击,控制了损失,并将资金还给了用户。

恶意利用漏洞

除了Bancor的意外漏洞之外,还有很多恶意利用漏洞的情况。在今年夏天的DeFi热潮中,人们都在为各种以食物命名的DeFi

热点:代币 以太 以太坊 太坊

« 上一条| 下一条 »
区块链交流群
数藏交流群

合作伙伴

在区块链世界中,智能合约不仅是代码的信任,更是商业的革命。通过了解其在供应链、版权保护等领域的应用,您将真正体验到智能合约的无限可能性
区块链世界GxPiKaQiu.com ©2020-2024版权所有 桂ICP备16002597号-2