流動性質押挖礦開發原始碼(海外版)丨流動性質押挖礦系統開發(詳細及規則)
//只要tokenIn
while(state.amountSpecifiedRemaining!=0&&state.sqrtPriceX96!=sqrtPriceLimitX96){
//交易過程每一次迴圈的狀態變數
StepComputations memory step;
//交易的起始價格
step.sqrtPriceStartX96=state.sqrtPriceX96;
//透過點陣圖找到下一個可以選的交易價格,這裡可能是下一個流動性的邊界,也可能還是在本流動性中
(step.tickNext,step.initialized)=tickBitmap.nextInitializedTickWithinOneWord(
state.tick,
tickSpacing,
zeroForOne
);
...
//從tick index計算sqrt(price)
step.sqrtPriceNextX96=TickMath.getSqrtRatioAtTick(step.tickNext);
//計算當價格到達下一個交易價格時,tokenIn是否被耗盡,如果被耗盡,則交易結束,還需要重新計算出tokenIn耗盡時的價格
//如果沒被耗盡,那麼還需要繼續進入下一個迴圈
(state.sqrtPriceX96,step.amountIn,step.amountOut,step.feeAmount)=SwapMath.computeSwapStep(
state.sqrtPriceX96,
(zeroForOne?step.sqrtPriceNextX96<sqrtPriceLimitX96:step.sqrtPriceNextX96>sqrtPriceLimitX96)
?sqrtPriceLimitX96
:step.sqrtPriceNextX96,
state.liquidity,
state.amountSpecifiedRemaining,
fee
);
//更新tokenIn的餘額,以及tokenOut數量,注意當指定tokenIn的數量進行交易時,這裡的tokenOut是負數
if(exactInput){
state.amountSpecifiedRemaining-=(step.amountIn+step.feeAmount).toInt256();
state.amountCalculated=state.amountCalculated.sub(step.amountOut.toInt256());
}else{
state.amountSpecifiedRemaining+=step.amountOut.toInt256();
state.amountCalculated=state.amountCalculated.add((step.amountIn+step.feeAmount).toInt256());
}
...
//按需決定是否需要更新流動性L的值
if(state.sqrtPriceX96==step.sqrtPriceNextX96){
//檢查tick index是否為另一個流動性的邊界
if(step.initialized){
int128 liquidityNet=
ticks.cross(
step.tickNext,
(zeroForOne?state.feeGrowthGlobalX128:feeGrowthGlobal0X128),
(zeroForOne?feeGrowthGlobal1X128:state.feeGrowthGlobalX128)
);
//根據價格增加/減少,即向左或向右移動,增加/減少相應的流動性
if(zeroForOne)liquidityNet=-liquidityNet;
secondsOutside.cross(step.tickNext,tickSpacing,cache.blockTimestamp);
//更新流動性
state.liquidity=LiquidityMath.addDelta(state.liquidity,liquidityNet);
}
//在這裡更tick的值,使得下一次迴圈時讓tickBitmap進入下一個word中查詢
state.tick=zeroForOne?step.tickNext-1:step.tickNext;
}else if(state.sqrtPriceX96!=step.sqrtPriceStartX96){
//如果tokenIn被耗盡,那麼計算當前價格對應的tick
state.tick=TickMath.getTickAtSqrtRatio(state.sqrtPriceX96);
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2936861/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 流動性質押挖礦開發規則丨流動性質押挖礦系統開發(方案及詳情)及程式碼部署
- LP流動性質押挖礦開發正式版丨LP流動性質押挖礦系統開發(詳細及案例)丨原始碼原始碼
- LP流動性質押挖礦系統開發流程解析丨LP流動性質押挖礦開發成品原始碼功能原始碼
- ULAB流動性質押挖礦系統開發(方案及詳細)丨ULAB流動性質押挖礦開發運營版及原始碼原始碼
- DAO流動性質押挖礦分紅系統開發(開發案例)丨DAO流動性質押挖礦分紅原始碼原始碼
- defi流動性質押挖礦系統開發方案 | 流動性質押挖礦系統開發 DAPPAPP
- DeFi流動性質押挖礦系統開發及馬蹄鏈質押挖礦詳細開發方案
- dao代幣質押流動性挖礦開發正式版丨dao代幣質押流動性挖礦系統開發案例詳細及原始碼原始碼
- defi質押流動性挖礦系統開發DAPP質押挖礦系統APP
- 智慧合約流動性質押挖礦開發規則丨質押挖礦系統開發技術及邏輯分析
- DeFi流動性質押挖礦設計開發丨DAPP質押挖礦系統開發程式碼示例APP
- defi質押挖礦機制|LP流動性挖礦系統開發[規則分析]
- 代幣合約流動性質押挖礦開發原始碼版丨代幣合約流動性質押挖礦系統開發(成熟方案)原始碼
- 合約代幣流動性質押挖礦開發(節點做市)丨合約代幣流動性質押挖礦系統開發詳細
- dapp/defi/lp流動性質押挖礦分紅系統開發(開發規則)丨詳細及原始碼APP原始碼
- Defi+NFT質押流動性挖礦系統開發/LP質押挖礦功能開發解析
- DeFi質押流動性挖礦模式丨LP流動性質押挖礦系統開發技術講解方案分析邏輯模式
- defi質押LP流動性挖礦dapp系統開發(模式詳情)LP流動性挖礦系統開發APP模式
- LP流動性質押挖礦系統開發模式案例模式
- LP流動性質押挖礦系統軟體開發
- nft質押LP流動性挖礦系統開發規則(系統原始碼參考)原始碼
- lp流動性質押挖礦系統開發|案例詳情|原始碼出售原始碼
- Meta2032智慧合約流動性質押挖礦開發丨Meta2032流動性質押挖礦系統開發(方案及邏輯)
- 代幣智慧合約流動性質押挖礦開發穩定版丨代幣智慧合約流動性質押挖礦系統開發方案
- 代幣智慧合約質押流動性挖礦分紅開發丨代幣智慧合約質押流動性挖礦分紅系統開發
- V脈(智慧合約)系統開發/流動性質押挖礦/V脈DAPP質押挖礦開發詳情APP
- PAXG流動性質押挖礦節點/算力挖礦/礦池分紅/系統開發/規則詳情/案例原始碼原始碼
- LP流動性質押挖礦專案系統開發案例
- DeFi流動性雲算力質押挖礦系統開發
- DAPP流動性質押挖礦系統開發模式方案APP模式
- IPP流動性質押挖礦系統開發智慧合約
- DAPP鏈遊質押挖礦開發詳情丨DAPP鏈遊流動性質押挖礦分紅系統開發成熟案例及原始碼部署APP原始碼
- DAPP質押挖礦系統開發|DAPP流動性開發APP
- DeFi單雙幣流動性質押挖礦系統開發(規則說明及原始碼示例)原始碼
- DAO代幣流動性質押挖礦分紅系統開發(規則及方案)案例原始碼原始碼
- DAPP/LP流動性質押挖礦系統開發(程式碼及案例)APP
- IPP生態挖礦系統開發/IPPswap質押流動性挖礦開發元件/解析元件
- DAO代幣流動性質押挖礦分紅系統開發(開發詳細)及邏輯原始碼原始碼