怎麼在部署 Agent 之前評估一個 DeFi 協議的 Rug Pull 風險?有沒有可以量化的指標?
評估 DeFi 協議的 Rug Pull 風險,可以從幾個維度量化:
鏈上合約安全指標:合約是否通過知名審計?(查 DeFiLlama 的 audit 字段,或直接在協議官網找審計報告。Trail of Bits、OpenZeppelin、Consensys Diligence 是公認可信的審計機構)。合約是否開源可驗證?(在 Etherscan 上確認合約代碼已驗證)。合約是否有可以繞過用戶授權轉移資金的管理員函數?(需要閱讀合約代碼或找審計報告裡的相關說明)。
TVL 穩定性指標:協議的 TVL 歷史曲線——穩健增長還是短期內突然暴增?短期暴增的 TVL 可能是人為操縱(在 Rug 之前先把 TVL 拉高增加可信度)。TVL 集中度:是否有單一地址或少數幾個地址控制了超過 50% 的 TVL?(可以在 DeFiLlama 或 Nansen 查詢。高集中度的 TVL 是軟 Rug 的高風險信號)
時間維度:協議上線時間——在主網運行超過 6 個月且沒有重大安全事件,是基本的生存測試。開發者信息是否公開——匿名開發者不是絕對的風險信號,但結合其他風險因素,增加了警戒等級。
Agent 在 Rug Pull 期間應該「主動取出資金」還是「等待市場穩定後再操作」?這個決策怎麼自動化?
這是 Agent 在 Rug Pull 場景下最難的決策問題。它難在:Rug Pull 初期和「正常的短暫流動性下降」在數據表現上可能相似,Agent 如果太積極,可能在正常的市場波動裡「誤觸」熔斷;如果太保守,真正的 Rug Pull 發生時資金已經沒了。
一個可操作的自動化決策框架:
多指標組合觸發,而不是單指標:不應該只看「TVL 下降 X%」就觸發取出操作,而應該組合多個信號:TVL 下降超過 20%(必要條件)+ 24 小時交易量異常(成交量在 TVL 暴跌的情況下卻在上升,可能是套利者在搶先撤出)+ APY 出現異常飆升(超過 200%,流動性收縮的典型信號)。三個信號都觸發 → 立刻取出;只有一兩個 → 告警但不立即行動,等你手動確認。
取出操作的優先順序:首先取出當前存在最危險協議(信號最強)裡的資金;如果第一筆取出成功,再操作第二個協議;每一步都等待鏈上確認後才操作下一步。不要讓 Agent 在 Rug Pull 期間並行地同時嘗試取出多個協議的資金,因為 Gas 費競爭會讓每筆交易更貴。
設置取出的滑點上限:在 Rug Pull 期間,取出流動性會遇到極高的滑點。設置一個「最大接受滑點」上限(如 5%),超過這個上限,取出操作暫停,改為向你發送告警讓你手動決策——在流動性接近枯竭的池子裡強行取出,可能反而比「等待」損失更多(GAS + 滑點)。
Rug Pull 事件後,怎麼做事後分析?Agent 系統的日誌應該記錄哪些信息?
完整的 Rug Pull 事後分析需要四個層次的日誌信息:
層次一:Agent 的 LLM 推理日誌(事件發生的「Why」):Agent 為什麼做了某個決定?Rug Pull 期間,Agent 的 Thought 步驟應該清楚記錄「做這個決策時它知道什麼、不知道什麼」。如果沒有 LLM 推理日誌,你永遠無法確定「Agent 是按照策略邏輯正常執行,還是被 Prompt Injection 污染了」。
層次二:工具調用日誌(事件發生的「What」):每次工具調用的輸入參數和回傳結果。Rug Pull 期間,工具調用日誌能讓你重建「Agent 拿到的 TVL 數據是什麼」「Agent 的交易請求有沒有被後端驗證攔截」「實際廣播出去的交易是什麼」。
層次三:熔斷觸發日誌(哪些防禦生效了):哪些熔斷條件被觸發了、在什麼時間、攔截了什麼操作。這個日誌能讓你評估「防禦設計是否有效」——如果 TVL 熔斷條件在協議 TVL 下降 25% 時正確觸發了,說明設計有效;如果 TVL 下降 60% 才觸發,說明閾值設置需要調整。
層次四:鏈上執行日誌(實際損失的「How Much」):所有廣播出去的交易的 hash、Gas 費、成交結果。Rug Pull 期後,對比鏈上日誌和策略預期,計算「這次 Rug Pull 讓 Agent 損失了多少資金、消耗了多少 Gas 費」。
建議日誌保留時間至少 90 天(足夠進行延遲發現的事後分析),加密存儲(防止攻擊者清除攻擊軌跡)。
有哪些知名的 DeFi Rug Pull 案例,能讓 Agent 設計者從中學到什麼教訓?
案例一:Squid Game Token(2021 年) 代幣在幾天內上漲 23 萬倍,隨後在幾分鐘內崩潰。關鍵教訓:APY 和代幣價格的異常飆升是最強的 Rug Pull 早期信號,Agent 的策略不應該對「過去 7 天漲了 100 倍的資產」進行追蹤買入操作。白名單應明確禁止「上線 30 天內且 TVL 或市值飆升超過 500%」的項目。
案例二:Iron Finance / TITAN(2021 年) 部分抵押的算法穩定幣在流動性危機下快速脫鉤,馬克·庫班(Mark Cuban)是受害者之一。關鍵教訓:算法穩定幣的鉤(peg)是脆弱的,一旦脫鉤往往是自我加速的死亡螺旋。Agent 的策略如果操作算法穩定幣(非 USDC/USDT 的傳統法幣抵押穩定幣),必須對鉤偏差設置嚴格的告警和自動取出閾值(如脫鉤 2% 立刻取出)。
案例三:Frosties NFT Rug Pull(2022 年) NFT 項目方在 Mint 完成後 24 小時內撤走資金。教訓雖然直接在 NFT 領域,但對 Agent 的啟示是:DeFi 協議在早期關鍵里程碑(完成代幣 Mint、完成 IDO 募資)後是最高風險的 Rug Pull 窗口,Agent 在操作新協議時應該有「協議上線後 30 天的觀察期」設計。
案例四:Beanstalk Hack(2022 年,$182M) 嚴格說不是 Rug Pull 而是閃電貸治理攻擊,但對 Agent 的啟示相同:即使是審計過的協議也可能因為機制設計漏洞被攻擊。對 Agent 最重要的教訓是:分散協議配置——不要讓 Agent 把所有資金集中在一個協議,應該在幾個不同的已審計協議裡分散存放,讓任何一個協議出問題時的最大損失不超過總資金的 30-40%。
2022 年 11 月,FTX 崩潰期間,大量 DeFi 協議的流動性在幾小時內被快速抽走。當時有多少個「自動化收益策略」在流動性枯竭的池子裡繼續運行、繼續嘗試執行交易?答案:相當多。因為這些策略沒有設計「協議突然失去流動性」這個中斷條件。
Rug Pull 對 AI Agent 的傷害,不只是「資金也跟著被拖走」,更糟的情況是:Agent 在協議崩潰的過程中繼續嘗試執行操作,把能搶救的資金也在高滑點的崩潰市場裡虧掉,然後還在日誌裡留下一串「操作成功」的記錄——成功地把你的錢送給了流動性撤走後的套利者。
Rug Pull 在加密市場泛指「開發者或流動性提供者在用戶資金進入後,突然撤走所有流動性或資金,讓投資者無法取出」的行為。廣義的 Rug Pull 從「開發者直接捲款跑路」到「合約有後門讓開發者抽走資金」到「流動性提供者快速清倉導致池子崩潰」都算。
對人工操作來說,Rug Pull 的主要傷害是「資金被困在無法取出的協議裡」,或者「在價格崩潰前沒有及時手動撤出」。這兩個傷害對 AI Agent 都存在,但 Agent 還有額外的、人工操作沒有的傷害:Agent 可能在協議崩潰的過程中主動「助攻」損失擴大。
具體機制:Agent 的利率優化策略設計是「找最高 APY 的協議把 USDC 存進去」。當一個協議開始 Rug Pull 的初期(流動性開始撤走但還沒完全崩潰),APY 數字可能因為流動性減少而短暫飆高(分子分母的比例變化)。Agent 看到「APY 飆到 50%!」,按照策略邏輯把 USDC 從安全的協議轉移到這個正在崩潰的協議——完全符合策略邏輯,但結果是把資金移進了火場。這個反直覺的傷害模式是人工操作不容易犯的(人類看到 APY 突然飆到 50% 通常會覺得不對勁),但 Agent 沒有「感覺不對勁」這個能力,除非你明確在代碼裡設計了「APY 異常飆升 = 告警並暫停」的規則。
Rug Pull 事件通常在幾分鐘到幾小時內完成,速度是主要的傷害放大器。在這個時間維度上,AI Agent 和人工操作的差異是決定性的:
沒有「感覺不對」的本能:人類投資者對市場異常有直覺反應——APY 從 5% 突然跳到 80%、協議官方 Twitter 停止更新、某個大錢包突然開始快速清倉——這些信號會觸發「等等,有什麼不對」的本能。AI Agent 沒有這個本能,它只按照策略邏輯運行,除非策略代碼裡明確包含了這些異常信號的檢測邏輯。
24 小時全天候運行意味著 Rug Pull 在你睡覺時也在進行:很多 Rug Pull 選擇在交易量低、監控弱的亞洲深夜(北美時間)執行,恰好是很多散戶投資者入睡的時候。你的 Agent 在你睡覺時仍然在執行策略——如果協議在凌晨 3 點 Rug Pull,Agent 可能在 3:00 到 6:00 這三個小時裡持續嘗試操作,等你早上醒來時損失已經最大化了。
自動化重試機制把損失倍增:當 Rug Pull 發生時,鏈上交易失敗率會急劇上升(流動性不足、滑點過大導致 revert)。你的 Agent 的重試邏輯——設計用來應對正常的網路波動——在 Rug Pull 場景裡會持續嘗試失敗的交易,每次嘗試都消耗 Gas 費,且在高 Gas 費的崩潰市場裡成本更高。一個沒有設計「連續失敗熔斷」的 Agent 可能在一次 Rug Pull 裡消耗數十到數百美元的 Gas 費,只為了重試那些本來就會失敗的交易。
協議授權(ERC-20 approve)可能是額外的傷害放大器:如果你的 Agent 給一個後來 Rug Pull 的協議授予了 ERC-20 無限授權(`approve(protocol, type(uint256).max)`),攻擊者在合約後門裡可能直接使用這個授權把你的 USDC 從你的錢包轉走——你的資金不需要「在協議裡」就可以被轉走。這個風險在人工操作裡同樣存在,但人工操作的用戶更容易定期管理和撤銷授權,而 Agent 如果沒有自動的授權審計邏輯,已授予的授權可能長期存在。
不同類型的 Rug Pull 對 Agent 的影響機制不同,防禦設計也需要針對性地設計:
類型一:硬 Rug Pull(合約後門 / 開發者直接撤走資金):開發者在合約裡預設了一個只有他們能調用的函數,直接把協議裡的所有用戶資金轉走。對 Agent 的影響:如果 Agent 有資金在協議裡,資金直接消失。Agent 的工具回傳顯示「操作成功」(因為 Agent 自己的操作可能確實成功了),但下一次查詢餘額時發現資金消失。這種 Rug Pull 速度極快(幾秒鐘),沒有任何 Agent 設計能在事後挽救資金。唯一的防禦是事前:只使用通過嚴格審計(如 OpenZeppelin、Trail of Bits)的協議,且合約代碼是開源的。
類型二:軟 Rug Pull(大流動性提供者快速清倉):流動性提供者不是開發者,而是早期的大資金進入者,在用戶資金充分進入後集中清倉,造成流動性急劇減少、APY 暴跌或代幣價格崩潰。這個過程通常需要幾分鐘到幾小時,比硬 Rug Pull 慢,給了 Agent 反應窗口。Agent 的防禦設計:監控 TVL 的 24 小時變化率,設置閾值(24 小時 TVL 下降超過 20%,暫停所有往該協議的操作並告警)。
類型三:遷移 Rug(假冒「協議升級」引導資金到惡意合約):攻擊者部署一個看起來是「新版本」的惡意合約,通過社交工程(偽造官方公告、Discord 公告)引導用戶把資金從舊合約「遷移」到新合約。如果 Agent 的策略配置依賴外部數據源(如自動讀取協議的「官方公告」來更新操作地址),這類攻擊可能直接讓 Agent 把資金轉移到惡意合約。防禦:Agent 的白名單地址必須硬編碼在後端代碼裡,不允許 Agent 從任何外部來源動態更新白名單。協議地址的更新必須通過人工確認後手動更新。
類型四:市場崩潰型 Rug(去中心化穩定幣脫鉤 / 代幣閃崩):不是惡意行為,而是協議的算法設計在極端市場條件下崩潰(LUNA/UST 是最著名的例子)。這種「Rug」發展速度從幾小時到幾天不等,有最多的 Agent 防禦設計空間。Agent 的防禦設計:對穩定幣的鉤(peg)偏差設置嚴格的告警——USDC 對美元脫鉤超過 1%、DAI 對美元偏差超過 0.5%,立刻暫停所有使用這個穩定幣的操作並告警。
沒有任何設計能讓 Agent 對所有 Rug Pull 免疫,但以下設計能把傷害控制在可接受範圍:
協議准入門檻(最重要的事前防禦):Agent 能操作的協議白名單,應該由你(不是 Agent)手動維護,且只包含通過以下門檻的協議:已通過至少兩家知名審計機構審計(如 OpenZeppelin、Trail of Bits、Sherlock);合約代碼完全開源且已在主網運行超過 6 個月;TVL 有穩定的歷史記錄(不是突然暴增的新項目);沒有管理員私鑰能直接控制用戶資金的函數。這個門檻不能保證永遠安全,但大幅過濾了硬 Rug Pull 的風險。
TVL 監控熔斷:在 Agent 的監控 Sub-agent 裡加入 TVL 變化監控。設置兩個觸發器:「24 小時 TVL 下降超過 15%」→ 警告,暫停往該協議的新存入但不影響取出;「24 小時 TVL 下降超過 30%」→ 緊急熔斷,立刻嘗試從該協議取出所有 Agent 管理的資金,同時通知你。
ERC-20 授權最小化 + 定期審計:Agent 對每個協議的 ERC-20 授權設置精確上限(不用無限授權),每月自動審計並撤銷不再使用的授權。可以在 Agent 的日常任務清單裡加入「每月第一天,撤銷所有超過 30 天未使用的 ERC-20 授權」的自動化操作。
APY 異常告警:設置 APY 告警規則:某協議的 APY 在 24 小時內飆升超過 300%,Agent 自動暫停向該協議的任何操作(包括存入),發送告警通知你確認。APY 飆升往往是流動性撤走過程中的「回光返照」,這個規則能防止 Agent 在崩潰初期向崩潰協議存入資金。
連續失敗熔斷:為 Agent 設計「連續工具調用失敗熔斷」:如果同一個協議的工具調用在 5 分鐘內連續失敗 5 次(revert),自動暫停所有對該協議的操作,發送告警。這個設計能阻止 Agent 在 Rug Pull 期間持續消耗 Gas 費重試失敗的交易。
你的 Agent 不只需要在「正常市場條件」下工作——它還需要在「你最少主動監控的時候」(凌晨、週末)遭遇 Rug Pull 時,能把損失自動控制在最小範圍。這意味著 Rug Pull 防禦設計不是「事後補救」,而是「事前的系統設計」。
一個實用的自問清單:你的 Agent 操作的每個協議,如果明天 TVL 降到 0,你的 Agent 會在發生什麼、持續多久,才會停止並通知你?如果答案是「我不知道」或「Agent 會繼續運行直到我手動停止」,那麼 TVL 監控熔斷是你現在最需要加入的設計。你不需要讓 Agent 對所有可能的 Rug Pull 形式都有完美防禦——你只需要讓它在「最壞的情況下,損失有上限,且你能在幾小時內知道並介入」。