本文目錄與來源 6 節

文章重點

  • 簽名當下沒付 gas,不能用來判斷它是否涉及代幣授權。
  • Permit2 的簽名接受期限與 spender 額度到期時間,要分開看。
  • 撤銷現有額度與作廢尚未使用的簽名,是不同的處理動作。

沒跳出 gas 費用,仍要看你簽了什麼

錢包跳出簽名視窗,沒有要你付 gas,也沒有立刻扣款。這時仍要讀內容:ERC-2612 允許用簽名設定代幣使用額度,其他地址可以把有效的 permit 提交上鏈。簽名當下不用付費,後續鏈上執行仍有網路成本;你簽下的權限,也可能由別人接著使用。[1]

Permit2 要分兩層看

ERC-2612 的 permit 由代幣合約自己支援;Permit2 則是另一個獨立合約。使用 Permit2 前,先要在代幣合約上給它動用額度。之後,再透過 Permit2 決定哪個 spender,也就是被授權支出的地址,可以用哪些代幣、用多少。查權限時,這兩層都要辨認。[1][2]

一次性簽名與可重複支出的額度

Permit2 的 AllowanceTransfer 會記住 spender 的額度與到期時間。在額度還夠、尚未到期等條件成立時,對方可以多次支出。SignatureTransfer 則用一次性簽名授權轉移,並用 nonce 防止同一份簽名重複使用;nonce 可以理解成這份授權的防重複編號。[5][6]

一次性不代表金額小。那一次仍可能授權動用你不願交出去的代幣數量。而且 SignatureTransfer 用完的,是那份簽名的支出權限;代幣合約原先給 Permit2 的底層授權,不會跟著自動取消。[2][6]

簽名快到期,額度可能還能用很久

AllowanceTransfer 有兩個要分開讀的欄位:sigDeadline 限制這份簽名最晚何時能被接受;expiration 限制建立後的 spender 額度何時到期。前者很短,後者仍可能很長。只看見一個接近的日期,還不能判定全部權限都會在那時結束。[3][5]

ERC-2612 的 deadline 也限制 permit 被接受的時間。標準本身沒有讓已建立額度隨著這個 deadline 自動到期的機制。實際代幣可能使用不同版本的 permit,仍要以該合約為準。[1]

按下確認前,先把權限對上這筆操作

實際核對時,可以從網路、代幣合約、spender、額度及各項期限讀起:它們是否都符合你原本要做的事?這是依上述機制整理的檢查建議。如果介面只給一串看不懂的資料,先拒絕簽名,自己開啟官方文件查清楚,再決定是否繼續。[1][3][4]

若已簽過可疑訊息,斷開網站連線不會撤銷鏈上授權。接著要確認處理的是哪一層:代幣對 Permit2 的授權、Permit2 內部的 spender 額度,還是尚未使用的簽名。AllowanceTransfer 把目前額度歸零,並不會自動作廢所有未用簽名;它另有 nonce 作廢功能,SignatureTransfer 也有自己的作廢方式。要依模組與錢包支援確認,不能只看到「撤銷」兩字就認為所有風險都已解除。鏈上撤銷通常仍需網路費。[5][6][7]

查證範圍與製作說明

本文依官方文件與合約原始碼整理,未執行實際錢包交易或合約安全稽核,也未指稱 Permit2 出現新漏洞。文章與示意配圖由 AI 協助製作,經 BlockBlah 編輯流程查證及審閱。

資料來源與延伸閱讀

(7)

核對數據時,請一併確認來源的日期、統計期間與適用條件;部分連結會持續更新。

  1. ERC-2612: Permit Extension for EIP-20 Signed Approvals (另開分頁)
  2. Permit2 Overview (另開分頁)
  3. Allowance Transfer (另開分頁)
  4. Signature Transfer (另開分頁)
  5. Permit2 — AllowanceTransfer.sol (另開分頁)
  6. Permit2 — SignatureTransfer.sol (另開分頁)
  7. How to revoke smart contract allowances / token approvals (另開分頁)

本文為資訊與教育用途,不構成投資建議。加密資產可能大幅波動,請獨立查證。

作者與編輯說明 ↗本文有錯誤?告訴我們 ↗
繼續讀這個欄目 ↗