IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 教你搭建去中心化交易所(原创) -> 正文阅读

[区块链]教你搭建去中心化交易所(原创)

首先我们去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来实现,这里就不做过多的演示了。

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-10-19 11:56:32  更:2021-10-19 11:56:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:28:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码