阿凡達泰山眾籌開發(功能)丨阿凡達泰山眾籌系統開發(成熟方案及案例)
交易分解
UniswapV3Pool.swap函式比較長,這裡先簡要描述其交易步驟:
假設支付的token為x
根據買入/賣出行為,P−−√P會隨著交易下降或上升,即tick減小或增大
在tickBitmap中找到和當前tick對應的icic在一個word中的下一個tick對應的inin,根據買入/賣出行為,這裡分成向下查詢和向上查詢兩種情況
如果當前word中沒有記錄其他tick index,那麼取這個word的最小/最大tick index,這麼做的目的是,讓單步交易中tick的跨度不至於太大,以減少計算中溢位的可能性(計算中會需要使用ΔP−−√ΔP)。
在[ic,in][ic,in]價格區間內,流動性LL的值是不變的,我們可以根據LL的值計算出交易執行到inin時,所需要最多的ΔxΔx數量
根據上一步計算的ΔxΔx數量,如果滿足Δx<xremainingΔx<xremaining,那麼將ii設定為inin,並將xremainingxremaining減去需要支付的ΔxΔx,隨後跳至第2步繼續計算(這裡需要將i±tickSpacei±tickSpace使其進入點陣圖中的下一個word),計算之前還需要根據後設資料修改當前的流動性L=L±ΔLL=L±ΔL
如果上一步計算ΔxΔx,滿足Δx≥xremainingΔx≥xremaining,則表示x token將被耗盡,則交易在此結束。
記錄下結束時的價格P−−√P,將所有交易階段的tokenOut數量總和返回,即為使用者得到的token數量
...
// 將交易前的後設資料儲存在記憶體中,後續的訪問透過 `MLOAD` 完成,節省 gas
Slot0 memory slot0Start = slot0;
...
// 防止交易過程中回撥到合約中其他的函式中修改狀態變數
slot0.unlocked = false;
// 這裡也是快取交易錢的資料,節省 gas
SwapCache memory cache =
SwapCache({
liquidityStart: liquidity,
blockTimestamp: _blockTimestamp(),
feeProtocol: zeroForOne ? (slot0Start.feeProtocol % 16) : (slot0Start.feeProtocol >> 4)
});
// 判斷是否指定了 tokenIn 的數量
bool exactInput = amountSpecified > 0;
// 儲存交易過程中計算所需的中間變數,這些值在交易的步驟中可能會發生變化
SwapState memory state =
SwapState({
amountSpecifiedRemaining: amountSpecified,
amountCalculated: 0,
sqrtPriceX96: slot0Start.sqrtPriceX96,
tick: slot0Start.tick,
feeGrowthGlobalX128: zeroForOne ? feeGrowthGlobal0X128 : feeGrowthGlobal1X128,
protocolFee: 0,
liquidity: cache.liquidityStart
});
...
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2936863/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 泰山眾籌(阿凡達)系統開發成熟及方案丨泰山眾籌阿凡達開發原始碼功能原始碼
- 阿凡達泰山眾籌開發系統丨阿凡達泰山眾籌系統開發(詳情版)丨阿凡達泰山眾籌原始碼開發原始碼
- 阿凡達泰山眾籌開發原理丨阿凡達泰山眾籌系統開發(方案及詳細)
- 泰山眾籌(阿凡達)開發邏輯丨泰山眾籌(阿凡達)系統開發成熟案例及原始碼分析原始碼
- 阿凡達(泰山眾籌)開發案例版丨阿凡達(泰山眾籌)系統開發(規則及原始碼)原始碼
- Avatar阿凡達泰山眾籌開發案例版丨Avatar阿凡達泰山眾籌系統開發(開發邏輯及方案)
- 泰山眾籌阿凡達avatar開發功能丨泰山眾籌阿凡達avatar系統開發流程及原始碼分析原始碼
- 泰山眾籌(阿凡達4.0)系統開發流程及分析丨泰山眾籌(阿凡達4.0)開發原始碼功能原始碼
- 阿凡達泰山眾籌商城開發(系統)丨阿凡達泰山眾籌系統開發(開發穩定版)
- 泰山眾籌阿凡達(avatar)開發詳細丨泰山眾籌阿凡達(avatar)系統開發(開發及原始碼)原始碼
- 什麼是阿凡達泰山眾籌系統開發丨阿凡達泰山眾籌系統開發(dapp開發技術)APP
- sun4.0泰山眾籌系統開發(模式案例)|阿凡達泰山眾籌sun開發方案模式
- 泰山眾籌4.0阿凡達開發原理丨泰山眾籌4.0阿凡達系統開發詳細技術及原始碼分析原始碼
- Avatar阿凡達泰山眾籌商城開發上線版丨Avatar阿凡達泰山眾籌商城系統開發(開發原始碼)原始碼
- 阿凡達泰山眾籌系統開發Avata模式模式
- 阿凡達泰山眾籌開發正式版丨阿凡達泰山眾籌系統開發流程及原始碼(web3.0技術開發)原始碼Web
- Avatar阿凡達泰山眾籌系統開發(模式)|Avatar阿凡達需求方案部署模式
- Avatar阿凡達泰山眾籌開發|眾籌系統DAPP開發技術APP
- 泰山眾籌阿凡達系統開發模式邏輯模式
- 關於泰山眾籌4.0/阿凡達眾籌系統/技術開發
- 阿凡達Avata泰山眾籌系統開發技術搭建
- 深入分析:Avatar阿凡達泰山眾籌系統開發
- 阿凡達(Avatar)泰山眾籌商城系統開發技術詳細及案例
- Avatar阿凡達(泰山眾籌)系統開發技術詳情及方案原始碼原始碼
- 深入分析阿凡達Avatar泰山眾籌系統開發詳細方案及案例原始碼原始碼
- 阿凡達Sun4眾籌開發系統搭建|泰山眾籌模式系統原始碼部署模式原始碼
- 關於sun4.0泰山眾籌阿凡達模式系統開發技術方案模式
- 深入瞭解阿凡達泰山眾籌商城系統開發詳情版及原始碼功能原始碼
- AVATAR阿凡達合約系統?區塊鏈阿凡達泰山眾籌專案邏輯系統開發功能及原始碼區塊鏈原始碼
- 泰山眾籌系統丨及泰山眾籌系統開發原始碼部署(技術開發流程)泰山眾籌原始碼
- 泰山眾籌商城系統開發(實現方案)丨泰山眾籌商城開發原始碼及功能原始碼
- 泰山眾籌系統Dapp開發/泰山眾籌原始碼/泰山眾籌矩陣開發方案APP原始碼矩陣
- Avater阿凡達泰山眾籌5.0dapp系統開發智慧合約底層邏輯APP
- 深入分析阿凡達(泰山眾籌4.0)系統開發技術詳情及邏輯原始碼原始碼
- 泰山眾籌商城開發、泰山眾籌DAPP系統開發、泰山眾籌原始碼部署開發APP原始碼
- 阿凡達(泰山眾籌)智慧合約DAPP系統開發詳情 | DAPP智慧合約眾籌系統原始碼邏輯規則APP原始碼
- 阿凡達sun眾籌挖礦系統開發原始碼技術原始碼
- AVATAR阿凡達眾籌系統開發說明合約技術