UniswapV2最新完整部署(UniswapV2Factory.sol,UniswapV2Router02.sol,前端inteface-2.6.5)

部署过程中需要:

metamask钱包(或者其他钱包)

remix IDE

yarn包管理工具

vsCode(前端)

1.合约的编译部署

编译过程中的注意事项!!!

UniswapV2最新完整部署(UniswapV2Factory.sol,UniswapV2Router02.sol,前端inteface-2.6.5)_第1张图片

Enable optimization: 启用优化,默认200(官方部署时候选的是200),正常不需要改,如果合约被用到的人很多,那么可以将数值调大一些,在此因为路由合约太大,所以需要启动优化,否则编译部署会报错

EVM VERSION:选择istanbul  官方部署合约时候的编译器也是这个

(1)Weth(可以直接用官方网络的,也可以部署自己的Weth,以下是官方网络的Weth地址)

mainnet:'0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
    ropsten:'0xc778417E063141139Fce010982780140Aa0cD5Ab',
    rinkeby:'0xc778417E063141139Fce010982780140Aa0cD5Ab',
    goerli:'0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6',
    kovan:'0xd0A1E359811322d97991E03f863a0C30C2cF029C'

(2)工厂合约(UniswapV2Factory.sol)和路由合约(UniswapV2Router02.sol

先获取initCode,initCode是通过Pair合约编译生成的byteCode取key为Object的value在进行keccak-256哈希生成的,替换Router2合约里面的initCode:如图:

a.pair合约byteCode的获取

UniswapV2最新完整部署(UniswapV2Factory.sol,UniswapV2Router02.sol,前端inteface-2.6.5)_第2张图片

 b.byteCode中object的获取

UniswapV2最新完整部署(UniswapV2Factory.sol,UniswapV2Router02.sol,前端inteface-2.6.5)_第3张图片

 c.Router路由合约initCode替换的地方

UniswapV2最新完整部署(UniswapV2Factory.sol,UniswapV2Router02.sol,前端inteface-2.6.5)_第4张图片

initCode解析:虽然Pair合约的源码都是相同的,但是因为所用的编译器版本不同,所以生成对应的byteCode会不同,进而生成initCode也不同,所以需要替换。 

然后选择相应的测试网络进行编译部署即可。

2.前端

(1) https://github.com/Uniswap/interface.git克隆的前端的版本为2.6.5,不建议克隆最新版本的,因为现在已经是V3版本了,可能会有版本冲突问题,而且整个前端的文件布局也发生了改变。

(2)修改四个文件(需要合约地址、路由地址、initCode)

注意:替换initCode的时候需要加上0x,因为本身你所得到的initCode是没有的

a.修改src/contracts/index.ts/下的路由合约地址 

UniswapV2最新完整部署(UniswapV2Factory.sol,UniswapV2Router02.sol,前端inteface-2.6.5)_第5张图片

 b.修改接下来的文件之前需要先在该前端项目目录下运行yarn命令进行编译打包生成node_modules目录UniswapV2最新完整部署(UniswapV2Factory.sol,UniswapV2Router02.sol,前端inteface-2.6.5)_第6张图片

 c.接下来进入node_modules/@uniswap/sdk/dist/目录修改如图所示的三个文件

 UniswapV2最新完整部署(UniswapV2Factory.sol,UniswapV2Router02.sol,前端inteface-2.6.5)_第7张图片

d. constants.d.ts文件UniswapV2最新完整部署(UniswapV2Factory.sol,UniswapV2Router02.sol,前端inteface-2.6.5)_第8张图片

 e. sdk.esm.j文件UniswapV2最新完整部署(UniswapV2Factory.sol,UniswapV2Router02.sol,前端inteface-2.6.5)_第9张图片

 f. sdk.cjs.development.js文件

UniswapV2最新完整部署(UniswapV2Factory.sol,UniswapV2Router02.sol,前端inteface-2.6.5)_第10张图片

 修改完成后最后运行yarn start 就会自动在游览器弹出前端页面。

3.发布自己的Token进行测试,检测是否部署成功为自己的uniswap交易所

注意:在测试之前需要将自己metamask的网络切换为当时合约部署时相应的网络

(1)发布自己的token

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract MyToken is ERC20 {
    constructor() ERC20("MyToken", "TTT") {
        _mint(msg.sender, 10000 * 10 ** decimals());
    }
}

修改 ERC20("MyToken", "TTT") 为自己的token名称和符号

(2)提供流动性

UniswapV2最新完整部署(UniswapV2Factory.sol,UniswapV2Router02.sol,前端inteface-2.6.5)_第11张图片

(3)兑换

UniswapV2最新完整部署(UniswapV2Factory.sol,UniswapV2Router02.sol,前端inteface-2.6.5)_第12张图片

 提供完流动性后,去游览器查看交易的to地址是不是自己的路由合约地址,然后在进行相应Token的兑换,若成功就大功告成了!!!

 

 

你可能感兴趣的:(区块链,区块链)