跟我一起阅读并修复某知名DEX交易所源码(完结篇)

跟我一起阅读并修复某知名DEX交易所源码(完结篇),第1张

在我的上一篇文章跟我一起阅读并修复某知名DEX交易所源码(4:部署工程,源码分析)

中我们 使用工程中自带的2_deploy_mdxswap.js成功执行了布署,但在输出提示中,我们并没有看到我们期望的pair ,token,factroy,router等核心合约的地址,所以实际上,我们的部署是没有任何用处的,根本没有完成我们布署完整DEX合约的目的,在本章中我们将,按照一个真正DEX的目标完成所有合约的部署。从业务角度讲,一个DEX至少要有:

1:标准的ERC20TOKEN。

2:一个生成LP合约的工厂。

3:一个描述LP的合约。

4:交换时使用的ROUTER.

5:如有必要,还需要一个可以代理业务(穿透)的RROXY合约。

6:如有必要,一个管理所有合约的ADMIN合约。

打开工程目录,我们可以找到在MDEX中,对应的TOKEN合约MDXTOKENHECO.SOL。如下 图

生成LP的的合约:MdexFactory

一个描述LP的合约:MdexPair

交换时使用的ROUTER:MdexRouter

加入相应的代码:
 

const MdxToken = artifacts.require("MdxToken");
const CoinChef = artifacts.require("CoinChef");
const MdxConfig = require('../config/config');
const MdexFactory = artifacts.require("MdexFactory");
const MdexPair = artifacts.require("MdexPair");
const MdexRouter = artifacts.require("MdexRouter");


  
module.exports = function (deployer) {
    deployer.deploy(MdexFactory, MdxConfig.mdxswap.dev_address);
    deployer.deploy(MdexPair);
    MdexFactory.deployed().then((instance)=>{
        deployer.deploy(MdexRouter,instance.address , MdxConfig.mdxswap.WHT_address);
    }
    );
    
    deployer.deploy(MdxToken).then(function() {
        return deployer.deploy(
            CoinChef,
            MdxToken.address, 
            //MdxConfig.mdxswap.dev_address, 
            //MdxConfig.mdxswap.mdx_perblock,
            MdxConfig.mdxswap.start_block
        );
    });
};

在布署过程中需要MdexFactory的布署地址做为MdexRouter的参数,还需要MdxConfig.mdxswap.WHT_address,代码如下:

const mdxswap = {
    dev_address     :   "0xef07bf6c341079e4cb1c32237165be8bef97dee7",
    mdx_perblock    :   "500000000",
    start_block     :   "7785700",
    WHT_address     :   "0xef07bf6c341079e4cb1c32237165be8bef97dee7",
}

module.exports = {
    mdxswap
}

 

注意此处的地址是我随意填的,在真正上线的时候,应当填上WHT的布署地址。 

此时在命令行中输入truffle migrate -f 1,强制从1开始部署。输出结果如下图:

Starting migrations...
======================
> Network name:    'development'
> Network id:      5777
> Block gas limit: 6721975 (0x6691b7)


1_initial_migration.js
======================

   Replacing 'Migrations'
   ----------------------
   > transaction hash:    0x4ff70237cab3bdb81e120ac2b32bed8b37a83cc443df69cbd071e2aec0d9c747
   > Blocks: 0            Seconds: 0
   > contract address:    0x27C32A4db2c921BEE169bb7686b5C3F923E0D1d2
   > block number:        1040
   > block timestamp:     1649824366
   > account:             0xEF07Bf6C341079e4cB1c32237165bE8bEF97DEE7
   > balance:             98.634334612688071691
   > gas used:            155006 (0x25d7e)
   > gas price:           2.500000008 gwei
   > value sent:          0 ETH
   > total cost:          0.000387515001240048 ETH

   > Saving migration to chain.
   > Saving artifacts
   -------------------------------------
   > Total cost:     0.000387515001240048 ETH


