欢迎光临散文网 会员登陆 & 注册

Sun4.0阿凡达泰山众筹开发系统方案|Avatar阿凡达

2023-02-20 10:52 作者:呢迷笛  | 我要投稿

新零售指的就是新型零售商业模式,将线上与线下进行融合,消费者可以从线上进行选物,I8O量化2857交易8624系统开发然后到线下门店进实际体验,另外还可以通过大数据来了解消费者的消费习惯,从而提供更加完善的服务。 Ecology The commercial ecology construction of"new retail"will cover online pages,physical stores,payment terminals,data systems,logistics platforms,marketing paths and many other aspects,and embed diversified functions such as shopping,entertainment, 首先调用UniswapV3Factory.getPool方法查看交易对是否已经创建,getPool函数是solidity自动为UniswapV3Factory合约中的状态变量getPool生成的外部函数,getPool的数据类型为: contract UniswapV3Factory is IUniswapV3Factory,UniswapV3PoolDeployer,NoDelegateCall{ ... mapping(address=>mapping(address=>mapping(uint24=>address)))public override getPool; ... } 使用3个map说明了v3版本使用(tokenA,tokenB,fee)来作为一个交易对的键,即相同代币,不同费率之间的流动池不一样。另外对于给定的tokenA和tokenB,会先将其地址排序,将地址值更小的放在前,这样方便后续交易池的查询和计算。 再来看UniswapV3Factory创建交易对的过程,实际上它是调用deploy函数完成交易对的创建: 使用CREATE2的好处是: 可以在链下计算出已经创建的交易池的地址 其他合约不必通过UniswapV3Factory中的接口来查询交易池的地址,可以节省gas 合约地址不会因为reorg而改变 不需要通过UniswapV3Factory的接口来计算交易池合约地址的方法,可以看这段代码。 新交易对合约的构造函数中会反向查询UniswapV3Factory中的parameters值来进行初始变量的赋值: constructor(){ int24 _tickSpacing; (factory,token0,token1,fee,_tickSpacing)=IUniswapV3PoolDeployer(msg.sender).parameters(); tickSpacing=_tickSpacing; maxLiquidityPerTick=Tick.tickSpacingToMaxLiquidityPerTick(_tickSpacing); } 为什么不直接使用参数传递来对新合约的状态变量赋值呢。这是因为CREATE2会将合约的initcode和salt一起用来计算创建出的合约地址。而initcode是包含contructor code和其参数的,如果合约的constructor函数包含了参数,那么其initcode将因为其传入参数不同而不同。在off-chain计算合约地址时,也需要通过这些参数来查询对应的initcode。为了让合约地址的计算更简单,这里的constructor不包含参数(这样合约的initcode将时唯一的),而是使用动态call的方式来获取其创建参数。

Sun4.0阿凡达泰山众筹开发系统方案|Avatar阿凡达的评论 (共 条)

分享到微博请遵守国家法律