本篇內容
代幣授權是什麼?授權額度、餘額與轉帳的差別
代幣授權,是讓特定地址在一定額度內,代你移動某一種代幣的權限。授權額度(allowance)表示還有多少可用權限,不是已經轉出的數量,也不是錢包餘額。
因此,「連接錢包」「簽署訊息」「設定授權額度」與「轉帳」不能混為一談。看到確認按鈕,先要分清這次請求改變的是什麼;按鈕名稱本身並不足以說明權限。
本文以 ERC-20 代幣與 ERC-2612 permit 為範圍,解釋這些概念,不提供錢包操作或撤銷授權步驟。原生 ETH、SOL、NFT,以及 Permit2 等其他授權機制,不能直接套用同一套說明。
授權額度屬於誰?先分清四個對象
一筆 ERC-20 授權,要放在同一個網路、同一個代幣合約中理解,並分清兩個地址:
- 持有人地址(owner):持有代幣、提供授權的一方。
- 被授權地址(spender):可依授權移動代幣的一方,可能是應用程式使用的智慧合約。
網站名稱不是合約地址,代幣簡稱也不是代幣身分。同名代幣可能位於不同網路或不同合約;某個網路上的授權,不能直接當成另一個網路上的同名資產授權。
ERC-20 標準區分了幾個動作:approve 設定授權額度,transfer 從呼叫者自己的帳戶轉出代幣,transferFrom 則讓其他地址在授權範圍內轉出持有人的代幣。再次呼叫 approve 時,新數值會取代原本的額度,不是自動加在舊額度上。
理解這些差異的重點是:設定權限,不等於完成轉帳。 授權額度描述的是仍可使用的權限,不能拿來當作付款或收款證明。
連接、簽署、授權與轉帳,有什麼不同?
基本的錢包連線,是讓網站與你選定的帳戶建立互動,本身不等於設定 ERC-20 授權額度。不過,網站之後可能再提出簽署或交易請求;有些流程也可能把多種請求放在一起,不能只因為畫面寫著「連接」就把所有內容視為基本連線。
簽署訊息同樣要看內容。有些訊息用來登入,有些則可能授予可影響資產的權限。當下沒有支付 Gas,不代表這份簽署沒有後續效力。MetaMask 的 Dapp 說明可作為理解連線與後續請求的參考,但不同錢包的畫面與流程未必相同。
| 動作或請求 | 要分清的對象 | 不能直接推論 |
|---|---|---|
| 基本錢包連線 | 哪個帳戶與哪個網站連線 | 不等於代幣授權;也不能把合併提出的其他請求視為基本連線 |
| 訊息簽署 | 訊息用途與授予的權限 | 當下不付 Gas,不等於無風險或沒有資產影響 |
| ERC-20 授權 | 網路、代幣、持有人、被授權地址與額度 | 不等於代幣已轉出,也不代表餘額已被預留 |
| 代幣轉帳 | 代幣、轉出地址、收款地址、數量與完成狀態 | 先前有授權,不足以證明轉帳已完成 |
| 撤銷特定授權 | 改變的是哪一筆額度,以及變更是否已完成 | 不會撤回過去的轉帳,也不代表所有其他權限都已取消 |
代幣授權不等於把私鑰交給對方。但私鑰仍由你保管,也不表示被授權地址就安全:它可能在既有授權範圍內移動代幣。
用一筆例子看懂:餘額 80,為什麼能授權 100?
假設只有一個持有人、一種代幣、一個被授權地址,而且都在同一個網路。下表使用有限額度,並假設每次代為轉帳都扣減相同數量的授權額度。每一列都是已完成的狀態,不包含待處理或互相競爭的交易,也排除手續費、供給調整型代幣的餘額變動與其他操作。
所有數字都只是虛構的代幣單位,不是美元、Gas 或平台交易餘額。
| 已完成的狀態 | 代幣餘額 | 剩餘授權額度 |
|---|---|---|
| 起始狀態 | 80 | 0 |
| 授權額度設為 100 | 80 | 100 |
| 被授權地址代為轉出 30 | 50(80 − 30) | 70(100 − 30) |
| 網站與錢包中斷連線 | 50 | 70 |
| 持有人收到 20 | 70 | 70 |
| 將這筆授權額度設為 0 的變更完成 | 70 | 0 |
授權 100 並沒有補出缺少的 20,也沒有把 100 轉走,更沒有替對方預留 100。此時餘額仍是 80。代為轉出 30 之後,餘額是 50,剩餘授權額度是 70,兩者自然不必相等。
接著收到的 20,可能仍在既有剩餘授權可作用的範圍內,取決於代幣與授權的實作。最後,即使這筆額度已歸零,也不會讓先前轉出的 30 自動回到持有人帳戶。
「無限授權」不是無限餘額,也不是安全保證
錢包有時會把非常大的授權上限標示為「無限」。這個上限可以高於目前餘額,但不會創造代幣。較大的額度可能減少重複授權的次數,同時也留下持續可用的權限;日後收到的同一種代幣,也可能受到這筆授權影響。
較小的額度限制了這筆授權可動用的數量,卻不保證惡意的被授權地址無害、合約不會變更,或整個應用程式值得信任。它也不能當成你所有資產、所有授權的總損失上限。MetaMask 的額度說明解釋了額度的用途;本文不以某個介面的標示,保證所有代幣實作相同。
permit 的到期時間,等於授權額度到期嗎?
不一定。這裡談的是 ERC-2612:它讓持有人透過簽署訊息來設定 ERC-20 授權額度,而不必由持有人親自送出一般的 approve 交易。其他地址也可以提交這份 permit;提交者與被授權地址,不一定是同一方。
ERC-2612 的訊息包含持有人、被授權地址、額度、nonce 與 deadline。nonce 用來防止同一份授權被重複使用;domain 則區分合約與鏈等簽署範圍。這些條件和有效簽章都要符合,permit 才能被接受,不能只看金額或「到期時間」幾個字。
最容易誤會的是 deadline。它限制的是這份 permit 最晚何時能被接受,不是已建立的授權額度會自動失效的時間。若 permit 在期限內被接受,依 ERC-2612 所定義的狀態變更,授權額度已被設為指定值;不能因為之後超過 deadline,就認為那筆額度已經歸零。
這個區別來自 ERC-2612 規格的接受條件與額度更新方式。它不代表所有名為 permit 的機制都相同,也不代表每種 ERC-20 代幣都支援 ERC-2612。其他授權機制可能另有有效期限或規則,需要分開理解。
中斷連線、撤銷授權與公開資料,是三件事
中斷網站與錢包的基本連線,不會自動清除代幣合約中已存在的授權額度。網站連線權限與合約中的代幣使用權限,並不是同一筆設定。
中斷連線也不會把一般公開的 Ethereum 鏈上紀錄藏起來。只要知道地址,其他人仍可透過區塊鏈瀏覽器查看公開記錄的 ETH 餘額、代幣持有量與交易紀錄;查看這些公開資料不需要先取得代幣授權。授權額度管的是被授權地址可代為移動多少代幣,不是誰能看見公開餘額。這不代表所有應用程式的私人資料或隱私保護交易都公開。
撤銷某筆代幣授權,則涉及改變那筆授權額度。提出撤銷請求,不等於變更已完成;只有已完成的狀態,才能用來描述這筆額度是否已改變。即使這筆額度已設為 0,也不能推論其他獨立簽署的授權、進階權限或其他代幣的額度都已取消,更不會撤回先前已完成的轉帳。
關於這些差異,可參考 MetaMask 的連線與撤銷說明及 Ethereum 區塊鏈瀏覽器文件。這裡比較的是權限與紀錄的性質,不是特定錢包的操作教學。
常見問題
只連接錢包,就會給網站代幣授權嗎?
基本連線本身不會設定 ERC-20 授權額度。但後續或合併提出的簽署、交易與進階權限請求,必須分開理解,不能全部當成基本連線。
授權 100,就是轉出 100 嗎?
不是。授權設定的是權限,轉帳才是移動代幣。在本文範例中,餘額 80、授權額度 100 可以同時存在;設定額度後,餘額仍是 80。
授權額度可以比錢包餘額高嗎?
可以。額度不是被預留的餘額,也不會增加你持有的代幣。日後收到的同一種代幣,可能仍受既有剩餘授權影響,實際行為取決於代幣與授權的實作。
中斷連線,就等於撤銷授權嗎?
不是。中斷基本連線不會自動清除合約中的額度。改變特定額度需要另一個已完成的狀態變更,也不會撤回過去的轉帳或隱藏公開鏈上紀錄。
簽署時不用付 Gas,或 permit 有期限,就不用擔心嗎?
不能這樣判斷。簽署可能授予影響資產的權限;ERC-2612 的 deadline 限制 permit 被接受的時間,不會讓已建立的額度自動到期。其他 permit 機制也可能有不同規則。
記住:權限、餘額與已完成轉帳要分開看
授權額度回答「特定地址還能代為移動多少這種代幣」,餘額回答「地址目前持有多少」,已完成轉帳則回答「哪些代幣已經移動」。連線狀態、簽署期限與公開資料的可見性,又是另外幾個問題。把它們分開,才能看懂請求的意義;這仍不能代替對特定合約或交易風險的判斷。
延伸閱讀:Gas 上限與 Gas 價格。Gas 描述的是執行交易的資源與費用,不能拿來當作代幣授權額度。
資料範圍:ERC-20 與 MetaMask 基本概念資料於 2026 年 10 月 20 日查閱;公開鏈上資料的說明於 10 月 23 日查閱;ERC-2612 與連線、撤銷差異的資料於 10 月 25 日核對。這些日期不是文件的發布日期,也不表示已測試目前各錢包的介面或某筆交易。
分享本指南