Solidity优质例子(二)物流的增删改查智能合约(附truffle测试)

本合约非常适合新手学习,其包含了基本的增删改查功能以及各个方式的不同之处的总结,本套合约我也编写了truffle测试,学习truffle测试的小伙伴也有福了~
该合约的主要作用是通过区块链技术实现物流追踪系统的透明化、自动化与防篡改特性,确保包裹在整个运输过程中都能被准确、实时地追踪。它特别适用于那些希望实现去中心化物流管理的场景,减少对中心化机构的依赖,提升物流过程的效率和透明度。

目录

一.合约功能演示

[1.添加包裹 (addPackage):](#1.添加包裹 (addPackage):)

[2.更新包裹信息 (updatePackage):](#2.更新包裹信息 (updatePackage):)

[3.删除包裹 (deletePackage):](#3.删除包裹 (deletePackage):)

[4.按发送者查询包裹 (getPackagesBySender 和 getPackagesBySender1):](#4.按发送者查询包裹 (getPackagesBySender 和 getPackagesBySender1):)

二.truffle测试

[Truffle 测试功能:](#Truffle 测试功能:)

成果:


一.合约功能演示

包裹结构体 (Package):

  • 合约定义了一个名为 Package 的结构体,用于存储每个包裹的信息,包括包裹的唯一 ID、发送者、接收者、当前位置、状态和时间戳。这些信息将帮助追踪包裹在物流链中的流转过程

1.添加包裹 (addPackage):

初始的状态设置为0,并且记录当前时间戳。

2.更新包裹信息 (updatePackage):

在这里我们不仅可以使用整体更改法也可以单独更改:(示例)

3.删除包裹 (deletePackage):

  • 该功能允许用户删除包裹信息,这意味着该包裹的记录将从系统中移除。

只需要加上我们的delete关键字,但其实并不是真的删除,只是把id对应的信息赋值为空。

4.按发送者查询包裹 (getPackagesBySender 和 getPackagesBySender1):

  • 合约提供了按发送者姓名查询该发送者所有包裹信息的功能。
  • getPackagesBySender 返回该发送者所有包裹的详细信息。
  • getPackagesBySender1 提供了更加分离的数据形式,返回发送者、接收者、当前位置、状态和时间戳等信息的数组。

这两个代码返回的形式也有一定的区别

这里面还有一个知识是,返回多个数组时需要提前确定好长度~

二.truffle测试

Truffle 是一个功能强大的开发框架,专门用于以太坊和其他基于 EVM(Ethereum Virtual Machine)的区块链开发。它提供了开发、编译、部署和测试智能合约的工具,帮助开发者快速构建去中心化应用(DApps)。其中,Truffle 测试功能特别重要,用来确保智能合约在部署到区块链前表现正确。

Truffle 测试功能:

  1. 自动化测试环境 : Truffle 使用 Mocha 和 Chai 作为内置的测试框架,允许开发者编写 JavaScript 或 Solidity 格式的测试用例。这些工具支持异步操作和断言,确保测试灵活且直观。

  2. 测试智能合约的部署和交互: Truffle 自动部署智能合约到测试网络(如本地的 Ganache 或者 Truffle 的开发网络),并模拟与合约的交互过程。你可以调用合约的各种函数并检查返回值或状态的变化。

  3. 模拟区块链行为: Truffle 测试环境可以模拟区块链上的行为,比如账户、交易、Gas 消耗等,帮助开发者捕捉智能合约中的潜在问题。

  4. 状态回滚: Truffle 支持在每个测试用例运行后,自动回滚到初始状态,这样不同的测试用例不会互相影响,确保测试结果的独立性。

  5. 断言测试结果 : 使用 Chai 断言库,开发者可以验证合约函数的返回值、事件的触发、交易的成功与否等。断言语句是测试的核心,用来确认合约在各种条件下是否表现正确。

根据本合约编写

展示部分代码:

具体方法:FISCOBCOS入门(十)Truffle测试helloworld智能合约_fisco bcos区块链测试相关题目-CSDN博客

获取源码私

相关推荐
木西10 小时前
Web3+AI 社交工程解析|MetYa 去中心化身份与 DePIN 算力方案
web3·智能合约·solidity
2601_9619633813 小时前
电子合同检索与全文搜索怎么测、怎么选:六个指标 + 五家平台对比 + 八个自测问题
数据库·后端·python·django·智能合约
极光通讯14 小时前
涨价周期里的元器件议价策略:如何判断供应商报价是否合理
区块链
重明链迹实验室18 小时前
重明链迹丨每周区块链安全要闻(1012-1018)
安全·web3·区块链
ZDGJ609919 小时前
国际黄金期货交易趋势规则
区块链
旋生万物2 天前
全息编码:从 CRC 到 Merkle Tree 到区块链的统一视角
区块链·#人工智能·#后端开发·#软件工程·#数据结构与算法·#云原生·#分布式系统
ZDGJ60992 天前
国际期货交易中如何选择交易时机?
区块链
MuMuMu12234 天前
越华环保集团碳惠小屋:物联网 + 区块链,构建碳普惠终端数据可信与隐私保护体系
物联网·区块链
IvorySQL4 天前
PostgreSQL 日报| PgBouncer 修复三个 CVE 漏洞(10 月 15 日)
数据库·postgresql·区块链
十二同学啊5 天前
反洗钱体系详解:KYC、风险评级、交易监控与可疑交易报告
web3·区块链·智能合约