stepn跑鞋鏈遊系統開發技術說明及案例原始碼
Δx=Δ1P−−√⋅LΔy=ΔP−−√⋅LΔx=Δ1P⋅LΔy=ΔP⋅L
假設交易是輸入 x token ,餘額為 xx(預先扣除最大所需的手續費後的餘額,以防止手續費不足),在計算得到 ΔxΔx 後,比較:
當 x≥Δxx≥Δx 時,表示交易可以到達目標價格
當 x<Δxx<Δx 時,表示交易不足以到達目標價格,此時還需要進一步當前餘額 xremainingxremaining 全部耗盡時所能夠達到的價格
如果 x<Δxx<Δx,我們需要計算 x 耗盡時的價格,即已知 Δx, P−−√c, LΔx, Pc, L,求 P−−√nPn. 根據:
Δx=Δ1P−−√⋅L=±(1P−−√c−1P−−√n)⋅LΔx=Δ1P⋅L=±(1Pc−1Pn)⋅L
得出:
Pn−−√=LPc−−√L±ΔxPc−−√Pn=LPcL±ΔxPc
具體上述公式計算僅對透過 x token 餘額求出下一個價格的公式進行了推導,如果輸入的時 y token,也可以額進行類似的推導。程式碼中具體的實現已經封裝在在 SqrtPriceMath.getNextSqrtPriceFromInput 函式中
// 判斷是否能夠到達目標價
bool max = sqrtRatioTargetX96 == sqrtRatioNextX96;
// get the input/output amounts
if (zeroForOne) {
// 根據是否到達目標價格,計算 amountIn/amountOut 的值
amountIn = max && exactIn
? amountIn
: SqrtPriceMath.getAmount0Delta(sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, true);
amountOut = max && !exactIn
? amountOut
: SqrtPriceMath.getAmount1Delta(sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, false);
} else {
...
}
// 這裡對 Output 進行 cap 是因為前面在計算 amountOut 時,有可能會使用 sqrtRatioNextX96 來進行計算,而 sqrtRatioNextX96
// 可能被 Round 之後導致 sqrt_P 偏大,從而導致計算的 amountOut 偏大
if (!exactIn && amountOut > uint256(-amountRemaining)) {
amountOut = uint256(-amountRemaining);
}
if (exactIn && sqrtRatioNextX96 != sqrtRatioTargetX96) {
// 如果沒能到達目標價,即交易結束,剩餘的 tokenIn 將全部作為手續費
// 為了不讓計算進一步複雜化,這裡直接將剩餘的 tokenIn 將全部作為手續費
// 因此會多收取一部分手續費,即按本次交易的最大手續費收取
feeAmount = uint256(amountRemaining) - amountIn;
} else {
feeAmount = FullMath.mulDivRoundingUp(amountIn, feePips, 1e6 - feePips);
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2936895/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- NFT鏈遊/Stepn跑鞋鏈遊系統開發技術/Stepn跑鞋原始碼/Defi/NFT原始碼
- Stepn跑鞋GMT系統開發|NFT鏈遊Stepn跑鞋GMT開發技術
- Stepn跑鞋鏈遊/系統技術/Stepn跑鞋開發/NFT鏈遊/應用/DAPPAPP
- NFT/Stepn跑鞋鏈遊專案/系統開發/方案詳細/技術詳情/原始碼說明原始碼
- Stepn跑鞋跑步鏈遊開發穩定版,Dapp/Stepn跑鞋系統開發(玩法規則)及原始碼技術分析APP原始碼
- Dapp/Stepn跑鞋鏈遊系統開發詳細技術案例/成熟方案/原始碼功能APP原始碼
- Stepn跑鞋跑步鏈遊系統開發/趣步系統開發/詳情案例/成熟技術/原始碼版原始碼
- STEPN跑鞋跑步鏈遊開發(成熟案例、原始碼交付)原始碼
- Stepn/nft跑鞋系統開發/鏈遊專案開發/技術詳細/玩法邏輯/原始碼案例原始碼
- Stepn/NFT跑鞋跑步鏈遊系統開發/技術詳解/規則及玩法/原始碼成熟原始碼
- Stepn跑鞋系統開發/NFT跑步運動模式/鏈遊開發/詳細案例/成熟技術/原始碼版模式原始碼
- DAPP/Stepn跑鞋鏈遊跑步運動模式/系統開發/技術案例/方案詳細/規則及原始碼APP模式原始碼
- Stepn跑鞋跑步運動系統開發/鏈遊開發/玩法規則/技術方案/原始碼原始碼
- 關於STEPN跑步跑鞋NFT鏈遊開發系統搭建技術
- Stepn跑鞋NFT鏈遊合成遊戲系統開發技術詳情遊戲
- stepn跑鞋鏈遊系統開發成熟技術程式碼方案(全合約)
- Stepn跑鞋跑步運動鏈遊專案系統開發(開發案例)/方案詳細/原始碼部署原始碼
- Stepn跑鞋/NFT跑鞋/鏈遊跑步運動專案/系統開發/案例詳情/規則方案/原始碼版原始碼
- Stepn跑鞋(合成遊戲)NFT鏈遊合約開發系統技術詳情遊戲
- Stepn跑鞋跑步鏈遊趣步模式系統開發詳情規則/方案詳細/原始碼案例模式原始碼
- Stepn跑鞋鏈遊智慧合約系統開發詳情方案
- 3D元宇宙鏈遊開發說明 鏈遊系統開發技術方案 3D鏈遊原始碼模式3D元宇宙原始碼模式
- 元宇宙+鏈遊系統開發(案例詳細)丨鏈遊系統開發(說明分析)元宇宙
- 鏈遊開發功能版/NFT鏈遊系統開發運營版/區塊鏈遊戲系統開發/成熟技術/原始碼案例區塊鏈遊戲原始碼
- NFT元宇宙鏈遊系統開發說明(原始碼示例)元宇宙原始碼
- 區塊鏈遊戲系統開發(Gamefi鏈遊開發案例)丨Gamefi鏈遊系統開發詳細及原始碼區塊鏈遊戲GAM原始碼
- 3D鏈遊開發功能,3D鏈遊系統開發技術分析及原始碼3D原始碼
- islandswap鏈遊系統開發(開發說明)丨islandswap鏈遊遊戲系統開發功能遊戲
- 元宇宙鏈遊系統開發原始碼(成熟技術)元宇宙原始碼
- 量化交易系統開發(說明流程)丨合約量化系統開發(技術分析及原始碼)原始碼
- NFT鏈遊系統開發流程原始碼部署方案(成熟技術)原始碼
- DAPP馬蹄鏈開發原理丨DAPP馬蹄鏈系統開發(案例及說明)丨馬蹄鏈原始碼APP原始碼
- Gamefi鏈遊系統開發(DAPP遊戲開發)丨Gamefi鏈遊系統開發(開發案例)丨原始碼GAMAPP遊戲開發原始碼
- 區塊鏈商城系統開發規則說明(邏輯及原始碼)區塊鏈原始碼
- 關於Stepn跑步NFT鏈遊開發系統demo
- NFT遊戲鏈遊系統開發技術詳細丨NFT遊戲鏈遊DAPP開發原始碼模式遊戲APP原始碼模式
- 量化合約開發說明丨量化合約系統開發(方案及策略)及案例原始碼原始碼
- islandswap鏈遊系統開發技術原理丨islandswap鏈遊系統開發詳解