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博客

获取源码私

相关推荐
2301_7760452313 小时前
场内交易和场外交易的区别详解
区块链
2301_7760452313 小时前
数字签名的特点与区块链应用要点
区块链
Shota Kishi15 小时前
解析 Solana 网络结构:通过领导者调度、验证者分布与质押集中度理解分布式区块生产
分布式·web3·去中心化·区块链
酿情师16 小时前
区块链原理与技术03:P2P 网络概述与区块链中的 P2P 网络(区块链网络与跨链操作01)
网络·区块链·p2p
区块block1 天前
BCT到底有什么不一样?
人工智能·区块链
IT召唤狮1 天前
【开源项目】EasyTier — 轻量级去中心化 SD-WAN 新范式
开源·去中心化·区块链
华万通信king1 天前
智能合约与智能合同:概念辨析与技术实现差异
智能合约·海外·docusign
视***间2 天前
智启边缘,魔盒藏锋——视程空间Pandora系列魔盒,解锁边缘计算普惠新范式
人工智能·区块链·边缘计算·ai算力·视程空间
酿情师2 天前
区块链原理与技术02:区块链的数据结构04(区块结构)
数据结构·区块链
白帽阿尔法3 天前
一篇文章认识数字人民币和区块链技术
去中心化·区块链·智能合约·信任链·分布式账本