Web3 solidity订单池操作

这篇具有很好参考价值的文章主要介绍了Web3 solidity订单池操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前面一篇文章因为一些原因 被设为了进自己可见 需要的朋友可以私信我
Web3 solidity订单池操作,大数据,人工智能
之前 我们编写的程序上来看 交易所无非是一个代币的托管上 只是它会更加专业
本文 我们继续来看交易所的一个功能 叫游泳池

例如 我们 100grToken 兑换 1ETH
前提 我们的代币已经能被估值了
例如 你想用人民币对美元 中间他们之间的汇率是要规定好的
但我们这里 本身就是一个模拟环境
我们直接去操作也不太合理
所以 我们这里直接开发一个游泳池功能 或者叫订单池

我们可以自己去创建订单 例如 小明发布一个 你们谁愿意用 100grToken 换 1 ETH啊
我们未完成的订单就会在我们游泳池中 如果有人觉得合适 点了这个确定 后台就会操作 将他和发布这个订单的人相应的数据扣除 完成这个订单
但也可能 某某发布了 但因为汇率变化 觉得之前发的这个不太合适了 也可以取消

这里 我们需要创建三个函数
makeOrder 创建订单
cancelOrder 取消订单
fillorder 填充订单

还是标准流程 启动我们的ganache环境
Web3 solidity订单池操作,大数据,人工智能
然后 我们这边还有个问题 我们不能很好的查到用户的 token数量
那么 我们需要在Exchange.sol中 加一个balanceof 函数 我们指定查询tokens 下 对应地址 下对应用户的值
返回一个uint256数字类型的值
然后 设置了 public函数作用域是公共的 view设置他只是读取我们区块链上的信息
Web3 solidity订单池操作,大数据,人工智能
然后 我们任何订单 都需要包含以下几个信息
id 这是数据结构最基本的东西 要有id才能标记和删除订单
创建订单的用户 因为 肯定在界面展示时也需要进行权限判断 要是当前用户 才能对订单进行删除和管理
再就是 用什么 代币 去 兑换另一种代币
时间 存储订单的创建时间

这些成员必须是要有的
我们要梳理正思想 我们没有服务器 没有数据库 所以 你生命在链上的数据结构 它就是数据存储
然后 我们在交易所 Exchange.sol 合约中声明一个这样的订单结构体

 //订单结构体
 struct _Order{
     uint256 id;
     address user;
     
     address tokenGet;
     uint256 amountGet;

     address tokenGive;
     uint256 amountGive;

     uint256 timestamp;
 }

这里 我们 的数据结构 就和上面的 对应上了 两种token的数量和地址 id 用户地址 时间搓
Web3 solidity订单池操作,大数据,人工智能
但是 这种形式 显然只支持我们创建一个订单
如果要创建多个 这种方法肯定要加码

比较简答的方式 自然就是用一个_Order类型的数组

_Order[] orderlist;

但这里 为了方便通过id查询 我选择直接

mapping(uint256=> _Order) public orders;

定义一个mapping对象属性 然后 键是一个uint256数字类型 对应订单id 然后 值 是一个_Order对象
Web3 solidity订单池操作,大数据,人工智能
学过js的朋友应该都会明白二者之前的差异
数组的是这样

[1,2,3]

而我们现在用的对象形式的是这样的

{
    0: 1,
    1: 2,
    2: 3
}

但无非 我们对象的键 我们用的是订单的id
我们就可以通过 对象[订单id] 这种形式去找到他

然后 我们再在下面创建一个

uint256 public orderCount;

数字类型 只是单纯记录一下订单的数量
Web3 solidity订单池操作,大数据,人工智能
然后 我们就可以在下面去写这个
makeOrder了 创建订单
但经过前面几篇 交易所的内容 我想大家也养成了 事件记录的好习惯
那么 这里 创建订单 我们也需要记录
我们定义一个事件

event Order(uint256 id,address user,address tokenGet,uint256 amountGet,address tokenGive,uint256 amountGive,uint256 timestamp);

Web3 solidity订单池操作,大数据,人工智能
然后 我们 编写makeOrder函数

function makeOrder(address _tokenGet,uint256 _amountGet,address _tokenGive,uint256 _amountGive) public {
    orderCount = orderCount.add(1);
    orders[orderCount] = _Order(orderCount,msg.sender,_tokenGet,_amountGet,_tokenGive,_amountGive,block.timestamp);
    emit Order(orderCount,msg.sender,_tokenGet,_amountGet,_tokenGive,_amountGive,block.timestamp);
}

然后 我们这个参数 接受 两种代币的 地址和 数量 然后 我们获取orderCount 将他加一 例如 我们第一次进来 他是0 我们将他加1 这样 他就是1 然后 我们将当前订单复制 id就是orderCount
第二次进来 orderCount 是 1 加一 就成了2
然后 我们用户还是通过msg.sender去拿 谁调用的拿谁
通过block.timestamp 获取当前时间的时间搓

