风险提示:理性看待区块链,提高风险意识!
以太坊合约交互中的“授权”究竟是什么?
首页 > 币界资讯 > 矿业前瞻 2020-04-17 11:16:34
币界网报道:

有关「授权」操作,很多以太坊新用户在第一次操作智能合约遇到时都是一头雾水。不明白什么是授权,更不明白为什么授权还要发起一笔交易,而且交易本身没有携带任何资产,同时还要去支付一笔矿工费。

本篇文章,我们将从技术的角度为大家解读一下「授权」操作的本质。

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

我们举一个 NEST 预言机矿工报价的案例 :

  1. Bob 是一名 NEST 预言机报价矿工,他在参与 ETH/USDT 价格预言机报价时,需要按照自己的报价数据往报价合约中同时转入 ETH 和 USDT 资产,这里假设是 10 ETH 和 1600 USDT,去进行一次报价操作。

  2. 那么 Bob 首先要将 USDT 资产进行一次授权操作,授权给NEST预言机的报价合约,让报价合约拥有操作 Bob 钱包中 USDT 资产的权限,以便在报价生命周期内有验证者吃单时顺利执行涉及到 USDT 资产的交易逻辑。

  3. 这里的授权本质上也是一笔链上交易,需要用户支付矿工费(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 的交易,即使已经授权了,也不会真实发生资产交易。

简而言之,授权操作之后,不一定会执行 Token 交易,只是对目标合约 A 保留了这样一个资金操作权限。

很多智能合约开发者为了避免用户反复进行授权操作,一般会默认设置授权最大数量的 Token 给到目标智能合约。很显然,这种处理方式是存在一定风险的,如果智能合约出现漏洞或合约管理员作恶,那么用户的 Token 资产将存在丢失的风险,这就是「过度授权」带来的问题。

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

为了解决「过度授权」的问题,NEST DAPP 设有授权管理页面,如果矿工自己预期短时间内不会参与 NEST 预言机报价,那么他可以进行「取消授权」操作,消除已有授权所带来的安全问题;imToken 钱包也采取了一些措施,比如每次授权都会“明确授权信息”,以及设有授权管理专有 DAPP,让用户自由管理自己的已有授权。

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

参考资料:

1、imToken 如何应对 DApp 过度授权问题?

https://mp.weixin.qq.com/s/c-_Lt8TuIqrgbK4fmmKT2A

2、NEST 去中心化价格预言机综述:

https://www.nestfans.com/wiki/nest_introduction

上一篇: 引介 | 使用覆盖层改变以太坊状态树的格式
下一篇: Reserve (RSV) & Reserve Rights (RSR) 已在 Kyber 上线
推荐专栏
Boss Wallet Web3 Econom Pass
专注币圈最新资讯
通俗浅显地聊透Web3大事小情
读懂区块链生态与未来,尽在币界网!
热门币种
更多
币种
美元价格
24H涨跌幅
BTC比特币
60,963.61 USDT
¥435,103.38
-2.72%
ETH以太坊
3,368.69 USDT
¥24,042.67
-0.3%
BNB币安币
570.68 USDT
¥4,073.00
-0.28%
USDT泰达币
1.02 USDT
¥7.25
-0.19%
SOL
135.96 USDT
¥970.36
+7.66%
USDC
1.00 USDT
¥7.15
-0.01%
TON
7.59 USDT
¥54.14
+4.55%
XRP瑞波币
0.47720 USDT
¥3.41
+0.48%
DOGE狗狗币
0.12210 USDT
¥0.87140
+2.43%
ADA艾达币
0.39050 USDT
¥2.79
+3.88%
热搜币种
更多
币种
美元价格
24H涨跌幅
比特币
61223.99 USDT
¥445,024.94
-0.02%
Solana
138.89 USDT
¥1,009.56
+1.87%
Filecoin
4.3864 USDT
¥31.88
-0.36%
Curve
0.2912 USDT
¥2.12
-5.61%
Terra Classic
8.2E-5 USDT
¥0.00
+0.6%
Conflux
0.1583 USDT
¥1.15
+0.83%
柚子
0.5808 USDT
¥4.22
+0.78%
狗狗币
0.1226 USDT
¥0.89
-1.53%
Shiba Inu
1.715E-5 USDT
¥0.00
-1.89%
Livepeer Token
16.4791 USDT
¥119.78
-3.3%
Arweave
26.778 USDT
¥194.64
-3.99%
波场
0.1229 USDT
¥0.89
-1.29%
最新快讯
更多
摩根大通:Mt.Gox债权人预计将在下个月出售部分比特币应收款项
2024-06-27 18:41:34
Bitlayer头矿节二期活动正式上线,用户可登陆OKXCryptopedia参与活动
2024-06-27 18:41:11
Ripple首席法务官:法院裁定SEC撤销代理顾问公司规则违反程序法
2024-06-27 18:36:59
DMMBitcoin黑客地址已将500BTC转移到新地址
2024-06-27 18:33:53
DMMBitcoin黑客再次将500枚BTC转至新地址
2024-06-27 18:32:23
初创公司Stability.AI获得LightspeedVentures投资
2024-06-27 18:26:57
首尔高等法院判定Fantom基金会对SikSin胜诉,认定AC领导了Fatom的开发
2024-06-27 18:24:39
下载币界网APP