
ERC:Warden 合約 - 安全代幣託管方案
本提案定義了 Warden 標準接口,這是一種專門為其他智能合約持有 ERC-20 代幣的監護合約,透過將代幣託管與業務邏輯分離並強制執行時間鎖定不變量,來強化去中心化金融的安全防禦。
PR: 待辦 (TODO)
參考實作: GitHub - AuHau/erc-warden: Reference implementation and spec for Warden concept · GitHub
摘要
本提案定義了一個 Warden(監管者)的標準介面。Warden 是一個代表其他智慧合約(稱為「控制器」,controllers)持有 ERC-20 代幣的智慧合約。控制器指示 Warden 在內部帳戶之間移動代幣,而控制器本身從不持有代幣。Warden 將帳戶組織成具有時間鎖生命週期的「資金池」(funds)。代幣可以被不可逆地承諾給帳戶持有者(「指定」,designation)或銷毀(「燃燒」,burning)。在每一次改變狀態的操作中,都會強制執行鎖定不變量(lock invariant)。
動機
大多數 DeFi 合約都持有自己的 ERC-20 代幣餘額。當業務邏輯中發現漏洞或攻擊點時,攻擊者通常可以在單筆交易中抽乾所有餘額。Warden 模式引入了深度防禦:代幣託管合約強制執行不變量,限制了即使是完全被攻破的控制器所能做的事情。
第二個常被忽視的威脅是控制器本身。許多生產環境中的合約使用升級模式,如 UUPS 或透明代理。這意味著合約所有者可以隨時推送新的實作——無論是出於惡意,或是其所有者帳戶被攻破後——從而重新定向所有持有的代幣。由於 Warden 持有代幣並獨立於控制器的邏輯執行其自身規則,因此任何控制器升級都無法規避這些規則。
具體而言,Warden 解決了以下威脅情境:
-
資金重定向:時間鎖可防止攻擊者立即提取代幣;在鎖定期屆滿時,餘額已固定在原位。
-
竊取抵押品:透過「指定」功能使代幣永久承諾給其合法持有者;任何控制器操作都無法將其轉移。
-
阻斷提款:帳戶持有者可以直接調用
withdrawByRecipient,完全繞過控制器。 -
升級捲款跑路(Rug-pull):如果控制器使用升級模式,惡意或被攻破的所有者無法透過推送升級來竊取資金;無論控制器的實作如何,Warden 的約束條件均適用。
開放問題
-
此概念是否也應擴展到 ETH 託管?
-
Warden 是否應支援多代幣託管?
1 則貼文 - 1 位參與者 [閱讀完整主題](https://ethereum-magicians.org/t/erc-warden-contract-secure-token-custody/28252)