阿凡达泰山众筹商城开发详情丨阿凡达泰山众筹商城系统开发(开发模板)丨阿凡达泰山众筹商城源码及功能系统

简介:  如果当前word中没有记录其他tick index,那么取这个word的最小/最大tick index,这么做的目的是,让单步交易中tick的跨度不至于太大,以减少计算中溢出的可能性

  交易分解

  UniswapV3Pool.swap函数比较长,这里先简要描述其交易步骤:

  假设支付的token为x

  根据买入/卖出行为,P−−√P会随着交易下降或上升,即tick减小或增大

  在tickBitmap中找到和当前tick对应的icic在一个word中的下一个tick对应的inin,根据买入/卖出行为,这里分成向下查找和向上查找两种情况

  如果当前word中没有记录其他tick index,那么取这个word的最小/最大tick index,这么做的目的是,让单步交易中tick的跨度不至于太大,以减少计算中溢出的可能性(计算中会需要使用ΔP−−√ΔP)。

  在ic,in价格区间内,流动性LL的值是不变的,I35 Develop 7O98 system O7I8 我们可以根据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
});

...

相关文章
|
18天前
|
存储 小程序 算法
东郊到家预约系统开发|源码案例|小程序
区块链的最重要特性是去中心化,它不依赖于任何中心机构或第三方信任
|
18天前
|
新零售 人工智能 小程序
一亩田模式链动商城小程序开发
新零售不再将线上和线下视为两个独立的销售渠道,而是将其整合为一个完整的销售生态系统
泰山众筹商城系统模式开发解读
模式说明: 众筹是100U 众筹第一期价格为商品首次上架的价格。 比如:商品A每天17:00-19:00开放众筹。用户每期参与最低最高参与众筹:1-10U。 第二期众筹价格(商品价格),增加30%,以此类推,每个商品每轮增加XX%
泰山众筹系统开发|解析泰山众筹模式火爆原因
最近也有不少读者私信问我这个模式,今天就在这里分析一下,泰山众筹模式的优势也就是它在市场爆火的原因。
|
JSON 区块链 数据格式
阿凡达泰山众筹系统开发(详细及程序)丨泰山众筹阿凡达系统开发(4.0运营版)
 We decided on reward and punishment measures,and then entered the agreement into the blockchain in the form of code.Once the agreed conditions are triggered,a program will automatically execute it,which is smart contract
|
Linux 内存技术
阿凡达模式Demo系统开发方案丨阿凡达泰山众筹系统开发
阿凡达模式Demo系统开发方案丨阿凡达泰山众筹系统开发
171 0
|
新零售 存储 缓存
区块链阿凡达泰山众筹商城系统开发(正式版)丨区块链阿凡达泰山众筹商城开发源码系统
“新零售”的核心要义在于推动线上与线下的一体化进程,其关键在于使线上的互联网力量和线下的实体店终端形成真正意义上的合力,从而完成电商平台和实体零售店面在商业维度上的优化升级。同时,促成价格消费时代向价值消费时代的全面转型。
|
新零售 人工智能 缓存
泰山众筹(阿凡达4.0)系统开发详细及方案丨泰山众筹(阿凡达4.0)开发源码及平台
新零售是指个人、企业以互联网为依托,通过运用大数据、人工智能等先进技术手段并运用心理学知识,对商品的生产、流通与销售过程进行升级改造,进而重塑业态结构与生态圈,并对线上服务、线下体验以及现代物流进行深度融合的零售新模式。
阿凡达(泰山众筹)开发原理丨阿凡达(泰山众筹)系统开发(详情开发)丨阿凡达及泰山众筹源码案例部署
交易是否能够结束的关键计算在SwapMath.computeSwapStep中完成,这里计算了交易是否能在目标价格范围内结束,以及消耗的tokenIn和得到的tokenOut.这里摘取此函数部分代码进行分析

热门文章

最新文章