1. BSV商业世界首页
  2. 比特币新闻

零基础入门 DeFi:手把手教你操作 approve 确保资产安全

“approve 是 ERC20 代币才有的一种操作,在操作一些很不熟悉的 DeFi 产品的时候,我们需要了解下到底 approve 做了什么,以及如何在体验完了那些可能不安全的产品后撤销 approve。”

到处都有的 approve可能才看到 approve 这个词语,你会觉得和自己没有任何关系。但如果你是 Defi 产品的用户,那么你一定执行过很多次 approve 操作了。
比如在 MakerDao 里面, unlock Dai 和 unlock MKR 的操作都是 approve :

比如在 Compound 里面的 enable 操作:

比如在 Uniswap 里面的 unlock 操作 :

上面提到的这些都是 approve 操作,它们的共同点是,当你要进行这些操作的时候,在MetaMask 弹出来的窗口里面,我们会看到写了一个 APPROVE

上面提到的这些 Defi 产品,都是比较可信的,也正因为如此,原本其实很危险的 approve 操作也可以变得很无所谓了。
但在操作一些很不熟悉的 Defi 产品的时候,我们需要了解下到底 approve 做了什么,以及如何在体验完了那些可能不安全的产品后,撤销 approve 。
这篇教学会讲到的内容到底 approve 做了什么?
如何撤销 approve
到底 approve 做了什么?approve 是 ERC20 Token 才有的一种操作。如果你已经玩过一些 Defi 产品了,那你用过最多的一款 ERC20 Token 很大概率可能是 Dai,我们下面就以 Dai 为例来说明。
眼睛男想从自己的账户,转一些 Dai 给胡子男:

上面这个操作,眼镜男其实是和 Dai 这个 ERC20 的智能合约在交互,他向智能合约发起这样的请求: 请从 眼镜男 的账户里转一个 Dai 给 胡子男,如图:

智能合约收到了眼镜男的请求,会做一些验证:

这里我们写了其中的两个验证条件:
眼镜男的账户里,必须要有足够多的 Dai
发起请求的,是眼镜男本人
这里我们要特别注意这里提到的第二个条件,因为这是 approve 产生的深层原因。
我们来看一下,眼镜男 如果尝试使用一个 Defi 产品,比如 uniswap:眼镜男想要用 1 Dai 在uniswap 上换一点 ETH。这个过程其实是这样:

眼镜男向 uniswap 的智能合约发起这样的请求,uniswap 的智能合约会做什么呢?它当然首先要从 眼镜男 的账户里面拿到 1 Dai,所以 uniswap 会向 Dai 的智能合约 发起请求,要求 将眼镜男账户上的 1 Dai,转到 uniswap 的账户上

和上面一样, Dai 的智能合约需要验证两件事情:

而这里的第二条就不成立了,因为这个请求并不是直接由 眼睛男 发起的,而是由 uniswap 发起的。
不过没有关系的是,Dai 的智能合约会尝试验证另一个条件,如果是成立的,也可以让这个操作成功:

看到这里,你就明白 approve 的含义了。
approve 是 ERC20 Token 都有的一个功能:
允许另外一个帐号(可以是个人帐号,也可以是智能合约帐号)使用你的部分资产
看到这里,你大概能明白,为什么 approve 是件很危险的事情了,你是否会很担心,uniswap 能够随便操纵你的资产?

虽然你 approve 了 uniswap 可以随便操纵你的 Dai,但是 uniswap 的代码是开源的,你可以阅读它的代码,发现它的代码里面,规定了在什么样的情况下可以操纵你的 Dai
那么,结合上面的内容,我们马上能够得到这样一些结论:
如果一个 Defi 产品的智能合约不是开源的,却又要求你 approve,你一定要非常慎重。
即使一个 Defi 产品的智能合约是开源的,如果它没有经过较多的第三方审计,那么还是可能出现 bug,导致你的资产能够随意被操纵。所以,如果你长时间不会操纵,可以先 撤销你的 approve
用例子来研究 approve 操作在演示如何 撤销你的 approve 之前,我们先以 uniwap 为例子,看下 approve 操作背后发生的事情:

uniswap 在 pool 的时候,需要首先 approve dai(也就是允许 uniwap 的智能合约操纵你的Dai),也就是点击这里的 unlock,然后会看到弹出的 MetaMask 窗口:

你应该已经注意到那个很大的数了,1.157920892373162e+59,对于不熟悉的朋友,我们简单地说名下,这个表示的是 1.157920892373162 乘以 10 的 59 次方。当然,你的账户里面肯定没有那么多 Dai,这里只是告诉 Dai 的合约说: 我们最多允许 uniswap 的智能合约 操纵我们的 1.157920892373162 乘以 10 的 59 次方 个 Dai,由于我们的账户里面没有那么多 Dai,那么这个其实等价于说: 我们允许 uniswap 的智能合约操纵我们账户里面的所有的 Dai.
我们点击 confirm,确认这笔交易,然后,我们等待交易确认,在 uniswap 的右上角,我们点击我们的地址:

在弹出的菜单里面,我们点击这里的交易链接,跳转到 etherscan 来仔细看下 approve 操作:

我们首先注意到,这里的 approve 操作,我们是向 Dai 的智能合约发起的这个请求,所以你会看到 Dai 的智能合约地址出现在了 To 后面。
接着,我们点击这里的 Click to see More,可以看到这里面的更多的细节:

