近来以太坊上最火爆的领域就是DeFi。主要的DeFi应用包括ERC20代币的借贷、质押和交易。若想在Uniswap、Aave和Yearn等DeFi协议上使用ERC20代币,你需要授权dApp来使用这些代币。这就是所谓的?*ERC20授权*?。这些授权对于DeFi平台的运作来说必不可少,但是如果不加以控制,那将是非常危险的。
ERC20授权的必要性
有了以太坊上的原生代币ETH,你就可以将ETH发送至该智能合约,同时调用智能合约功能。这是通过所谓的可支付函数实现的。但是,由于ERC20代币本身就是智能合约,你无法通过直接将代币发送到智能合约来调用其函数。
因此,ERC20标准让智能合约使用?transferFrom()?函数代表用户转移代币。为此,用户需要允许智能合约代表他们转移代币。
这样一来,用户就可以将代币“存入”智能合约,同时智能合约会更新其状态来显示这笔存款。相反,如果你将ERC20代币发送至该智能合约,则合约不会更新其状态。
流媒体公司思享无限与MetaU建立合作,将推出NFT ExperienceX计划:5月18日消息,在纳斯达克上市的中国流媒体公司思享无限(Scienjoy)与加密交易平台Meta U建立战略联盟,将推出NFT ExperienceX计划,为艺术家、音乐家和其他表演者提供技术支持以创作NFT作品,Meta U计划于今年第三或四季度推出的新NFT交易平台。[2022/5/18 3:25:25]
例如,如果你将DAI“存入”Aave来赚取利息,你首先要允许Aave合约从你的钱包中取出一些DAI。然后你调用Aave合约里的函数,指定你想要存入的DAI的数量。然后,Aave合约使用?transferFrom()?函数从你的钱包中取出相应数量的DAI,并将同等数量的aDAI代币记入你的账户。
无限ERC20授权的危害
将特定数量的ERC20代币存入合约时,你就可以选择将授权额设成这个数量。然而,许多应用会向用户要求无限授权。
李启威::NFT最大的问题在于其数量无限:莱特币创始人李启威发推表示,NFT真正问题在于代币数量可以是无限的,而创建这些无限数量的代币成本为零,他表示现实世界中的艺术品并非“零成本”,艺术家创作作品需要花费时间和精力,这就像是工作量证明。诸如毕加索(Picasso)这样的知名艺术家一生只能创作数千件艺术品,此限制会导致稀缺性,从而有助于让这些作品保持较高的价值。由于创建NFT的成本几乎为零,假如艺术家为了获利而蜂拥进入这一领域,那么市场就会被这种狂热所淹没,供应将压倒需求,价格最终将崩溃。[2021/2/15 19:48:33]
这会带来极好的用户体验,因为用户不需要在每次存款时重新授权。设置无限授权后,用户只需要同意一次,之后存款时就不会再重复这一过程。
但是,该设置存在很大的弊端。众所周知,即使是成熟的项目,也有可能存在漏洞。一旦你给了这些平台无限授权,不只是你的存款会陷入风险之中,你的钱包中的代币也是如此。
Robinhood宣布无限期终止启动英国业务:7月21日消息,硅谷股票和加密货币投资应用程序Robinhood宣布无限期终止在英国启动业务,继续专注于美国本土市场。该公司表示:“过去几个月以来,世界发生了很多变化,我们做出了艰难决定,无限期暂停在英国推出产品和服务。作为一家公司,我们将把工作重点放在美国核心业务上。”此外,Robinhood还透露将“临时冻结”全球扩张计划,但由于新冠病疫情导致许多人居留家中,Robinhood在2020年第一季度吸引许多千禧一代年轻人,新增账户数量超过300万。(Cointelegraph)[2020/7/21]
在Devcon5上,我第一次与PaulBerg谈到了这个问题。在这次大会上,Paul就本文所讨论的问题做了陈述。在开发Sablier时,Paul在他的智能合约中发现了一个漏洞,不仅所有存入该智能合约的DAI有风险,所有测试者的钱包中的DAI也是如此!
声音 | 比特币无限首席科学家:闪电网络或存在固有费用漏洞:据ambcrypto消息,比特币无限(Bitcoin Unlimited)首席科学家Peter R Rizun 近日表示,闪电网络用户存在固有费用漏洞,会在没有做任何错事的情况下丢失所有资金。他认为在比特币第一层收费高昂且不稳定的环境中,闪电网络用户会在自己没有任何过错的情形丢失所有的钱,因为当对区块链空间需求激增的时候,比特币的区块大小限制了高额且不稳定的费用。对此,康奈尔大学教授Emin Gur Sirer表示:“中本聪设计的比特币区块并没有考虑大部分被填满的情况,而且之后的开发人员也没有设计出费用稳定且可预测的收费机制。”[2019/4/10]
实际风险
长期以来,无限授权的风险主要是理论上的。在Paul所开发的Sablier平台正式上线之前,这个漏洞就被修复了。当时,还没有出现利用ERC20授权的攻击,但是只要平台继续要求无限授权,迟早会出状况。
慢雾安全团队发布 BEC智能合约无限转币漏洞分析及预警:据了解,4月22日13时左右,BEC出现异常交易。慢雾安全团队第一时间分析发现,BEC智能合约(https://etherscan.io/address/0xc5d105e63711398af9bbff092d4b6769c82f793d)中的batchTransfer批量转账函数存在漏洞,攻击者可传入很大的value数值,使cnt*value后超过unit256的最大值使其溢出导致amount变为0。
通过此次分析,慢雾安全团队建议智能合约开发者在批量转账时严格校验转出总额amount是否大于0,及在for循环内执行balances[msg.sender].sub(value)操作。
这类漏洞属于不可逆的破坏型漏洞,慢雾安全团队建议其他智能合约发布方及时自查。[2018/4/23]
去年,我们已经看到了几起利用ERC20授权的攻击事件。
意外漏洞
今年早些时候,Bancor出现了一个漏洞,危及用户资金。执行ERC20?transferFrom()?函数的函数变成了public属性,因此任何人都可以执行该函数,并取走用户钱包中的资金。Bancor执行了一次白帽黑客攻击,控制了损失,并将资金还给了用户。
恶意利用漏洞
除了Bancor的意外漏洞之外,还有很多恶意利用漏洞的情况。在今年夏天的DeFi热潮中,人们都在为各种以食物命名的DeFi分叉产品狂欢,其中也包括一些局。即使人们为了规避风险只存入少量代币,他们钱包中的代币也会因为无限授权而陷入风险。
ZenGo就在一个名为UniCats的项目中发现了可利用漏洞。人们可以存入Uniswap代币,然后通过流动性挖矿获得MEOW代币。但是如果要存款,用户必须提供?无限授权。如果项目遭到攻击,攻击者不仅可以拿走项目的存款,还可以拿走用户钱包内的所有UNI代币。
另一个例子是DegenMoney项目。DegenMoney项目采用了一种不怎么高明的办法。这个项目没有开发自己的智能合约,而是创建了一个前端来进行两次授权交易。一次是向一个运行中的智能合约,另一次是向完全不同的地址。
由于很多人没有专门检查钱包地址,这就导致攻击者可以取走用户钱包中的代币。
那硬件钱包呢?
总的来说,硬件钱包比手机、手提电脑和基于浏览器的钱包安全的多。原因是,控制资金的私钥安全地存储在硬件钱包中,并且永远不会离开该设备。因此,通过硬件钱包,你可以确保没人能窃取你的私钥。
ERC20授权的问题在于,没人需要窃取你的私钥才能从你的钱包中取走代币。因此,硬件钱包也无法防范本文所讨论的恶意利用漏洞问题。
使用硬件钱包依然是一种好习惯,因为硬件钱包确实能保护你免受其它漏洞攻击。但是,你需要注意的是,硬件钱包不能抵御授权漏洞和其它很多智能合约漏洞。
dApp开发者可以做些什么?
在Devcon的讲话中,Paul提到了一些关于无限授权问题的解决方案。这些方案各有优缺点。其中最实用的方案是即批即用模式。在这种模式下,应用只会要求用户授权确切的数额,而非不限额。
这种方案的用户体验确实会差一些,因为每当用户想要发送交易时,都需要发送一笔新的授权交易,不能再像无限授权那样一劳永逸。这个模式的缺陷是会增加交易费成本,如果交易费像去年那样暴涨,就会带来很大的麻烦。
另一种替代型方案是,可以让用户选择仅授权当下需要花费的数额,还是授权更高的数额以便后续进行更多交易。已经有多个项目采用这种策略,例如1inch.exchange和Curve.fi。
另一个减少交易成本的解决方案是,采用EIP2612之类的标准,让用户可以通过签署消息来设置其授权额度,无需再通过发送交易的形式。但是,这类标准并未得到广泛采用,而且围绕该标准打造的工具也不多。
用户可以做些什么?
由于ERC20授权是很多智能合约所不可或缺的部分,完全停止授权的方案并不可行。但是在可能的情况下,请尽量避免无限授权。
人们已经比一年之前更加了解这一问题,因此有些dApp可以让用户选择只授权当前需要花费的数额,但是大多数dApp依然不行。尽管如此,高端用户还可以通过Metamask的界面来降低其授权额度。
在使用dApp时,请你思考一下是否需要经常使用这个dApp,以及你是否信任这个项目,还是说你只会偶尔使用这个dApp,或者根本不信任这个项目。无论是哪种情况,你最好都要定期查看你的授权额度,并取消对不再使用的dApp的授权。
为便于检查并撤销这些授权,我开发了一种名为revoke.cash的工具。通过这个工具,你可以查看地址的代币余额和授权额度,之后就可以轻而易举地撤销或降低授权。类似的工具还有approved.zone等。
结论
许多去中心化应用的运行都离不开授权,但是无限授权通常并不利于安全性。2020年已经出现过几起利用ERC20授权的漏洞事件,人们对这个问题的认识比一年前深得多。作为一名用户,你可以采取一些措施来降低上文所述风险,包括定期查看并撤销多余授权。
标签:RC20C20ERC20RC2PlayCoin [ERC20]brc20是什么链Fair BERC20erc20币价格
行情分析: 随着比特币的大幅上涨,以太走了一波上拉,高位触及659位置,未能在上方企稳,价格承压回落.目前从四小时级别图来看,布林带三线呈现缩口,目前KDJ三线下行发散.
1900/1/1 0:00:00据Decrypt12月19日报道,加密货币据平台Glassnode的数据显示,大约10%的比特币在10年或更久的时间里没有移动过,但这是为什么呢?Glassnode的数据显示,截至12月17日.
1900/1/1 0:00:00DeFi在今年夏天迎来大爆发,诸如像是借贷协议、流动性挖矿、保险协议、无托管交易、NFT代币都在今年看到了有别于以往的应用。随着比特币走入主流,DeFi热度下降,不少人都觉得DeFi热潮已死.
1900/1/1 0:00:00据菲律宾官方媒体报道,由菲律宾民族英雄伊曼纽尔·曼尼·达皮德·帕奎奥先生所投资的PAC全球数字支付生态通证平台将全面收购行业顶尖的PACC社交公链体系并在数字领域进行全方位合作.
1900/1/1 0:00:00今日资讯: 著名网游《传奇》开发商Wemade区块链子公司WemadeTree称,WEMIX平台同时使用公有链以及私有链的混合链架构已解决区块链的扩展性问题.
1900/1/1 0:00:00市场短线情绪现在维系在朗姿股份身上,一方面压制了短线连板的高度,另一方面压制了二波概念的高度。这里依然认为,只要朗姿股份起不来,那么目前市场高位票都比较危险.
1900/1/1 0:00:00