DApp是(Decentralized Application)的缩写,中文直译为去中心化应用,也可以理解为分布式应用。
区块链作为一种新的信息与网络技术,运用加密技术、分布式网络和共识机制来保证网络中每个节点所记录的信息真实有效。区块链正在不断渗透到各行各业中,已经展现出良好的发展态势。
Web3.0:致力打造一个基于区块链技术、用户主导、去中心化的网络生态。在Web3.0中,用户为满足自身需求进行交互操作,并在交互中利用区块链技术,从而实现价值的创造、分配与流通。这样的整个用户交互、价值流通的过程就形成了Web3.0生态。
如果说APP=前端+服务器,那么DApp=前端+智能合约。
DApp的前端代表用户所看到的内容,后端代表整个业务逻辑。该业务逻辑由与基础区块链交互的一个或多个智能合约表示。
function computeSwapStep(
uint160 sqrtRatioCurrentX96,
uint160 sqrtRatioTargetX96,
uint128 liquidity,
int256 amountRemaining,
uint24 feePips
)
internal
pure
returns(
uint160 sqrtRatioNextX96,
uint256 amountIn,
uint256 amountOut,
uint256 feeAmount
)
{
bool zeroForOne=sqrtRatioCurrentX96>=sqrtRatioTargetX96;
bool exactIn=amountRemaining>=0;
...
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{
...
}
if(!exactIn&&amountOut>uint256(-amountRemaining)){
amountOut=uint256(-amountRemaining);
}
if(exactIn&&sqrtRatioNextX96!=sqrtRatioTargetX96){
feeAmount=uint256(amountRemaining)-amountIn;
}else{
feeAmount=FullMath.mulDivRoundingUp(amountIn,feePips,1e6-feePips);
}