流动性挖矿
流动性挖矿是指将加密货币资产质押或出借,以产生额外加密货币形式的高回报或回报的做法。由于各种创新,这种去中心化金融的应用近大受欢迎。流动性挖矿是当前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之间的交易。