Web3 solidity编写cancelorder取消订单函数 并梳理讲述逻辑

这篇具有很好参考价值的文章主要介绍了Web3 solidity编写cancelorder取消订单函数 并梳理讲述逻辑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上文 Web3 solidity订单池操作 中 我们讲述了订单池的基本概念 并手动编写了创建订单的操作
最近的 我们还是先将 ganache 环境起起来
Web3 solidity编写cancelorder取消订单函数 并梳理讲述逻辑,web3
然后 我们打开项目
Web3 solidity编写cancelorder取消订单函数 并梳理讲述逻辑,web3
上文中 我们写了makeOrder创建订单的函数
但是 也带出一个问题 我们创建之后 如果不要了 怎么干掉呀?
js中我们有 splice
但solidity中没有啊

它只有push pop只能删最后一个
者就是 一种类似于删对象的形式直接用delete去删除 但删完之后这个位置就空出来了 我们还需要移动后面的往前去

至于本文的话 这个操作 我们不会去讲
因为 我们取消订单 一定不能让他再出现在界面上 但没必要删他 因为我们需要记录
例如 我们 京东 美团这样的App,你取消了订单 但你在自己的订单中 依旧可以看到已经取消的订单

所以无论是 结束的 创建完成的 已取消的 他都会在我们的orders中存在
Web3 solidity编写cancelorder取消订单函数 并梳理讲述逻辑,web3
所以 我们完全可以给 _Order 加一个字段
Web3 solidity编写cancelorder取消订单函数 并梳理讲述逻辑,web3
类型的话 我们使用uint256数字类型 方便我们做枚举操作
名字叫 orderState 方便大家顾名思义
我们完全可以标记为 0 创建完成 1 已完成 2 已取消

这里 其实也很多老外 喜欢直接多建一个数组 直接存取消的订单 反正 这东西 主要是个解决方案 大家都有自己的写法

这里 我们就不要这个orderState了
我们再上面定义一个

mapping(uint256=>bool) public orderCancel;

我们创建一个 mapping 对象 键是 数字类型 存放订单的id 然后 值是一个布尔类型 用来存是否已经删除
Web3 solidity编写cancelorder取消订单函数 并梳理讲述逻辑,web3
好 接下来 我们就来写这个 cancelorder 取消订单的函数
编写代码如下

//取消订单  方法接受一个参数  订单id  代理名叫  _id
function cancelorder(uint256 _id) public {
    //根据传进来的订单id 获取到当前订单的对象
    _Order memory myorder = orders[_id];
    //判断id有没有取错
    require(myorder.id == _id);
    //将删除的数据的id 存入orderCancel  值赋值为 true 表示已经取消
    orderCancel[_id] = true;
    //最后 调用函数记录一下取消订单的事件
    emit Cancel(myorder.id,msg.sender,myorder.tokenGet,myorder.amountGet,myorder.tokenGive,
    myorder.amountGive,block.timestamp);
}

这个函数接受一个id 你的告诉我你要取消哪个订单呀 对不对 就想我们删除功能 你不给条件 任何语言它都白扯啊
然后 我们通过id 去找我们之前写的orders集合中对应这条id的对象
然后 找出对象之后 我们通过require判断 他们的id是不是一样的 避免我们拿出来的东西有问题
然后我们给刚刚创建的orderCancel记录一条数据 键为订单的id 值为true 表示他已经取消了

然后 我们最后 调用Cancel来记录取消订单的事件发生
这里参数 用myorder 也就是 我们开始通过id 在集合中找出的订单对象
但这里 我们的Cancel还没写

这里我们直接在Order 下面创建一个一模一样的 叫 Cancel
也是非常简单 反正我们事件是随便取名的
Web3 solidity编写cancelorder取消订单函数 并梳理讲述逻辑,web3
最后 我们暂时还是没有完整的环境测试 至少 现在可以看出语法有没有问题
我们终端执行

truffle compile

Web3 solidity编写cancelorder取消订单函数 并梳理讲述逻辑,web3
编译起来至少现在语法没有任何问题文章来源地址https://www.toymoban.com/news/detail-699143.html

到了这里,关于Web3 solidity编写cancelorder取消订单函数 并梳理讲述逻辑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 对Web3.0概念的梳理

    随着Bitcoin的天启事件(参见:《比特币白皮书》),近年来技术领域涌现出一大批新名词。这些名词的意义以及它们之间的关联,别说普通人不容易理解,就连混迹业界多年的资深人士也很难分得清。因为这些概念已经不再局限在纯技术领域了,它们是多学科交叉的前沿领域

    2024年02月03日
    浏览(33)
  • 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日
    浏览(55)
  • WEB3之路(一)-- solidity学习笔记

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

    2024年02月02日
    浏览(51)
  • 基于web3+solidity的众筹项目

    基本配置:`node`、`npm`、`yarn`,安装`ganache`,`chrome`,`chrome`安装插件`MetaMask`, 主要功能:目的是实现一个简单的众筹平台,允许用户发起筹款项目、捐款、提出使用资金请求以及证明人证明。  部分合约:  1.首先打开ganache软件,进行如下配置,    2.然后通过私钥在metam

    2024年02月02日
    浏览(83)
  • 【区块链 | Solidity】Solidity开发教程:用Web3.js构建第一个Dapp

    Web3.js 使用的实用介绍 原文 作者:wissal haji 欢迎订阅《Solidity智能合约零基础开发教程专栏》系列文章。 如果你一直在跟着这个系列学习,那么你已经掌握了编写自己的智能合约。 因此,今天给大家介绍一下构建去中心化应用的全貌,并向大家介绍一下web3.js,这是构建da

    2024年01月24日
    浏览(50)
  • 区块链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日
    浏览(69)
  • web3 solidity 基础 ERC20 大白话搞懂

    ERC20 是 eth 的一个标准,怎么理解标准一词呢? 标准是大家遵循的一个协议,根据这个协议大家都知道该怎么去做,例如去吃饭的时候人多,你就需要排队,然后去窗口跟阿姨说你要吃什么,阿姨就会帮你打;若你不准守这个标准,直接冲进后厨,翻开泔水,大喊着我要吃饭

    2024年01月22日
    浏览(44)
  • 目录(文章更新中...)《实战NFT web3 solidity(新版本0.8.+)》

    注:由于是付费专栏内容,若有错误请及时联系@1_bit,博客链接:https://blog.csdn.net/A757291228 ,或在文章下留言,收到后将会对错误进行改正,若是版本更新导致的问题也希望大家对错误进行提交,尽力去保证付费用户该得到的权益。 友情提示:本系列文章读者最好学过一门编

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

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

    2024年02月03日
    浏览(44)
  • 【区块链学习最全教程】学习 Solidity,全栈 Web3,Javascript 和区块链开发

    Chainlink 开发者社区发布了一个关于全栈 web3,solidity 和区块链开发的完整视频教程。本视频教程由 Chainlink 开发者大使 Patrick Collins 讲解。教程由浅入深讲解了区块链的基础知识,智能合约基础以及流行的开发工具。视频内容覆盖广泛,不论是初学者还是资深工程师,都会从中

    2023年04月09日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包