DAPP去中心化交易所系统开发(规则方案)丨DAPP去中心化游戏系统开发(逻辑案例)
DAPP是去中心化应用程序(Decentralized Application),它是建立在区块练技术之上的应用程序,具有去中心化、开放性、透明性、安全性等特点,DAPP可以实现各种功能,例如数字货币钱包、去中心化交易所、去中心化社交网络等。
区块链技术:Dapp使用区块链技术来将数据存储在一个由多个节点组成的公开的、去中心化的数据库上,这使得数据的存储和传输更加安全、可靠和透明。
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);
...
//根据传入的参数修改Position对应的lower/upper tick中
//的数据,这里可以是增加流动性,也可以是移出流动性
bool flippedLower;
bool flippedUpper;
if(liquidityDelta!=0){
uint32 blockTimestamp=_blockTimestamp();
//更新lower tikc和upper tick
//fippedX变量表示是此tick的引用状态是否发生变化,即
//被引用->未被引用或
//未被引用->被引用
//后续需要根据这个变量的值来更新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中的数据
position.update(liquidityDelta,feeGrowthInside0X128,feeGrowthInside1X128);
//如果移除了对tick的引用,那么清除之前记录的元数据
//这只会发生在移除流动性的操作中
if(liquidityDelta<0){
if(flippedLower){
ticks.clear(tickLower);
secondsOutside.clear(tickLower,tickSpacing);
}
if(flippedUpper){
ticks.clear(tickUpper);
secondsOutside.clear(tickUpper,tickSpacing);
}
}
}