宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > TRX > 正文

浅谈Curve:最强大的稳定币兑换协议

作者:

时间:1900/1/1 0:00:00

简介

Curve协议,一种基于以太坊平台的去中心化交易所,主要聚焦于稳定币、封装资产等的交易。相对于其他DEX,Curve提供的交易对更集中,拥有极低的滑点和手续费,可以满足巨额的资产交易需求。极低的滑点和手续费以及crv的生态,都使得Curve在众多DeFi协议中能占据重要的一席之地。

StableSwap

StableSwap是Curve在白皮书中设计提出的一种稳定币交易模型,该模型能提供极低的交易滑点和无限的流动性。

做市函数

StableSwap模型的恒定函数做市商曲线如下:

该设计理念基于融合恒定和与恒定积两种做市模型,兼具了恒定和的低滑点以及恒定积的无限流动性的特点

推导

假设现共有n个稳定币,则有:

给恒定和部分添上杠杆系数,并加上恒定积部分,则有:

其中系数X引入了偏度的概念,由放大系数和偏度构成,其中偏度用来衡量流动池中各代币的平衡程度

结合以上两式化简即可得出公式(1)

特点

StableSwap模型的曲线兼具恒定和与恒定积的特点,在各稳定币相对平衡的情况下,公式由恒定和占主导,曲线趋于直线,滑点较低;当在极端情况下,各稳定币不平衡,则公式由恒定积占主导,曲线与坐标轴无交点,不会出现流动性枯竭的情况

Basepool

basepool为Curve推出的基础兑换池,最常见的有3pool,由三种稳定币DAI、USDC、USDT组成

basepool合约实现了基本的StableSwap交易模型

参数计算

StableSwap模型的做市曲线公式(1)中,有两个重要的参数A与D,其中参数A为放大系数,由官方调整设置每个池子的放大系数;而参数D则为池中代币总量,是动态变化的。在basepool合约中,参数D的计算由_get_D函数实现:

@pure

@internal

def_get_D(_xp:uint256,_amp:uint256)->uint256:

"""

Dinvariantcalculationinnon-overflowingintegeroperations

iteratively

A*sum(x_i)*n**nD=A*D*n**nD**(n1)/(n**n*prod(x_i))

彭博社:香港数字资产新规则将允许散户交易加密货币:5月23日消息,据彭博社报道,香港将宣布散户投资者可以根据数字资产行业的新规则手册进行加密货币交易,预计个人投资者从下个月开始在适当的保障措施下交易更多的代币,如 BTC 和 ETH。据此前报道,香港证监会将于周二就虚拟资产交易平台举行媒体发布会。今年2月,香港证监会就适用于虚拟资产交易平台营运者的建议规定展开谘询。根据将于2023年6月1日生效的新发牌制度,所有在中国香港经营业务或向香港投资者积极进行推广的中央虚拟资产交易平台,将需获证监会发牌。香港证监会特别就以下事项征询市场意见:应否准许持牌平台营运者向零售投资者提供服务;如准许的话,除了所建议一系列妥善的投资者保障措施(包括在与客户建立业务关系时确保合适性和代币纳入的有关规定)外,还应实行哪些措施。[2023/5/23 15:20:33]

Convergingsolution:

D=(A*n**n*sum(x_i)-D**(n1)/(n**nprod(x_i)))/(A*n**n-1)

"""

S:uint256=0

Dprev:uint256=0

for_xin_xp:

S=_x

ifS==0:

return0

D:uint256=S

Ann:uint256=_amp*N_COINS

for_iinrange(255):

D_P:uint256=D

for_xin_xp:

D_P=D_P*D/(_x*N_COINS)#Ifdivisionby0,thiswillbeborked:onlywithdrawalwillwork.Andthatisgood

Dprev=D

D=(Ann*S/A_PRECISIOND_P*N_COINS)*D/((Ann-A_PRECISION)*D/A_PRECISION(N_COINS1)*D_P)

#Equalitywiththeprecisionof1

ifD>Dprev:

