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

dao/dapp/defi合约代币燃烧通缩流动性质押LP挖矿项目系统开发技术方案详细/案例源码版

2023-06-11 17:01 作者:bili_36625761919  | 我要投稿

  区块链作为一种新型的技术组合,综合了P2P网络、共识算法、非对称加密、智能合约等新型技术,是一种在对等网络(也称分布式网络、点对点网络)环境下,Through transparent and trusted rules,a traceable block chain data structure is constructed,which has the typical characteristics of distributed peer-to-peer,chained data blocks,anti forgery and Tamper resistance,traceability,transparency and credibility,and high reliability.


  区块链技术就是一种数据库技术,每个区块就像一个硬盘,把信息全部保存下来,再通过密码学技术进行加密,这些被保存起来的数据是不能被篡改的。


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


  区块链(Blockchain)是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也称为分布式账本技术(Distributed Ledger Technology)。Essentially,blockchain is a reliable database that is collectively maintained and distributed through decentralization and trustworthiness.


  pragma solidity=0.5.16;


  import'./interfaces/IUniswapV2Factory.sol';


  import'./UniswapV2Pair.sol';


  contract UniswapV2Factory is IUniswapV2Factory{


  address public feeTo;


  address public feeToSetter;


  mapping(address=>mapping(address=>address))public getPair;


  address[]public allPairs;


  event PairCreated(address indexed token0,address indexed token1,address pair,uint);


  //初始化就设定好谁是设定手续费接收的人的设定者


  constructor(address _feeToSetter)public{


  feeToSetter=_feeToSetter;


  }


  //获取一共有多少个交易对


  function allPairsLength()external view returns(uint){


  return allPairs.length;


  }


  //创建交易对函数


  //创建交易对只是创建一个交易对地址,还没有往里面添加代币数量


  function createPair(address tokenA,address tokenB)external returns(address pair){


  //必须是两个不一样的ERC20合约地址


  require(tokenA!=tokenB,'UniswapV2:IDENTICAL_ADDRESSES');


  //让tokenA和tokenB的地址从小到大排列


  (address token0,address token1)=tokenA<tokenB?(tokenA,tokenB):(tokenB,tokenA);


  //token地址不能是0


  require(token0!=address(0),'UniswapV2:ZERO_ADDRESS');


  //必须是uniswap中未创建过的pair


  require(getPair[token0][token1]==address(0),'UniswapV2:PAIR_EXISTS');//single check is sufficient


  //获取模板合约UniswapV2Pair的creationCode


  bytes memory bytecode=type(UniswapV2Pair).creationCode;


  //以两个token的地址作为种子生产salt


  bytes32 salt=keccak256(abi.encodePacked(token0,token1));


  //直接调用汇编创建合约


  assembly{


  pair:=create2(0,add(bytecode,32),mload(bytecode),salt)


  }


  //初始化刚刚创建的合约


  IUniswapV2Pair(pair).initialize(token0,token1);


  //交易对映射填充


  //记录刚刚创建的合约对应的pair


  getPair[token0][token1]=pair;


  getPair[token1][token0]=pair;


  allPairs.push(pair);


  emit PairCreated(token0,token1,pair,allPairs.length);


  }


  //设置接收手续费的人,只能设置者能设置


  //用于设置feeTo地址,只有feeToSetter才可以设置。


  function setFeeTo(address _feeTo)external{


  require(msg.sender==feeToSetter,'UniswapV2:FORBIDDEN');


  feeTo=_feeTo;


  }


  //设置接收手续费的人的设置者,只能上一个设置者进行设置,也就是设置权利转交


  //用于设置feeToSetter地址,必须是现任feeToSetter才可以设置。


  function setFeeToSetter(address _feeToSetter)external{


  require(msg.sender==feeToSetter,'UniswapV2:FORBIDDEN');


  feeToSetter=_feeToSetter;


  }


  }


dao/dapp/defi合约代币燃烧通缩流动性质押LP挖矿项目系统开发技术方案详细/案例源码版的评论 (共 条)

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