SolaRoad (索拉迪)矿池算力分红开发运营版丨索拉迪SolaRoad智能合约系统开发详情介绍及源码说明

简介: 通俗地说,可以把区块链比作一种“账本”。传统账本由一方“集中记账”,这种新式“账本”则可以在互联网上由多方参与、共享,各参与方都可以“记账”并备份,而每个备份就是一个“区块”。

   pragma solidity=0.6.6;

  import'uniswap/lib/contracts/libraries/TransferHelper.sol';

  import'./interfaces/IUniswapV2Migrator.sol';

  import'./interfaces/V1/IUniswapV1Factory.sol';

  import'./interfaces/V1/IUniswapV1Exchange.sol';

  import'./interfaces/IUniswapV2Router01.sol';

  import'./interfaces/IERC20.sol';

  //该合约负责将V1迁移到V2

  contract UniswapV2Migrator is IUniswapV2Migrator{

  IUniswapV1Factory immutable factoryV1;//immutable相当于常量,可以在构造函数中设置,之后不能修改访问他们相对来说更节省gas

  IUniswapV2Router01 immutable router;

  constructor(address _factoryV1,address _router)public{

  factoryV1=IUniswapV1Factory(_factoryV1);

  router=IUniswapV2Router01(_router);

  }

  //needs to accept ETH from any v1 exchange and the router.ideally this could be enforced,as in the router,

  //but it's not possible because it requires a call to the v1 factory,which takes too much gas

  //该函数旨在表明本合约可以接受其他地址的ETH转账

  receive()external payable{}

  function migrate(address token,uint amountTokenMin,uint amountETHMin,address to,uint deadline)//应该是V1主动调用本函数进行迁移

  external

  override

  {

  //V1是token/ETH交易对因此输入token即可查询对应地址

  IUniswapV1Exchange exchangeV1=IUniswapV1Exchange(factoryV1.getExchange(token));

  uint liquidityV1=exchangeV1.balanceOf(msg.sender);

  //将流动性代币UNI1转移到本合约中

  require(exchangeV1.transferFrom(msg.sender,address(this),liquidityV1),'TRANSFER_FROM_FAILED');

  //在本合约移除流动性销毁UNI1返回token/ETH到本合约中

  (uint amountETHV1,uint amountTokenV1)=exchangeV1.removeLiquidity(liquidityV1,1,1,uint(-1));

  //授权给router合约进行路径查找后的token转账

  TransferHelper.safeApprove(token,address(router),amountTokenV1);

  //通过router为该token/ETH池子添加流动性

  (uint amountTokenV2,uint amountETHV2,)=router.addLiquidityETH{value:amountETHV1}(

  token,

  amountTokenV1,

  amountTokenMin,

  amountETHMin,

  to,

  deadline

  );

  if(amountTokenV1>amountTokenV2){

  TransferHelper.safeApprove(token,address(router),0);//be a good blockchain citizen,reset allowance to 0

  TransferHelper.safeTransfer(token,msg.sender,amountTokenV1-amountTokenV2);

  }else if(amountETHV1>amountETHV2){

  //addLiquidityETH guarantees that all of amountETHV1 or amountTokenV1 will be used,hence this else is safe

  TransferHelper.safeTransferETH(msg.sender,amountETHV1-amountETHV2);

  }

  }

  }

相关文章
|
7月前
|
存储 安全 分布式数据库
DAPP算力质押NFT系统开发|方案设计|详情模式
区块链技术是Web3.0的核心技术,它是一种分布式数据库技术
|
7月前
|
存储 供应链 安全
DAPP算力质押NFT合约系统开发|项目方案|技术成熟
区块链编程具有去中心化的特点。传统的中心化系统容易受到单点故障和信任问题的影响
|
5月前
|
机器学习/深度学习 监控 安全
现货量化合约跟单/交易所系统开发成熟技术/案例搭建/玩法详情/步骤指南
现货量化合约跟单系统开发是指构建一个系统,通过使用量化交易策略,实现将现货市场的交易信号自动化地应用到交易合约中,以进行自动化的跟单交易。 以下是现货量化合约跟单系统开发的关键概述:
|
7月前
|
存储 缓存 算法
NFT元宇宙盲盒质押合约系统开发|成熟方案|指南详情
区块链技术的核心思想是去中心化,数据不存储在单一的中心服务器上,而是分布在多个节点中。
|
7月前
|
存储 区块链 数据库
NFT合约算力质押项目系统开发|指南详情
区块链的最重要特性是去中心化,它不依赖于任何中心机构或第三方信任
|
7月前
|
存储 供应链 安全
DAPP算力质押系统开发|详情规则
区块链智能合约是一种具有很高前景的技术,它可以实现各种去中心化的应用场景
|
7月前
|
存储 算法 安全
DAPP算力质押生息系统开发|技术方案
区块链技术是一种去中心化的分布式账本技术,其本质是通过加密
|
区块链
DAPP/PPSWAP算力挖矿孵化器质押挖矿系统开发技术详情
IPPSWAP是一个去中心化的质押挖矿平台,支持用户使用各种数字货币进行质押,获得相应的代币奖励
|
安全 5G 区块链
IPPSWAP孵化器丨系统开发丨算力分红丨dapp质押挖矿系统开发案例及方案
IPPSWAP孵化器丨系统开发丨算力分红丨dapp质押挖矿系统开发案例及方案
|
开发框架 前端开发 安全
云算力质押挖矿系统开发(详细案例)丨云算力质押挖矿系统开发成熟技术/源码流程
云算力质押挖矿系统开发(详细案例)丨云算力质押挖矿系统开发成熟技术/源码流程