ifD-Dprev<=1:

returnD

else:

ifDprev-D<=1:

returnD

#convergencetypicallyoccursin4roundsorless,thisshouldbeunreachable!

MakerDAO发布Endgame更新路线图:金色财经报道,MakerDAO周四发布了Endgame更新路线图,概述了Endgame将在即将到来的5个连续发布阶段中为Maker带来的全面变化。该更新旨在提高效率、弹性和参与度,将引入人工智能(AI)治理工具并将其应用于开放、可扩展的流程。该计划的短期目标是在三年内成为使用最广泛的稳定币项目,升级最终将部署新的区块链(暂时称为NewChain),NewChain将与以太坊紧密耦合,有能力使用硬分叉作为治理机制,提高生态系统的治理安全性并实施全方位的高级Endgame功能和代币经济学。

该路线图表示,NewChain的推出将是Endgame启动过程的最后一步,一旦部署MakerDAO将永久进入Endgame状态,在该状态下不可能进行进一步的重大改变,其核心流程和权力平衡将保持去中心化、自我维持和永远不变。[2023/5/12 14:58:46]

#ifitdoeshappenthepoolisborkedandLPscanwithdrawvia`remove_liquidity`

raise

_get_D函数的算法将做市函数公式(1)以D为变量,通过牛顿迭代法计算出合适的D值,算法可谓精妙简洁

同样的算法还用于_get_y函数计算y值

@view

@internal

def_get_y(i:int128,j:int128,x:uint256,_xp:uint256)->uint256:

"""

Calculatexifonemakesx=x

Donebysolvingquadraticequationiteratively.

x_1**2x_1*(sum'-(A*n**n-1)*D/(A*n**n))=D**(n1)/(n**(2*n)*prod'*A)

x_1**2b*x_1=c

x_1=(x_1**2c)/(2*x_1b)

"""

#xintheinputisconvertedtothesameprice/precision

asserti!=j#dev:samecoin

assertj>=0#dev:jbelowzero

assertj<N_COINS#dev:jaboveN_COINS

#shouldbeunreachable,butgoodforsafety

欧盟委员会官员:元宇宙政策应考虑歧视、安全、数据控制:金色财经报道,欧盟委员会数字部门DG CONNECT数据总监Yvo Volman表示,欧盟在考虑如何监管元宇宙时,需要考虑非歧视、用户安全和数据隐私等问题。我们必须确保人们在虚拟世界中感到安全,就像他们在现实世界中一样安全,甚至可能更安全。我们需要确保人们拥有正确的技能和工具来保护他们在虚拟世界中的资产——他们的数据。

据悉,欧盟执行机构准备在定于5月发布的一份政策文件中阐述其关于虚拟世界的战略。(CoinDesk)[2023/2/25 12:28:08]

asserti>=0

asserti<N_COINS

A:uint256=self._A()

D:uint256=self._get_D(_xp,A)

Ann:uint256=A*N_COINS

c:uint256=D

S:uint256=0

_x:uint256=0

y_prev:uint256=0

for_iinrange(N_COINS):

if_i==i:

_x=x

elif_i!=j:

_x=_xp

else:

continue

S=_x

c=c*D/(_x*N_COINS)

c=c*D*A_PRECISION/(Ann*N_COINS)

b:uint256=SD*A_PRECISION/Ann#-D

y:uint256=D

for_iinrange(255):

y_prev=y

y=(y*yc)/(2*yb-D)

#Equalitywiththeprecisionof1

ify>y_prev:

ify-y_prev<=1:

returny

else:

ify_prev-y<=1:

returny

raise

流动性

Curve池的流动性添加不同于Uniswap必须添加交易对的两种资产,basepool可以仅添加池中某一种资产

@external

