使用官方项目部署 Uniswap-v2

  • 33357
  • 更新于 2022-02-03 14:18
  • 阅读 4609

使用官方项目部署 Uniswap-v2

原文发布在 https://github.com/33357/smartcontract-apps这是一个面向中文社区,分析市面上智能合约应用的架构与实现的仓库。欢迎关注开源知识项目!

获取测试代币

我们选择Rinkeby测试网络部署Uniswap-v2,首先需要获取测试代币。

使用 remix 部署合约

  • 打开 remix 官网。
  • 部署WETH

    • 编译设置
    • 新建文件 WETH.sol,将 WETH合约源码 复制过来。
    • 使用默认环境编译
    • 部署设置
    • CONTRACT 选择 WETH9,ENVIRONMENT 选择 Injected Web3
    • 连接 MetaMask 的 Rinkeby 网络进行部署。
  • 部署Factory

    • 编译设置
    • 新建文件 UniswapV2Factory.sol,将 Factor合约源码 复制过来。
    • 使用默认环境编译
    • 部署设置
    • 随便设置一个 _feeToSetter 地址之后,CONTRACT 选择UniswapV2Factory,ENVIRONMENT 选择 Injected Web3
    • 连接 MetaMask 的 Rinkeby 网络进行部署。
  • 部署Router

    • 编译设置
    • 新建文件 UniswapV2Router02.sol,将 Router合约源码 复制过来。
    • 在remix中获取 UniswapV2Factory.sol 中 CONTRACT 为 UniswapV2Pair 时 Bytecode 的object对象,粘贴到 keccak_256 后获取hash值(注意要用hex模式),替换 UniswapV2Router02.sol 中的 initCode 码(之所这么做是因为Router需要通过这个hash找到Pair的地址,而hash会随着编译环境的改变而变化,真他妈是个鬼才!)
    • 允许 Enable optimization(不然会因为bytecode 过长部署失败)进行编译。
    • 部署设置
    • 填入上面的 Factory 和 WETH 地址之后,CONTRACT 选择 UniswapV2Router02,ENVIRONMENT 选择 Injected Web3
    • 连接 MetaMask 的 Rinkeby 网络进行部署。

部署前端

  • 编译环境

    • ubuntu 20.04
    • node v16.13.0
    • npm 8.1.4
    • yarn 1.22.17
  • 下载项目

    • 下载 Uniswap-v2 版的interface,这里我选择的 uniswap-interface 版本是 v2.6.5
  • 安装运行

    • 进入项目根目录后,执行 yarn && yarn start ,安装好依赖后确认可以成功启动。
  • 替换地址

    • 项目根目录下检索(包括 node_modules/@uniswap/ )“0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D”替换成你部署的 router 地址
    • 检索 “0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f”替换成你部署的 factory 地址
    • 检索“96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f”替换成你部署 Pair 的 initcode
    • 检索“0xc778417E063141139Fce010982780140Aa0cD5Ab”替换成你部署的 WETH 地址
  • 重新执行

    • 执行 yarn start,测试添加流动和 swap 交易。

发布到github

  • 安装gh-pages

    • yarn add gh-pages
  • 生成前端代码

    • yarn build
  • 修改配置文件

    • 修改package.json文件中的"homepage"属性为"https://用户名.github.io/项目名称"
    • 添加package.json文件中的"scripts"属性"deploy": "gh-pages -d build"
  • 发布项目到github

    • git add .
    • git commit -m "first commit"
    • git push
  • 部署前端界面

点赞 2
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

2 条评论

请先 登录 后评论
33357
33357
0x1f24...fa59
传播区块链技术,躺赢未来人生