地 址:北京市朝陽區(qū)電通創(chuàng)意廣場3號樓 電 話:010-47888804 網(wǎng)址:www.fzrmw.com.cn 郵 箱:kpcu9@163.com
價 格:面議
LP質(zhì)押流動性是質(zhì)押一種通過質(zhì)押加密貨幣,系統(tǒng)開發(fā)I34-搭建1633-案例53I9,挖礦來獲取更多加密貨幣的系統(tǒng)詳情方法。它是邏輯去中心化金融(DeFi)中的一種新趨勢,能夠讓加密貨幣投資者充分發(fā)揮其加密資產(chǎn)的質(zhì)押作用并獲得較高的收益回報,并且任何人都可以參與這個生態(tài)系統(tǒng)。挖礦簡單來說,系統(tǒng)詳情這意味著鎖定加密貨幣即可獲得獎勵。邏輯
流動性挖況是質(zhì)押如何運行的?
流動性wa礦的運行與流動性提供者(LP)及流動資金池有著密切的關(guān)系:流動性提供者為流動資金池提供資金以獲得流動性代幣(LP token),流動資金池為市場提供動力并產(chǎn)生手續(xù)費用,挖礦再按照LP token份額占比支付獎勵給流動性提供者,系統(tǒng)詳情如此反復(fù)進(jìn)行。邏輯
如何獲得流動性收益?
用戶存入資產(chǎn)到池中就能獲得獎勵代幣(流動性代幣),質(zhì)押池中只要有人交易就會產(chǎn)生費用,挖礦并按照制定的系統(tǒng)詳情獎勵規(guī)則進(jìn)行代幣分配,這些都是流動性挖收益。
Periphery 邏輯
核心邏輯實現(xiàn)在 UniswapV2Router02.sol 中。稱為 Router,因為 Periphery 實現(xiàn)了“路由”,支持各個 swap 之間的連接。基本上實現(xiàn)了三個功能:1/add liquidity(增加流動性)2/remove liqudity(抽取流動性)3/swap(交換)。
1.add liqudity
增加流動性,就是同時提供兩種代幣。因為代幣有可能是 ETH,針對不同情況有不同的接口。邏輯類似。
add liqudity 查看之前有沒有創(chuàng)建相應(yīng)的交易對。如果有相應(yīng)的交易對,確定目前的兌換比例在希望的范圍內(nèi)(期望 amountDesired 和不低于 amountMin)。如果兌換比例 OK,將相應(yīng)的代幣轉(zhuǎn)入對應(yīng)的交易對池子,并調(diào)用其的 mint 函數(shù)。
2.remove liqudity
提供流動性的相反的操作就是抽取流動性。也就是說,流動性提供者不再提供相應(yīng)的流動性
liquidity 是抽取的流動性的量。amountMin 是抽取代幣的小的個數(shù)。to 是抽取代幣的目標(biāo)地址。deadline 是個有意思的設(shè)計:抽取的操作有時效性。超過了一定的 deadline(區(qū)塊高度),這次抽取操作看成無效。
先收回需要抽取的 Token,并且銷毀:
IUniswapV2Pair(pair).transferFrom(msg.sender,pair,liquidity);//send liquidity to pair
(uint amount0,uint amount1)=IUniswapV2Pair(pair).burn(to);
3.swap
swap 是普通用戶進(jìn)行代幣交易的操作。普通用戶通過 swap 操作實現(xiàn)兩種 token 之間的交易。
Uniswap 支持多種代幣的交換。具體的含義是,Uniswap 提供了多級交易池的路由功能。舉個例子,已有兩個交易對 TokenA-TokenB,以及 TokenB-TokenC,通過 swap 接口,可以實現(xiàn) TokenA-TokenC 的交換,其中經(jīng)過的 TokenA-TokenB,TokenB-TokenC,稱為路徑(path)。amountIn 是路徑中的一個代幣的數(shù)量,amountOutMin 是期望的交換后的少的數(shù)量。
amounts=UniswapV2Library.getAmountsOut(factory,amountIn,path);
require(amounts[amounts.length-1]>=amountOutMin,'UniswapV2Router:INSUFFICIENT_OUTPUT_AMOUNT');
amounts 是每個路徑上的交換后的數(shù)量。amounts[amounts.length-1]也就是后一條路徑的輸出數(shù)量。注意,UniswapV2Library.getAmountsOut 的實現(xiàn)(在獲取每個交易對的 reserve 信息后,調(diào)用 getAmountOut 函數(shù))