2019年末,我發表了一篇題為「Takingundercollateralizedloansforfunandforprofit」的文章。在這篇文章中,我描述了對依賴于一個或多個代幣準確價格數據的以太坊dApps的經濟攻擊。現在是2020年底,不幸的是,許多項目已經犯了非常類似的錯誤,最近的例子是HarvestFinance黑客套利攻擊,導致協議用戶集體損失3300萬美元。
盡管開發人員熟悉可重入性等漏洞,但很明顯,人們并不經常考慮對預言機價格的操縱。相反,基于可重入性的漏洞開發數量近年來有所下降,而基于價格操縱的漏洞開發數量正在上升。因此,我認為是時候有人出版一本關于價格操縱的權威資源了。
這篇文章分為三個部分。對于那些不熟悉這個主題的人,有一個關于喂價預言機和預言機操縱的介紹。那些想要測試知識的人可以直接跳到案例研究部分,在那里我們回顧了過去與預言機相關的漏洞和利用事件。最后,我們總結了一些方法,開發人員可以應用到保護他們的項目免受預言機的價格操縱。
現實生活中的喂價預言機操縱
2015年12月1日,星期三。你的名字是大衛·斯巴格,你正在澳大利亞墨爾本的PekingDuk音樂會上。你想親自見樂隊,但在你和后臺通道之間隔著兩個保安,他們不可能讓這些普通人走進去。
你知道,如果你表現得好像你屬于這里,保安會怎么反應。家庭成員肯定會被允許參觀后臺,所以你所要做的就是讓保安相信你是他們的親戚。你想了一會兒,然后想出了一個只能用天才或者瘋子來形容的計劃。
DeFi結構化產品GammaSwap完成170萬美元融資:2月6日消息,DeFi結構化產品GammaSwap完成170萬美元種子輪融資,參投方包括Skycatcher Crypto、Dialectic、Space Whale Capital、Modular Capital、Portico Ventures、Ouroboros Capital、Owl Ventures、RenGen、Manifold Trading,個人投資者包括GMX核心成員以及DeBank上持倉金額第二大錢包所有者等。GammaSwap旨在通過與DEX集成來使用戶獲得代幣的杠桿敞口。[2023/2/7 11:50:47]
在迅速安排好一切后,你自信地走向保安。你自我介紹說你叫大衛·斯巴戈,PekingDuk的家人。當警衛要求證據時,你給他們看無可辯駁的證據——維基百科。
警衛揮手讓你過去,讓你等著。一分鐘過去了,兩分鐘過去了。五分鐘后,你在遲疑否應該在執法部門出現之前逃跑。當你準備「越獄」之時,ReubenStyles?走過來介紹了自己。你和他一起走到演員休息室,那里的樂隊對你的聰明才智印象深刻,最后你們一起喝了幾杯啤酒。之后,他們會在自己的Facebook頁面上分享所發生的事情。
什么是喂價預言機?
喂價預言機,總的來說,就是任何你咨詢的價格信息。當Pam向Dwight詢問SchruteBuck的現金價值時,Dwight就是在預測價格。
在以太坊網絡中,一切都是智能合約,喂價預言機也是如此。因此,區分喂價預言機是如何獲得其價格信息的更有用。在一種方法中,您可以簡單地從價格api或交易平臺中獲取現有的鏈外價格數據,然后將其引入鏈中。在另一種情況下,您可以通過查詢在鏈上的去中心化交易所來計算瞬時價格。
新加坡金融管理局探索 DeFi 潛力,嘗試證券代幣化:金色財經報道,新加坡中央銀行正在利用摩根大通幫助領導一個新的區塊鏈試點,探索 DeFi 的潛力。即將進行的測試是新加坡金融管理局 (MAS) Project Guardian 計劃的一部分,該計劃于周二啟動。Project Guardian 旨在評估在包括以太坊在內的公共區塊鏈上運行的 DeFi應用程序是否可以在不引入額外的不當風險的情況下改善批發借貸流程。第一步:將債券和存款代幣化,智能合約為交易執行提供動力。?MAS 還邀請了新加坡跨國銀行星展銀行與當地數字資產發行初創公司 Marketnode 共同領導該計劃。
該項目打算專注于數字證券,或由傳統金融工具支持的區塊鏈代幣。新加坡中央銀行兼任國家金融監管機構,將利用試點結果為其加密貨幣政策制定提供信息。[2022/6/1 3:54:11]
這兩種選擇各有優缺點。離鏈數據對波動性的反應通常較慢,波動性的好壞取決于您試圖將其用于何處。它通常需要少數特權用戶將數據推送到鏈上,因此您必須相信他們不會作惡,也不會被迫推送奇怪的更新。鏈上數據不需要任何特權訪問,并且總是最新的,但這意味著它很容易被攻擊者操縱,從而導致災難性的故障。
還能出什么岔子呢?
讓我們來看一些例子,在這些例子中,集成不良的喂價預言機導致DeFi項目遭受重大資金損失。
SynthetixsKRW預言機故障
Synthetix是一個衍生品平臺,允許用戶將資產質押為其他資產。為了促進這一點,Synthetix(當時)依賴于一個定制的離鏈價格供應源來實現,其中一個由一組秘密的價格供應源計算出來的總價格以一個固定的間隔發布在鏈上。然后,這些價格允許用戶對平臺支持的資產持有多頭或空頭頭寸。
歐易OKEx DeFi播報:DeFi總市值1098.10億美元,歐易OKEx平臺SUN領漲:據歐易OKEx統計,DeFi項目當前總市值為1098.10億美元,總鎖倉量為613.90億美元;
行情方面,今日DeFi代幣普漲,歐易OKEx平臺DeFi幣種漲幅最大前三位分別是SUN、TRB、COVER;
截至18:30,OKEx平臺熱門DeFi幣種如下:[2021/3/22 19:07:40]
2019年6月25日,Synthetix依賴的一個價格反饋錯誤地報告了韓元的價格比實際價格高出1000倍。由于喂價預言機系統的其他地方出現了額外的錯誤,這個價格被系統接受并發布在鏈上,在鏈上交易機器人可以快速進出sKRW市場。
盡管Synthetix團隊能夠與這個交易者談判,以bug獎金的形式交換回損失資金。但理論上的來說,機器人本次能夠獲得超過10億美元的利潤。
Synthetix正確地執行了預言機合約,并從多個來源下調了價格,以防止交易商在價格變化發布之前預測價格變化。然而,一個上游價格源故障的案例導致了毀滅性的打擊。這說明了使用離鏈數據的喂價預言機的風險:您不知道如何計算價格,因此您的系統必須仔細設計,以便所有潛在的故障模式都得到正確處理。
低擔保貸款
如前所述,我在2019年9月發表了一篇文章,概述了使用依賴于鏈上數據的喂價預言機所帶來的風險。雖然我強烈推薦閱讀原文,但是這篇文章篇幅很長,技術細節很多,可能很難理解。因此,我將在這里提供一個簡單的解釋。
Pantera Capital和Alameda Research對DeFi協議Balancer進行投資:DeFi協議Balancer(BAL)宣布加密貨幣投資機構Pantera Capital和Alameda Research通過直接從Balancer Labs中購買BAL代幣對Balancer進行了投資,新資金將幫助加快Balancer v2的開發。目前,Balancer未披露投資金額。Balancer表示,Balancer v2將顯著改善交易成本、簡化開發人員集成和用戶體驗。[2020/11/10 12:09:48]
想象一下,你使用去中心化的借貸平臺。用戶可以將資產作為抵押品存入平臺,也可以借入其他資產,但最高金額取決于他們存入的資產的價值。讓我們假設一個用戶想用ETH作為抵押品借入美元,ETH的當前價格是400美元,抵押比率是150%。
如果用戶存款375ETH,意味著存入了150,000美元的抵押品。他們可以每1.5美元的抵押品借入1美元,所以他們可以從系統借入最多100,000美元。
但是當然,在區塊鏈上它不是簡單的聲明1ETH值400美元,因為惡意用戶可以簡單的聲明1ETH值1000美元,然后從系統中拿走所有的錢。因此,對于開發者來說,尋找最適合的喂價預言機是很誘人的,比如當前Uniswap、Kyber的現貨價格,或者另一個去中心化的交易平臺。
乍一看,這似乎是正確的做法。畢竟,只要你想買進或賣出ETH,Uniswap的價格總是大致正確的,因為任何偏離都會被套利者迅速糾正。然而,事實證明,去中心化交易平臺的現貨價格在交易過程中可能嚴重不正確,如下面的例子所示。
DeFi借記卡公司Monolith宣布提供加密貨幣購買功能:DeFi借記卡公司Monolith允許用戶將基于以太坊的代幣用于日常購買。該公司宣布,客戶現在可以直接在其平臺上購買加密貨幣。用戶可以購買DAI,賺取代幣利息,并在任何地方消費其資產。(PRWeb)[2020/9/16]
想想Uniswap儲備系統是如何運作的。價格是根據儲備金持有的資產數量計算的,但儲備金持有的資產隨著用戶在ETH和USD之間的交易而變化。如果惡意用戶在從你的平臺貸款之前和之后進行交易會怎么樣?
在用戶申請貸款之前,他們需要花費200萬美元購買5000個ETH。Uniswap交易所現在計算的價格是1ETH=2,600美元。那么現在,他們的375ETH可以作為抵押品,抵押價值高達650,000美元的資產。最后,他們用200萬美元換回原來的5000ETH,這將重新調整價格至正常狀態。結果是,貸款平臺損失了550,000美元。
這個案例研究說明了在使用去中心化的交易作為喂價預言機時最常見的錯誤——攻擊者在交易過程中幾乎完全控制價格,并試圖準確地操縱價格就像在天平安定下來之前讀出秤上的重量。這樣的話,你可能會得到錯誤的號碼,并根據情況它可能會造成很大的損失。
SynthetixMKR操縱
2019年12月,Synthetix因為預言機價格操縱而再次遭受攻擊。值得注意的是,它跨越了鏈上價格數據和鏈外價格數據之間的障礙。
Reddit用戶u/MusaTheRedGuard注意到,一個攻擊者正在對sMKR和iMKR(反MKR)進行一些非常可疑的交易。攻擊者首先購買了MKR上的一個多頭倉位,然后從Uniswapeth/MKR對購買了大量MKR。等了一段時間后,攻擊者以iMKR的價格賣掉了他們的MKR,并把它們賣回了Uniswap。然后他們重復了這個過程。
在幕后,攻擊者通過Uniswap進行的交易允許他們隨意調整Synthetix上MKR的價格。這可能是因為Synthetix所依賴的非鏈式價格源實際上依賴于MKR的鏈上價格,而且沒有足夠的流動性讓套利者將市場重新調整到最佳狀態。
這個事件說明了一個事實,即使你認為你使用的是鏈外價格數據,實際上你可能仍然在使用鏈上價格數據,而且你可能仍然暴露在使用這些數據所涉及的復雜性中。
我該如何保護自己?
到目前為止,我希望你已經學會了識別共同的線索-它并不總是明顯的,你正在使用一個喂價預言機,如果你沒有遵循適當的預防措施,攻擊者可以欺騙你的協議,把你所有的錢寄給他們。雖然沒有可以規定的一刀切解決方案,但是這里有一些解決方案在過去曾經對其他項目起過作用。也許其中一個也適用于你。
淺水市場,不要潛水
就像一頭扎進游泳池的淺水區一樣,一頭扎進沒有流動性的市場是痛苦的,而且可能會導致永遠改變你的生活的巨大開銷。在您考慮計劃使用復雜的特定價格預言機之前,請考慮該標記是否具有足夠的流動性以保證與平臺集成。
一鳥在手勝過兩鳥在林
看到Uniswap的潛在代幣匯率可能會讓人著迷,但只有當你真正點擊交易并且交易成功后代幣在你的錢包里的時候,才是最終的結果。同樣,要確定兩種資產之間的匯率,最好的方法就是直接進行資產互換。這種方法很好,因為沒有后悔和假設。然而,它可能不適用于那些要求持有原始資產協議,如貸款平臺。
幾乎去中心化的預言機
總結依賴于鏈上數據的預言機模型的問題的一種方法是,它們有點太新了。如果是這樣的話,為什么不人為地推遲一下呢?編寫一份合約,在Uniswap這樣的去中心化交易平臺上用最新的價格更新自己,但只有在一小群特權用戶提出要求時才這樣做。現在,即使攻擊者可以操縱價格,他們也不能讓你的協議真正使用它。
這種方法實現起來非常簡單,而且速度快,但也有一些缺點——在鏈上擁堵的時候,你可能無法按照自己的意愿快速更新價格,而且仍然容易受到內外夾擊。此外,現在你的用戶需要相信,你實際上會保持價格更新。
減速帶
操縱價格預言是一個時間敏感的操作,因為套利者總是在觀望,并且喜歡優化任何次優市場的機會。如果攻擊者想要最小化風險,他們會想要在一個交易中操縱一個喂價預言機,這樣套利者就不可能在中間跳躍。作為一個協議開發人員,如果系統支持它,那么在用戶進入和退出系統之間實現短至1區塊的延遲就足夠了。
當然,這可能會影響可組合性,而且礦商與交易員的合作正在增加。在未來,壞的參與者可能會在多次交易中操縱價格,因為他們知道與他們合作的礦商將保證沒有人能跳到中間,從他們的收益中分一杯羹。
時間加權平均價格Time-WeightedAveragePrice(TWAP)
UniswapV2為鏈上開發人員引入了TWAP預言機。文檔對預言機提供的確切安全保證進行了更詳細的描述,但是一般來說,對于長時間的大型交易池,沒有區塊擁塞的情況下,TWAP預言機對預言機操縱攻擊具有很強的抵抗力。然而,由于其實施的性質,它可能無法對市場高度波動的時刻作出足夠迅速的反應,而且只適用于已經具有流動性的資產。
M-of-N記者
如今許多大型項目都采用這種方法:Maker運行一系列由可信實體操作的價格信息提要,Compound創建了Open預言機,并提供Coinbase等記者功能,Chainlink收集來自Chainlink運營商的價格數據,并在鏈上發布。請記住,如果您選擇使用這些解決方案之一,那么您現在已經將信任委托給了第三方,您的用戶也必須這樣做。要求記者手動在網上發布最新消息也意味著,在市場高度波動和鏈上擁堵的時候,價格可能無法及時更新。
總結
喂價預言機是一個至關重要的,但經常被忽視的組成DeFi安全的部分。安全地使用喂價預言機是困難的,有很多方法可以把你自己和你的用戶都搞砸了。在這篇文章中,我們討論了過去的價格預言者操縱的例子,并且確定在交易過程中閱讀價格信息可能是不安全的,并且可能導致災難性的金融損失。我們還討論了其他項目過去用于打擊價格Oracle操縱的一些技術。不過最終,每種情況都是獨一無二的,你可能會發現自己不確定是否正確地使用了喂價預言機。如果是這樣的話,盡管去尋求建議吧!
原文標題:《Soyouwanttouseapriceoracle》
原文來源:SAMCZSUN
幣汐柔:11.9比特幣以太坊做投資時小倉位投資者生存的必備法則人只有在經歷過痛苦的時候才會醒悟,才知道失敗的原因所在,這何嘗不是一種經驗,而經歷過磨難才會使人成長,推動著一個人走向卓越.
1900/1/1 0:00:00尊敬的虎符用戶, 虎符將于2020年11月10日11:00(UTC8)重磅上線DSLA/USDT和DSLA/ETH交易對。充值已開啟,提現將于11月10日18:00(UTC8)開啟.
1900/1/1 0:00:00近期比特幣價格直接飆升至15980美元,也就相當于人民幣10W多,并居高至上,相信這個時候會有很多人開始糾結了,到底是選擇買幣屯幣好,還是直接買礦機挖礦好,其實這是一個非常糾結的地方.
1900/1/1 0:00:002020年美國大選結果已經出爐,但它對加密資產市場帶來的影響仍在持續。11月5日,比特幣持續上漲突破15000美元大關,創造了2018年1月以來的新高.
1900/1/1 0:00:00本周技術類新聞較少,所以本技術周刊包含以太坊、波卡、Hyperledger、BSN四個網絡的技術類新聞.
1900/1/1 0:00:00Slingshot是針對存儲客戶和開發人員的社區競賽,旨在獎勵Filecoin網絡上真實,有價值和可用數據的存儲。彈弓比賽的第一階段進行了四個星期.
1900/1/1 0:00:00