将数据添加完之后 调用我们刚刚写的Order 记录一下订单信息
好 这里 我们其实还不具备测试的条件 为了保证我们代码没问题 我们在终端执行

truffle compile

Web3 solidity订单池操作,大数据,人工智能
好啊 没什么语法问题 至于测试 等我将所有订单操作都完成了 我们在做更多操作了文章来源地址https://www.toymoban.com/news/detail-652385.html

到了这里,关于Web3 solidity订单池操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 区块链web3智能合约Solidity学习资源整理

    Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。 Solidity中文官方文档: https://solidity-cn.readthedocs.io/zh/develop/ https://learnblockchain.cn/docs/solidity/index.html 在线rem

    2024年03月19日
    浏览(73)
  • 欢迎来到Web3.0的世界:Solidity智能合约安全漏洞分析

    智能合约是运行在区块链网络中的一段程序,经由多方机构自动执行预先设定的逻辑,程序执行后,网络上的最终状态将不可改变。智能合约本质上是传统合约的数字版本,由去中心化的计算机网络执行,而不是由政府或银行等中央集权机构执行。智能合约程序可以用Solidi

    2024年02月03日
    浏览(45)
  • Python编程入门基础及高级技能、Web开发、数据分析和机器学习与人工智能

    安装 Python 环境,选择一个 IDE,如 PyCharm、VSCode等。 安装 Python 环境是使用 Python 进行编程的第一步。Python 官网提供了 Windows、Linux 和 macOS 等主流操作系统的安装包,可以前往官网下载对应版本的 Python 并进行安装。 在安装完 Python 后,需要使用 pip 工具对常用的第三方库进行

    2024年02月09日
    浏览(71)
  • 操作系统、人工智能、芯片和其它

    最近出差一段时间,听到一些事,看到一些事,说点个人观感。有些话可能不好听,还希望不要被平台和谐。 从一位现在微软工作的前同事处得来的消息,微软下一代操作系统Windows 12将深度集成AI,如果再加上的它的Office全家桶,微软系人工智能将全面霸屏桌面计算市场,结

    2024年02月15日
    浏览(45)
  • 文心一言人工智能使用教程和操作方法

    文心一言 人工智能使用教程和操作方法 文心一言是一款由百度研发的基于人工智能技术的语言模型,它能够帮助人们回答各种各样的问题,同时还可以协助完成文本创作、智能办公、智能家居控制等多种任务。下面是文心一言的使用教程,希望能够帮助您更好地使用这款神

    2024年02月08日
    浏览(53)
  • web3 React dapp项目通过事件从区块链中拿到 已取消 已完成 和所有的订单数据 并存入redux中

    好 上文web3通过antd 在React dapp中构建订单组件基本结构我们算是把一个基本的订单组件展示做出来了 然后 我们继续 起一下环境先 ganache 终端运行 MetaMask 登录一下 然后 打开项目 发布一下合约 然后 运行一下 测试脚本 转入交易所 ETH和grToken 还创建两个订单 然后 运行起 dapp项

    2024年02月05日
    浏览(50)
  • 人工智能大数据专业最好的大学 - 人工智能大数据云计算三者关系

    了解大数据与人工智能的区别与联系,首先我们从认知和理解大数据和人工智能的概念开始。 1、大数据 大数据是物联网、Web系统和信息系统发展的综合结果,其中物联网的影响最大,所以大数据也可以说是物联网发展的必然结果。大数据相关的技术紧紧围绕数据展开,包括

    2023年04月21日
    浏览(48)
  • web3教学-Solidity 入门上手

    步骤大纲 1.Nodejs 2.Solidity编译器,作为npm依赖包 3.Visual Studio Code编译语法的突出显示 4.为开发人员构建的以太坊客户端ethereumjs-testrpc npm install -g solc 然后通过 solcjs-v查看版本 使用vs code进行智能合约的编写 我们打开vs code然后在里面搜索插件Solidity,然后安装 可以在vs终端输入

    2024年02月03日
    浏览(60)
  • 人工智能在物流数据分析中的应用:基于人工智能的物流智能监控与分析

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着全球经济的快速发展和物流行业的不断壮大,对物流管理的效率与质量的要求也越来越高。传统的物流管理手段已经难以满足现代物流行业的需要,人工智能技术在物流管理中的应用显得尤为重要。 1.2. 文章目的 本文旨

    2024年02月08日
    浏览(61)
  • WEB3之路(一)-- solidity学习笔记

    数值类型(Value Type) :包括布尔型,整数型等等,这类变量赋值时候直接传递数值。 引用类型(Reference Type) :包括数组和结构体,这类变量占空间大,赋值时候直接传递地址(类似指针)。 映射类型(Mapping Type) :  Solidity 里的哈希表。 函数类型(Function Type) : Solidity 文档里把函

    2024年02月02日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包