DAPP去中心化交易所系統(tǒng)開發(fā)(規(guī)則方案)丨DAPP去中心化游戲系統(tǒng)開發(fā)(邏輯案例)
DAPP是去中心化應(yīng)用程序(Decentralized Application),它是建立在區(qū)塊練技術(shù)之上的應(yīng)用程序,具有去中心化、開放性、透明性、安全性等特點,DAPP可以實現(xiàn)各種功能,例如數(shù)字貨幣錢包、去中心化交易所、去中心化社交網(wǎng)絡(luò)等。
區(qū)塊鏈技術(shù):Dapp使用區(qū)塊鏈技術(shù)來將數(shù)據(jù)存儲在一個由多個節(jié)點組成的公開的、去中心化的數(shù)據(jù)庫上,這使得數(shù)據(jù)的存儲和傳輸更加安全、可靠和透明。
function _updatePosition(
address owner,
int24 tickLower,
int24 tickUpper,
int128 liquidityDelta,
int24 tick
)private returns(Position.Info storage position){
//獲取用戶的Postion
position=positions.get(owner,tickLower,tickUpper);
...
//根據(jù)傳入的參數(shù)修改Position對應(yīng)的lower/upper tick中
//的數(shù)據(jù),這里可以是增加流動性,也可以是移出流動性
bool flippedLower;
bool flippedUpper;
if(liquidityDelta!=0){
uint32 blockTimestamp=_blockTimestamp();
//更新lower tikc和upper tick
//fippedX變量表示是此tick的引用狀態(tài)是否發(fā)生變化,即
//被引用->未被引用或
//未被引用->被引用
//后續(xù)需要根據(jù)這個變量的值來更新tick位圖
flippedLower=ticks.update(
tickLower,
tick,
liquidityDelta,
_feeGrowthGlobal0X128,
_feeGrowthGlobal1X128,
false,
maxLiquidityPerTick
);
flippedUpper=ticks.update(
tickUpper,
tick,
liquidityDelta,
_feeGrowthGlobal0X128,
_feeGrowthGlobal1X128,
true,
maxLiquidityPerTick
);
//如果一個tick第一次被引用,或者移除了所有引用
//那么更新tick位圖
if(flippedLower){
tickBitmap.flipTick(tickLower,tickSpacing);
secondsOutside.initialize(tickLower,tick,tickSpacing,blockTimestamp);
}
if(flippedUpper){
tickBitmap.flipTick(tickUpper,tickSpacing);
secondsOutside.initialize(tickUpper,tick,tickSpacing,blockTimestamp);
}
}
...
//更新position中的數(shù)據(jù)
position.update(liquidityDelta,feeGrowthInside0X128,feeGrowthInside1X128);
//如果移除了對tick的引用,那么清除之前記錄的元數(shù)據(jù)
//這只會發(fā)生在移除流動性的操作中
if(liquidityDelta<0){
if(flippedLower){
ticks.clear(tickLower);
secondsOutside.clear(tickLower,tickSpacing);
}
if(flippedUpper){
ticks.clear(tickUpper);
secondsOutside.clear(tickUpper,tickSpacing);
}
}
}