首先我們去github下載一個swap的前端,
uniswap前端地址
下載完成之后,去復制2份合約,一個是uniswap的工廠合約一個是路由合約
工廠合約
路由合約
復制下來之后我們來到remix編輯器 然后將工廠合約粘貼進去,

在這個紅色的這里加一段代碼方便讀取initCode,
a bytes32 public constant INIT_CODE_PAIR_HASH = keccak256(abi.encodePacked(type(UniswapV2Pair).creationCode));
然后我們開始編譯這個合約,注意編譯的時候evm要選擇istanbul然后勾選第二個,
編譯完成之后然后開始部署,在部署的時候,建構式哪里填寫收取手續費的地址,
完成部署之后我們就可以開始部署路由合約了,在建構式哪里填寫工廠合約的地址和WETH的地址,
mainnet:'0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'
ropsten:'0xc778417E063141139Fce010982780140Aa0cD5Ab'
rinkeby:'0xc778417E063141139Fce010982780140Aa0cD5Ab'
goerli:'0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6'
kovan:'0xd0A1E359811322d97991E03f863a0C30C2cF029C'
如果不想用這上面的WETH地址也可以自己部署一個,
pragma solidity ^0.4.18;
contract WETH9 {
string public name = "Wrapped Ether";
string public symbol = "WETH";
uint8 public decimals = 18;
event Approval(address indexed src, address indexed guy, uint wad);
event Transfer(address indexed src, address indexed dst, uint wad);
event Deposit(address indexed dst, uint wad);
event Withdrawal(address indexed src, uint wad);
mapping (address => uint) public balanceOf;
mapping (address => mapping (address => uint)) public allowance;
function() public payable {
deposit();
}
function deposit() public payable {
balanceOf[msg.sender] += msg.value;
Deposit(msg.sender, msg.value);
}
function withdraw(uint wad) public {
require(balanceOf[msg.sender] >= wad);
balanceOf[msg.sender] -= wad;
msg.sender.transfer(wad);
Withdrawal(msg.sender, wad);
}
function totalSupply() public view returns (uint) {
return this.balance;
}
function approve(address guy, uint wad) public returns (bool) {
allowance[msg.sender][guy] = wad;
Approval(msg.sender, guy, wad);
return true;
}
function transfer(address dst, uint wad) public returns (bool) {
return transferFrom(msg.sender, dst, wad);
}
function transferFrom(address src, address dst, uint wad)
public
returns (bool)
{
require(balanceOf[src] >= wad);
if (src != msg.sender && allowance[src][msg.sender] != uint(-1)) {
require(allowance[src][msg.sender] >= wad);
allowance[src][msg.sender] -= wad;
}
balanceOf[src] -= wad;
balanceOf[dst] += wad;
Transfer(src, dst, wad);
return true;
}
}
這里我們簡單的講一下WETH合約
deposit()這個函式就是用來進行存款的(也可以說是用來兌換WETH的) 比如你像這個合約打款一個ETH,然后合約會給你的地址鑄造一個WETH,
withdraw()這個函式是一個用來換取ETH的函式,比如你的地址上面有一個WETH,呼叫這個函式之后他會把你的一個WETH銷毀,然后給你的地址返還一個ETH,
在部署路由合約之前還要注意很重要的一點那就是要替換initcode,呼叫工廠合約里面的INIT_CODE_PAIR_HASH()函式來讀取initcode值,

復制之后來到路由合約這里將剛才讀取的initcode的值粘貼進去,

編譯之后開始部署 在建構式那里填工廠的合約地址和WETH的合約地址,

完成這個之后我們開始部署前端,下載好前端之后我們開始替換前端代碼,
1、interface-2.6.0\node_modules@uniswap\sdk\dist\constants.d.ts
export declare enum ChainId {
MAINNET = 1,
ROPSTEN = 3,
RINKEBY = 4,
G?RLI = 5,
KOVAN = 42
}
export declare const FACTORY_ADDRESS = "0xE7824a766623AB61b55dB9Ff04CB9632f50D69Aa";
export declare const INIT_CODE_HASH = "0x44b0d405975fcf8284b36e843fceefe22d0ca22cedb0ad7ec35f8b7999946ef6";
替換完這個之后用npm或者是yarn進行安裝
然后利用notepad++進行全域替換路由合約地址 工廠合約地址 和initcode,
替換完成之后用yarn start命令運行前端,
可以看見已經搭建完成,

如果要添加自己的代幣可以通過修改tokenlist來實作,這里就不做過多的演示了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/321339.html
標籤:區塊鏈
上一篇:當你點擊一個按鈕超過一次時,你如何阻止多個表單的打開?
下一篇:努力提升自己才是當下應該做的
