以太坊DApp为何常要“无限”代币授权,这样安全吗?
不能默认安全。在以太坊上,很多DApp会请求“无限”代币授权,额度大到近似无限,远超你单次操作所需。MetaMask支持文档说明,这类请求的初衷是减少用户每次使用DApp时重复授权带来的点击和链上交易成本;但同一机制也被恶意网站用来盗取代币。是否安全,取决于你授权的对象、额度,以及事后是否管理授权,而不是“无限”二字本身。
授权到底授了什么? 代币授权,是代币持有者允许某个合约地址动用自己代币的操作。授权请求应当逐项核对,而不是看到弹窗就点“批准”。MetaMask文档指出,在其钱包界面中可以调整DApp可访问的代币数量。也就是说,授权并非只能全有或全无。文档给出的比较是:即便只开放10%的代币,若对方是骗局,损失也明显小于无限授权。这是风险说明,不构成对任何具体项目的安全评级。
为什么DApp偏爱大额度? 对去中心化交易所等合法DApp而言,用户频繁兑换时,每次都重新授权意味着额外点击和额外gas费用。一次性给出较大额度,可以减少重复授权。文档还提到EIP-3009下的permit交易:用户签署permit交易,把授权和转账合并,授权环节实际上几乎不产生gas,只需支付转账的gas。便利是真实需求,但该机制同样降低了恶意方的作恶成本——骗子也省事。
风险从哪里来? 恶意网站正是通过请求近似无限的代币数量,盗取毫无防备的web3用户资产。文档特别提醒,即使你遵守了助记词离线保存、绝不分享等安全建议,仍可能因授权而被利用。可操作的原则是:点击“批准”前始终检查DApp实际请求什么;在钱包中调低授权数量;对DApp做尽职调查,留意拼写错误、低质量图片或标识等破绽;对“好得不真实”的收益保持警惕,文档举的例子是498,563% APY。此外还有setApprovalForAll这类授权,权限范围更广,若不熟悉以太坊智能合约代码,更应先弄清含义再操作。
已经授权了怎么办? MetaMask文档明确说,掌控资产、了解哪些DApp有访问权从来不吃亏,并介绍了撤销既有代币授权的几种方式。这套做法适用于使用支持授权管理的钱包界面的以太坊用户;原文未给出具体撤销步骤清单,本文也不补猜费用或实时数据。结论很简单:无限授权是便利与风险的同一枚硬币,默认全额度不安全,按需调低额度、定期检查并撤销不必要的授权,才是可操作的自保方式。