原文標題:《SolvingtheissuewithslippageinEIP-4626?》
原文作者:NickAddison
原文編譯:ChinaDeFi
EIP-4626和mStable金庫存款
mStableEIP-4626的首個金庫將投資于基于Curve3?Pool的Convex池。從EIP-4626的角度來看,金庫的資產是Curve3?Pool的流動性提供者代幣(?3?Crv)。存款函數是EIP-4626規范的一部分,它指定要存入多少資產以及將接收金庫份額的帳戶。存款函數返回給接收方會鑄造多少金庫份額。
functiondeposit(uint?256assets,addressreceiver)
external
returns(uint?256shares);
例如,存入3?CrvConvexmUSD金庫將從調用方轉移3?Crv,并將vcx?3?CRV-mUSD金庫份額轉移到接收方。
EIP-4626標準的強大之處在于,在投資池中有一種通用的投資方法,但對資產可以投資到底層平臺的內容和時間沒有限制。對于mStable的3?CrvConvxmUSD金庫來說,3?Crv被添加到CurvemUSDMetapool中,然后產生的流動性提供者代幣(musd?3?Crv)被存入ConvexmUSD池中,該池會投資于CurvemUSDgauge并獲得更高的回報。
“如何看待比特幣凌晨突發大跳水”相關討論上知乎熱榜前三:根據知乎首頁,一條提問“如何看待比特幣凌晨突發大跳水,24小時近20萬人爆倉,一度跌破5.5萬美元,112億資金灰飛煙滅?”登上知乎熱榜,現排名第三位,熱度2375萬。[2021/5/13 21:59:09]
這個過程中的一個技術挑戰是如何防止三明治攻擊。
什么是三明治攻擊?如何預防它們?
當我們向CurveMetapool(或任何其他池)添加流動性時,我們指定自己想存入的資產數量和流動性提供者(LP)代幣的最小數量。對于mUSDMetapool,金額是一個包含兩項的數組。第一個是mUSD的量,第二個是3?Crv的量。?3?CrvConvex金庫只存3?Crv,因此金額數組的第一項將為零。
functionadd_liquidity(uint?256?memoryamounts,uint?256min_mint_amount)
external
returns(uint?256?);
開發金庫時的一個技術挑戰是我們如何設置預期流動性提供者代幣的最小數量。
掌柜調查署 | 疫情之下,區塊鏈企業該如何應對?:修我甲兵,與子偕行。疫情之下,區塊鏈企業該如何應對?
今天下午15:00,金色財經掌柜調查署,由金色財經合伙人佟揚對話WBF交易所創始人Bella Fang,一起聊聊此次“新冠”疫情期間WBF的應對舉措。
更多詳情請點擊原文鏈接或掃碼進群查看。[2020/2/13]
僅僅將min_mint_amount設置為零是不夠的,因為它會讓存款交易受到三明治攻擊。但在我們深入了解三明治攻擊是如何工作之前,我們需要更多地了解CurveMetapool定價是如何工作的。由于金庫只添加兩個池代幣(mUSD和3?Crv)中的一個,因此它接收到的Metapool流動性提供者(LP)代幣的數量將取決于Metapool中mUSD和3?Crv的余額。池中的3?Crv越多,當僅將3?Crv添加到Metapool時,返回的LP代幣就越少。
例如,如果Curve的mUSDMetapool添加了200萬個mUSD,?600萬個3?Crv和100?k個3?Crv,則將收到100?,?068個LP代幣(musd?3?Crv)。如果Metapool有600萬個mUSD,添加了200萬個3?Crv和100?k個3?Crv,將收到100?,?892個LP代幣(musd?3?Crv)。
聲音 | 陳純:除了研究區塊鏈技術本身外 還需要研究如何監管:1月12日,中國工程院院士陳純在CCF通訊刊文《聯盟區塊鏈關鍵技術與區塊鏈的監管挑戰》,文中提到,區塊鏈作為重要的底層基礎設施,在其快速發展的過程中,我們要高度重視安全問題。因此,我們除了研究區塊鏈技術本身外,還需要研究區塊鏈如何監管。公有鏈已經成為新媒體的傳播媒介,因為公有鏈本身具有去中心化、不可篡改、不可刪除、低成本的特點。利用區塊鏈去傳播有害信息、網絡謠言、煽動性與攻擊性信息,會給區塊鏈技術的產業布局和發展帶來不利影響,同時給監管部門帶來很大的挑戰。[2020/1/13]
那么三明治攻擊是如何實現的呢?
攻擊者在將交易包含到區塊之前,就會監控Mempool中可能被利用的交易。為了利用交易,他們賄賂區塊生產者,將他們的交易包含在可利用的交易之前和之后。也就是說,他們將易受攻擊的交易與自己的交易夾在一起。如果有一筆交易將3?Crv添加到最低LP金額為零的mUSDMetapool,則攻擊者的第一筆交易將是減少Metapool中的mUSD數量。這意味著在易受攻擊的添加流動性交易中收到的MetapoolLP代幣數量遠低于應有的數量。在第三個交易中,攻擊者返還在第一個交易中刪除的mUSD,并將收益裝入囊中。
聽證會 | 扎克伯格:還未確定如何處理錯誤交易的最終政策:金色財經直播報道,在今日聽證會上,議員Bil Foster詢問了有關如何處理錯誤交易。扎克伯格說,他不確定是否已經為此制定了政策。已對此有所考慮,但還沒有確定”最終政策。[2019/10/24]
例子
使用Curve的mUSDMetapool,池中有6?,?000?,?000mUSD和3?Crv,11?,?917?,?295個LP代幣(musd?3?Crv)和1.018095美元的虛擬價格。
攻擊者通過使用6?,?500?,?000(?54.5%??????????)池流動性提供者(musd?3?Crv)代幣從池中提取5?,?973?,?425的mUSD,使用他們池中的大部分流動性提供者代幣(musd?3?Crv)來平衡池。使用remove_liquidity_one_coin函數進行單邊提款,池中剩下0.43%??????????mUSD和99.56%??????????3?Crv。虛擬價格上漲了近1%??????????,至1.019105?,因為大量不平衡的提現為池收取了費用。
受害者使用add_liquidity函數將100?,?000個3?Crv添加到不平衡的池中,且沒有最小流動性提供者數量。如果池是平衡的,受害者得到81978個LP代幣而不是100371個。這意味著受害者得到的LP代幣比他們應該得到的少18?,?393個(?18%??????????)。以美元計算,受害者得到的美元價值減少了18?,?643?(?18%??????????)。
動態 | 會計公司H&R Block推出新服務 就如何正確申報加密貨幣損益提供咨詢:根據9月24日發布的一份新聞稿,美國會計公司H&R Block推出了一項針對從事加密貨幣交易的人士的新服務,專門就如何在納稅申報單上正確申報加密貨幣損益提供咨詢。(Cointelegraph)[2019/9/25]
對于第三個也是最后一個交易,攻擊者使用add_liquidity將他們從第一個交易中提取的5?,?973?,?425個mUSD添加回池中,以接收6?,?503?,?610個LP代幣(musd?3?Crv)。比第一次交易多取了3610美元。池的虛擬價格將增加1%??????????至1.019216?,因為這是另一個不平衡的交易。以美元計算,攻擊者的LP價值從6?,?500?,?000*1.018095=6?,?617?,?617美元上升到6?,?503?,?610*1.019216=6?,?628?,?583美元,增加了10?,?966美元(?1.65%??????????)。
如果受害者損失了18643美元價值,而攻擊者只獲得了10966美元價值,那么缺失的7677美元價值在哪里?
使池失衡的0.04%??????????費用由流動性提供者和Curve投票托管的CRV(veCRV)持有者平均分攤。攻擊者未持有的5?,?417?,?295LP代幣的價值從5?,?515?,?323美元增加到5?,?520?,?794美元。這比池費用的50%??????????增加了5?,?471美元。增加的美元價值歸于托管CRV(veCRV)持有人。
Curve的保護
為了防止三明治攻擊,在向CurveMetapool添加流動性時,需要指定一個合理的最小LP代幣數量。通常,DeFi協議會在交易中傳入相當數量的金額。Curve池中的add_liquidity函數就是min_mint_amount的一個很好的例子。但是對于標準的EIP-4626存款函數,沒有定義參數來指定最小金額,因此我們無法傳入相當數量的鏈下計算的MetapoolLP代幣。
Curve池有一個calc_token_amount函數,它可以計算池代幣存款收到的LP代幣數量。但這不能用來防止三明治攻擊。如果已經運行了一個交易來平衡池,那么calc_token_amount函數將只返回當前不公平的LP代幣數量。
functioncalc_token_amount(uint?256?memoryamounts,boolis_deposit)externalviewreturns(uint?256?);
因此問題仍然存在,EIP-4626函數沒有辦法傳遞最小量。打破標準來添加這一點是不可取的,使用預言機也是次優的。我們需要鏈上方法。
mStable的方法
mStable的金庫獲得一個公平的MetapoolLP代幣價格的方法是使用CurveMetapool和Curve3?Pool的虛擬價格。get_virtual_price函數以美元為單位返回池的流動性提供者代幣的價格。它通過計算池的不變式來實現這一點,該不變式是池中代幣的美元價值除以代幣的總供應量。由于池中代幣的余額不影響池的不變值或總美元價值,虛擬價格不會受到三明治攻擊。
functionget_virtual_price()externalviewreturns(uint?256?);
對于存入mStable金庫的存款,我們需要在Curve的3?PoolLP代幣(?3?Crv)中對MetapoolLP代幣進行定價,因為這是我們在金庫中使用的資產。為此,我們得到3?Pool虛擬價格,并將其除以MetapoolLP代幣價格。
fairMetapoolLPtokens=3?Crvassets*
?3?Poolvirtualprice/
Metapoolvirtualprice
一旦我們有了一個合理的價格,我們就可以通過目前配置為1%??????????的滑點系數來降低它。這個調整后的公平價格用于計算在向池中添加3?Crv流動性時可以接收的CurveMetapoolLP代幣(musd?3?Crv)的最小數量。
存款的全部流程如下:
結論
雖然標準在標準化和獲得采用方面起著巨大的作用,但像這樣的問題提醒我們,在DeFi方面沒有輕松的勝利。我們需要認識到現有標準的局限性,并為它們尋找最佳的解決方案。
Gate.io即將開啟InfinityAngel(ING)交易大賽,立即參與齊享價值$20,000美元獎勵.
1900/1/1 0:00:002014年Mt.Gox遭黑客攻擊時,大多數人都打算退出比特幣,而我的區塊鏈之旅正是從那時開始的。當比特幣從1100美元暴跌到不到200美元時,我見證了更大的去中心化的推動.
1900/1/1 0:00:00廣州市天河區人民法院23日發布消息,近日,該院審理了一起有關虛擬貨幣“挖礦”引發的合同糾紛案件。法院一審認定合同無效,判決駁回原告的全部訴訟請求與被告的全部反訴請求.
1900/1/1 0:00:00比特幣在2022年11月24日鞏固在16,000美元以上時繼續橫盤整理比特幣(BTC)在16,000美元上方盤整,上行趨勢受到抑制.
1900/1/1 0:00:00親愛的CoinW用戶: 幣贏CoinW將于2022/11/2420:00在DeFi區上線BENQI(QI),并開通QI/USDT交易對.
1900/1/1 0:00:00JOYBIT是全球領先的加密貨幣綜合交易平臺,由美國華爾街資深金融量化團隊打造,面向全球多個國家、地區用戶,提供專業、豐富、安全的加密資產服務.
1900/1/1 0:00:00