metamask钱包(或者其他钱包)
remix IDE
yarn包管理工具
vsCode(前端)
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的获取
b.byteCode中object的获取
c.Router路由合约initCode替换的地方
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/下的路由合约地址
b.修改接下来的文件之前需要先在该前端项目目录下运行yarn命令进行编译打包生成node_modules目录
c.接下来进入node_modules/@uniswap/sdk/dist/目录修改如图所示的三个文件
d. constants.d.ts文件
e. sdk.esm.j文件
f. sdk.cjs.development.js文件
修改完成后最后运行yarn start 就会自动在游览器d出前端页面。
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)提供流动性
(3)兑换
提供完流动性后,去游览器查看交易的to地址是不是自己的路由合约地址,然后在进行相应Token的兑换,若成功就大功告成了!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)