KeyFrame內部研究專用

7分钟搞懂 ERC20:从规范到安全与 Permit 实战

bugTheAnswer·4月15日週三·7 min中文

三句話摘要

ERC20 標準的規範設計、安全審查要點,以及 ERC20 Permit 的離線授權機制。 ERC20 的 Approve/TransferFrom 機制是 DeFi 的授權基礎,Permit 進一步降低操作摩擦,但每一次錢包簽名都等同授權,務必驗證 spender 與 deadline 再確認。 1. ERC20 是互通的基礎協議

重點整理

重點
  • 1

    1. ERC20 是互通的基礎協議

  • 2

    以太坊上各方自行發幣若沒有統一介面,錢包與交易所無法通用。ERC20 定義了一套最小共同規範,任何遵守的代幣都能被生態系統自動支援。

  • 3

    2. Approve + TransferFrom 機制解決信任問題

  • 4

    持有人無需交出帳戶控制權,只需 Approve 指定額度給第三方(如 DeFi Router),第三方再以 TransferFrom 動用這筆額度,形成可控的授權邊界。

  • 5

    3. 安全審查需關注可升級性與特殊行為

  • 6

    代理合約(Proxy)讓管理員能替換邏輯合約地址,等同隱性升級風險;Fee on Transfer 等特殊行為若 DeFi 協議未正確處理,會破壞流動性計算。

  • 7

    4. ERC20 Permit 提升體驗但帶來釣魚風險

  • 8

    Permit 讓授權在鏈下完成,節省 Gas,但正因簽名不需上鏈,釣魚攻擊可偽裝成無害簽名請求,誘導用戶洩漏授權。

實用技巧與重點

乾貨
  • 具體規格
  • decimals 常見值:18 位(多數代幣)、6 位(USDC)
  • USDC 包含黑名單功能(blacklist)
  • 函數清單
  • `name()` / `symbol()` / `decimals()` / `totalSupply()` / `balanceOf(address)`
  • `transfer(to, amount)` — 持有人主動發起
  • `approve(spender, amount)` — 授權額度
  • `transferFrom(from, to, amount)` — 第三方代為轉帳
  • `allowance(owner, spender)` — 查詢剩餘授權額度
  • ERC20 Permit 三個關鍵參數
  • `spender`:誰可以花代幣
  • `deadline`:授權截止時間
  • `amount`:授權金額數量
  • 安全審查清單
  • 可升級性:不可升級合約 vs 代理合約(Proxy + 升級入口)
  • 黑名單 / 暫停功能是否存在
  • 轉帳是否可能整數溢出或繞過黑名單
  • Approve 是否存在前置授權漏洞(double-spend via re-approval)
  • 是否為 Fee on Transfer 代幣
  • DeFi 授權流程
  • Token A → Approve Router → Router 調用 TransferFrom 將 Token A 存入 Pool → Swap → Token B 發送給用戶

結論

結論

ERC20 的 Approve/TransferFrom 機制是 DeFi 的授權基礎,Permit 進一步降低操作摩擦,但每一次錢包簽名都等同授權,務必驗證 spender 與 deadline 再確認。

完整解析

詳細

以太坊作為一個開放的區塊鏈平台,允許任何人發行自己的代幣,但若每個代幣都有各自不同的函數命名與行為,錢包、交易所和 DeFi 協議就必須為每種代幣單獨寫對接程式,成本極高。ERC20 因此誕生,它定義了一套最小公約數規範,只要代幣實作這套介面,整個以太坊生態系統就能自動識別與操作,就像流通的法幣有統一的面值與規格一樣。

ERC20 規定的基本規範涵蓋代幣的靜態資訊(name、symbol、decimals、totalSupply)與動態操作(balanceOf、transfer、approve、transferFrom、allowance)。其中 decimals 的設計尤其關鍵——18 位精度支援高精度小額轉帳,而 USDC 選擇 6 位則是針對穩定幣場景的務實取捨。轉帳分為兩條路徑:Transfer 是持有人直接發起;TransferFrom 則是持有人先 Approve 額度給指定地址,授權方再代為執行,典型場景是 DeFi 的 Router 合約,用戶授權 Router 動用自己的 Token A,Router 再將其轉入流動性池完成 Swap,整個過程用戶無需信任 Router 擁有完整帳戶控制權。

