如何在 Solana 上撤銷代幣權限
Rent 更新已於 2026年9月3日核查: 本舊文章中每個帳戶的固定 Rent 或到帳金額,都是基於舊版每位元組 6,960 lamports 設定的歷史範例,並非目前報價。帳戶大小、目前啟用的 Rent 階段、先前的提取、操作費用和網路成本都會改變結果。請閱讀 Solana 2026 Rent 下調,並以錢包的即時交易預覽為準。
在 Ethereum 上,撤銷權限早已是常見操作,因為無上限的 ERC-20 核准曾導致許多錢包資產遭轉走。Solana 也有相對應的機制,但運作方式不同;了解它能對你做什麼和不能做什麼,仍然十分重要。
如何在 Solana 上撤銷代幣權限?
連接至 撤銷工具。它會掃描你擁有的每個代幣帳戶,顯示你曾核准哪些地址從中轉出代幣,並一次批次清除這些核准。此功能 不收服務費 — 撤銷不會取回任何租金,因此你只需支付網路費用。透過 CLI 操作時,指令為 spl-token revoke <TOKEN_ACCOUNT_ADDRESS>。
Solana 委派者究竟是什麼
當你在 Solana 上核准某項操作時,就是在某一個特定的代幣帳戶上設定一個 委派者。此 Approve 指令會在該帳戶中記錄兩項資訊:委派者的地址,以及委派額度。
之後,委派者無須再次徵求你的同意,就能從該帳戶轉移或銷毀不超過此額度的代幣。它無法觸及你的其他代幣帳戶、無法超過委派額度,也無法轉移你的 SOL。
這是真實有效的權限,值得審慎看待:擁有代幣帳戶額度的委派者,確實能移動其中的代幣。但基於三項結構性原因,其影響範圍明顯小於 Ethereum 的對應機制。
為什麼 Solana 核准的範圍比 Ethereum 更小
| Ethereum 核准 | Solana 委派者 | |
|---|---|---|
| 範圍 | 你持有的該合約所有代幣 | 單一代幣帳戶 |
| 額度 | 通常無上限 | 你設定的固定上限 |
| 可同時有多個 | 是,會依各支出者累積 | 否,每個帳戶只能有一個委派者 |
| 清除方式 | 明確的撤銷交易 | 撤銷操作, 或關閉帳戶 |
第三列才是重點。在 Ethereum 上,核准會不斷累積:你可以針對同一種代幣,授予十幾個合約使用額度,而且每項核准都會靜默保留,直到遭到撤銷。長年使用 DeFi 後,往往會留下大量被遺忘的無上限核准,這正是撤銷工具在 Ethereum 上不可或缺的原因。
在 Solana 上, 每個代幣帳戶最多只能有一個委派者。設定新的委派者會覆寫先前的委派者,不會形成累積清單。代幣帳戶在任何時間點,不是只有一個委派者,就是沒有委派者。
這正是 Solana 未形成與 Ethereum 相同撤銷工具文化的原因。這項風險確實存在,但範圍有限,而且通常會在日常使用錢包的過程中自行清除。
委派者從何而來
你帳戶中的多數委派者並非惡意,而是 Solana 一般功能的運作方式:
- NFT 市場刊登。 刊登 NFT 時,通常會將其委派給市場程式,以便買家出現時完成交易。這也解釋了為何已刊登的 NFT 必須先下架才能銷毀:你的錢包已不再擁有單方面處置它的權限。
- 質押與金庫程式。 存入協議時,通常會使用委派,而不是移轉資產保管權。
- 可程式化 NFT。 為了強制執行版稅,pNFT 會以凍結狀態持有,並設有委派權限。
- 惡意核准。 真正需要擔心的情況是:釣魚網站顯示一筆看似領取資產的交易,但你實際簽署的是一項
Approve指令,將你代幣的操作權限交給委派者。
撤銷無法清除的一項權限
以上內容談的都是 帳戶層級 委派者,也就是你自己代幣帳戶中的一個欄位。由於帳戶由你擁有,因此你可以清除它。
Token-2022 引入了另一種獨立且權限更強的角色: 永久委派者,其設定位置是 鑄幣帳戶 而不是設在你的帳戶上。設有永久委派者的鑄幣帳戶,會授予該地址轉移及銷毀 每一個 持有該代幣帳戶內資產的權限,而且沒有額度上限,持有者也無法阻止。這是代幣本身的屬性,不是你授予的權限,因此 Revoke 無法觸及它,任何工具也都一樣。
有些合法代幣會刻意使用這項功能,例如需要保留追回機制的受監管穩定幣。但這也表示,任何 Solana 撤銷工具(包括我們的工具)實際能處理的範圍是 你在自己帳戶上授予的核准。
如果代幣的鑄幣帳戶設有永久委派者,消除這項風險的唯一方式就是不再持有該代幣。在認定撤銷乾淨後就沒有人能移動特定餘額之前,請先在區塊鏈瀏覽器中檢查其鑄幣帳戶。
如何檢查哪些帳戶設有委派者
錢包不會直接顯示這項資訊。Phantom 與 Solflare 只顯示餘額,不會顯示各代幣帳戶中的委派者欄位,因此你兩年前授予的核准,在日常使用的介面中並不可見。
有三種查看方式:
- 撤銷工具。 連接錢包後,工具會掃描你在 SPL Token 與 Token-2022 程式中的每個代幣帳戶,列出各個委派者、適用的鑄幣帳戶及額度。掃描僅會讀取資料;單純查看不需要簽名,也不需要核准任何內容。
- 區塊鏈瀏覽器。 查詢你的錢包地址,逐一開啟代幣帳戶並檢查委派者欄位。若已設定委派者,該欄位就會顯示。檢查一個帳戶還算可行,但檢查一百個就很繁瑣。
spl-tokenCLI。spl-token account-info <TOKEN_ACCOUNT_ADDRESS>會回報委派者與委派額度。
如果委派者是你認得的市場,且 NFT 目前仍在刊登中,這屬於預期狀況;將其下架即可清除委派者。
請留意額度欄。核准時,額度常會設為可能的最大值,而不是實際所需金額;工具會將其顯示為 無上限。合法刊登通常只會委派一個 NFT;如果你大量持有某種代幣,而其委派額度沒有上限,就值得進一步檢查。
如何撤銷
透過工具,請前往以下位置連接錢包: sol-incinerator.com/revoke,檢查清單後簽署。所有選取項目都會盡可能合併成最少的交易,因此即使錢包有三十個過期委派,也不需要簽署三十次。
此功能 不收服務費。撤銷不會釋放租金,因此也沒有可供扣除費用的款項;你只需支付網路交易費,無須支付其他費用。
透過 CLI,對特定代幣帳戶執行:
spl-token revoke <TOKEN_ACCOUNT_ADDRESS>
這會呼叫 SPL Token 程式的 Revoke 指令,這只需要代幣帳戶,以及你以帳戶擁有者身分提供的簽名。它會直接清除委派者欄位,不會只完成部分操作,也不會影響你的餘額。
透過錢包 UI,一般需要間接處理:取消最初建立委派的操作,或將資產下架。從原先刊登 NFT 的市場將其下架時,取消指令也會一併移除該市場的委派者。
撤銷市場對已刊登 NFT 的委派,實際上等同將其下架,因為市場將無法再完成交易。這是正確的行為;但如果你打算繼續刊登該資產,請不要更動其委派者。
為什麼無法撤銷凍結帳戶的委派?
因為 Solana 不允許這麼做。SPL Token 程式會直接拒絕對已凍結代幣帳戶執行撤銷,並傳回 AccountFrozen — 凍結帳戶不只會封鎖轉帳,也會封鎖權限變更。
這點比表面上更重要,因為凍結與委派往往同時出現。為了強制執行版稅,可程式化 NFT 會在設有委派者的情況下凍結持有,許多質押程式也會凍結其持有的資產。因此,你最可能發現的委派者,往往也正是無法直接清除的那些。
工具不會將這些帳戶列入清單,因為實務上,帶有委派者的凍結帳戶通常是在按預期運作,例如用來強制執行版稅的 pNFT,或你刻意質押的資產,而不是需要處理的項目。
如果確實要清除委派者,該帳戶必須先 解除凍結。解除質押、下架,或完成導致帳戶凍結的相關操作;解除凍結後,即可正常撤銷委派者。
銷毀並非變通方法。凍結帳戶拒絕銷毀的原因,和拒絕撤銷相同:凍結會封鎖該操作,而不只是封鎖轉帳。因此只要資產仍在凍結帳戶內,就無法透過銷毀來擺脫凍結帳戶上的委派者。只有凍結權限持有者能解除凍結。
工具不直接嘗試撤銷還有一個實際原因:撤銷操作會盡可能合併成最少的交易,因此一個凍結帳戶就可能導致同一筆交易中的其他委派全部失敗。將它排除,才能讓其餘操作成功。
完整做法:關閉帳戶
以下這點經常遭到忽略。 委派者是儲存在代幣帳戶上的一個欄位。 帳戶不存在,委派者也就不存在。
因此,如果該代幣本來就是你不想要的,例如垃圾代幣、已失去活躍度的迷因幣,或誘導你簽署交易的詐騙空投,銷毀代幣並關閉其帳戶,會連帶永久移除委派者。嚴格來說,這不是撤銷權限,而是刪除該權限所作用的對象。與單純撤銷不同,關閉帳戶還會退回其持有的 ~0.00204 SOL 租金押金。
因此,對於任何你無意保留的代幣,清理會是更徹底的處理方式:
| 操作 | 已清除委派者 | 保留代幣 | 已退回 SOL |
|---|---|---|---|
| 撤銷 | 是 | 是 | 否 |
| 銷毀並關閉帳戶 | 是 | 否 | 0.002 SOL |
想保留代幣時,請撤銷委派;不想保留時,則銷毀代幣並關閉帳戶。
如果你認為自己簽署了惡意交易,光是撤銷委派並不足夠。委派權限只是攻擊者可能取得的多種權限之一;如果你的助記詞已外洩,任何鏈上操作都無法補救。請先將有價值的資產移至全新錢包,再處理已遭入侵的錢包。
實際的威脅情境
對多數人而言,最實際的總結是:如果你曾簽署後悔的交易,請檢查委派者;將不想繼續刊登的資產下架,並清除惡意核准常依附其上的垃圾代幣。
Solana 的設計,代表你不會像 Ethereum 錢包一樣,累積多年未清除的無上限核准。你更可能持有的 是 數百個棄用的代幣帳戶,每個帳戶都存有可退還的押金。這些押金具有實際價值,通常約一分鐘即可取回。
相關文章
常見問題
如何在 Solana 上撤銷代幣權限?
對設有委派者的代幣帳戶,使用 SPL Token 程式的 Revoke 指令。這只需要代幣帳戶,以及你以擁有者身分提供的簽名。若從命令列操作,請輸入 spl-token revoke,後面接上代幣帳戶地址。
Solana 代幣帳戶上的委派者是什麼?
委派者是你授權的地址,可從某一個特定代幣帳戶轉移或銷毀不超過指定額度的資產。市場會在刊登 NFT 時使用委派者,質押程式則會在存入資產時使用。每個代幣帳戶同一時間只能有一個委派者。
Solana 核准的風險與 Ethereum 核准相同嗎?
風險範圍較小。Solana 委派者僅限於單一代幣帳戶,且有固定額度上限;核准新的委派者會取代舊委派者,不會累積。Ethereum 核准則以代幣合約為範圍,通常沒有上限,且會無限期累積。
關閉代幣帳戶會移除其委派者嗎?
是,會完全移除。委派者是儲存在代幣帳戶本身的欄位,因此帳戶關閉後,委派者也會隨之消失。銷毀不需要的代幣並關閉其帳戶,也會連帶移除任何委派者。
如何確認代幣帳戶是否設有委派者?
在區塊鏈瀏覽器中查詢你的地址,並檢查各個代幣帳戶;若已設定委派者,就會顯示委派者欄位。spl-token CLI 也會回報這項資訊,任何顯示原始帳戶資料的錢包都會呈現相同欄位。
為什麼無法撤銷凍結代幣帳戶的委派?
SPL Token 程式會拒絕對凍結帳戶執行撤銷,並傳回 AccountFrozen 錯誤,因為凍結不只會封鎖轉帳,也會封鎖權限變更。可程式化 NFT 與已質押資產通常會處於凍結狀態。必須先解除帳戶凍結,才能清除委派者;銷毀也不是變通方法,因為凍結帳戶同樣會拒絕銷毀。
撤銷操作能移除 Token-2022 永久委派者嗎?
不能。永久委派者設在鑄幣帳戶上,而不是你的代幣帳戶上,並且擁有轉移及銷毀所有持有該代幣之帳戶資產的權限。這是代幣本身的屬性,因此任何撤銷指令都無法清除。消除這項風險的唯一方式,就是不再持有該代幣。
