2023年安徽省职业院校技能大赛(高职组)"区块链技术应用"赛项竞赛任务书
目录
2023年安徽省职业院校技能大赛(高职组)"区块链技术应用"赛项竞赛任务书
模块一:区块链产品方案设计及系统运维(35分)
选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图粘贴至客户端桌面【工位号文件夹\模块一提交结果.docx】中对应的任务序号下。
任务1-1:区块链产品需求分析与方案设计
本任务需要依据项目背景完成需求分析与方案设计,具体要求如下:
区块链食品安全溯源平台中涉及消费者、生产方等多个参与方。不同的参与方在食品溯源安全平台中有着不同的业务活动。通过对不同用户群体业务活动的进行分析,可以更好的服务系统的开发流程。基于食品安全溯源业务概览图,结合背景和团队思考,撰写流程图/功能图、用例图等概要设计。
本任务需要依据项目背景完成需求分析与方案设计,具体要求如下:
- 根据项目给定的背景描述和食品安全溯源业务概览图,对食品溯源系统进行分析,编制系统业务UML用例图,用例图中包含系统参与角色以及用例。
(1)用户群体及需求分析
(2)UML用例图
- 依据给定的背景信息、食品安全溯源业务概览图以及给出的区块链食品安全溯源平台的核心流程,使用Visio或思维导图工具编制总体功能概览图;
......
任务1-2:区块链系统部署与运维
围绕食品安全溯源区块链平台部署与运维需求,进行项目相关系统、节点以及管理工具的部署工作。通过监控工具完成对网络、节点服务的监控。最终利用业务需求规范,完成系统日志、网络参数、节点服务等系统结构的维护,具体要求如下:
- 根据参数与端口设置要求,部署区块链系统并验证;
- 根据参数与端口设置要求,部署区块链网络管理平台并验证;
- 基于区块链系统相关管理平台,按照任务指南实施系统运维工作并验证;
- 基于区块链系统相关监管工具,按照任务指南对区块链系统进行监管。
子任务1-2-1: 搭建区块链系统并验证
基于给定服务器环境以及软件(地址"/root/tools"),搭建一条4节点的区块链系统并验证,具体工作内容如下:
(1)采用默认配置搭建区块链网络;
(2)通过命令验证区块链节点进程运行状况;
(3)通过命令验证区块链连接状态和共识状态日志输出。
子任务1-2-2:搭建区块链系统管理平台并验证
基于给定服务器环境以及软件(地址"/root/tools"),搭建区块链控制台并开展相关运维工作,具体工作内容如下:
(1)配置控制台,管理相关证书并启动;
(2)使用控制台安装HelloWorld智能合约;
(3)使用控制台完成HelloWorld智能合约的set与get操作;
(4)使用控制台查看区块链中区块高度。
......
任务1-3:区块链系统测试
设计对区块链系统的测试流程;结合实际业务需求,调用部署的智能合约中进行系统测试、性能测试等;根据业务需求,分析并且修复给定智能合约中的安全漏洞。利用模拟业务和测试工具来完成对区块链系统服务数据的测试。
1.基于WeBASE的部署脚本完成WeBASE环境搭建以及搭建结果验证,最后将执行结果截图保存。
- 实现WeBASE平台部署;
- 实现webase.sgin功能启动情况验证;
- webase-node-mgr进程启动情况验证和浏览器验证。
模块二:智能合约开发与测试(30分)
选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图粘贴至客户端桌面【工位号文件夹\模块二提交结果.docx】中对应的任务序号下。
任务2-1:智能合约设计
根据区块链食品溯源产品需求分析和设计文档的描述,编写该区块链产品的智能合约功能需求文档,设计该智能合约设计图。具体要求如下:
- 完成区块链食品溯源智能合约的设计图
设计区块链食品溯源智能合约接口,画出区块链食品溯源各智能合约关系的UML时序图。
......
任务2-2:智能合约开发
使用Solidity语言完成智能合约开发、部署和调用,要求如下:
- 食品信息(FoodInfoItem)的接口编码
(1)编写食品信息实体的接口,完成可溯源食品信息初始化,实现可追溯的原始生产商食品信息上链功能;
表2-2-1 FoodInfoItem实体说明
|-------------------|--------|
| 名称 | 说明 |
| _currentTraceName | 当前用户名 |
| _name | 食品名称 |
| _owner | 合约的创建者 |
| _quality | 质量 |
| _status | 状态 |
| _traceName | 用户名 |
| _timestamp | 流转时间戳 |
| _traceAddress | 用户地址 |
| _traceQuality | 食品质量 |
(2)编写分销商食品上链信息接口,根据食品溯源智能合约地址获取分销商上链食品的信息;
(3)编写超市进行食品上链信息的接口,根据食品溯源智能合约地址获取超市上链食品信息。
- 食品溯源(Trace)的接口编码
(1)编写食品溯源智能合约生产商Producer添加食品接口,必须生产商才能添加可溯源的食品,实现溯源功能;
(2)编写食品溯源智能合约分销商Distributor添加食品接口,必须分销商才能添加可溯源的食品,实现溯源功能;
(3)编写食品溯源智能合约超市Retailer添加食品接口,必须超市才能添加可溯源的食品,实现溯源功能。
......
任务2-3:智能合约测试
子任务2 -3-1 :基于 Web前置 平台的合约测试
- 解决代码错误和警告,正确编译并部署合约,成功获取部署的合约地址和abi。
- 调用食品和物流合约接口食品信息(FoodInfoItem)的接口编码、食品溯源(Trace)的接口编码、角色(Role)管理的接口编码的测试
......
模块三:区块链应用系统开发(30分)
选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图粘贴至客户端桌面【工位号文件夹\模块三提交结果.docx】中对应的任务序号下。
任务3-1:区块链应用前端功能开发
- 请基于前端系统的开发模板,在登录组件login.js、组件管理文件components.js中添加对应的逻辑代码,实现对前端的角色选择功能,并测试功能完整性,示例页面如下:
具体要求如下:
(1)有明确的提示,提示用户选择角色;
(2)用户可看到四个不同的角色可选(生产商、中间商、超市、消费者);
(3)每个用户所对应的组件请在components中找寻并填入;
(4)页面顶部要有食品溯源平台的网站标题和logo。
......
任务3-2:区块链应用后端功能开发
- 请基于已有的项目,开发完善IndexController类,编写添加食品生产信息的方法,实现食品信息的添加功能,并测试功能完整性。
本任务具体要求如下:
(1)开发文件IndexController.java中的produce方法,请求接口为/produce;
(2)开发文件IndexController.java中的produce方法,要求对前端传入的参数进行二次验证;
(3)开发文件IndexController.java中的produce方法,要求封装返回值为String,但不返回视图页面。
produce方法:
/**
* 添加食品生产信息
* traceNumber: 食品溯源id,食品溯源过程中的标识符
* foodName: 食物名称
* traceName: 用户名,食品流转过程各个阶段的用户名
* quality: 当前食品质量(0=优质 1=合格 2=不合格)
* @return:添加食品生产信息结果
*/
public String produce(@RequestBody JSONObject jsonParam) {
//TODO
}
......