以太坊合约交互中的“授权”究竟是什么?
摘要:以太坊合约交互中的“授权”究竟是什么?

文章图片
【以太坊合约交互中的“授权”究竟是什么?】作者:NEST爱好者_CryptoV12
有关「授权」操作 , 很多以太坊新用户在第一次操作智能合约遇到时都是一头雾水 。 不明白什么是授权 , 更不明白为什么授权还要发起一笔交易 , 而且交易本身没有携带任何资产 , 同时还要去支付一笔矿工费 。
本篇文章 , 我们将从技术的角度为大家解读一下「授权」操作的本质 。
用户在与以太坊智能合约进行Token资产交互时 , 首先要进行授权(approve)操作 。 那么 , 为什么要有授权操作呢?

文章图片
我们举一个NEST预言机矿工报价的案例:
Bob是一名NEST预言机报价矿工 , 他在参与ETH/USDT价格预言机报价时 , 需要按照自己的报价数据往报价合约中同时转入ETH和USDT资产 , 这里假设是10ETH和1600USDT , 去进行一次报价操作 。
那么Bob首先要将USDT资产进行一次授权操作 , 授权给NEST预言机的报价合约 , 让报价合约拥有操作Bob钱包中USDT资产的权限 , 以便在报价生命周期内有验证者吃单时顺利执行涉及到USDT资产的交易逻辑 。
这里的授权本质上也是一笔链上交易 , 需要用户支付矿工费(Gas费) 。 目的是为了告诉USDTToken合约 , 目标智能合约A拥有支配我钱包X数量USDT资产的权限 。 然后 , 当目标合约A内需要去进行USDT交易的时候 , 它就会主动去从USDTToken合约中获取不高于X数量的USDT资产 。
但在上面这个案例中又出现了另一个疑惑 , 为什么在报价过程中 , 只有USDT这类的ERC20Token需要进行授权操作 , 而ETH不需要呢?
技术解析:因为ETH作为以太坊网络原生资产 , 在向目标智能合约转账时 , 以太坊网络底层强制要求目标合约要有确定的接收方法 , 所以交易本身可以携带ETH资产到目标合约中;而ERC20Token在向目标合约转账时 , 只是更改ERC20Token合约本身的账本信息 , 目标合约不会收到任何通知 。
所以 , ETH在与智能合约进行价值交互时不需要像ERC20Token那样进行授权操作 。
准确来说 , 授权操作有2步:
第1步:授权交易本身 。 是为了告诉某ERC20Token合约 , 将来可能会有目标智能合约地址A来我的钱包账户取走X数量的该Token资产;
第2步:交易执行本身 。 当目标合约A中的逻辑执行需要进行该Token交易时 , 合约A会去主动去触发ERC20Token取走X数量的该Token的转账交易;反之 , 如果没有涉及到该Token的交易 , 即使已经授权了 , 也不会真实发生资产交易 。
简而言之 , 授权操作之后 , 不一定会执行Token交易 , 只是对目标合约A保留了这样一个资金操作权限 。

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

文章图片
为了解决「过度授权」的问题 , NESTDAPP设有授权管理页面 , 如果矿工自己预期短时间内不会参与NEST预言机报价 , 那么他可以进行「取消授权」操作 , 消除已有授权所带来的安全问题;imToken钱包也采取了一些措施 , 比如每次授权都会“明确授权信息” , 以及设有授权管理专有DAPP , 让用户自由管理自己的已有授权 。
跳过授权操作的可行性方案:通过在ERC20Token合约中实现特定的转账逻辑 , 即转账的同时强行调用目标合约的一个方法 , 可以避免现在的授权操作 。 但是为了保持Token合约的纯粹性 , 主流ERC20Token并没有实现该功能 。
参考资料:
1、imToken如何应对DApp过度授权问题?
2、NEST去中心化价格预言机综述:
(1、内容来自链得得内容开放平台“得得号” , 稿件内容仅代表作者观点 , 不代表链得得官方立场 。 2、凡“得得号”文章 , 原创性和内容的真实性由投稿人保证 , 如果稿件因抄袭、作假等行为导致的法律后果 , 由投稿人本人负责 。 3、得得号平台发布文章 , 如有侵权、违规及其他不当言论内容 , 请广大读者监督 , 一经证实 , 平台会立即下线 。 如遇文章内容问题 , 请发送至邮箱:chengyiniu@chaindd.com)
推荐阅读
- LOL:粉丝急了!GRF三人结束合约,Tarzan却不在名单内
- 廊坊这几条路,开始断交
- 潍坊市卫生健康委党组书记、主任吴海源一行到青岛西海岸新区考察交流
- 澧县澧阳中学:督工作坊线下研修活动 助力教师专业水平提升
- 【实战大练兵】茶坊中队开展车辆查缉技能培训
- 惊险!牙真的笑掉了!在廊坊老人戴假牙应注意
- VR看展 视频参会 2020廊坊经洽会猎豹移动成焦点
- 河北廊坊有个古镇,曾经可以和苏杭媲美,如今游客很少
- 从以太坊经济带宽分类的角度分析:为什么ETH不可替代
- 回购合约是什么?传闻RNG回购选手换圣枪哥,联盟还有这种操作?
