字画/书画拍卖竞拍商城系统开发(案例开发)/设计方案/成熟项目/源码部署
Dapp:代表去中心化应用程序。它们是在去中心化网络或区块链上运行后端代码(主要用Solidity编写的智能合约)的应用程序。可以使用React、Vue或Angular等前端框架构建Dapp。
The technical architecture of dapp mainly includes the following three levels:
Application layer:The application layer refers to the DAPP application that users directly come into contact with,including interface design,interaction methods,user experience,etc.,which needs to fully consider user needs and usage habits.
Protocol layer:The protocol layer refers to the protocols and rules of DAPP,including communication protocols,transaction rules,financial protocols,contract protocols,etc.,which need to ensure their security,stability,and transparency.
Blockchain layer:The blockchain layer is the underlying technical support for DAPP,including blockchain nodes,smart contracts,decentralized storage,consensus algorithms,etc.It requires algorithms and technical means to achieve decentralization,security,and scalability.
function _modifyPosition(ModifyPositionParams memory params)
private
noDelegateCall
returns(
Position.Info storage position,
int256 amount0,
int256 amount1
)
{
...
Slot0 memory _slot0=slot0;//SLOAD for gas optimization
position=_updatePosition(
...
);
...
}
function _modifyPosition(ModifyPositionParams memory params)
private
noDelegateCall
returns(
Position.Info storage position,
int256 amount0,
int256 amount1
)
{
...
if(params.liquidityDelta!=0){
//计算三种情况下amount0和amount1的值,即x token和y token的数量
if(_slot0.tick<params.tickLower){
amount0=SqrtPriceMath.getAmount0Delta(
//计算lower/upper tick对应的价格
TickMath.getSqrtRatioAtTick(params.tickLower),
TickMath.getSqrtRatioAtTick(params.tickUpper),
params.liquidityDelta
);
}else if(_slot0.tick<params.tickUpper){
//current tick is inside the passed range
uint128 liquidityBefore=liquidity;//SLOAD for gas optimization
...
amount0=SqrtPriceMath.getAmount0Delta(
_slot0.sqrtPriceX96,
TickMath.getSqrtRatioAtTick(params.tickUpper),
params.liquidityDelta
);
amount1=SqrtPriceMath.getAmount1Delta(
TickMath.getSqrtRatioAtTick(params.tickLower),
_slot0.sqrtPriceX96,
params.liquidityDelta
);
liquidity=LiquidityMath.addDelta(liquidityBefore,params.liquidityDelta);
}else{
amount1=SqrtPriceMath.getAmount1Delta(
TickMath.getSqrtRatioAtTick(params.tickLower),
TickMath.getSqrtRatioAtTick(params.tickUpper),
params.liquidityDelta
);
}
}
}