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.按发送者查询包裹 (getPackagesBySendergetPackagesBySender1):

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

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

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

二.truffle测试

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

Truffle 测试功能:

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

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

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

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

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

根据本合约编写

展示部分代码:

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

获取源码私

相关推荐
DO_Community2 小时前
DigitalOcean携手Persistent达成战略合作,让 AI 更亲民、更易扩展
大数据·人工智能·ai·llm·区块链
AI_菲姐6 小时前
未来的 Web3 组织,将从会议开始
大数据·经验分享·web3·去中心化·区块链
MQLYES6 小时前
10-BTC-分叉
区块链
旺仔Sec8 小时前
2026年中银杯湖北省职业院校技能大赛高职组区块链技术应用任务书
运维·区块链
MQLYES1 天前
09-BTC-比特币脚本
区块链
CryptoPP1 天前
主流国际股票行情API接口横向对比:如何选择适合你的数据源?
大数据·笔记·金融·区块链
公链开发1 天前
2026 GameFi开发实战:从“玩法优先”到香港合规落地,一套可持续链游技术方案
区块链
CryptoRzz1 天前
如何高效对接美股实时行情?StockTV API 实战集成指南
java·python·flask·区块链·maven·symfony
终端域名1 天前
虚拟货币域名:加密货币与域名的碰撞 —— 构建未来互联网新生态
microsoft·区块链·加密货币·数字货币域名·网站域名
草原猫1 天前
什么是 DAPP开发?DAPP 开发到底难不难?
区块链·dapp开发