主页 > imtoken钱包官网登录 > 使用 Uniswap V2 部署您自己的去中心化交易所
使用 Uniswap V2 部署您自己的去中心化交易所
去中心化链接:
部署UniswapV2前需要准备的智能合约项目:
uniswap-v2-core:核心合约
uniswap-v2-periphery:与核心合约交互的边缘合约,主要是路由合约
uniswap-lib:工具合约
将以上三个项目整合为一个项目:
uniswap-v2-核心
core核心主要有三个合约文件:
UniswapV2Factory.sol:工厂合约
**UniswapV2Pair.sol:**配对合约
**UniswapV2ERC20.sol:**LP Token合约
UniswapV2Pair.sol 管理流动资金池。 不同的货币对有不同的实例。 比如UniswapV2Pair.sol,比如USDT-WETH对应一个UniswapV2Pair.sol合约地址**,DAI-WETH对应另一个UniswapV2Pair.sol**。
UniswapV2ERC20.sol是用户向资金池注入流动性的凭证。 它也被称为流动性代币。 它实际上是一种ERC20代币,同样支持转账功能。 当用户在Uniswap v2中添加两个交易对(如USDT-WETH)usdt要缴税才可以提现吗,即增加流动性时,Uniswap会增加对应UniswapV2ERC20.sol实例(如USDT-WETH LP Token)的余额,Uniswap会增加对应UniswapV2ERC20.sol实例的余额(如USDT-WETH LP Token)。 配额,计算手续费收入,奖励用户。
每个 UniswapV2Pair.sol 都绑定了相应的 UniswapV2ERC20.sol。 事实上,UniswapV2Pair继承了UniswapV2ERC20,所以配对合约本身其实就是一个LP Token合约。
UniswapV2Factory.sol用于部署UniswapV2Pair.sol,通过工厂合约的createPair()函数创建新的配对合约实例。
uniswap-v2-周边
外设核心有两个合约文件:
UniswapV2Router01.sol:路由合约版本01
UniswapV2Router02.sol:路由合约02版本,与01版本相比,主要增加了几个支持纳税的功能
这两个合同中只需要部署一个。 本教程只部署UniswapV2Router01.sol
uniswap-lib
提供uniswap-v2-periphery的函数库。
开始部署 Uniswap V2
在部署Uniswap V2之前,我们需要更改Uniswap V2代码中的init代码哈希值,否则即使部署成功也无法使用。 pairFor 函数位于项目 contracts/libraries/UniswapV2Library.sol 文件中:
init code hash是UniswapV2Pair的字节码通过keccak-256计算出来的值:
点击Bytecode按钮,复制弹出框中的**Bytecode值,**打开网址
记得选择Input type为“Hex”usdt要缴税才可以提现吗,最后得到“02253df52a97965e4b0f62119b1048e43d71c7e02dd706e7a1d07655ed5f8642”,这就是我们要的init code hash
部署合约
只需部署三个合约:
Uniswap V2Factory
WETH(可选,也可以使用链上已有的WETH地址)
Uniswap V2 Router01
UniswapV2Factory 参数:
_feeToSetter:设置费用的管理员,可以选择钱包地址
UniswapV2Router01参数:
_factory:部署UniswapV2Factory后的合约地址
_WETH:WETH合约地址
添加流通池
addLiquidity:该接口支持添加两个ERC20代币作为流动性
addLiquidityETH:与之前的接口不同,该接口提供流动性资产,其中之一是ETH
添加两个代币流动性池
添加代币和 ETH 流动性池
令牌授权
添加流动性时,需要先授权代币到路由合约地址
可以使用授权面板,记得将最下方的合约地址修改为要授权的token地址
贸易
swapExactTokensForTokens:用ERC20兑换ERC20,但支付的金额是指定的,而兑换回的金额未定
swapTokensForExactTokens:同样使用ERC20兑换ERC20,区别于之前的函数,指定兑换的金额
swapExactETHForTokens:指定兑换ERC20的ETH数量
swapTokensForExactETH:使用ERC20兑换指定数量的ETH
swapExactTokensForETH:用指定数量的ERC20兑换ETH
swapETHForExactTokens:用ETH兑换指定数量的ERC20
swapExactTokensForTokensSupportingFeeOnTransferTokens:指定数量的ERC20可以兑换成ERC20,支持转账扣费
swapExactETHForTokensSupportingFeeOnTransferTokens:指定数量的ETH兑换成ERC20,支持转账扣费
swapExactTokensForETHSupportingFeeOnTransferTokens:指定数量的ERC20可以兑换ETH,支持转账扣费
代币之间的交易
原始链接(包括可重现的代码):