web3案例中解决交易所中 ETH与token都是0问题 并帮助确认展示是否成功

可能写了这么久 很多人会发现一个问

我们前面的案例 个人在交易所中的 自定义token 和 ETH 一直是放了个0

大家也不太敢确认是否真的有效

那么 很简单 我们操作 存入一些进交易所 不就ok了

我们 来看之前交易所写的代码 我们写了

depositEther 存入 ETH 和 depositToken 存入grtoken两个函数

然后 grtoken中还有一个approve 用来授权当前用户在指定交易所中可以用的grtoken 数值

其实这个逻辑我们之前写过 找到我们的 项目根目录 下面有个一 scripts 下面 test.js

如果没有就建一下

然后 我不知道大家之前有没有跟着一起写过这个 终止 test 参考代码如下

javascript 复制代码
//指定以token grtoken合约
const GrToken = artifacts.require("grToken.sol")
//交易所合约
const Exchange = artifacts.require("Exchange.sol")
//定义E代理地址
const ETHER_ADDRESS = '0x0000000000000000000000000000000000000000';

const fromWei = (bn) => {
  return web3.utils.fromWei(bn, "ether");
}
const toWei = (bn) => {
    return web3.utils.toWei(bn.toString(), "ether");
}

module.exports = async function(callback) {
    const grTokenDai = await GrToken.deployed();
    const exchage = await Exchange.deployed();
    //获取用户列表
    const accounts = await web3.eth.getAccounts();
    //第一个账户 调用transfer 发送100000 grtoken给第二个用户 accounts[1]
    await grTokenDai.transfer(accounts[1],toWei(100000),{
        from: accounts[0]
    })
    //通过 exchage 交易所提供的  depositEther 函数 accounts[0] 第一个用户往交易所存入 100 E
    await exchage.depositEther({
        from: accounts[0],
        value: toWei(100)
    })

    //给第一个用户 accounts[0] 交易所 授权 100000 GRTOKEN 就是我自己定义的token
    await grTokenDai.approve(exchage.address,toWei(100000),{
        from: accounts[0]
    })

    //第一个用户 accounts[0] 通过交易所提供的 depositToken函数 存入100000 grToken
    await exchage.depositToken(grTokenDai.address,toWei(100000),{
        from: accounts[0]
    })

    //通过 exchage 交易所提供的  depositEther 函数 accounts[1] 第二个用户往交易所存入 50 E
    await exchage.depositEther({
        from: accounts[1],
        value: toWei(50)
    })

    //给第二个用户 accounts[1] 交易所 授权 50000 GRTOKEN 就是我自己定义的token
    await grTokenDai.approve(exchage.address,toWei(50000),{
        from: accounts[1]
    })

    //第二个用户 accounts[1] 通过交易所提供的 depositToken函数 存入50000 grToken
    await exchage.depositToken(grTokenDai.address,toWei(50000),{
        from: accounts[1]
    })

    //存储订单id
    let orderId = 0;
    //存储创建订单返回结果
    let res ;
    //调用交易所创建订单  两千 gr 对 0.2E 由第一个用户发布
    res = await exchage.makeOrder(grTokenDai.address,toWei(2000), ETHER_ADDRESS ,toWei(0.2),{
        from: accounts[0]
    });
    //接收创建完成的订单id
    orderId = res.logs[0].args.id
    //告诉我们订单创建好了
    console.log("创建成功"+res.logs[0].args.id)
    //通过id取消订单
    await exchage.cancelorder(orderId,{
        from: accounts[0]
    })
    console.log(orderId,"取消订单成功")


    //调用交易所创建订单  一千 gr 对 0.1E 由第一个用户发布
    res = await exchage.makeOrder(grTokenDai.address,toWei(1000), ETHER_ADDRESS ,toWei(0.1),{
        from: accounts[0]
    });
    //接收创建完成的订单id
    orderId = res.logs[0].args.id
    //告诉我们订单创建好了
    console.log("创建成功"+res.logs[0].args.id)
    //利用用户 accounts[1] 来完成这个订单
    await exchage.fillorder(orderId,{from: accounts[1]})
    console.log("完成订单")

    // 获取第一个用户在交易所中的E数值
    let res1 = await exchage.tokens(ETHER_ADDRESS,accounts[0])
    console.log(fromWei(res1)+":E");
    //获取第一个用户 在交易所中 grtoken的数量
    let res2 = await exchage.tokens(grTokenDai.address,accounts[0])
    console.log(fromWei(res2)+":grtoken");

    // 获取第二个用户在交易所中的E数值
    let res3 = await exchage.tokens(ETHER_ADDRESS,accounts[1])
    console.log(fromWei(res3)+":第二个用户 E");
    // 获取第二个用户的 grtoken 并输出
    let res4 = await exchage.tokens(grTokenDai.address,accounts[1])
    console.log(fromWei(res4)+":第二个用户 grtoken");

    callback()
}

然后 在终端 执行代码如下

javascript 复制代码
truffle exec .\scripts\test.js

指定运行 我们的 根目录下的 scripts下的 test中的脚本

这样 我们就 用户的 token也有了 交易所还会有订单记录

我们运行项目

这样 区块链中就保存了 我们操作的结果

相关推荐
TechubNews10 小时前
BTC 短暂突破 7.6 万美元,加密市场预期改善,8 万美元成关键测试位?
区块链
终有zy10 小时前
智能合约审计全流程详解:从致命危害到漏洞修复实战
区块链·智能合约·安全威胁分析
coft11 小时前
读懂加密市场(二):建立你的认知框架
区块链
MicroTech202513 小时前
微算法科技(NASDAQ :MLGO)使用量子信息技术和区块链构建弹性Web 3.0
科技·区块链·量子计算
coft14 小时前
读懂加密市场(三):合约、DEX 与工具
区块链·数字货币·交易·加密市场
电报号dapp1191 天前
区块链DApp开发深度解析:概念拆解+技术架构+应用前景
架构·web3·去中心化·区块链·智能合约
MicroTech20251 天前
微算法科技(NASDAQ :MLGO)面向区块链的系统的高效反量子晶格盲签名技术
科技·算法·区块链
电报号dapp1191 天前
公链 + DID,解锁 Web3 数字身份新范式
人工智能·web3·去中心化·区块链·智能合约
木西2 天前
RaveDAO Pro:Web3 票务系统的完整技术实现
web3·智能合约·solidity
电报号dapp1192 天前
交易所开发:构建数字资产交易的安全与高效平台
安全·web3·去中心化·区块链·智能合约