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);

  }

  }

  }

相关文章
|
6月前
|
存储 安全 分布式数据库
DAPP算力质押NFT系统开发|方案设计|详情模式
区块链技术是Web3.0的核心技术,它是一种分布式数据库技术
|
4月前
|
机器学习/深度学习 监控 安全
现货量化合约跟单/交易所系统开发成熟技术/案例搭建/玩法详情/步骤指南
现货量化合约跟单系统开发是指构建一个系统,通过使用量化交易策略,实现将现货市场的交易信号自动化地应用到交易合约中,以进行自动化的跟单交易。 以下是现货量化合约跟单系统开发的关键概述:
|
6月前
|
存储 缓存 算法
NFT元宇宙盲盒质押合约系统开发|成熟方案|指南详情
区块链技术的核心思想是去中心化,数据不存储在单一的中心服务器上,而是分布在多个节点中。
|
存储 区块链 数据安全/隐私保护
DAPP拼团众筹互助系统开发(成熟技术)模式详情
在智能合约中还可以使用事件来进行数据传输和共享
|
6月前
|
算法 区块链
DAPP算力质押分红系统开发|方案设计|需求细节
“去中心化”好像是最近一个热门的“新词汇”,相信关注区块链领域的朋友会经常听到这么一个词。
|
11月前
|
存储 安全 区块链
秒合约系统开发|期权交易系统开发搭建案例
随着区块链技术的发展,融行业将会大变革。
|
安全 5G 区块链
IPPSWAP孵化器丨系统开发丨算力分红丨dapp质押挖矿系统开发案例及方案
IPPSWAP孵化器丨系统开发丨算力分红丨dapp质押挖矿系统开发案例及方案
|
开发框架 前端开发 安全
云算力质押挖矿系统开发(详细案例)丨云算力质押挖矿系统开发成熟技术/源码流程
云算力质押挖矿系统开发(详细案例)丨云算力质押挖矿系统开发成熟技术/源码流程
|
安全 区块链 数据安全/隐私保护
现货期权系统开发指南与方案|秒合约系统源码开发
Web3是一个正在快速发展的新型互联网技术,它基于区块链技术
|
区块链 供应链 安全
现货合约跟单交易所系统开发(成熟源码)|秒合约系统搭建案例
智能合约和去中心化应用的发展一直在逐步推进