比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

淺談Curve:最強大的穩定幣兌換協議-ODAILY_BASE

Author:

Time:1900/1/1 0:00:00

簡介

Curve協議,一種基于以太坊平臺的去中心化交易所,主要聚焦于穩定幣、封裝資產等的交易。相對于其他DEX,Curve提供的交易對更集中,擁有極低的滑點和手續費,可以滿足巨額的資產交易需求。極低的滑點和手續費以及crv的生態,都使得Curve在眾多DeFi協議中能占據重要的一席之地。

StableSwap

StableSwap是Curve在白皮書中設計提出的一種穩定幣交易模型,該模型能提供極低的交易滑點和無限的流動性。

做市函數

StableSwap模型的恒定函數做市商曲線如下:

該設計理念基于融合恒定和與恒定積兩種做市模型,兼具了恒定和的低滑點以及恒定積的無限流動性的特點

推導

假設現共有n個穩定幣,則有:

給恒定和部分添上杠桿系數,并加上恒定積部分,則有:

其中系數X引入了偏度的概念,由放大系數和偏度構成,其中偏度用來衡量流動池中各代幣的平衡程度

結合以上兩式化簡即可得出公式(1)

特點

StableSwap模型的曲線兼具恒定和與恒定積的特點,在各穩定幣相對平衡的情況下,公式由恒定和占主導,曲線趨于直線,滑點較低;當在極端情況下,各穩定幣不平衡,則公式由恒定積占主導,曲線與坐標軸無交點,不會出現流動性枯竭的情況

歐易OKX將于3月23日21 : 20 (HKT) 開啟ARB交易:3月23日消息,據官方公告顯示,歐易OKX將于3月23日21 : 20 (HKT) 開啟ARB交易,并于3月23日22:00 (HKT) 在網頁端、APP端及API正式上線ARBUSDT永續合約, 2023年3月24日11:00 (HKT) 上線ARB/USDT的杠桿交易、余幣寶。[2023/3/23 13:22:16]

Basepool

basepool為Curve推出的基礎兌換池,最常見的有3pool,由三種穩定幣DAI、USDC、USDT組成

basepool合約實現了基本的StableSwap交易模型

參數計算

StableSwap模型的做市曲線公式(1)中,有兩個重要的參數A與D,其中參數A為放大系數,由官方調整設置每個池子的放大系數;而參數D則為池中代幣總量,是動態變化的。在basepool合約中,參數D的計算由_get_D函數實現:

@pure@internaldef_get_D(_xp:uint256,_amp:uint256)->uint256:"""Dinvariantcalculationinnon-overflowingintegeroperationsiterativelyA*sum(x_i)*n**n+D=A*D*n**n+D**(n+1)/(n**n*prod(x_i))Convergingsolution:D=(A*n**n*sum(x_i)-D**(n+1)/(n**nprod(x_i)))/(A*n**n-1)"""S:uint256=0Dprev:uint256=0for_xin_xp:S+=_xifS==0:return0D:uint256=SAnn:uint256=_amp*N_COINSfor_iinrange(255):D_P:uint256=Dfor_xin_xp:D_P=D_P*D/(_x*N_COINS)#Ifdivisionby0,thiswillbeborked:onlywithdrawalwillwork.AndthatisgoodDprev=DD=(Ann*S/A_PRECISION+D_P*N_COINS)*D/((Ann-A_PRECISION)*D/A_PRECISION+(N_COINS+1)*D_P)#Equalitywiththeprecisionof1ifD>Dprev:ifD-Dprev<=1:returnDelse:ifDprev-D<=1:returnD#convergencetypicallyoccursin4roundsorless,thisshouldbeunreachable!#ifitdoeshappenthepoolisborkedandLPscanwithdrawvia`remove_liquidity`raise

Paxos Treasury銷毀超過1.62億枚BUSD:金色財經報道,Whale Alert數據顯示,北京時間2月24日22:34:35,Paxos Treasury銷毀162,499,505枚BUSD。[2023/2/25 12:28:06]

_get_D函數的算法將做市函數公式(1)以D為變量,通過牛頓迭代法計算出合適的D值,算法可謂精妙簡潔

