PAXG算力分红系统开发(详细方案)丨源码规则

简介: 简单说,智能合约是一种用计算机语言取代法律语言去记录条款的合约。智能合约可以由一个计算系统自动执行。可以理解为智能合约就是传统合约的数字化版本。

  简单说,智能合约是一种用计算机语言取代法律语言去记录条款的合约。智能合约可以由一个计算系统自动执行。可以理解为智能合约就是传统合约的数字化版本。

  区块链就是把加密数据(区块)按照时间顺序进行叠加(链)生成的永久、不可逆向修改的记录。某种意义上说,区块链技术是互联网时代一种新的“信息传递”技术,

  区块链是一种特殊的分布式数据库,任何服务器都可以成为区块链中的一个节点,且节点之间是平等的,无中心化,区块链中的数据是经过加密存储,已经存储的数据无法修改,可以保证数据的准确性。

  将代币path[0],转入到交易对,数量为amounts[0]。转入代币后,进行真正的swap操作:

  function _swap(uint[]memory amounts,address[]memory path,address _to)internal virtual{

  for(uint i;i<path.length-1;i++){

  (address input,address output)=(path,path[i+1]);

  (address token0,)=UniswapV2Library.sortTokens(input,output);

  uint amountOut=amounts[i+1];

  (uint amount0Out,uint amount1Out)=input==token0?(uint(0),amountOut):(amountOut,uint(0));

  address to=i<path.length-2?UniswapV2Library.pairFor(factory,output,path[i+2]):_to;

  IUniswapV2Pair(UniswapV2Library.pairFor(factory,input,output)).swap(

  amount0Out,amount1Out,to,new bytes(0)

  );

  }

  }

  原理比较简单,针对每一条路径,调用交易对的swap操作。

  Core逻辑

  Core逻辑实现了单个交易对的逻辑。通过UniswapV2Factory可以创建一个个Pair(交易池)。每个具体实现逻辑在UniswapV2Pair中。

  mint

  每个交易对创建流动性。

  function mint(address to)external lock returns(uint liquidity){

  因为在调用mint函数之前,在addLiquidity函数已经完成了转账,所以,从这个函数的角度,两种代币数量的计算方式如下:

  uint balance0=IERC20(token0).balanceOf(address(this));

  uint balance1=IERC20(token1).balanceOf(address(this));

  uint amount0=balance0.sub(_reserve0);

  uint amount1=balance1.sub(_reserve1);

  当前的balance是当前的reserve加上注入的流动性的代币数量。

  uint _totalSupply=totalSupply;//gas savings,must be defined here since totalSupply can update in _mintFee

  if(_totalSupply==0){

  liquidity=Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);

  _mint(address(0),MINIMUM_LIQUIDITY);//permanently lock the first MINIMUM_LIQUIDITY tokens

  }else{

  liquidity=Math.min(amount0.mul(_totalSupply)/_reserve0,amount1.mul(_totalSupply)/_reserve1);

  }

  _mint(to,liquidity);

  流动性liquidity的计算方式在第一次提供流动性时和其他时候稍稍不同。第一次提供流动性的计算公式如下:

  liquidity=sqrt(x0*y0)-min

  其中min是10^3。也就是说,第一次提供流动性是有最小流动性要求的。其他提供流动性的计算公式如下:

  liquidity=min((x0/reserve0totalsupply),(y0/reserve1totalsupply))

  也就说,按照注入的流动性和当前的reserve的占比一致。

  burn

  burn函数用在抽取流动性。burn逻辑和mint逻辑类似。

  function burn(address to)external lock returns(uint amount0,uint amount1){

  3.swap

  swap函数实现两种代币的兑换。

  function swap(uint amount0Out,uint amount1Out,address to,bytes calldata data)external lock{

  一个交易池的swap操作支持两个方向的兑换,可以从TokenA换到TokenB,或者TokenB换到TokenA。

  if(amount0Out>0)_safeTransfer(_token0,to,amount0Out);//optimistically transfer tokens

  if(amount1Out>0)_safeTransfer(_token1,to,amount1Out);//optimistically transfer tokens

  因为在swapExactTokensForTokens的getAmountOut函数已经确定兑换处的金额。所以,先直接转账。

  在不做swap之前,balance应该和reserve相等的。通过balance和reserve的差值,可以反推出输入的代币数量:

  uint amount0In=balance0>_reserve0-amount0Out?balance0-(_reserve0-amount0Out):0;

  uint amount1In=balance1>_reserve1-amount1Out?balance1-(_reserve1-amount1Out):0;

  确保反推的输入代币数量不小于零。

  require(amount0In>0||amount1In>0,‘UniswapV2:INSUFFICIENT_INPUT_AMOUNT’);

相关文章
|
7月前
|
机器学习/深度学习 安全 数据可视化
MT4丨MT5外汇跟单交易所系统开发运营版/策略指南/逻辑方案/需求功能/源码项目
提供社交交易功能,让用户可以互相关注、分享交易策略和交易结果,促进交流和学习。
|
5月前
|
监控 安全 前端开发
交易所系统开发(源码正式版)/需求逻辑/玩法详情/规则架构
交易所源码开发是指基于特定的需求和要求,从头开始构建一个自定义的交易所平台的开发过程。这种开发可以包括以下几个关键方面:
|
7月前
|
新零售 存储 人工智能
未来生物积分返现模式系统开发|步骤方案
实体门店商家通过信息技术对消费者、商品、营销、交易4个环节进行运营数据化
关于短剧cps分销系统开发详细逻辑丨案例开发丨方案设计丨源码说明
短剧CPS系统的开发可以提升创作效率、内容管理效率和分发渠道的扩展。它为短剧的创作者、制片方、编辑和观众提供了更好的使用体验,促进了短剧产业的发展和商业化。
|
7月前
|
存储 供应链 安全
DAPP算力质押系统开发|详情规则
区块链智能合约是一种具有很高前景的技术,它可以实现各种去中心化的应用场景
|
安全 算法 分布式数据库
ADA质押算力项目系统开发|详情方案|源码案例
智能合约作为Web3下的核心概念,具有巨大的潜力和应用前景
|
开发框架 算法 区块链
ADA质押算力模式系统开发|DAPP开发
而在区块链的去中心化架构中,网络由节点组成,每个节点都是平等的
|
存储 区块链
ADA算力质押项目系统开发方案与详情
智能合约的编写语言通常是特定的领域语言,如Solidity
什么是短剧cps项目系统开发丨短剧cps分销模式系统开发技术案例/详情案例/设计方案/源码程序
Short plays, also known as short plays, refer to theatrical works that showcase the complete plot of a story in a relatively short period of time. It is usually relatively short, usually between a few minutes to a few tens of minutes.
|
存储 BI 分布式数据库
BSC链DAPP双币质押LP模式系统开发|LP算力案例|详情方案
horizontal and vertices strides,`strides=[1,stride,stride,1]`

热门文章

最新文章