时尚元宇宙平台ALTAVA Group加入Yuga Labs生态,推出BAGC NFT系列:12月1日消息,时尚元宇宙平台ALTAVA Group宣布加入 Yuga Labs 的 Bored Ape Yacht Club 生态系统之家,推出其Bored Ape Golf Club (BAGC) NFT 系列,其中包括来自Elite Apes、Animoca Brands和The Sandbox的特别版本。BAGC(KR)NFT本身是BAYC IP的衍生品,NFT持有者能够订购带有特定 BAGC Korea NFT IP标志的高尔夫主题商品。

此前报道,ALTAVA Group于今年3月完成约900万美元融资,Blocore和Animoca Brands领投。[2022/12/1 21:16:18]

@nonreentrant('lock')

defadd_liquidity(_amounts:uint256,_min_mint_amount:uint256)->uint256:

"""

@noticeDepositcoinsintothepool

@param_amountsListofamountsofcoinstodeposit

@param_min_mint_amountMinimumamountofLPtokenstomintfromthedeposit

@returnAmountofLPtokensreceivedbydepositing

"""

assertnotself.is_killed#dev:iskilled

amp:uint256=self._A()

old_balances:uint256=self.balances

#Initialinvariant

D0:uint256=self._get_D_mem(old_balances,amp)#hunya#初始状态D0

lp_token:address=self.lp_token

token_supply:uint256=CurveToken(lp_token).totalSupply()

new_balances:uint256=old_balances

foriinrange(N_COINS):

iftoken_supply==0:

assert_amounts>0#dev:initialdepositrequiresallcoins

调查报告:美国前七大比特币矿业公司消耗的能源与休斯顿相当:金色财经消息,美国国会民主党人进行的一项调查发现,美国排名前七的比特币矿业公司消耗的能源与德州的大城市休斯顿一样多。以反加密立场而闻名的进步派代表参议员Elizabeth Warren声称,加密矿企占所有能源矿场排放的“重要”部分,并认为加密矿场有义务报告电力使用情况以及与其运营相关的二氧化碳排放量。

美国在全球比特币哈希率中占有最大份额。截至5月,佐治亚州、德克萨斯州和肯塔基州是加密矿场最多的三大州。(纽约时报)[2022/7/16 2:16:49]

#balancesstoreamountsofc-tokens

new_balances=_amounts

#Invariantafterchange

D1:uint256=self._get_D_mem(new_balances,amp)#hunya#添加流动性后理论D1

assertD1>D0

#Weneedtorecalculatetheinvariantaccountingforfees

#tocalculatefairuser'sshare

D2:uint256=D1

fees:uint256=empty(uint256)

mint_amount:uint256=0

iftoken_supply>0:#hunya#非首次添加流动性进行手续费扣出

#Onlyaccountforfeesifwearenotthefirsttodeposit

fee:uint256=self.fee*N_COINS/(4*(N_COINS-1))

admin_fee:uint256=self.admin_fee

foriinrange(N_COINS):

ideal_balance:uint256=D1*old_balances/D0

difference:uint256=0

new_balance:uint256=new_balances

ifideal_balance>new_balance:

difference=ideal_balance-new_balance

else:

difference=new_balance-ideal_balance

fees=fee*difference/FEE_DENOMINATOR

self.balances=new_balance-(fees*admin_fee/FEE_DENOMINATOR)

new_balances-=fees

D2=self._get_D_mem(new_balances,amp)#hunya#扣除手续费后的D2

mint_amount=token_supply*(D2-D0)/D0#hunya#LP铸币量

else:

self.balances=new_balances

mint_amount=D1#Takethedustiftherewasany

assertmint_amount>=_min_mint_amount,"Slippagescrewedyou"

#Takecoinsfromthesender

