目录
2023年安徽省职业院校技能大赛(高职组)“区块链技术应用”赛项竞赛任务书
选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图粘贴至客户端桌面【工位号文件夹\模块一提交结果.docx】中对应的任务序号下。
本任务需要依据项目背景完成需求分析与方案设计,具体要求如下:
区块链食品安全溯源平台中涉及消费者、生产方等多个参与方。不同的参与方在食品溯源安全平台中有着不同的业务活动。通过对不同用户群体业务活动的进行分析,可以更好的服务系统的开发流程。基于食品安全溯源业务概览图,结合背景和团队思考,撰写流程图/功能图、用例图等概要设计。
本任务需要依据项目背景完成需求分析与方案设计,具体要求如下:
(1)用户群体及需求分析
(2)UML用例图
......
围绕食品安全溯源区块链平台部署与运维需求,进行项目相关系统、节点以及管理工具的部署工作。通过监控工具完成对网络、节点服务的监控。最终利用业务需求规范,完成系统日志、网络参数、节点服务等系统结构的维护,具体要求如下:
子任务1-2-1: 搭建区块链系统并验证
基于给定服务器环境以及软件(地址“/root/tools”),搭建一条4节点的区块链系统并验证,具体工作内容如下:
(1)采用默认配置搭建区块链网络;
(2)通过命令验证区块链节点进程运行状况;
(3)通过命令验证区块链连接状态和共识状态日志输出。
子任务1-2-2:搭建区块链系统管理平台并验证
基于给定服务器环境以及软件(地址“/root/tools”),搭建区块链控制台并开展相关运维工作,具体工作内容如下:
(1)配置控制台,管理相关证书并启动;
(2)使用控制台安装HelloWorld智能合约;
(3)使用控制台完成HelloWorld智能合约的set与get操作;
(4)使用控制台查看区块链中区块高度。
......
设计对区块链系统的测试流程;结合实际业务需求,调用部署的智能合约中进行系统测试、性能测试等;根据业务需求,分析并且修复给定智能合约中的安全漏洞。利用模拟业务和测试工具来完成对区块链系统服务数据的测试。
1.基于WeBASE的部署脚本完成WeBASE环境搭建以及搭建结果验证,最后将执行结果截图保存。
选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图粘贴至客户端桌面【工位号文件夹\模块二提交结果.docx】中对应的任务序号下。
根据区块链食品溯源产品需求分析和设计文档的描述,编写该区块链产品的智能合约功能需求文档,设计该智能合约设计图。具体要求如下:
设计区块链食品溯源智能合约接口,画出区块链食品溯源各智能合约关系的UML时序图。
......
使用Solidity语言完成智能合约开发、部署和调用,要求如下:
(1)编写食品信息实体的接口,完成可溯源食品信息初始化,实现可追溯的原始生产商食品信息上链功能;
表2-2-1 FoodInfoItem实体说明
名称 | 说明 |
_currentTraceName | 当前用户名 |
_name | 食品名称 |
_owner | 合约的创建者 |
_quality | 质量 |
_status | 状态 |
_traceName | 用户名 |
_timestamp | 流转时间戳 |
_traceAddress | 用户地址 |
_traceQuality | 食品质量 |
??
(2)编写分销商食品上链信息接口,根据食品溯源智能合约地址获取分销商上链食品的信息;?
(3)编写超市进行食品上链信息的接口,根据食品溯源智能合约地址获取超市上链食品信息。
(1)编写食品溯源智能合约生产商Producer添加食品接口,必须生产商才能添加可溯源的食品,实现溯源功能;
(2)编写食品溯源智能合约分销商Distributor添加食品接口,必须分销商才能添加可溯源的食品,实现溯源功能;
(3)编写食品溯源智能合约超市Retailer添加食品接口,必须超市才能添加可溯源的食品,实现溯源功能。
......
子任务2-3-1:基于Web前置平台的合约测试
......
选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图粘贴至客户端桌面【工位号文件夹\模块三提交结果.docx】中对应的任务序号下。
具体要求如下:
(1)有明确的提示,提示用户选择角色;
(2)用户可看到四个不同的角色可选(生产商、中间商、超市、消费者);
(3)每个用户所对应的组件请在components中找寻并填入;
(4)页面顶部要有食品溯源平台的网站标题和logo。
......
本任务具体要求如下:
(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
????}
......