approve 是你允許某個合約動用你錢包裡某種代幣的授權,簽過之後一直有效,直到你撤銷。釣魚網站常騙你籤這類授權或 Permit 簽名。檢視和撤銷可以用 Revoke.cash 或區塊瀏覽器的授權頁,撤銷本身是一筆鏈上交易,要付 Gas。
你在去中心化交易所裡換一次幣,錢包通常會先彈出一個「授權」,再彈出一個「兌換」。很多人點完就忘了第一個彈窗,可它留在鏈上的效果比第二個更久。如果你只在歐易(OKX)這樣的交易所帳戶裡交易,不會遇到這件事;一旦開始用自己的錢包連線去中心化應用,就繞不開它。
approve 授權到底授權了什麼?
以太坊上的 ERC-20 代幣標準裡有一個 approve(spender, amount) 函式:你告訴代幣合約,允許 spender 這個地址從你的地址裡最多花掉 amount 數量的這種代幣。之後對方呼叫 transferFrom 就能直接轉走,不需要你再確認。Revoke.cash 的解釋是,代幣合約裡有一張記錄表,記著誰被你授權了、授權多少,每次有人要花你的幣,合約先查這張表。
幾個性質直接決定風險:
- 授權針對的是一種代幣、一個網路上的一個地址。給 A 合約授權 USDT,不影響你的 USDC,也不影響你在別的鏈上的資產;同名的 USDT 在不同鏈上是不同的合約,授權也是各鏈各記各的,穩定幣的這種分佈方式見 穩定幣是什麼,USDT 和 USDC 有什麼區別。
- 普通的 approve 授權不會自動失效,要你自己撤銷。Revoke.cash 的頁面寫到,被授權的合約可以隨時花這些代幣,合約一旦被攻破或本來就是惡意的,代幣就可能被偷;它舉的例子是 2023 年 4 月的 SushiSwap 事件,說明老牌專案也會出事。
- 授權的數量由你簽名時的數值決定,很多應用為了省你下一次的 Gas 會預設請求「無限額度」。Ethereum.org 的安全頁建議:與合約互動時不要允許無限額度,只授權這次需要的數量。
- 斷開錢包連線不等於撤銷授權。OKX Learn 的 DEX 文章明確說,斷開連線只是結束當前頁面的互動,不會撤銷已經寫在鏈上的授權。
NFT 的情況略有不同:approve 針對某一枚 NFT,setApprovalForAll 則是授權對方轉走你在這個合集裡的全部 NFT,多數 NFT 市場用的是後者。
錢包裡有 5,000 USDT、只想換 100 USDT,授權多少合適?
假設你的錢包裡有 5,000 USDT,打算在某個應用裡換 100 USDT。數字是為說明風險敞口而設的假設:
| 你授權的額度 | 應用本次用掉 | 授權剩餘 | 如果這個合約之後被攻破,最多可能被動用 |
|---|---|---|---|
| 無限 | 100 | 仍是無限 | 錢包裡全部 5,000 USDT(以及之後你再存進來的) |
| 恰好 100 | 100 | 0 | 0,授權已經用完 |
| 500(多給了餘量) | 100 | 400 | 400 |
精確授權的代價是下一次再用要重新授權一次,多付一筆 Gas;無限授權省了這筆 Gas,換來的是風險一直掛著。哪種合適,取決於你對這個應用的信任程度和使用頻率。對不常用的小專案、領取頁,精確額度更穩妥。Gas 為什麼每次都要付,見 Gas 費是什麼,為什麼有幣卻轉不出去。
approve、Permit、Permit2 有什麼區別?
| 形態 | 怎麼產生 | 要不要付 Gas | 特點 |
|---|---|---|---|
| 普通 approve | 鏈上交易 | 要 | 錢包通常有授權警告,帶額度數值 |
| setApprovalForAll(NFT) | 鏈上交易 | 要 | 一次授權一個合集的所有 NFT |
| Permit(EIP-2612) | 鏈下簽名,由對方提交上鍊後生效 | 簽名時不要 | 只有部分代幣支援;簽名本身不會出現在授權列表裡 |
| Permit2 | 先對 Permit2 合約做一次授權,之後用簽名向其他合約授權 | 首次要,之後簽名不要 | 帶過期時間;一次簽名可以涉及多個代幣,更難看懂 |
Permit 的好處是可以只授權剛好夠用的額度,也不用多付一筆授權的 Gas。壞處是 Revoke.cash 特別指出的:簽名是鏈下的,不少錢包(Revoke.cash 舉了 MetaMask 的例子)對普通授權會彈警告,對 Permit 簽名卻沒有這種警告,看上去像是在「登入網站」,實際上你是在授權。
釣魚網站怎麼利用授權把幣轉走?
Revoke.cash 的「被盜後怎麼辦」文章把常見手法歸成幾類,可以用來對照自己的情況:
- 直接授權給騙子的合約:釣魚網站讓你批准一個由他控制的合約,然後把幣轉走。
- 一次簽名清空多個已授權資產:典型是掛單簽名,誘導你籤一份「以 0 ETH 出售」的訂單,或者針對 Permit2 的簽名。文章指出,這類攻擊的特點是「一次性」,籤一次,已經授權過的資產被一次性拿走。
- 偽裝成「Security Update」「Claim」「Claim Rewards」之類的直接轉帳:這不是授權,是你親手簽了一筆轉帳,授權列表裡看不出來。
判斷你被偷的是哪一種,可以看被盜的範圍:只丟了一種資產,更像授權或直接轉帳;多種資產跨多條鏈、多個地址同時丟,更像助記詞洩露,這就不是撤銷授權能解決的了,見 助記詞保管與洩露應對。授權請求往往來自仿冒頁面,頁面真假的判斷見 搜到的歐易官網是真的嗎,釣魚網站怎麼識別。
OKX 的反詐文章還提醒過一點:陌生的代幣或轉帳記錄出現在你的錢包裡,本身不會讓資產受損,風險在於它引導你去批准合約或點連結。對這類記錄不要點連結、不要兌換、不要批准。
簽名前怎麼判斷這個授權該不該籤?
彈窗出現時,把這幾項逐個過一遍,任何一項答不上來就先不籤:
| 看什麼 | 正常情況 | 需要停下的情況 |
|---|---|---|
| 當前網址 | 是你自己輸入或書籤進入的 | 來自別人發的連結、搜尋廣告 |
| 被授權地址(spender) | 能在專案官方文件裡對上 | 一串你不認識、查不到來源的地址 |
| 代幣和數量 | 與你這次要做的事匹配 | 要求「無限」,或代幣與操作無關 |
| 彈窗型別 | 普通授權,有明確警告 | 頁面叫「登入」「驗證」,實際是簽名授權 |
| 事情本身 | 你主動發起 | 頁面跳出來說「領取」「安全升級」 |
怎麼檢視和撤銷錢包裡的授權?
用 Revoke.cash
Revoke.cash 頁面稱其支援 80 多個網路,可以連線錢包,也可以直接輸入地址(或 ENS 名)檢視。步驟:
- 開啟 Revoke.cash(自己輸入網址或用確認過的書籤;Revoke.cash 的說明也建議把常用的加密網站存成書籤),連線錢包或輸入你的地址。
- 選擇要檢查的網路。授權按鏈分開,一條鏈查一次。
- 載入完成後看到該鏈上的授權列表。可以按時間排序,懷疑剛中招就選從新到舊;也可以按被授權地址搜尋。
- 在目標授權上點「Revoke」,錢包裡確認。也可以點額度旁邊的鉛筆圖示,把額度改小而不是完全撤銷,適合你還要繼續使用的應用。
用區塊瀏覽器
Etherscan 以及 Polygonscan 等同類瀏覽器也有授權頁。Etherscan 的入口在頂部導覽「More」選單下的 Token Approvals,輸入地址,選擇代幣型別(ERC20、ERC721、ERC1155),記得開啟「顯示所有授權」的開關,然後在目標行點 Revoke。其他鏈用對應的瀏覽器,流程相同。
撤銷的幾點現實
- 撤銷是把額度設成 0 的一筆鏈上交易,需要用該網路的原生幣付 Gas。錢包裡一點原生幣都沒有,就撤銷不了。
- 撤銷只能阻止以後的盜取,不能找回已經丟的幣。
- Permit 簽名在被對方提交上鍊之前,不會出現在授權列表裡,因為 Revoke.cash 這類工具看不到鏈下簽名。Revoke.cash 說,簽名有可能在被啟用前取消,但騙子通常會立刻啟用,幾乎來不及。一旦啟用,就能像普通授權一樣撤銷。
- Permit2 有兩層:你對 Permit2 合約本身的授權,和 Permit2 替你發給各個應用的子授權。Revoke.cash 建議不用時撤銷前者;後者帶有效期,可以等它過期,期限太長就手動撤銷或改小。
- 如果你懷疑自己剛在釣魚頁簽過掛單類簽名,先去撤銷對相關合約(比如 Permit2、各 NFT 市場合約)的授權。Revoke.cash 的說明說,這是阻止這類簽名生效的唯一辦法,而且時間視窗很短。


