-
Bob 是一名 NEST 预言机报价矿工,他在参与 ETH/USDT 价格预言机报价时,需要按照自己的报价数据往报价合约中同时转入 ETH 和 USDT 资产,这里假设是 10 ETH 和 1600 USDT,去进行一次报价操作。
-
那么 Bob 首先要将 USDT 资产进行一次授权操作,授权给NEST预言机的报价合约,让报价合约拥有操作 Bob 钱包中 USDT 资产的权限,以便在报价生命周期内有验证者吃单时顺利执行涉及到 USDT 资产的交易逻辑。
-
这里的授权本质上也是一笔链上交易,需要用户支付矿工费(Gas费)。目的是为了告诉 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 的交易,即使已经授权了,也不会真实发生资产交易。