淺談approve(授權)
意外的發現有很多人對approve不是很懂
今天來聊聊approve
當地址A approve 給B C數量的token
白話來說 就是"允許B任意動用地址A裡的token, 最多可以累積動用C數量"
使用defi的時候 常常會需要approve 是因為合約會需要動用你的token
而為了方便起見 避免用戶每次頻繁approve
大部分授權都是直接授權到無限大
換言之 如果合約有問題 那你的錢包是可以被搬空的
畢竟你"授權"給那個地址使用了
所謂的revoke(取消授權) 其實底層也是approve 只是將數量設定為0
所以revoke之後 可動用數量為0 自然就不能隨意動用
回頭來說一下合約安全性
當地址A arrpove合約B之後
攻擊者可以透過地址B的合約來對地址A出手
所以如果不確定合約的安全性 甚至合約未開源
建議使用完畢後馬上revoke
最多就是麻煩一點 每次要重新approve 然後浪費一點gas
最後來提一下proxy合約
proxy在我個人看來相當危險
一般來說 合約佈署後不能更動內容
proxy繞過了這個限制 讓合約內容可更新
以開發來說當然是非常方便 這邊先不提細節
以用戶來說 就相當危險了
還記得approve的涵義吧?
如果將proxy的合約內容更新成 抽乾錢包
你的approve依舊是有效的。等同你授權了一個不知道內容的合約
所以對於沒有timelock的proxy合約 我一率建議當成未開源合約
最後附上幾個revoke用的工具
https://etherscan.io/tokenapprovalcheckerhttps://bscscan.com/tokenapprovalcheckerhttps://app.unrekt.net/https://debank.com/profile/你的地址#DEFI小教室