近日,一个存在已久的开放问题 ——「DApp 过度授权」在以太坊社区中被重新提及,各大媒体、钱包以及 DApp 项目方都参与了这次讨论。imToken 作为主流的以太坊钱包,对该问题始终保持着高度关注,同时在深入地探讨与研究中寻找更加合理的解决方案。
什么是「DApp 过度授权」?
用户与 DApp 进行交互时,首先需要授权(approve),为什么要授权操作呢?我们举一个典型的案例 :
- Alice 希望在 Compound 上存款 100 Dai,获得不错的收益。
- 那么 Alice 需要将 Dai 授权给 Compound 借贷合约,让借贷合约拥有转移 Alice Dai 代币的能力,以便后续可以完成 Dai 与 cDai(Compound 借贷凭证)的原子兑换。
DApp 开发者为了避免用户反复授权,一般会默认设置授权最大数量的代币给智能合约。但这样的处理也明显暴露风险,如果智能合约出现漏洞或合约管理员作恶,那么用户的代币将存在丢失的风险,这就是「DApp 过度授权」带来的问题。
「DApp 过度授权」是技术社区存在已久的公开问题,而当前 DeFi 的兴起改变了安全和易用间的平衡,对此我们需要重新考虑这个问题。而想要解决它,需要钱包, DApp 开发者与用户多方参与,共同改进。
imToken 目前是如何应对的?
访问 DApp
首先,我们会从源头掐断恶意转移用户代币行为发生的可能。
DApp 浏览器是一个开放的浏览器,用户可以直接访问上架应用,也可以输入 URL 访问任意 DApp。我们会针对存在潜在问题的应用给予风险提示,以免用户上当受骗。
访问钱包地址
其次,当 DApp 请求用户钱包地址时需要经过用户授权确认 ,以免用户地址隐私泄漏,让有问题的 DApp 有机可乘。
授权转账数量
最后,当 DApp 要求用户代币授权时,imToken 也会给予明确的授权信息,以便用户清晰了解授权上下文,甚至进一步编辑授权数量,降低授权风险。(注:授权功能将于近期上线)
授权管理 DApp
此外,imToken 还在 DApp 浏览器中提供了代币授权管理的相关 DApp,打开 DApp 浏览器,搜索并打开「Approved Zone」,点击进入即可轻松管理已授权的第三方 DApp 权限,随时关闭不再使用的应用权限,保护自己的钱包安全。
更长远考虑
近期 imToken 除了以上的处理方案,也会针对授权管理问题进行更深入地优化。将通过支持批量签名功能,来鼓励 DApp 通过按需授权的方法调用合约。
imToken 非常乐意与大家一起探讨,寻求更好的解决方案。如果你有任何想法,欢迎跟我们沟通。