请选择 进入手机版 | 继续访问电脑版
楼主: lovei130908
315 1

lp质押挖矿模式系统开发(源码搭建) [推广有奖]

  • 0关注
  • 0粉丝

博士生

19%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
54.2448
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2000 点
帖子
113
精华
0
在线时间
65 小时
注册时间
2022-8-22
最后登录
2023-5-17

lovei130908 发表于 2022-10-19 14:16:54 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

​​  区块链原本是比特币等详细,加密货币存储数据的一种独特方式,是一种自引用的数据结构,用来存储大量交易信息,每条记录从后向前有序链接起来,具备公开透明、无法篡改、方便追溯的特点。目前当大家单独说到区块链的时候,就是指的区块链技术,是实现了数据公开、透明、可追溯的产品的架构设计方法,算作广义的区块链。

LP质押流动性是一种通过质押加密货币,来获取更多加密货币的方法。它是去中心化金融(DeFi)中的一种新趋势,能够让加密货币投资者充分发挥其加密资产的作用并获得较高的收益回报,并且任何人都可以参与这个生态系统。简单来说,这意味着锁定加密货币即可获得奖励。

流动性挖况是如何运行的?

流动性wa矿的运行与流动性提供者(LP)及流动资金池有着密切的关系:流动性提供者为流动资金池提供资金以获得流动性代币(LP token),流动资金池为市场提供动力并产生手续费用,再按照LP token份额占比支付奖励给流动性提供者,如此反复进行。

pragma solidity 0.5.8;

library SafeMath{

function add(uint256 a,uint256 b)internal pure returns(uint256){

uint256 c=a+b;

require(c>=a,"SafeMath:addition overflow");

return c;

}

function sub(uint256 a,uint256 b)internal pure returns(uint256){

return sub(a,b,"SafeMath:subtraction overflow");

}

function sub(uint256 a,uint256 b,string memory errorMessage)internal pure returns(u

如何获得流动性收益?

用户存入资产到池中就能获得奖励代币(流动性代币),池中只要有人交易就会产生费用,并按照制定的奖励规则进行代币分配,这些都是流动性挖收益。

Periphery逻辑

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

1.add liqudity

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

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

2.remove liqudity

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

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

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

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

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

3.swap

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

Uniswap支持多种代币的交换。具体的含义是,Uniswap提供了多级交易池的路由功能。举个例子,已有两个交易对TokenA-TokenB,以及TokenB-TokenC,通过swap接口,可以实现TokenA-TokenC的交换,其中经过的TokenA-TokenB,TokenB-TokenC,称为路径(path)。amountIn是路径中的一个代币的数量,amountOutMin是期望的交换后的少的数量。

amounts=UniswapV2Library.getAmountsOut(factory,amountIn,path);

require(amounts[amounts.length-1]>=amountOutMin,'UniswapV2Router:INSUFFICIENT_OUTPUT_AMOUNT');

amounts是每个路径上的交换后的数量。amounts[amounts.length-1]也就是后一条路径的输出数量。注意,UniswapV2Library.getAmountsOut的实现(在获取每个交易对的reserve信息后,调用getAmountOut函数)


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Insufficient sufficient Liquidity periphery function

三江鸿 发表于 2022-10-19 14:43:37 来自手机 |显示全部楼层 |坛友微信交流群
点赞支持 感谢分享

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 01:08