Dapp鏈接:https://www.chainpip.com/dapp-view/6724
部署UniswapV2前需要準備的智能合約專案:
l uniswap-v2-core: 核心合約
l uniswap-v2-periphery: 與核心合約互動的邊緣合約,主要就是路由合約
l uniswap-lib: 工具合約
整合以上三個專案到一個專案中:

uniswap-v2-core
core核心主要有三個合約檔案:
l UniswapV2Factory.sol: 工廠合約
l **UniswapV2Pair.sol:**配對合約
l **UniswapV2ERC20.sol:**LP Token 合約
UniswapV2Pair.sol管理著流動性資金池,不同幣對有著不同的實體,比UniswapV2Pair.sol, 如 USDT-WETH 這一個幣對,就對應一個UniswapV2Pair.sol合約地址**,DAI-WETH 又對應另一個UniswapV2Pair.sol**,
UniswapV2ERC20.sol則是用戶往資金池里注入流動性的一種憑證,也稱為流動性代幣,其實也是一種ERC20代幣,同樣支持轉賬功能,當用戶在Uniswap v2添加兩個交易對( 如USDT-WETH),也就是添加流動性, Uniswap會增加對應UniswapV2ERC20.sol實體(如USDT-WETH LP Token)的余額,Uniswap根據用戶持有LP Token的額度,計算手續費收益獎勵給用戶,
每個UniswapV2Pair.sol都有對應的一種UniswapV2ERC20.sol與之系結,其實,UniswapV2Pair 繼承了 UniswapV2ERC20,所以配對合約本身其實也是 LP Token 合約,
UniswapV2Factory.sol則是用來部署UniswapV2Pair.sol的,通過工廠合約的 createPair() 函式來創建新的配對合約實體,
uniswap-v2-periphery
periphery核心有兩個合約檔案:
l UniswapV2Router01.sol:路由合約 01 版本
l UniswapV2Router02.sol:路由合約 02 版本,相比 01 版本主要增加了幾個支持交稅費用的函式
這兩個合約只要部署一個就行,本教程只部署UniswapV2Router01.sol
uniswap-lib
提供uniswap-v2-periphery的函式庫,
開始部署Uniswap V2
在部署Uniswap V2之前,我們需要改下Uniswap V2代碼中init code hash值,否則即便部署成功,也使用不了,位于專案contracts/libraries/UniswapV2Library.sol檔案中的pairFor函式:

init code hash是UniswapV2Pair的bytecode通過keccak-256計算的值:

點擊Bytecode按鈕,在彈框中復制**Bytecode值,**打開網址 http://emn178.github.io/online-tools/keccak_256.html

記得選擇Input type為"Hex",最終得到的"02253df52a97965e4b0f62119b1048e43d71c7e02dd706e7a1d07655ed5f8642",就是我們要的init code hash
部署合約
只要部署三個合約:
l UniswapV2Factory
l WETH (可選, 也可使用鏈上已有的WETH地址)
l UniswapV2Router01

UniswapV2Factory引數:
l _feeToSetter: 設定手續費的管理員,可任選一個錢包地址
UniswapV2Router01引數:
l _factory: UniswapV2Factory部署后的合約地址
l _WETH: WETH合約地址
添加流動池
l addLiquidity:該介面支持添加兩種 ERC20 代幣作為流動性
l addLiquidityETH:與上一個介面不同,該介面提供的流動性資產,其中有一個是 ETH
添加兩個代幣流動池

添加代幣與ETH流動池

代幣授權
在添加流動性時,需要先授權代幣給路由合約地址
可以使用一下授權面板,記得修改底部的合約地址為要授權的代幣地址

交易
l swapExactTokensForTokens:用 ERC20 兌換 ERC20,但支付的數量是指定的,而兌換回的數量則是未確定的
l swapTokensForExactTokens:也是用 ERC20 兌換 ERC20,與上一個函式不同,指定的是兌換回的數量
l swapExactETHForTokens:指定 ETH 數量兌換 ERC20
l swapTokensForExactETH:用 ERC20 兌換成指定數量的 ETH
l swapExactTokensForETH:用指定數量的 ERC20 兌換 ETH
l swapETHForExactTokens:用 ETH 兌換指定數量的 ERC20
l swapExactTokensForTokensSupportingFeeOnTransferTokens:指定數量的 ERC20 兌換 ERC20,支持轉賬時扣費
l swapExactETHForTokensSupportingFeeOnTransferTokens:指定數量的 ETH 兌換 ERC20,支持轉賬時扣費
l swapExactTokensForETHSupportingFeeOnTransferTokens:指定數量的 ERC20 兌換 ETH,支持轉賬時扣費
代幣之間交易

原文鏈接(含可復制代碼):https://www.chainpip.com/dynamic/231
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/518958.html
標籤:區塊鏈

