Dapp链接:https://www.chainpip.com/dapp...部署UniswapV2前需要准备的智能合约项目:luniswap-v2-core:核心合约luniswap-v2-periphery:与核心合约交互的边缘合约,主要是路由合约luniswap-lib:工具合约将以上三个项目整合为一个项目:uniswap-v2-corecore主要有三个合约文件:lUniswapV2Factory.sol:工厂合约lUniswapV2Pair.sol:配对合约lUniswapV2ERC20.sol:LPToken合约UniswapV2Pair.sol管理流动性池,不同的货币对有不同的实例,比如UniswapV2Pair.sol,比如USDT-WETH是的,对应一个UniswapV2Pair.sol合约地址,DAI-WETH对应另一个UniswapV2Pair.sol。UniswapV2ERC20.sol是用户向资金池注入流动性的凭证。它也被称为流动性代币。它实际上是一种ERC20代币,同样支持转账功能。当用户在Uniswapv2中添加两个交易对(如USDT-WETH),即增加流动性时,Uniswap会增加对应UniswapV2ERC20.sol实例(如USDT-WETHLPToken)的余额,Uniswap会增加对应UniswapV2ERC20.sol实例的余额(如USDT-WETHLPToken)。配额,计算手续费收入,奖励用户。每个UniswapV2Pair.sol都绑定了相应的UniswapV2ERC20.sol。事实上,UniswapV2Pair继承了UniswapV2ERC20,所以配对合约本身其实就是一个LPToken合约。UniswapV2Factory.sol用于部署UniswapV2Pair.sol,通过工厂合约的createPair()函数创建新的配对合约实例。uniswap-v2-peripheryperiphery核心有两个合约文件:lUniswapV2Router01.sol:路由合约01版本lUniswapV2Router02.sol:路由合约02版本,相比01版本,这两个合约增加了几个支持纳税的功能即可部署一个。本教程只部署UniswapV2Router01.soluniswap-lib,提供uniswap-v2-periphery的函数库。开始部署UniswapV2在部署UniswapV2之前,我们需要更改UniswapV2代码中的init代码哈希值,否则即使部署成功也无法使用。位于项目contracts/libraries/UniswapV2Library.sol文件中的pairFor函数:initcodehash为keccak-256计算的UniswapV2Pair的字节码:点击Bytecode按钮,复制弹出框中的Bytecode值,打开网址http://emn178.github.io/onlin...记得选择Inputtype为“Hex”,最后得到“02253df52a97965e4b0f62119b1048e43d71c7e02dd706e7a1d07655ed5f8642”,这就是我们想要的initcodehash。部署一个合约,只需部署三个合约:lUniswapV2FactorylWETH可以使用链(可选,还有UniswapV2Router01UniswapV2Factory参数:l_feeToSetter:设置手续费的管理员可以选择一个钱包地址addLiquidity:该接口支持添加两个ERC20代币作为liquidityladdLiquidityETH:与之前的接口不同,该接口提供流动性资产,其中一个是ETH添加两个代币流量池添加代币和ETH流量池代币授权添加流动性时,需要先授权代币到路由合约地址。可以使用授权面板,记得修改底部的合约地址为要授权的token地址交易lswapExactTokensForTokens:用ERC20兑换ERC20,但支付金额是指定的,兑换金额未定lswapTokensForExactTokens:同样使用ERC20兑换ERC20,与之前的功能不同,指定兑换的数量指定数量的ERC20的swapETHForExactTokens:使用ETHSwap指定数量的ERC20lswapExactTokensForTokensSupportingFeeOnTransferTokens:指定数量的ERC20兑换ERC20,支持转账扣费lswapExactETHForTokensSupportingFeeOnTransferTokens:指定数量的ETH兑换ERC20,支持转账扣费代币间交易链接到原文(包括可复现代码):https://www.chainpip.com/dyna...
