头图

一、合约源码分析
Producer.sol:生产者角色的管理合约,功能为:添加新的生产者地址、移除生产者地址、判断角色地址是否被授权
图片
Distributor.sol:中间商角色的管理合约,功能为:添加新的中间商地址、移除中间商地址、判断角色地址是否被授权
图片
Retailer.sol:零售商角色的管理合约,功能为:添加新的零售商地址、移除零售商地址、判断角色地址是否被授权
图片
FoodInfoItem.sol:食品信息管理合约,功能为:中间商添加食品信息、超市添加食品信息、获取食品流转过程、获取食品的最初状态
图片
Roles.sol:角色库,功能为:增加角色地址、移除角色地址、判断角色地址是否被授权
Trace.sol:食品溯源合约(主合约),包含了所引入合约的所有功能,以实现完整的食品溯源过程
图片
二、合约整体流程
1.部署合约主合约(Trace.sol)部署时,需要添加三个地址作为初始化地址部署,同时,他们也是合约中的生产者,中间商,零售商。
图片
部署成功后,我们此时便可以执行食品溯源的操作2.管理角色实际生产中,食品的加工、转运,销售会有许多地址,因此,我们可以使用引入的合约方法添加或者管理不同的角色地址添加角色地址
图片
例如:新添加一个生产者地址
图片
报错原因:添加生产者的操作必须由具有操作权限的生产者地址进行,此时切换生产者账户重新执行即可
图片
移除角色地址
图片
判断角色地址
图片
3.食品信息管理
部署合约时,我们已经添加了三个地址作为生产者,中间商,零售商,因此也可以直接进行食品信息管理
图片

图片
例如:添加新的食品信息,查询该食品信息
图片

图片
4.食品溯源管理
图片
例如:将上文所新添加的食品增加中间商和零售商的溯源信息
图片
此时再次进行食品信息查询
图片
可见食品(火腿肠)的状态已经更新到了销售商(小新超市),该食品已经完整的经过了生产,转运,销售的过程,而通过此合约可以清晰明了地查询食品的状态,质量,时间,过程,真正实现了食品溯源。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                       
原文链接:https://blog.csdn.net/naihe_fish/article/details/133579601
文章来源:CSDN 博主「奈何不吃鱼」
文章原标题:《【Solidity】智能合约案例——①食品溯源合约》
旨在传播区块链相关技术,如有侵权请与我们联系删除。


BSN研习社
16 声望10 粉丝