ERC-20 在 2015 年由 Fabian Vogelsteller 提出,解決的是一個很實際的問題:當時每個以太坊代幣都有自己的一套函數名稱,DEX 要支援一個新代幣就得寫一段新的整合程式碼。ERC-20 統一了介面,規定了六個每個代幣都必須有的函數。其中最重要的是 transfer(你直接轉帳給別人)和 approve + transferFrom 組合(你授權某個智能合約代替你轉帳,DeFi 裡常見)。正是這個統一介面,讓 Uniswap 能在上線第一天就支援任何 ERC-20 代幣,不需要一個一個談合作。這個「可組合性」是以太坊 DeFi 能爆發的底層基礎。沒有 ERC-20,Uniswap、Aave、Compound 這些協議都不可能存在——它們全都假設底層代幣有這套標準介面。
ERC-20 和 ERC-3643 的關係,可以這樣理解:ERC-3643 是在 ERC-20 的基礎上「加了一道門」。ERC-20 的 transfer 函數預設任何地址都能轉,ERC-3643 在執行轉帳前多了一個步驟:查這個地址有沒有通過 KYC、有沒有在白名單裡。沒過審的地址,轉帳直接 revert(失敗)。此外 ERC-3643 多了 freeze(凍結帳戶)和 forcedTransfer(強制轉移代幣,用於合規執法)兩個函數,ERC-20 完全沒有。代價是:ERC-3643 代幣無法直接在 Uniswap 這類無需許可的 DEX 上交易,因為 Uniswap 的流動性池本身也沒做 KYC——你需要在許可型的 DeFi 池裡操作。這是監管合規和 DeFi 可組合性之間無法完全消除的取捨。
對 RWA 投資者來說,ERC-20 最重要的實際意義是:你能不能把這個 RWA 代幣接入主流 DeFi 協議。PAXG(代幣化黃金)是 ERC-20,所以它可以在 Uniswap 買賣、可以抵押在 Aave 借 USDC、可以放進流動性池。Ondo 的 OUSG(代幣化美債)是 ERC-3643,所以它不能直接在 Uniswap 掛單,只能在 Ondo 自己的白名單系統內轉讓,或在 Flux Finance(Ondo 的許可型 DeFi)裡操作。你評估一個 RWA 代幣的「DeFi 整合潛力」,先看它是哪個標準:純 ERC-20 = 最高 DeFi 相容性,但沒有合規控制;ERC-3643 = 合規友好,但 DeFi 使用場景受限。這個標準的選擇,直接決定了這個代幣在鏈上生態的自由度。
ERC-20 在技術層面有一個著名的設計漏洞:approve + transferFrom 的流程存在「雙重花費」攻擊的可能性。當你把 approve 授權從舊額度改成新額度的那一瞬間,如果對方快速插入一筆 transferFrom,理論上可以花掉舊額度再花新額度。解法是把授權先改成 0 再改成新額度,或使用改進版的 EIP-2612(permit,用簽名代替 approve 交易)。更重要的實用提示:永遠不要對不信任的合約做無限額授權(approve MAX),很多釣魚攻擊就是誘導你這樣做,然後隨時把你的代幣全部轉走。Revoke.cash 這類工具可以讓你查看並撤銷之前給過的授權,RWA 投資者在接入任何 DeFi 協議前,都應該習慣定期清理不再使用的授權。
你第一次使用 Uniswap 時,會發現有一個「Approve」按鈕要先點。這個動作背後就是 ERC-20 的 approve 函數:你在告訴代幣合約「我允許 Uniswap 的合約地址,動用我最多 X 個 USDC」。點了 Approve 之後,你才能執行 Swap,因為 Uniswap 需要用 transferFrom 代替你把 USDC 轉進流動性池。很多人覺得「為什麼每次換幣都要 Approve,很麻煩」——原因就是 ERC-20 的安全設計:沒有你的明確授權,任何合約都不能動你的代幣。反過來也是警告:如果某個網站叫你 Approve 一個你不認識的合約地址,或者授權無限額度,這幾乎可以確定是釣魚——一旦授權,對方就能在你不知情的情況下把你的代幣全部帶走。
ERC-20 的最大優勢是「可組合性」——符合標準的代幣,零整合成本就能接入整個以太坊 DeFi 生態。最大限制是「無許可」本身:對於需要 KYC、白名單、合規報告的 RWA 代幣,純 ERC-20 做不到監管要求。這也是為什麼 RWA 世界出現了 ERC-3643 這類合規型標準——犧牲部分 DeFi 可組合性,換取符合機構監管的合規控制。長期看,可能出現「許可型 DeFi 池」(只有白名單地址才能參與)的基礎設施,讓 ERC-3643 代幣也能有流動性,但這個市場目前仍非常早期。