2023年区块链职业技能大赛——区块链应用技术(一)模块二

模块二:智能合约开发与测试

 任务2-1:根据区块链食品溯源任务需求分析和方案设计文档的描述,编写该区块链产品的智能合约功能需求文档,以及设计该智能合约UML图;

 具体要求如下:

 子任务2-1-1:编写区块链食品溯源智能合约功能需求文档

    根据区块链食品溯源产品项目背景和需求分析,编写该区块链食品溯源的智能合约功能需求文;

参考答案:

  1.具备合约用户管理功能,包括创建用户以及查询用户信息的功能,与其相关联的需要具备用户权限功能.

  2.具备生产订单管理功能,包括创建与查询订单功能,在创建生产订单功能中限制该功能只能具有生产权限的人员使用,并且加入订单创建时需要与产业链的总订单信息,从而与产业链的其他业务关联

子任务2-1-2:完成区块链食品溯源智能合约的设计图

   设计区块链食品溯源智能合约接口,画出区块链食品溯源智能合约的角色UML用例图,以及画出区块链食品溯源各智能合约关系的时序图.

参考答案:

        略

任务2-2:使用solidity语言进行智能合约开发,部署和调用

 

具体要求如下:

1.食品信息(FoodInfoItem)的接口编码

1.编写食品信息实体的接口,完成可溯源食品信息初始化,实现可追溯的原始生产商食品信息上链功能;

表2.2.2.1 FoodInfoItem实体说明

名称

类型

说明

_currentTraceName

string

当前用户名

_name

string

食品名称

_owner

address

合约的创建者

_quality

uint8

质量

_status

uint8

状态

_traceName

string[]

用户名

_timestamp

uint[]

流转时间戳

_traceAddress

address[]

用户地址

_traceQuality

uint8[]

食品质量

参考答案:

2.编写分销商食品上链信息接口,根据食品溯源智能合约地址获取分销商上链食品的信息;

参考答案:

3.编写超市进行食品上链信息的接口,根据食品溯源智能合约地址获取超市上链食品信息;

参考答案:

2.食品溯源(Trace)的接口编码

1.编写食品溯源智能合约生产商Producer添加食品接口,必须生产商才能添加可溯源的食品,实现溯源功能;

参考答案:

2.编写食品溯源智能合约分销商Distributor添加食品接口,必须分销商才能添加可溯源的食品,实现溯源功能;

参考答案:

3食品溯源智能合约超市Retailer添加食品接口,必须超市才能添加可溯源的食品,实现可溯源功能;

参考答案:

3.角色(Role)管理的接口编码

1.编写食品溯源增加角色接口,必须是未增加的角色才能被添加,实现添加角色的功能;

参考答案:

2.编写食品溯源移除角色接口,必须是已增加的角色才能被移除,实现移除角色的功能;

参考答案:

3.编写食品溯源角色授权接口,必须是授权的角色地址,实现角色权限管理功能;

参考答案:

4.合约编译,部署和调用

 1.解决代码错误和警告,正确编译并部署合约,成功获取部署的合约地址和abi

参考答案:

e369ab8d810e472e9b54380558a56bd8.pngcbec1ff39fe747e192b6ac9c125dfdfd.png 2.调用食品溯源智能合约的接口,完整验证业务流程;

参考答案:

be89a2fda14b4c15b6aef078a0988697.png

d861bbc19ce54408950f9c821161b137.png

任务2-3:智能合约测试,使用Truffle进行智能合约代码测试;

根据给定的智能合约代码,加载进入Truffle项目,根据指定要求实现智能合约的单元测试;

1:配置区块链网络

   启动Ganache软件,创建新的Wordspace,配置对外访问的RPC接口为7545,配置项目的truffle-config.js实现与新建Workspace连接.

参考答案:

65ea7fdc737b44738e5d2a909f7a8516.png2:设置ProducerId和sellederId两个变量

   基于VSCODE加载的Truffle项目,补全位于test文件夹中的foodTraceNew.js文件预操作的方法.在测试文件中添加预定义的方法(在其他方法启动前使用),在方法中分别设置producerId和sellederId两个变量,具体要求如下:

   (1).producerId设置为1

   (2).sellederId设置为4

参考答案:

添加代码(beforeEach)如下:

21be4588be5548168abb1c1e260288a4.png3.补全createMember和getMember方法

    基于VSCODE加载的Truffle项目,补全位于test文件夹中foodTraceNew.js文件,添加测试用例,测试智能合约的createMember和getMember方法.

参考答案:

​​​在测试文件中编译代码如下:

af6c6e34c194444199be2b7e82420e93.png执行成功将有如下显示内容:

dbb296ee8b6449bb969fbbac19e0af8e.png4.测试createOrder和getOrder方法

    基于VSCODE加载的Truffle项目,补全位于test文件夹中foodTraceNew.js文件,添加测试用例,测试智能合约的createOrder和getOrder方法.

参考答案:

具体测试用例代码如下:

3b9b5852654444d497eae84668012786.png执行结果如下:

3a97e2a8d439453e98f3e4741d6c04d5.png

5.测试createFood和getFood方法

    基于VSCODE加载的Truffle项目,补全位于test文件夹中foodTraceNew.js文件,添加测试用例,测试智能合约的createFood和getFood方法.

参考答案:

2b1671a044094709ab49f543cc5f650f.png结果如下:

c2c8150dd0f64c53bdf81128da5123e5.png

 

 

  • 18
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值