跳到正文

錢包授權

錢包授權是鏈上權限,允許指定支出方為使用者代幣呼叫 transferFrom。本文說明它與簽名的差異、無限授權的持續性,以及核驗和撤銷方法。

更新於

僅供教育參考,不構成投資建議;投資可能產生損失。

直接答案

錢包授權也叫代幣核准,是持有人給一個支出方地址的鏈上 allowance。ERC-20 的 approve(spender, amount)記錄額度,支出方可在餘額內呼叫 transferFrom;不會交出私鑰或其他代幣權限。核准改變鏈上狀態,登入簽名通常是鏈下訊息。ERC-2612 permit 是合約可提交的簽名資料,持有人不用支付該筆 gas,但仍是授權。ETH 不使用 ERC-20 allowance。核對代幣、支出方、金額、期限和鏈;連接網站不是支出許可。

錢包授權
0 / 5
0 項已核查; 5 項仍未解決

完成核查不代表資產、交易或系統已經安全。

運作方式

  1. 使用者向代幣合約送出 approve;0 表示沒有剩餘額度,大值常顯示為無限
  2. 支出方稍後呼叫 transferFrom;合約檢查餘額和 allowance,轉移並通常減少額度
  3. 修改 allowance 是鏈上轉換;正值替換可能在 mempool 競態,必要時採用確認後先歸零流程
  4. ERC-2612 permit 是簽名訊息,檢查代幣、chain ID、nonce、deadline、支出方和金額,其他人可以提交
  5. 只核准已驗證支出方和所需金額,模擬呼叫並檢查 receipt、事件、餘額和 allowance;在正確網路用 0 撤銷,已確認轉帳無法撤回

例子

Alice 有 100 USDC,給已驗證路由核准 40。它最多花 40,不能花 ETH 或其他代幣;兌換 15 後通常剩 25。無限核准也涵蓋未來存入,因此應核驗合約、使用有限額度,不需要時送出 approve(router, 0)。

風險

  • 惡意或升級後的支出方可使用 allowance 覆蓋的全部代幣
  • 無限核准也涵蓋未來存入資金
  • 錯誤的鏈、合約、地址、小數位或 calldata 會掩蓋危險請求
  • 待處理變更或撤銷可能與 transferFrom 競爭;確認的 0 不逆轉已執行轉帳
  • permit 簽名可稍後提交;中斷網站連線不會使其失效
  • 非標準、收費、rebasing、暫停或 callback 代幣可能行為不同,應檢查最終狀態

常見誤區

  • 「連接錢包就授予花費權限。」真正權限來自核准、permit 或確認交易
  • 「不顯示 gas 的簽名安全。」relayer 可稍後提交
  • 「中斷網站就撤銷核准。」連線狀態與鏈上 allowance 分開
  • 「無限額度能立即取走全部。」仍需呼叫、餘額和相容實作,但沒有金額上限
  • 「模擬成功證明安全。」仍要核對鏈、calldata、接收方、程式碼、receipt 和餘額

相關主題

來源

導覽

搜尋知識庫...