v18038319724的个人空间 https://www.eechina.com/space-uid-170931.html [收藏] [复制] [RSS]

博客

马蹄链DAPP系统开发Matic智能合约

已有 125 次阅读2023-4-13 17:25

流动性挖矿

  流动性挖矿是指将加密货币资产质押或出借,以产生额外加密货币形式的高回报或回报的做法。由于各种创新,这种去中心化金融的应用近大受欢迎。流动性挖矿是当前DeFi行业较大的增长驱动力系统开发180.3831.97Z4

  简而言之,流动性挖矿激励流动性提供者(LP)在一个基于智能合约的流动性池中持有或锁定他们的加密资产。

  流动性挖矿参与者获得代币奖励作为额外补偿时,流动性挖掘就会发生,并且在Compound向其平台用户发布其COMP治理代币后变得突出。

  Periphery逻辑

  核心逻辑实现在UniswapV2Router02.sol中。称为Router,因为Periphery实现了“路由”,支持各个swap之间的连接。基本上实现了三个功能:1/add liquidity(增加流动性)2/remove liqudity(抽取流动性)3/swap(交换)。

  1.add liqudity

  增加流动性,就是同时提供两种代币。因为代币有可能是ETH,针对不同情况有不同的接口。逻辑类似。

  function addLiquidity(

  address tokenA,

  address tokenB,

  uint amountADesired,

  uint amountBDesired,

  uint amountAMin,

  uint amountBMin,

  address to,

  uint deadline

  )external virtual override ensure(deadline)returns(uint amountA,uint amountB,uint liquidity)

  add liqudity查看之前有没有创建相应的交易对。如果有相应的交易对,确定目前的兑换比例在希望的范围内(期望amountDesired和不低于amountMin)。如果兑换比例OK,将相应的代币转入对应的交易对池子,并调用其的mint函数。

  2.remove liqudity

  提供流动性的相反的操作就是抽取流动性。也就是说,流动性提供者不再提供相应的流动性:

  function removeLiquidity(

  address tokenA,

  address tokenB,

  uint liquidity,

  uint amountAMin,

  uint amountBMin,

  address to,

  uint deadline

  )public virtual override ensure(deadline)returns(uint amountA,uint amountB){

  liquidity是抽取的流动性的量。amountMin是抽取代币的最小的个数。to是抽取代币的目标地址。deadline是个有意思的设计:抽取的操作有时效性。超过了一定的deadline(区块高度),这次抽取操作看成无效。

  先收回需要抽取的Token,并且销毁:

  IUniswapV2Pair(pair).transferFrom(msg.sender,pair,liquidity);//send liquidity to pai

  (uint amount0,uint amount1)=IUniswapV2Pair(pair).burn(to);

  3.swap

  swap是普通用户进行代币交易的操作。普通用户通过swap操作实现两种token之间的交易。

 


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部