代幣授權真正的風險,藏在「額度」這個細節裡。當你簽 approve 時,其實是在設定「允許這個合約動用你多少數量的這種代幣」。理論上你可以只授權剛好這次要用的數量,但為了省去你每次交易都要重新授權的麻煩,絕大多數 DeFi 介面預設請求的是「無限額度(unlimited)」授權。這代表:一旦你簽下去,那個合約日後就能在任何時候、不必再經你同意,動用你錢包裡這種代幣的全部。如果那個合約本身是惡意的、或日後被駭客找到漏洞,它就能憑這個你早就簽過的授權,把你錢包裡的對應代幣一次搬空——這正是大量「錢包被掏空」事件的真正原因,而非私鑰外洩。
既然授權是必要的、卻又有風險,該怎麼管好它?幾個關鍵做法。第一,能限額就限額:有些錢包或介面允許你在 approve 時手動把額度改成剛好這次需要的數量,而不是無限,這樣即使合約出事,損失也僅限那次授權的額度。第二,定期檢視並撤銷授權:你可以用專門的授權檢視/撤銷工具,查看你的地址過去授權給了哪些合約、額度多少,把那些你早就不用、或來路不明的授權撤銷掉(撤銷本身要付一筆 Gas)。第三,互動前看清楚:每次簽 approve 前,確認你互動的是正牌、可信、最好經過審計的合約,別在不明網站隨手簽授權。把管理授權當成例行的資安習慣,能擋掉很大一部分風險。
在實務上,幾個情境特別要對授權提高警覺。第一,新的或不熟悉的協議:第一次和某個 DeFi 協議互動、它請求 approve 時,先確認它是不是正牌、有沒有審計、社群評價如何,別因為想搶高收益就隨手對陌生合約開無限授權。第二,可疑的空投或釣魚網站:很多詐騙正是誘導你連錢包並 approve 或簽名認領,而那個授權其實是把你某代幣的動用權交給駭客——這類請求一律當詐騙。第三,定期大掃除:每隔一段時間,用授權檢視工具把舊的、用不到的、額度過大的授權清掉,尤其是你曾經互動過、現在已不用的協議。把授權管理變成像定期更新密碼一樣的習慣,是進階使用者保護資產的基本功。
用一個真實常見的情境理解授權的威力與風險。假設你想在一個去中心化交易所,用錢包裡的 USDC 換成別的幣。第一次操作時,介面會跳出兩個步驟:先 approve(授權),再 swap(兌換)。
你點了 approve,錢包彈出簽名請求——這裡藏著關鍵:很多介面預設請求的是無限額度授權。如果你沒注意、直接簽下去,等於告訴這個交易所合約:你以後可以動用我錢包裡全部的 USDC,不必再問我。當下你可能只想換 100 美元,但你授權的卻是無上限。
平常這沒事——只要那個合約是正派、安全的。但風險在於:萬一這個合約日後被發現有漏洞、被駭客攻破,駭客就能利用你當初簽下的那個無限授權,把你錢包裡所有 USDC 一次轉走,完全不需要你的私鑰。
正確的做法是:approve 時若能改額度,就只授權這次要用的數量;或事後用授權撤銷工具,把這個用不到的無限授權撤掉。這個小動作,正是區隔「資安老手」與「哪天莫名其妙被掏空」的人的關鍵。
代幣授權的核心取捨,是「便利」與「安全」之間。無限額度授權的好處是省事:授權一次,之後在這個協議反覆交易都不必再簽、不必再付授權的 Gas,體驗順暢。但代價是你把一個永久、無上限的動用權留在了那個合約上,等於把安全完全押在「這個合約永遠不會出事」上——而合約被駭的事件層出不窮。反過來,每次都只授權限額最安全,但要忍受反覆簽名與額外 Gas 的麻煩。務實的平衡點是:對信任度高、常用的大型協議,可接受較寬鬆的授權以求便利,但要定期檢視撤銷;對陌生、小型、或一次性的互動,盡量限額或用後即撤。