同樣的算法還用于_get_y函數計算y值

@view@internaldef_get_y(i:int128,j:int128,x:uint256,_xp:uint256)->uint256:"""Calculatexifonemakesx=xDonebysolvingquadraticequationiteratively.x_1**2+x_1*(sum'-(A*n**n-1)*D/(A*n**n))=D**(n+1)/(n**(2*n)*prod'*A)x_1**2+b*x_1=cx_1=(x_1**2+c)/(2*x_1+b)"""#xintheinputisconvertedtothesameprice/precisionasserti!=j#dev:samecoinassertj>=0#dev:jbelowzeroassertj<N_COINS#dev:jaboveN_COINS#shouldbeunreachable,butgoodforsafetyasserti>=0asserti<N_COINSA:uint256=self._A()D:uint256=self._get_D(_xp,A)Ann:uint256=A*N_COINSc:uint256=DS:uint256=0_x:uint256=0y_prev:uint256=0for_iinrange(N_COINS):if_i==i:_x=xelif_i!=j:_x=_xpelse:continueS+=_xc=c*D/(_x*N_COINS)c=c*D*A_PRECISION/(Ann*N_COINS)b:uint256=S+D*A_PRECISION/Ann#-Dy:uint256=Dfor_iinrange(255):y_prev=yy=(y*y+c)/(2*y+b-D)#Equalitywiththeprecisionof1ify>y_prev:ify-y_prev<=1:returnyelse:ify_prev-y<=1:returnyraise

數據:以太坊Layer2擴容網絡Arbitrum活躍賬戶數突破100萬,交易總量超4000萬筆:金色財經報道,據Dune Analytics最新數據顯示,以太坊Layer2擴容網絡 Arbitrum活躍賬戶數突破100萬,本文撰寫時為116.5萬個;鏈上交易總額超過4000萬美元,當前約為4104萬筆。此外,Arbitrum鏈上鎖定總價值達到25.62億美元,鎖定的全部以太坊ERC-20代幣總價值達到31.20億美元。[2022/10/14 14:27:41]

流動性

Curve池的流動性添加不同于Uniswap必須添加交易對的兩種資產,basepool可以僅添加池中某一種資產

@external@nonreentrant('lock')defadd_liquidity(_amounts:uint256,_min_mint_amount:uint256)->uint256:"""@noticeDepositcoinsintothepool@param_amountsListofamountsofcoinstodeposit@param_min_mint_amountMinimumamountofLPtokenstomintfromthedeposit@returnAmountofLPtokensreceivedbydepositing"""assertnotself.is_killed#dev:iskilledamp:uint256=self._A()old_balances:uint256=self.balances#InitialinvariantD0:uint256=self._get_D_mem(old_balances,amp)#hunya#初始狀態D0lp_token:address=self.lp_tokentoken_supply:uint256=CurveToken(lp_token).totalSupply()new_balances:uint256=old_balancesforiinrange(N_COINS):iftoken_supply==0:assert_amounts>0#dev:initialdepositrequiresallcoins#balancesstoreamountsofc-tokensnew_balances+=_amounts#InvariantafterchangeD1:uint256=self._get_D_mem(new_balances,amp)#hunya#添加流動性后理論D1assertD1>D0#Weneedtorecalculatetheinvariantaccountingforfees#tocalculatefairuser'sshareD2:uint256=D1fees:uint256=empty(uint256)mint_amount:uint256=0iftoken_supply>0:#hunya#非首次添加流動性進行手續費扣出#Onlyaccountforfeesifwearenotthefirsttodepositfee:uint256=self.fee*N_COINS/(4*(N_COINS-1))admin_fee:uint256=self.admin_feeforiinrange(N_COINS):ideal_balance:uint256=D1*old_balances/D0difference:uint256=0new_balance:uint256=new_balancesifideal_balance>new_balance:difference=ideal_balance-new_balanceelse:difference=new_balance-ideal_balancefees=fee*difference/FEE_DENOMINATORself.balances=new_balance-(fees*admin_fee/FEE_DENOMINATOR)new_balances-=feesD2=self._get_D_mem(new_balances,amp)#hunya#扣除手續費后的D2mint_amount=token_supply*(D2-D0)/D0#hunya#LP鑄幣量else:self.balances=new_balancesmint_amount=D1#Takethedustiftherewasanyassertmint_amount>=_min_mint_amount,"Slippagescrewedyou"#Takecoinsfromthesenderforiinrange(N_COINS):if_amounts>0:#"safeTransferFrom"whichworksforERC20swhichreturnboolornot_response:Bytes=raw_call(self.coins,concat(method_id("transferFrom(address,address,uint256)"),convert(msg.sender,bytes32),convert(self,bytes32),convert(_amounts,bytes32),),max_outsize=32,)iflen(_response)>0:assertconvert(_response,bool)#dev:failedtransfer#end"safeTransferFrom"#MintpooltokensCurveToken(lp_token).mint(msg.sender,mint_amount)logAddLiquidity(msg.sender,_amounts,fees,D1,token_supply+mint_amount)returnmint_amount

