本合约非常适合新手学习,其包含了基本的增删改查功能以及各个方式的不同之处的总结,本套合约我也编写了truffle测试,学习truffle测试的小伙伴也有福了~
该合约的主要作用是通过区块链技术实现物流追踪系统的透明化、自动化与防篡改特性,确保包裹在整个运输过程中都能被准确、实时地追踪。它特别适用于那些希望实现去中心化物流管理的场景,减少对中心化机构的依赖,提升物流过程的效率和透明度。
目录
[1.添加包裹 (addPackage):](#1.添加包裹 (addPackage):)
[2.更新包裹信息 (updatePackage):](#2.更新包裹信息 (updatePackage):)
[3.删除包裹 (deletePackage):](#3.删除包裹 (deletePackage):)
[4.按发送者查询包裹 (getPackagesBySender 和 getPackagesBySender1):](#4.按发送者查询包裹 (getPackagesBySender 和 getPackagesBySender1):)
[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 测试功能:
自动化测试环境 : Truffle 使用
Mocha
和Chai
作为内置的测试框架,允许开发者编写 JavaScript 或 Solidity 格式的测试用例。这些工具支持异步操作和断言,确保测试灵活且直观。测试智能合约的部署和交互: Truffle 自动部署智能合约到测试网络(如本地的 Ganache 或者 Truffle 的开发网络),并模拟与合约的交互过程。你可以调用合约的各种函数并检查返回值或状态的变化。
模拟区块链行为: Truffle 测试环境可以模拟区块链上的行为,比如账户、交易、Gas 消耗等,帮助开发者捕捉智能合约中的潜在问题。
状态回滚: Truffle 支持在每个测试用例运行后,自动回滚到初始状态,这样不同的测试用例不会互相影响,确保测试结果的独立性。
断言测试结果 : 使用
Chai
断言库,开发者可以验证合约函数的返回值、事件的触发、交易的成功与否等。断言语句是测试的核心,用来确认合约在各种条件下是否表现正确。
根据本合约编写
展示部分代码:

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