当前位置: 首页 > news >正文

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

可能写了这么久 很多人会发现一个问
我们前面的案例 个人在交易所中的 自定义token 和 ETH 一直是放了个0
大家也不太敢确认是否真的有效
在这里插入图片描述
那么 很简单 我们操作 存入一些进交易所 不就ok了

我们 来看之前交易所写的代码 我们写了
depositEther 存入 ETH 和 depositToken 存入grtoken两个函数
在这里插入图片描述
然后 grtoken中还有一个approve 用来授权当前用户在指定交易所中可以用的grtoken 数值
在这里插入图片描述
其实这个逻辑我们之前写过 找到我们的 项目根目录 下面有个一 scripts 下面 test.js
如果没有就建一下
在这里插入图片描述
然后 我不知道大家之前有没有跟着一起写过这个 终止 test 参考代码如下

//指定以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 Eawait exchage.depositEther({from: accounts[0],value: toWei(100)})//给第一个用户 accounts[0] 交易所 授权 100000 GRTOKEN 就是我自己定义的tokenawait grTokenDai.approve(exchage.address,toWei(100000),{from: accounts[0]})//第一个用户 accounts[0] 通过交易所提供的 depositToken函数 存入100000 grTokenawait exchage.depositToken(grTokenDai.address,toWei(100000),{from: accounts[0]})//通过 exchage 交易所提供的  depositEther 函数 accounts[1] 第二个用户往交易所存入 50 Eawait exchage.depositEther({from: accounts[1],value: toWei(50)})//给第二个用户 accounts[1] 交易所 授权 50000 GRTOKEN 就是我自己定义的tokenawait grTokenDai.approve(exchage.address,toWei(50000),{from: accounts[1]})//第二个用户 accounts[1] 通过交易所提供的 depositToken函数 存入50000 grTokenawait exchage.depositToken(grTokenDai.address,toWei(50000),{from: accounts[1]})//存储订单idlet orderId = 0;//存储创建订单返回结果let res ;//调用交易所创建订单  两千 gr 对 0.2E 由第一个用户发布res = await exchage.makeOrder(grTokenDai.address,toWei(2000), ETHER_ADDRESS ,toWei(0.2),{from: accounts[0]});//接收创建完成的订单idorderId = 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]});//接收创建完成的订单idorderId = 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()
}

然后 在终端 执行代码如下

truffle exec .\scripts\test.js

指定运行 我们的 根目录下的 scripts下的 test中的脚本
在这里插入图片描述
这样 我们就 用户的 token也有了 交易所还会有订单记录
我们运行项目
这样 区块链中就保存了 我们操作的结果
在这里插入图片描述

http://www.lryc.cn/news/225069.html

相关文章:

  • unreal engine oculus 在vr场景中fade in , fade out
  • 0. 前言与大纲
  • 家乡特色饮食体验系统的设计与实现-计算机毕设 附源码 27533
  • 本地数据库迁移到云端服务器
  • SpringCloudGateway--Sentinel限流、熔断降级
  • ARMday02(汇编语法、汇编指令)
  • docker容器中运行jar 出现invalid or corrupt jarfile
  • PHP+MySQL人才招聘小程序系统源码 带完整前端+后端搭建教程
  • MongoDB常用的语句
  • MIPSsim模拟器 使用说明
  • javascript用localStorage存储用户搜索词记录,并在搜索框下展显搜索词记录
  • 20231108在Ubuntu22.04下编译安装cmake-3.27.7.tar.gz
  • 如此理解sed会简单
  • 数据库-MySQL之数据库必知必会1-9章
  • Selenium+Python自动化测试环境搭建
  • k8s存储卷 PV和PVC
  • 【架构】后端项目经典分层架构介绍
  • 二叉树的中序遍历
  • 什么是代理IP池?真实测评IP代理商的IP池是否真实?
  • 接收表单数据
  • 串口通信(11)-CRC校验介绍算法
  • 什么是Java虚拟机(JVM),它的作用是什么?
  • 力扣876:链表的中间结点
  • 三菱FX3U系列—原点回归指令
  • ES常用查询命令
  • 【Qt之元对象系统】
  • 基于FPGA的EMAC模块与FIFO模块:高速数据传输与存储
  • 大数据毕业设计选题推荐-农作物观测站综合监控平台-Hadoop-Spark-Hive
  • 高校教务系统登录页面JS分析——长沙理工大学教务系统
  • element-ui的form校验失败