礪算科技完成過億元PreA輪融資,將發力元宇宙等應用:金色財經報道,10月9日,高性能圖形GPU(圖像處理器)公司礪算科技宣布完成過億元PreA輪融資,君桐資本、活水資本、達泰資本、哲方資本共同領投。此外,公司近期還將啟動新一輪融資。

本輪資金將用于高性能圖形渲染GPU產品研發及相關商務拓展,完成兼容國際標準的圖形GPU功能,以及針對元宇宙、數字孿生、云渲染、新能源車應用的定制開發。

礪算科技聯合創始人孔德海表示,“數字孿生、元宇宙等數字世界都必須建立在高性能渲染GPU的基礎之上。礪算高性能渲染GPU,將持續為從數字孿生、AR/VR、云游戲到未來元宇宙提供驅動力。”(新京報)[2022/10/9 12:50:19]

Metapool

metapool為basepool基礎上擴展衍生的新池,用作將新型的穩定幣向basepool的LP代幣錨定。basepool池的流動性提供者可以將basepool的LP代幣再次在metapool中添加流動性,進一步賺取額外的交易手續費收益。

metapool合約中,間接耦合了新型穩定幣和基礎池的穩定幣,在提供了不同穩定幣之間的兌換功能的同時,一定程度上分隔了新型穩定幣的風險。

穩定幣兌換

metapool合約中的exchange_underlying函數實現了穩定幣之間的相互兌換功能

@external@nonreentrant('lock')defexchange_underlying(i:int128,j:int128,_dx:uint256,_min_dy:uint256)->uint256:....#Usebase_iorbase_jiftheyare>=0base_i:int128=i-MAX_COINbase_j:int128=j-MAX_COINmeta_i:int128=MAX_COINmeta_j:int128=MAX_COINifbase_i<0:meta_i=iifbase_j<0:meta_j=jdy:uint256=0...ifbase_i<0orbase_j<0:#hunya#兌換中包含meta池代幣old_balances:uint256=self.balancesxp:uint256=self._xp_mem(rates,old_balances)x:uint256=0ifbase_i<0:#hunya#輸入代幣為meta池代幣x=xp+dx_w_fee*rates/PRECISIONelse:#hunya#輸入代幣為base池代幣#iisfromBasePool#Atfirst,gettheamountofpooltokensbase_inputs:uint256=empty(uint256)base_inputs=dx_w_feecoin_i:address=self.coins#Depositandmeasuredeltax=ERC20(coin_i).balanceOf(self)Curve(base_pool).add_liquidity(base_inputs,0)#hunya#base池添加流動性#Needtoconvertpooltokento"virtual"unitsusingrates#dxisalsodifferentnowdx_w_fee=ERC20(coin_i).balanceOf(self)-xx=dx_w_fee*rates/PRECISION#Addingnumberofpooltokensx+=xp...#Withdrawfromthebasepoolifneededifbase_j>=0:#hunya#輸出代幣為base池代幣out_amount:uint256=ERC20(output_coin).balanceOf(self)Curve(base_pool).remove_liquidity_one_coin(dy,base_j,0)#hunya#base池移除流動性dy=ERC20(output_coin).balanceOf(self)-out_amountassertdy>=_min_dy,"Toofewcoinsinresult"else:#hunya#純base池代幣兌換,直接調用base池exchange函數#Ifbotharefromthebasepooldy=ERC20(output_coin).balanceOf(self)Curve(base_pool).exchange(base_i,base_j,dx_w_fee,_min_dy)dy=ERC20(output_coin).balanceOf(self)-dy...logTokenExchangeUnderlying(msg.sender,i,_dx,j,dy)returndy