平時怎麼減少授權帶來的風險?
- 授權額度按需填寫,別點預設的「無限」。Ethereum.org 提到不少以太坊錢包帶有額度保護功能,授權彈窗裡也留意一下數值欄。
- 每隔一段時間查一遍授權,把不再用的撤銷,尤其是用完就不再碰的小專案和各類「領取」頁。
- 大額資產放在不參與 DeFi 的地址裡,這個地址不要產生任何授權。用於互動的地址只放小額。分地址的思路見 託管錢包、自託管錢包、硬體錢包怎麼選。
- 對要你「簽名登入」「驗證身份」的頁面,先確認網址,再看錢包展示的內容裡被授權地址(spender)和代幣數量是什麼。
授權和撤銷授權時,最容易犯哪些錯?
| 做法 | 後果 |
|---|---|
| 以為斷開錢包連線就等於撤銷授權 | 授權仍在鏈上有效,對方合約仍能動用額度內的代幣 |
| 總是點預設的「無限」 | 合約或應用一旦出事,敞口是整個餘額 |
| 撤銷時錢包裡沒有原生幣 | 撤銷交易發不出去,授權繼續有效 |
| 看到陌生代幣空投就去「領取」 | 「領取」頁可能就是授權或直接轉帳的入口 |
| 只撤銷了一個地址的授權,卻忘了其他鏈 | 授權按鏈、按代幣分開,其他鏈上的授權仍在 |
TRON 錢包轉不出資產,是授權出了問題嗎?
如果你在 TRON 錢包裡發現轉不出資產,不一定是授權問題。OKX 的幫助文章描述了另一種騙局:騙子誘導你簽署一筆修改帳戶許可權的交易,使錢包的控制權被轉移,資產看得見卻動不了。這屬於帳戶許可權(多籤)被改,不是代幣授權,和代幣授權是兩回事,處理辦法見 OKX 幫助中心對應文章。如果你打算用歐易自家的鏈上錢包,功能和風險邊界見 歐易 Web3 錢包是什麼,怎麼用。
這篇文章參考了哪些資料
以下資料查閱於 2026 年 11 月 4 日。平台規則可能因地區、帳戶和時間變化。
- Revoke.cash:What Are Token Approvals? ↗
- Revoke.cash:How to Revoke Token Approvals ↗
- Revoke.cash:What Are Permit Signatures? ↗
- Revoke.cash:What Is Permit2? ↗
- Revoke.cash:What to Do When Scammed? ↗
- Revoke.cash:What Is a Cold Wallet? ↗
- Ethereum.org:ERC-20 token standard ↗
- Ethereum.org:Ethereum security and scam prevention ↗
- OKX Learn:What is a DEX? ↗
- OKX:Common scam tactics ↗
- OKX:TRON Multi-Signature Scams: Can't Withdraw Your Funds? ↗