安全審查方面,首先需判斷合約的可升級性:若部署的是代理合約(Proxy),管理員可透過修改邏輯合約地址隱性更換程式碼,這意味著用戶資產實際上受到管理員的中心化控制;若為不可升級合約,程式碼一旦上鏈即不可更改,風險邊界更明確。其次,USDC 等主流穩定幣內建黑名單與暫停功能,這是監管合規的設計,但也代表持有人資產可能被凍結。核心函數層面,轉帳邏輯需確認整數運算不會溢出,且不能被繞過黑名單;Approve 需注意前置授權漏洞——若用戶在舊授權未清除前直接修改額度,攻擊者可能搶先消費舊額度再消費新額度,造成雙倍損失。此外,Fee on Transfer(轉帳自動扣手續費)的代幣若 DeFi 協議未正確處理收到的實際金額,可能導致流動性計算錯誤。

ERC20 Permit 是對基礎標準的擴展,核心思想是將「授權」這個動作從鏈上搬到鏈下。傳統流程中,用戶必須自己發一筆交易並支付 Gas 才能完成 Approve;Permit 改為讓用戶在錢包內對包含 spender、deadline、amount 三個參數的結構化訊息進行簽名,再由第三方攜帶這份簽名上鏈提交給合約,合約驗證簽名有效後完成授權。這使得用戶完全不需支付 Gas,體驗更順暢。然而這也是釣魚攻擊的溫床——因為簽名過程在本機發生、不需廣播,用戶容易輕忽其法律效力,惡意網站可偽裝成無害的「登入簽名」請求,實際上卻讓用戶授權了高額代幣轉移。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web3 安全」的內容

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️
8 min
Web3 安全英文8月14日

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️

Zach Humphries

  • 機構支撐的積極意義:價格操縱常被視為負面,但Ripple掌握大量XRP供應與escrow,在熊市期間提高價格下限,實際上替零售投資者鎖定了低風險的積累區間,這不是剝削而是市場穩定機制。
  • 歷史模式驗證:2024年7月至11月XRP在50美分附近橫盤整理,低點觸及42美分(wick),高點65美分;隨後11月5日至12月5日單月上漲456%,年底到2025年初累計漲幅534%,這個歷史周期正在1美元價位重演。
  • 比特幣聯動邏輯:講者在4-5月就預測「如果比特幣跌至60k以下,XRP會跌至1美元或更低」,此預測精準應驗,反映出熊市中兩者的明確連動關係。
Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady
72 min
Web3 安全英文PODCAST8月5日

Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady

Zero Knowledge

  • 反向 Linux 架構:Commonware 刻意暴露棧各層級控制,讓開發者自訂執行環境、共識機制、密碼學實現,而非像 Cosmos SDK 只允許應用層以上定制。2-3 個月能組裝一條定製鏈,代價是額外深度但回報是長期維護成本降低及效能優化彈性。
  • 容錯假設的典範轉移:Alpine Glow(Solana 2025)實現單輪投票定終的關鍵是將容錯預算分離為獨立的 Byzantine 和 Crash 容限。傳統系統把 33% 當一個整體預算;新模型允許 20% 惡意加 20% 崩潰,打破了 PBFT 理論界線,釋放單輪設計空間。
  • Minimet 與 Multimet 的遞進:Minimet 是 5F+1 設定下的乾淨構造,實現更短視圖延遲;Multimet(剛發布)進一步允許並行 mini-commits 且驗證者可推翻領導者審查,使用者交易在全球分布式網路達到 200-300 毫秒端到端定終。
Private Information Retrieval (PIR) with Alex Hoover
64 min
Web3 安全英文PODCAST7月29日

Private Information Retrieval (PIR) with Alex Hoover

Zero Knowledge

  • PIR 保護的是訪問模式,不是資料本身
  • PIR 與加密不同,它關注的是隱藏「客戶端查詢了什麼」,而非「資料是否加密」。在公開資料庫(如區塊鏈)上,客戶端可以在不洩露查詢對象給伺服器的情況下檢索特定條目,解決了輕量級客戶端的隱私和防審查問題。
  • 客戶端預處理方案是突破瓶頸的關鍵