主页 > imtoken官网下载2.0 > TokenPocket 官方钱包 | 以太坊合约交互中的“授权”到底是什么?

TokenPocket 官方钱包 | 以太坊合约交互中的“授权”到底是什么?

imtoken官网下载2.0 2023-02-09 06:00:28

关于“授权”操作,很多以太坊的新用户在第一次接触智能合约时都是一头雾水。 不明白什么是授权,更不明白为什么要授权发起交易,而且交易本身不携带任何资产,同时还要交矿工费。

在这篇文章中,我们将从技术的角度来解释“授权”操作的本质。

用户通过以太坊智能合约与 Token 资产进行交互时,首先要进行授权操作。 那么,为什么会有授权操作呢?

举个NEST预言机报价案例:

以太坊钱包手机版下载_以太坊官方钱包_以太坊钱包是什么

Bob 是一名 NEST 预言机报价矿工。 他在参与ETH/USDT价格预言机报价时,需要根据自己的报价数据,将ETH和USDT资产同时划入报价合约。 这里假设是10 ETH和1600 USDT。 执行报价操作。

那么Bob首先需要对USDT资产进行授权操作,对NEST预言机的报价合约进行授权,这样报价合约就有权限操作Bob钱包中的USDT资产,这样才能顺利执行时验证器在报价生命周期内接受订单。 USDT资产的交易逻辑。

这里的授权本质上是一种链上交易,需要用户支付矿工费(Gas fee)。 目的是告诉 USDT Token 合约,目标智能合约 A 有权控制我钱包中 X 数量的 USDT 资产。 然后,当目标合约 A 需要进行 USDT 交易时,它会主动从 USDT Token 合约中获取不超过 X 数量的 USDT 资产。

以太坊钱包是什么_以太坊官方钱包_以太坊钱包手机版下载

但是在上面的案例中,又产生了一个疑惑,为什么在报价过程中,只需要对USDT等ERC20 Token进行授权,而ETH却不需要?

技术分析:由于ETH是以太坊网络的原生资产,在向目标智能合约转账时以太坊官方钱包,以太坊网络底层强制目标合约有明确的接收方式,因此交易本身可以携带ETH资产到目标合约; 而ERC20 Token在向目标合约转账时,只会改变ERC20 Token合约本身的账本信息,目标合约不会收到任何通知。

因此,ETH在与智能合约交互时不需要像ERC20 Token那样进行授权操作。

以太坊钱包手机版下载_以太坊钱包是什么_以太坊官方钱包

准确地说,授权操作有2个步骤:

第 1 步:授权交易本身。 就是告诉一个ERC20 Token合约,未来可能会有一个目标智能合约地址A来我的钱包账户拿走X数量的Token资产;

第 2 步:交易执行本身。 当目标合约A中的逻辑执行需要进行Token交易时以太坊官方钱包,合约A会主动触发ERC20 Token的转账交易,带走X数量的Token; 否则,如果没有涉及该Token的交易,即使已经授权,也不会真正发生资产交易。

以太坊钱包是什么_以太坊官方钱包_以太坊钱包手机版下载

简而言之,授权操作后,Token交易可能不会执行,但这样的资金操作权限是为目标合约A保留的。

为了避免用户重复授权操作,很多智能合约开发者一般会默认设置目标智能合约的最大授权代币数。 显然,这种处理方式存在一定的风险。 如果智能合约存在漏洞或合约管理员作恶,用户的Token资产将面临流失风险,这就是“过度授权”带来的问题。

无论是在 NEST DAPP 还是 imToken 钱包中,我们都会经常遇到这个问题。

以太坊钱包是什么_以太坊官方钱包_以太坊钱包手机版下载

为了解决“过度授权”的问题,NEST DAPP有一个授权管理页面。 如果矿工自身不希望在短时间内参与到NEST预言机的报价中,可以进行“取消授权”操作,取消已有的授权。 安全问题; imToken 钱包也采取了一些措施,比如每次授权都“明确授权信息”,并且拥有专有的授权管理 DAPP,让用户可以自由管理自己已有的授权。

跳过授权操作的可行方案:通过在ERC20 Token合约中实现特定的转账逻辑,即在转账时强制调用目标合约的方法,可以避免当前的授权操作。 但是,为了保持Token合约的纯净,主流的ERC20 Token并没有实现这个功能。

参考:

1、imToken如何处理DApp过度授权的问题?

二、NEST去中心化价格预言机概述: