讀透熱門 DeFi 項目 Curve:它為什麼重要?為何被「攻擊」?

tsai
分享
讀透熱門 DeFi 項目 Curve:它為什麼重要?為何被「攻擊」?

深度解讀 Uniswap 的「特殊版本」Curve。

撰文: 潘致雄,鏈聞研究總監

一個新的DeFi項目Curve.fi目前是去中心化金融這個賽道中最火爆的明星。這個看上去非常「簡單」、甚至有些「簡陋」的新項目,只解決一個需求:穩定幣之間的互換。

廣告 - 內文未完請往下捲動

你沒有看錯。

穩定幣之間的頻繁互換,是不少業內人士的剛需,因為USDT出入金更方便,而DAI和USDC更合規。但是考慮到手續費高和流動性差,轉換成本不低。Curve.fi就要解決這個痛點。這個初創項目開發了基於以太坊的自動交易協議,專注於解決這個問題,同時又利用了開放式金融的可組合性,以此激勵平台的貢獻者。

簡單來說,Curve是一個利用了特殊算法、結合了「特定版Uniswap」與「Compound」的去中心化交易所協議。稱其為「特定版Uniswap」,是因為該協議僅僅解決穩定幣之間的互換。

Curve已於今年1月上線了以太坊主網,但仍處於早期開發階段,截止鏈聞發稿時,未公佈合約審計結果。其界面也非常簡陋(或者也可以說是「獨特」) ,讓人不禁懷疑這是開發者故意這樣設計,模仿了80年代的電腦界面以體現目前的開發階段。當然,這樣似乎也能將不了解該產品風險的用戶拒之門外。

讀透熱門DeFi 項目Curve:它為什麼重要? 為何被「攻擊」?Curve.fi 的複古界面

不過Curve的發展速度卻超過了很多人的想像。上線僅一個多月,Curve已經被多個以太坊的去中心化聚合交易所接入。以1inch這個幫助用戶選擇最優路徑(滑點最低)的交易所為例,2月17日至23日當週,1inch週交易量中排名第一的當屬Curve,佔比60%,是Uniswap的3倍、Kyber的6倍。雖然近日數據有些滑落,但依舊佔比很高。這多少也體現出,對用戶而言,穩定幣互換的需求非常迫切。

讀透熱門DeFi 項目Curve:它為什麼重要? 為何被「攻擊」?

用戶們喜歡用Curve來互換穩定幣,是因為Curve的交易成本滑點都極低,畢竟這才是穩定幣的交易者最關心的因素。Curve的自動做市算法是為穩定幣交易場景定制的,比Uniswap的通用型算法更聚焦,所以通過該做市算法實現的交易滑點較低。另外,Curve的交易手續費僅為0.04%,相比之下,Coinbase的DAI/USDC交易對的手續費為Curve的12.5倍

另一方面,為Curve注入資金的用戶還能獲得超高的年化收益。為了增加協議中的資金量以滿足更大規模的交易需求,Curve為提供流動性的用戶分配所有的手續費收益,並通過聚合第三方協議來獲得額外收益,讓投入資金的用戶有機會獲得約20%的年化收益率——相比之下,Compound上DAI的年化收益目前在8%左右。

不過,上週末在Curve上發生了一起「用戶損失」事件,更是把這個新產品推上了DeFi社區爭議的風口。大家一開始都以為是由於Curve的流動性問題導致了這名用戶損失14萬美元,但後來根據交易行為的推測,這名用戶本身可能就是想「攻擊」協議並竊取其中的資金。這個過程非常複雜,我們會在後文專門分析。

不過無論如何,Curve的產品的確還處於早期階段,產品邏輯中的滑點保護功能尚未完善。在後文中,我們也會一一道來。

 

穩定幣定製版「Uniswap」

來,讓我們先從介紹Curve的運行原理說起。

整體而言,Curve更像一個專為穩定幣交易而定制的「Uniswap」。

Uniswap是以太坊去中心化交易協議的基礎設施,優點為產品邏輯簡單,而且因為沒有管理員特殊權限(admin key),被社區認為是去中心化程度較高的協議。Uniswap準確來說可以定義為「自動化做市商」或「流動性池」,英文為「AMM」 (Automated Market Maker)或「LP」 (Liquidity Pool) 。其他一些去中心化交易協議,如Kyber、0x API,也會將部分交易分配至Uniswap完成。

簡而言之,Uniswap具有兩個功能:注入流動性提取流動性,對應的兩個角色就是做市商交易者。注入流動性的做市商可以獲得交易池中手續費分成,而提取流動性的交易者的需求是進行代幣之間的兌換(交易) ,並支付一部分交易費用。

舉個例子,一名用戶錢包中有ETH和DAI,就可以把ETH和DAI按照最新的兌換比例投入Uniswap的資金池成為其中的做市商。假設他按照新的兌換比例投入了1個ETH和200個DAI。當有一名交易者希望用DAI換成ETH時,就可以進入這個池子進行兌換,Uniswap的「做市商算法」會計算出這個交易者可以買到多少ETH。和中心化交易所一樣,Uniswap也會在交易中產生「滑點」,用戶交易資金越大,滑點越大,也就是交易成本越高。當交易完成,這名交易者付出的交易費用,將會按照池子中所有做市商投入資金的比例進行分配。

Uniswap採用了一個叫「恆定乘積做市商模型」 (Constant Product Market Maker Model)的做市算法,邏輯非常簡單,所以在大多數的通用場景中可以滿足需求。

不過穩定幣之間的兌換和其他類型的代幣兌換不一樣,值得專門對待。美元穩定幣的價格是錨定 1美元的,雖然會因為市場波動有些許的變化,但長期來看各個美元穩定幣之間都是等價的,無論是抵押生成的DAI、合法且有實體資產背書而發行的USDC、PAX、TUSD,還是號稱「有實體資產背書」的USDT。既要考慮到「穩定幣之間很多時候是等價的」,也要允許「穩定幣之間存在價格差異」,當這兩個要素組合在一起,就需要一個完全不同於Uniswap的機制。

由Curve團隊發明的「StableSwap」 (穩定互換)機制,就是專為穩定幣之間互換設計的做市商算法。如果將他們的算法繪製成曲線(Curve) ,那這就是介於Uniswap曲線和恆定價格之間的一條曲線。如下圖:

讀透熱門DeFi 項目Curve:它為什麼重要? 為何被「攻擊」?
Uniswap 曲線、恆定價格與StableSwap 曲線

讀者們先不用急著理解上圖中的曲線或者公式,因為目前StableSwap的所有細節並沒完全公開。但是我們可以給出一些已知的信息,幫助讀者理解這個算法的原理。

我們不妨先做兩個假設:

  • 假設1:如果所有穩定幣之間的價格保持恆定為1美元,那穩定幣X和穩定幣Y就是等價的,可以無損互換。在上圖中,如果初始狀態下,穩定幣X與穩定幣Y各有5枚,那基於這個假設建立起的交易池的兌換比例就是X+Y=10,也就是上圖的那條虛的直線,也可以稱為「恆定價格」做市商。對於需要兌換的交易者而言,用3枚X就能換到3枚Y,但這個池子有容量上限,必須X<=10且Y<=10;
  • 假設2:如果穩定幣之間採用Uniswap的恆定乘積做市商模型,也就是圖中最外部的那條虛的曲線,如果穩定幣X與穩定幣Y在初始狀態下各有5枚,那條曲線就是XY=25,也總算可以交易超過5枚代幣了,但是隨著價格波動,離「恆定價格」做市商的距離非常遠,也就是價格波動非常明顯;

Curve設計的StableSwap機制介於上述兩者之間,既考慮到了「穩定幣之間很多時候是等價的」 (也就是假設1) ,也允許了「穩定幣之間存在價格差異」 (也就是假設2) 。換句話說,這是一個比Uniswap算法更接近「恆定價格」互換的做市商算法。

StableSwap最大的優勢是滑點更低,也就是交易成本更少。StableSwap的白皮書中繪製了該算法和Uniswap的恆定乘積算法中,賣出數量和價格變化的函數曲線,其中StableSwap更能保持在1美元,而Uniswap的算法隨著賣出的數量增加,已經把價格快速壓低了。

讀透熱門DeFi 項目Curve:它為什麼重要? 為何被「攻擊」?
StableSwap 曲線與Uniswap 曲線

在我們的測試中,Curve的滑點不輸中心化交易所。以Coinbase中穩定幣之間的交易對DAI/USDC為例,將10萬美元級別的訂單推入交易系統,以截圖時的快照來看,Curve略優於Coinbase,而且Coinbase的手續費要比Curve多460美元。

讀透熱門DeFi 項目Curve:它為什麼重要? 為何被「攻擊」?
Curve 與Coinbase 訂單手續費對比

激勵方式升級: 利用DeFi 可組合性提升收益

在提供了優化的做市算法後,另一個問題就是如何提升整個資金池的大小,因為只有這樣才能提供更大規模的交易和更低的交易成本。

其實Uniswap也面臨同樣的問題,就是如何激勵用戶投入自己的資金,成為「做市商」的一員,分享收益。其中,交易費率是一個基礎參數,如果太高了,交易者就可以選擇其他交易費率更低的平台;如果太低了,提供流動性的「做市商」們分得的利潤就很少。

Uniswap的費率是0.3%,Curve是0.04%,目前來看,Curve的交易費率對交易者更友好,對流動性提供方不是很友好。但費用的收入還依賴於總交易量的,所以如果穩定幣的需求量大,以優惠費率吸引到更多人來交易,整體的收入總規模會不輸Uniswap。

除了費率之外,Curve還利用DeFi的可組合性,為流動性提供方進一步提高收益。

設想有如下兩個場景:

  • Uniswap為例,假設一個想要為ETH/DAI注入流動性的用戶投入了1 ETH和200 DAI,該用戶就可以獲得所有相關的交易費收入的分成;
  • Compound為例,假設一個用戶想把DAI投入借貸平台(比如Compound)獲得額外收入,那就可以獲得cDAI,這是一種背後有著抵押資產背書,但是又會自動產生收益的包裹後代幣,該代幣可以獲得平台中抵押借出資產方付出的年化收益的分成。

Curve正是將這兩個場景結合在了一起,為用戶最大化收益。
具體的流程為:

  1. 用戶將DAI轉換為Compound的cDAI,即獲得了Compound的收益,目前約年化8%;
  2. 用戶將cDAI投入Curve,即獲得了Curve的交易手續費收益,這部分依賴交易量而調整。

還有空間!還能再進一步提升收益

當Curve結合了另一個新的DeFi協議iearn之後,收益還可以進一步提升,最高曾達到年化30%。iearn是一個去中心化的收益聚合器(Yield aggregator) ,也就是會從目前借貸平台中尋找收益最高的協議,隨著行情的變化,也會自動平衡到收益更高的借貸平台中。

其實Curve和iearn的組合產生的效果與Compound的組合類似:

  1. 用戶將DAI轉換為iearn的yDAI,即獲得了iearn協議挑選的最高收益平台,年化收益不低於Compound;
  2. 用戶將yDAI投入Curve,即獲得了Curve的交易手續費收益,這部分依賴交易量而調整。

而iearn提供了一個名為Zap的功能,可以在一個流程中實現上述兩個操作,撤出資金的流程也類似。這是一個對用戶而言非常友好的聚合工具,否則,對於普通用戶而言,分開兩步操作,太過麻煩。

讀透熱門DeFi 項目Curve:它為什麼重要? 為何被「攻擊」?
iearn 創始人Andre Cronje

需要特別寫一筆的是,iearn項目的創始人是Andre Cronje。對於加密貨幣世界的老炮來說,Andre Cronje是個熟人。他曾經是區塊鏈媒體Crypto Briefing的首席代碼評測官,在ICO熱潮中,評測過一大批熱門項目的代碼質量,眼光犀利額,撰寫的文章也以刻薄著稱。不少明星項目的技術能力和代碼質量被他狠狠奚落。

項目進度:1 個多月發布 4 個獨立交易池

據白皮書和GitHub的信息顯示,目前Curve的維護者是隱私項目NuCypher的首席技術官Michael Egorov

讀透熱門DeFi 項目Curve:它為什麼重要? 為何被「攻擊」?Michael Egorov

不過根據推特的信息來看,iearn項目的創始人Andre Cronje也可能是Curve的核心人物之一,因為他頻繁參與了Curve的產品規劃和外部溝通。

Curve在過去的一個多月中陸續上線了四個獨立的資金池,也可以稱為V1、V2、V3 和V4,分別是:

讀透熱門DeFi 項目Curve:它為什麼重要? 為何被「攻擊」?
Curve 四個獨立資金池V1、V2、V3 與V4 基本信息
  • Curve V1 (Compound) :1月20日上線,支持的幣種為USDC和DAI (由cUSDC和cDAI結算) ,在交易手續費之外,還可以累加Compound的收益;
  • Curve V2 (USDT) :2月10日上線,支持的幣種為DAI、USDT、USDC。優勢是增加了USDT交易,不過沒有額外收益,只能依賴手續費收益;
  • Curve V3 (Y) :2月13日上線,支持DAI、USDC、USDT、TUSD (由iearn的y代幣結算) ,在交易手續費之外,還可以累加iearn的收益;
  • Curve V4 (BUSD) :2月27日上線,將V3的TUSD換成幣安的BUSD,也就是支持DAI、USDC、USDT、BUSD (由iearn的y代幣結算) ,在交易手續費之外,還可以累加iearn的收益。

讀透熱門DeFi 項目Curve:它為什麼重要? 為何被「攻擊」?

根據目前四個交易池的資金量和交易量來說,V3和V4版本的資金池更受歡迎,不過從趨勢來看,V4可能會追平甚至超過V3。這也就表明了,流動性提供方更喜歡帶有額外收入的iearn版本Curve資金池,哪怕需要承擔更多的風險。

項目仍處於早期,技術層面風險顯現

在Curve V1上線的5天後,獨立安全研究者Sam Sun向Curve匯報了一個漏洞。Sum Sun指出,該漏洞如果被利用,將會導致智能合約中的資產損失。

不過幸好,此漏洞尚未被利用。Michael Egorov調查後發現,該漏洞隱藏在Curve的算法之中,而且白皮書尚未公開這些細節。他隨後通過部署一個全新的智能合約,並進行前端相關的UI調整,將所有資金轉移到了全新的智能合約中。

Curve的網站上的提示也很明確告知了風險,不僅代碼審計的細節還沒有全部公開,Curve目前也只是處於Beta階段,官方希望使用者不要投入無法承擔損失的資產,特別是對於流動性提供方。Curve網站上稱,對於交易功能使用者來說,風險相對很低。

Curve在一周前表示,即將公開由Trail of Bits進行的安全審計細節,不過總體來說,USDT和Y資金池不需要重新佈署,沒什麼問題,但是Compound資金池需要重新佈署,以修復上述兩個資金池已經修復的問題,因為這是最早的一個合約。

但是風險依然存在,而且不僅在技術層面。

我們必須重新回顧和認識一下DeFi世界暗湧的各種風險。以bZx最近遭遇的閃電貸套利攻擊為例,這名攻擊者顯然非常了解整套DeFi生態中的薄弱環節,精通利用流動性缺陷,這不完全是由技術缺陷導致的。所以,Curve面臨的問題也不僅僅是代碼審計,而是其他系統性風險。

比如,iearn協議如果被套利者攻擊,那V3和V4資金池也會導致損失;如果行情大跌導致Compound清算系統產生損失,也就波及了V1資金池;風險還包括整個系統中的價格源或者是預言機出現問題,等等。由於Curve是基於很多項目搭建起來的,所以風險是自下而上累計的。

真的被「攻擊」了

就在Curve V4上線但還未公開時,Curve平台遭遇了一次特殊「事故」,也在海外DeFi社區鬧出了不小動靜。雖然這可能不屬於一次黑客攻擊事件,卻暴露出了產品設計以及溝通層面的問題。

2月28日,一名用戶在Curve V4流動性不充足的前提下進行了超大額的兌換,雖然團隊發現了該事件,並立即進行了補救,但這名用戶最終還是損失了14萬美元。後來,經過對交易記錄的詳細研究,卻發現故事並不是表面這樣簡單。

事後Andre Cronje寫了兩篇文章,詳細描述這件事情前因後果,而以下的分析基於他寫的第二篇文章。

該事件涉及3 個地址,為了方便起見,分別稱之為:

  • 損失者A地址
    0x44e59f7c598644a68975ef41fed052362c4c8ed3
  • 獲利者B地址
    0x8183866223445441b6fb9206b9f0b583410977e6
  • 好朋友C地址
    0x431e81e5dfb5a24541b5ff8762bdef3f32f96354

該事件發生的順序為:

  1. Curve V4(BUSD)尚未對外公開時,A試圖將V3的資金挪去V4,所以進行了多次穩定幣兌換。當時V4資金池中僅有4.28萬USDC (相比其他幾個穩定幣佔比更低) ,但是A將自己遠超這個數量級的資金兌換成了USDC,所以產生了巨額損失。損失金額最大的一筆也是最後一筆:A將44.6萬美元換成了2.5萬USDC。A所有操作共記損失56萬美元
  2. A的操作讓整個Curve V4的四個幣種產生了不平衡(特別是USDC太少,BUSD太多) ,也瞬間拉高了Curve V4中的手續費收益率。用戶B可能是在觀察到了Curve V4中不同尋常的收益率後,嘗試進行套利。他成功將3.3萬美元換成了9萬BUSD,但另外兩筆的操作卻發生了虧損。B所有的操作共計產生收益3527美元
  3. 團隊在發現該問題後,立即聯繫了一名在Curve中存有大額資金的朋友C,讓他針對資金池中四個穩定幣的不平衡現象進行了補足,將9萬USDC換為46.5萬美元,將9萬DAI換成13.4萬美元,共產生收益42萬美元
  4. 由於各方進行了金額較大且極度不平衡的交易,所以每個人在操作過程中產生的高額手續費。據Andre Cronje推測,總共約有14萬美元手續費。

所以總結來說,各位的損失和收益為:

A:損失56萬美元;
B:獲利3527美元;
C:獲利42萬美元;
Curve V4資金池:獲利14萬美元手續費。

後來團隊找到了A和B兩個人,計劃將C獲利的42萬美元還給A。但是在他們聯繫B之後,他未回復並刪除了社交網路帳號。

所以最終的結果就是:

A:損失14萬美元;
B:獲利3527美元;
Curve V4資金池:流動性提供方獲利14萬美元。

該事件在發生後受到了不少DeFi業內人士(如Chris Blec)的質疑和抨擊,指責Curve以及iearn沒有及時將該事件的細節公開,並且指出,他們的產品因缺少滑點保護功能所以才產生了這次的事故。

當然,也有社區人士(如Gnosis 的產品負責人Eric Conner) 認為不必對該事件過於苛刻,因為指責和攻擊這些DeFi項目的創建者並沒有任何好處,不如設立起社區的資源,幫助這個自由的市場更好地識別風險。

後來,DeFi Weekly的作者Kerman Kohli與Andre Cronje進行了單獨的溝通,在他獲得了更多的信息後,他認為指責Andre Cronje是不公平的,之後便寫了一份詳細的報告,描述了這件事的經過。其中大多數的細節與Andre Cronje自己寫的報告一致,只是更詳細一些,也修復了一些之前的錯誤。

除此之外,Kohli還在報告中透露了一些新的發現:根據損失者A的多次故意產生損失的交易行為判斷,有足夠的理由懷疑這名用戶是在探索Curve的做市算法,以找到合適時機「攻擊」並從中獲利。因為他在已經產生了損失之後,還持續用BUSD兌換更少的USDC,他可能是認為當兩者的匯率有足夠差異的時候,就可以將USDC換得更多的BUSD。但是,中間出現了用戶B用戶C,讓他沒有能完成這樣的操作,更何況,也許就算他來得及這樣操作,也並不能從中獲利。

但這個事件的連鎖反應還在繼續。iearn的創始人Andre Cronje最終賭氣離開iearn這個項目,留下已經開發完的平台。用戶還可以繼續使用收益聚合器、Zap、一鍵買入Opyn保險等,這些都將繼續運行下去,但也有可能隨著其他平台的更新而逐漸不能使用。

Andre Cronje表示,自己對DeFi社區非常失望,他認為很多人並沒有了解背後的具體原因,就發表錯誤的信息並攻擊團隊。他還發表了一篇名為《在DeFi領域創建項目遜斃了》的文章,輔以截圖,證明社區不同人士是如何不公正對待他的。

幸好iearn目前是開發完成狀態,可以自運營下去,但尚不清楚後續是否有人會接手繼續更新維護。也有部分社區人士依舊在和他溝通,在推特上表示希望他可以回歸。

Curve的流動性不足是導致這件事情的起因,不過其他去中心化協議的流動性也面臨同樣的問題。以Uniswap為例,將40萬美元的TUSD(由於Uniswap未列入BUSD,所以用了類似的TUSD替代)換為USDC,也只能換得2.8萬美元。更何況Curve是個僅運行了一個多月的開源協議,而V4資金池遭遇該事件,更是在還未對外公開之前。

但是Uniswap自帶的滑點保護功能,卻可以避免很大的滑點,為用戶建立起的一道防禦措施。通過該設置,用戶可以選擇最大可以接受的滑點比例,如果超過該比例,交易就不會成交。而iearn的Zap作為Curve最重要的入口功能,之前未包含這樣的功能。

在該事件發生後,Andre Cronje也終於給iearn加上滑點保護。Andre Cronje表示,這是iearn更新的最後一個功能。

至於剛剛提到的獲利者B,由於他的以太坊地址中擁有以太坊域名「nigeldesouza.eth」,而被發現其背後的真實用戶可能是Nigel de Souza,推特帳號為@nigeldesouza。在該用戶拒絕溝通後,該推特帳號已經刪除。大多數人推斷,這應該是被該用戶自己刪除。

幸好還有「保險」可以買?

作為一個新晋的明星DeFi 項目,Curve迅速崛起。同時,該項目和iearn連接中出現的問題引發了爭議,並且爭議還在繼續發酵,這成為對DeFi 體係可能存在風險的討論源頭。

一個難以一句話回答的問題是:對於一個去中心化且開源的協議而言,如果完全按照設定的邏輯運行,產生了意外的獲利或者損失,能否說是這個協議「出錯」?

進而言之,如果該協議中存放著其他人幾百萬美元的時候,協議的開發者究竟有沒有義務為投資者提供實時、清晰和透明的公開信息?如果協議產生了用戶不正常的損失,誰應該承擔責任,進行賠付
不過,幸好還有幾個基於區塊鏈平台的保險業務可以幫助減輕這類風險所帶來的影響。

有兩個基於以太坊的平台的去中心化產品為Curve提供了類似於保險的業務,也算是一種可以對沖資金潛在損失風險的機制。其中一個是Opyn,為Curve的資金池提供了一個名為oCRV的看跌期權代幣,購買者相當於購買了一種保險,如果Curve資金池歸零,Opyn需要將之前抵押的1.6倍的ETH進行賠付。不過oCRV上線時成本極高,如果購買的話,將抵消可能在Curve賺得的收益。

另一個提供風險對沖機制的是Nexus Mutual,這更像一個獨立的保險機構,或可以稱為「互助保險社區」。當用戶的資金真的因為智能合約漏洞出現損失時,平台中的用戶就可以對每筆理賠申請進行投票,如果投票通過的話,就可以獲得賠償。在bZx的事件中,就有幾筆用戶的損失得到了Nexus Mutual平台的賠付。

除了安全性之外,用戶體驗也是Curve目前尚未探索的領域。從目前網站頁面來看,這點並不著急,因為Curve更像是在做一個協議,更多的流量應該是來自於接入的服務商。目前來看,Curve的交易量主要來自於1inch這類的聚合交易所,另外還有ParaSwap0x API接入了Curve的交易功能,而注入流動性的功能主要通過iearn的Zap實現。

之前Curve V3曾經可以提供20%的年化收益,這很吸引人,但可能不可持續,因為在安全性、用戶體驗和入口流量的問題解決之後,就會有更多資金注入,成為「做市商」的一員,分攤更多的收益。於此同時,這又會進一步提升資金池的大小,開啟一個良性循環。

不過誰知道呢,畢竟這些算法參數交易費都要經過試驗才能知道其有效性。這就像Curve在推特說的第一句話:「我們有史以來第一次有能力進行『實驗經濟學』。我們開始做吧!」

他們說的很對。讓我們開始吧,為DeFi 喝彩,但也不要放鬆警惕。

參考文獻

關於用戶在Curve 損失14 萬美元的來龍去脈

Andre Cronje 《在DeFi領域創建項目遜斃了

本文經鏈聞同意授權轉載,文章來源:鏈聞 ChainNews(ID:chainnewscom)

衍伸閱讀


立即加入 Telegram 獲得最精準的區塊鏈新知、加密貨幣動態!