俄羅斯中央銀行重新考慮其在加密貨幣挖礦方面的立場:金色財經報道,俄羅斯中央銀行第一副行長Ksenia Yudayeva表示,該銀行對使用加密貨幣進行國際支付持開放態度,俄羅斯媒體還補充說,該銀行也在重新考慮其在加密貨幣挖礦方面的立場。Yudayeva稱,我們改變了對采礦的立場,也允許在外貿和國外使用加密貨幣。 Vedomosti 報道稱,財政部在統一俄羅斯黨在弗里達舉行的一次討論會上公布了該法律草案。在那次討論中,俄羅斯議會下議院國家杜馬的成員Anton Gorelkin提到了中央銀行參與的必要性,草案中已經考慮了許多國家機構和部委的意見。允許加密貨幣國際貿易的規定是法律上的一項創新。經濟發展部官員Anatoly Dyubanov在統一俄羅斯會議上表示,將其加入現行法律是一個權宜之計。

金色財經此前報道,俄羅斯正積極討論在國際結算交易中使用數字貨幣的想法。(路透社)[2022/6/1 3:55:00]

若兌換情況涉及basepool代幣和metapool池代幣,則會通過basepool的LP添加或移除流動性來做中間流程;若只是basepool代幣的兌換,則直接調用basepool的exchange函數進行兌換。

總結

總的來看,無論是白皮書的理論設計還是代碼的算法實現都是十分優秀的,理論設計巧妙夯實,代碼算法高效簡潔。這些優秀的實現都使得Curve在穩定對價資產交易領域中有著明顯的競爭優勢。

Tags:INTUINBASBASEPlayerMintuin幣空投One Basis Cash2Based Finance

比特幣行情
Solidity中的事件和日志-ODAILY_SOL

Solidity事件對于智能合約開發者來說是不可或缺的,它允許我們對智能合約中特定變量進行測試,以自動化的方式改變前端等.

1900/1/1 0:00:00
Crypto.com的起伏凸顯出安全的重要性-ODAILY_CRYPT

Feb.2022,VincyDataSource:FootprintAnalytics-CronosDashboardCrypto.com自2016年6月創立以來,一直是媒體聚光燈的中心.

1900/1/1 0:00:00
DAOrayaki:抽簽二次方投票-ODAILY_COL

包括二次方投票在內的所有投票的弱點之一是,對于任何大規模的問題,每個人影響結果的能力是如此之小。因此,深刻反映和理解自己對問題的真實信念的動力是微乎其微的。以美國大選為例.

1900/1/1 0:00:00
WMT/ADA流動性挖礦SundaeSwap操作教程 -ODAILY_COI

1.打開:打開谷歌瀏覽器,嵌入Nami錢包拓展程序。https://chrome.google.com/webstore/detail/lpfcbjknijpeeillifnkikgncikgf.

1900/1/1 0:00:00
Pocket Network:一個顛覆傳統互聯網的Web3基礎設施-ODAILY_區塊鏈

PocketNetwork是去中心化的基礎設施中間件協議,通過全節點實現DApps與區塊鏈網絡之間的互操作與匹配,為區塊鏈上的DApps提供RPC中繼服務.

1900/1/1 0:00:00
頂峰AscendEX全球獨家首發項目FTRB新幣挖礦限時來襲-ODAILY_END

2022年新春之際,為進一步貫徹頂峰AscendEX“回饋用戶”的經營宗旨,答謝用戶在過去一年給予平臺的支持與厚愛.

1900/1/1 0:00:00
ads