2_deploy_mdxswap.js
===================

   Replacing 'MdexFactory'
   -----------------------

   Replacing 'MdexRouter'
   ----------------------
   > transaction hash:    0xfed468f78c9a7f19d5cd0be93ffaf52c80fddbeaae8b19d706c4ccf73647a739
   ⠋ Blocks: 0            Seconds: 0   > transaction hash:    0xebbd2cd92c0b823583517ba50b63fcc10f1649eeae64965fc81a81f715e4da2f
   > Blocks: 0            Seconds: 0
   > contract address:    0xbd2183Fd4832d5C6F5D7ecB4c02A506f95eDA1b8
   > block number:        1042
   > block timestamp:     1649824369
   > account:             0xEF07Bf6C341079e4cB1c32237165bE8bEF97DEE7
   > balance:             98.613995852619307688
   > gas used:            4409878 (0x434a16)
   > gas price:           2.500000008 gwei
   > value sent:          0 ETH
   > total cost:          0.011024695035279024 ETH

   > Blocks: 0            Seconds: 0
   > contract address:    0x1e7BD4BC65aD9F8e3b7CCE7130D83FFb52e785cc
   > block number:        1043
   > block timestamp:     1649824369
   > account:             0xEF07Bf6C341079e4cB1c32237165bE8bEF97DEE7
   > balance:             98.613995852619307688
   > gas used:            3679971 (0x3826e3)
   > gas price:           2.500000009 gwei
   > value sent:          0 ETH
   > total cost:          0.009199927533119739 ETH

   ⠙ Blocks: 0            Seconds: 0
   Replacing 'MdexPair'
   --------------------
   > transaction hash:    0xd4301bc991f9b3207551edfd6674d07592edf18ffcd10108d7dbaff7bb70211d
   > Blocks: 0            Seconds: 0
   > contract address:    0x126bE0AA2FEfa283bb067297996AFf21CCc84376
   > block number:        1044
   > block timestamp:     1649824369
   > account:             0xEF07Bf6C341079e4cB1c32237165bE8bEF97DEE7
   > balance:             98.608268890096399838
   > gas used:            2290785 (0x22f461)
   > gas price:           2.50000001 gwei
   > value sent:          0 ETH
   > total cost:          0.00572696252290785 ETH


   Replacing 'MdxToken'
   --------------------
   ⠸ Blocks: 0            Seconds: 0   > transaction hash:    0x9ef749002b0373e02e1911230c83f935eeea9224a2301bcadde828d89fccca43
   > Blocks: 0            Seconds: 0
   > contract address:    0x503A16f419dB0dd505D6fEB7Df83D0DB2B1F2A89
   > block number:        1045
   > block timestamp:     1649824369
   > account:             0xEF07Bf6C341079e4cB1c32237165bE8bEF97DEE7
   > balance:             98.603299985076524218
   > gas used:            1987562 (0x1e53ea)
   > gas price:           2.50000001 gwei
   > value sent:          0 ETH
   > total cost:          0.00496890501987562 ETH


   Replacing 'CoinChef'
   --------------------
   ⠼ Blocks: 0            Seconds: 0   > transaction hash:    0xd3ab11dd837e6fb8d987bb5fce04b56b18885f1d0f74b38b4d035e55210ca2ba
   > Blocks: 0            Seconds: 0
   > contract address:    0x749491127FdbF5F16E9279f6F58547382e3401f1
   > block number:        1046
   > block timestamp:     1649824369
   > account:             0xEF07Bf6C341079e4cB1c32237165bE8bEF97DEE7
   > balance:             98.596628597549838668
   > gas used:            2668555 (0x28b80b)
   > gas price:           2.50000001 gwei
   > value sent:          0 ETH
   > total cost:          0.00667138752668555 ETH

   > Saving migration to chain.
   > Saving artifacts
   -------------------------------------
   > Total cost:     0.037591877637867783 ETH

Summary
=======
> Total deployments:   6
> Final cost:          0.037979392639107831 ETH

 所有6个合约已经成功部署。

5:如有必要,还需要一个可以代理业务(穿透)的RROXY合约。

6:如有必要,一个管理所有合约的ADMIN合约

这两种类型的合约,在MDEX源码里并无体现。

到此,MDEX的源码已经在本地布署完成,本系列文章也将告一段落。在我的下一系列(solidity教程)使用solidity与web3创作一个在线小游戏之一:proxy合约,call, delegatecall与callcode_lixiaodog的博客-CSDN博客中,我们实践将第5,6种类型的合约,并将完成一个运行在EVM上的娱乐小游戏,敬请期待。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/925350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存