foriinrange(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"

#Mintpooltokens

CurveToken(lp_token).mint(msg.sender,mint_amount)

logAddLiquidity(msg.sender,_amounts,fees,D1,token_supplymint_amount)

returnmint_amount

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>=0

base_i:int128=i-MAX_COIN

base_j:int128=j-MAX_COIN

meta_i:int128=MAX_COIN

meta_j:int128=MAX_COIN

ifbase_i<0:

meta_i=i

ifbase_j<0:

meta_j=j

dy:uint256=0

...

ifbase_i<0orbase_j<0:#hunya#兑换中包含meta池代币

old_balances:uint256=self.balances

xp:uint256=self._xp_mem(rates,old_balances)

x:uint256=0

ifbase_i<0:#hunya#输入代币为meta池代币

x=xpdx_w_fee*rates/PRECISION

else:#hunya#输入代币为base池代币

#iisfromBasePool

#Atfirst,gettheamountofpooltokens

base_inputs:uint256=empty(uint256)

base_inputs=dx_w_fee

coin_i:address=self.coins

#Depositandmeasuredelta

x=ERC20(coin_i).balanceOf(self)

Curve(base_pool).add_liquidity(base_inputs,0)#hunya#base池添加流动性

#Needtoconvertpooltokento"virtual"unitsusingrates

#dxisalsodifferentnow

dx_w_fee=ERC20(coin_i).balanceOf(self)-x

x=dx_w_fee*rates/PRECISION

#Addingnumberofpooltokens

x=xp

...

#Withdrawfromthebasepoolifneeded

ifbase_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_amount

assertdy>=_min_dy,"Toofewcoinsinresult"

else:#hunya#纯base池代币兑换,直接调用base池exchange函数

#Ifbotharefromthebasepool

dy=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

若兑换情况涉及basepool代币和metapool池代币,则会通过basepool的LP添加或移除流动性来做中间流程;若只是basepool代币的兑换,则直接调用basepool的exchange函数进行兑换。

总结

总的来看,无论是白皮书的理论设计还是代码的算法实现都是十分优秀的,理论设计巧妙夯实,代码算法高效简洁。这些优秀的实现都使得Curve在稳定对价资产交易领域中有着明显的竞争优势。

标签:INTUINBASEBAScointiger币虎官网BabyPenguinsBASE价格Base Protocol

TRX热门资讯
Upbit宣布3月25日起用户将无法提现至海外交易所

2月25日消息,韩国最大的加密货币交易所Upbit宣布,将从3月25日开始履行TravelRule义务。实施之初,仅支持向兼容Lambda256解决方案VerifyVASP的韩国国内虚拟资产提供商提现.

1900/1/1 0:00:00
Gate.io 已開啓(Crypterium)CRPT/USDT、CRPT/ETH(自動做市商AMM模式)新版流動性礦池獎勵,並各新增額外限時獎勵113,800 CRPT

Gate.io已正式上線CRPT/USDT、CRPT/ETH新版流動性礦池,並於11:00就CRPT/USDT、CRPT/ETH交易礦池各新增額外113,800CRPT.

1900/1/1 0:00:00
全球监管资讯周刊:巴西迈出监管比特币的第一步

资讯周期:2.21~2.27韩国大型金融机构KB将推出韩国首个加密投资基金在新加坡星展银行推出加密交易所1年后,韩国大型金融机构KB金融集团紧随其后,对加密资产托管业务产生了浓厚的兴趣.

1900/1/1 0:00:00
Gate.io Adds Support For EUR, GBP, CHF, AUD, CAD, And JPY

DearGate.iousers,Wearesoexcitedtoannounceanewfeaturefromourfiaton-ramppartnerLegendTrading.EUR,GBP,CHF,AUD,CAD.

1900/1/1 0:00:00
BKEX Global 关于ETP专区DOGE5L、LTC5L、BCH5L等10种标的进行份额合并的公告

尊敬的用户:?? 由于ETP专区部分标的触发了BKEXETP产品份额合并机制。BKEX将在2022年2月24日16:00对ETP专区部分标的进行合并操作,详情如下:合并后新份额的名称、简称、交易对都与合并前相同,合并前后时间区间合并标.

1900/1/1 0:00:00
XT關於合約交易維護的公告

尊敬的XT用戶: 為了給用戶提供更好的交易體驗,優化平臺產品效能,XT將於2022年2月25日16:30對永續合約、幣本位合約、全幣種合約交易進行陞級維護,届時,將暫停網站合約一切服務功能.

1900/1/1 0:00:00