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

获取源码私

相关推荐
FakeOccupational11 分钟前
【p2p、分布式,区块链笔记 IPFS】go-ipfs windows系统客户端节点实现 kubo试用
分布式·区块链·p2p
清 晨13 小时前
Web3的去中心化社交网络:区块链技术如何改变互动方式
web3·去中心化·区块链
搬砖的小码农_Sky15 小时前
什么是区块链?
区块链
BTColdman117 小时前
MetaArena推出《Final Glory》:引领Web3游戏技术新风向
区块链
weixin_eng0204819 小时前
清仓和斩仓有什么不一样?
人工智能·金融·区块链
冲上云霄的Jayden1 天前
Hyperledger Fabric有那些核心技术,和其他区块链对比Hyperledger Fabric有那些优势
区块链·智能合约·fabric·数据隐私·共识机制·多通道技术·模块化架构
BSV区块链1 天前
BSV区块链如何确保数据真实透明
区块链
筱璦2 天前
期货跟单、量化交易模拟演示系统
区块链
sino_sound2 天前
伦敦银价格走势图种的“品字形”
金融·区块链
qiquandongkh2 天前
期权懂|个股期权交易手数有限制吗?
大数据·区块链