我们来简单地说下 input data 的部分:
Function: approve(address guy, uint256 wad):简单地说来,当我们向智能合约发起请求的时候,我们需要指明我们要做什么。这里表示的是,我们要进行 approve 操作(如果用更加准确地术语: 这笔以太坊交易调用了 Dai 智能合约的 approve 函数)。
这里的 [0] 后面的内容,也就是00000000000000000000000009cabec1ead1c0ba254b09efb3ee13841712be14 里面的 后 40 位表示的是我们要 approve 的 个人 / 智能合约 地址。09cabec1ead1c0ba254b09efb3ee13841712be14 就是 uniswap 智能合约 的地址了
这里的 [1] 后面的内容,也就是ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 是我们要允许uniswap 可以操纵我们的 Dai 的数量,其实这就是上面的 1.157920892373162 乘以 10 的 59 次方 的另一种写法(16 进制)
撤销你的 approve 操作那么要怎么 撤销 approve 操作 呢?
有的 Defi 产品,在它们的网站上提供了 lock 功能,比如 Maker 的 CDP portal

其实,对于没有深入了解 approve 原理的用户来说, unlock 功能可能反而会造成困扰,从用户体验的角度来说,有些产品在设计的时候,不会给出 lock 这个功能,比如在 uniswap 上面,我们就没有看到 lock 这个功能:

那我们应该怎么撤销这次 approve 操作呢?
让我们来简单地回顾下我们上面的 approve 操作做了什么:
首先,approve 操作是向 Dai 的智能合约发起的请求
其次,approve 操作里面,我们允许 uniswap 的智能合约最多操纵我们1.157920892373162 乘以 10 的 59 次方 个 Dai
那 撤销 approve 操作就可以等价于是这样的:
首先,撤销 approve 依然是向 Dai 的 智能合约 发起的请求
其次,approve 操作里面,我们允许 uniswap 的智能合约最多操纵我们 0 个 Dai
好了,方案有了,让我们来试试吧。
我们回到刚刚的 etherscan 的页面,我们点击这里的 Dai 合约的地址,跳转到 Dai 智能合约的地址对应的 etherscan 的页面:

我们点击上面的 Contract,跳转到合约的页面:

注意到这里有个 write contract,可以理解为这个就是我们要和这个合约进行交互:

接下来,就和使用其他 Dapp 一样,我们需要连接到我们的钱包,我们点击这里的 Connect to Web3

连接之后,我们在下面找到 approve

我们现在要 撤销之前对 uniswap 的 approve,我们输入上面拿到的 uniswap 智能合约 的地址09cabec1ead1c0ba254b09efb3ee13841712be14,注意,输入的时候,要在地址前面加一个 0x,也就是 0x09cabec1ead1c0ba254b09efb3ee13841712be14; 然后还要输入 approve 的数量,这里我们输入 0, 同样,要在前面加一个 0x 就成了 0x0

然后我们点击 write,在弹出的 MetaMask 窗口里面,我们看到:

主要到,这里 approve 下面的 0, 这正是我们想要的,我们点击 confirm 确认这笔交易:

然后,我们会看到 write 旁边多出了一个 View Your Transaction 按钮,我们点击这个按钮,可以跳转到我们的这次 approve 操作的 etherscan 页面:

现在,让我们回到 uniswap 的页面看下:

unlock 按钮又回来了,说明我们 已经成功撤销了 对 uniswap 智能合约的 approve 操作 。

区块链叁点壹自媒体(ID:btc820)是知名原创区块链&科技&营销自媒体,全网总粉丝60万+,全网原创文章阅读总量2亿+,微博签约自媒体,抖音西瓜视频人气博主,火星财经、金色财经资深专栏作者,精选分析最新最热区块链&科技&营销案例,长期提供区块链&科技&营销领域深度独家观察。

免责声明区块链叁点壹推送文章仅供参考,不作为投资研究决策依据,投资者据此做出的任何投资决策与本公众号无关。

欢迎关注:

1、后台回复BTC,领取免费教材。
2、转发微信精选商品橱窗给好友有福利哦!

      转发一周免费领取价值99元定制T恤,
      转发两周免费领取价值199元BTC纪念版T恤,
      转发一个月微信橱窗所有商品六折。
3、后台回复”十年走势“,查看BTC十年走势图。
4、更多福利,请扫下方小程序码前往微信精选商品橱窗。

部分图片来自网络
©本文版权归“区块链叁点壹”所有
———————————————————–

友情提示:转发公众号任意文章,联系客服领取精美礼品一份。

目前600000+人已关注加入我们
       
       

BSV商业世界分享比特币BSV应用,区块链应用,BSV交易,行情,平台,社区等区块链信息,所有信息均来自网络,不代表网站意见。特别提示,比特币及其他虚拟货币有超高风险,需谨慎对待,防范以“虚拟货币”“区块链”名义进行非法集资。

BSV商业世界提供比特币BSV应用,区块链应用,BSV交易,行情,平台,社区等区块链信息,所有信息均来自网络,不代表网站意见。特别提示,比特币及其他虚拟货币有超高风险,需谨慎对待,防范以“虚拟货币”“区块链”名义进行非法集资。如若转载,请注明出处:https://bitcoinwinds.com/666.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

QR code