2025年广东省职业院校技能大赛高职组"区块链技术应用"竞赛试题(二)
文章目录
- 2025年广东省职业院校技能大赛高职组"区块链技术应用"竞赛试题(二)
-
- [模块一:区块链产品方案设计及系统运维(35 分)](#模块一:区块链产品方案设计及系统运维(35 分))
-
- [任务 1-1:区块链产品需求分析与方案设计](#任务 1-1:区块链产品需求分析与方案设计)
- [任务 1-2:区块链系统部署与运维](#任务 1-2:区块链系统部署与运维)
- [任务 1-3:区块链系统测试](#任务 1-3:区块链系统测试)
- [模块二:智能合约开发与测试(40 分)](#模块二:智能合约开发与测试(40 分))
-
- [任务 2-1:智能合约设计](#任务 2-1:智能合约设计)
- [任务 2-2:智能合约开发](#任务 2-2:智能合约开发)
- [任务 2-3:智能合约测试](#任务 2-3:智能合约测试)
- [模块三:区块链应用系统开发(20 分)](#模块三:区块链应用系统开发(20 分))
-
- [任务 3-1:区块链应用前端功能开发](#任务 3-1:区块链应用前端功能开发)
- [任务 3-2:区块链应用后端功能开发](#任务 3-2:区块链应用后端功能开发)
- 需要培训支持可联系博主!
🔷博主介绍
致力于网络安全(漏洞挖掘、攻防实战)、Linux 内核系统(底层原理与性能调优)、区块链技术(Web3 安全与智能合约审计)、Python 语言应用(自动化攻防工具开发)、软件开发(全栈安全开发)等新一代信息技术领域的技术研究与干货分享,坚持以
极简篇幅承载硬核知识的创作理念,为技术爱好者提供高效、深度、可落地的阅读体验。CSDN认证网络安全领域优质创作者 、网络安全博客专家认证 、阿里云专家博主。
🌐各大技术专栏推荐
| 专栏名称 | 专栏介绍 |
|---|---|
| 网络安全攻防之道 | 为网络安全从业者、白帽黑客与技术爱好者打造的攻防知识阵地。深度剖析漏洞利用与防御的技术细节,实战演练渗透测试全流程,输出可落地的攻防策略,陪你在攻防对抗中持续进阶。 |
| Linux 系统运维:从底层原理到企业级实战 | 这里是 Linux 系统运维的实战修炼场:从系统初始化到高可用架构,从命令行魔术到自动化运维利器,深度拆解 CentOS/Ubuntu 在企业级业务、云原生环境中的运维密码。带你穿透系统底层逻辑,掌握性能调优、故障秒级定位、自动化脚本开发的硬核技能,进阶成为能扛住业务压力的 Linux 运维专家 |
| 【VulnHub 靶场攻防】从漏洞复现到实战渗透 | 不管你是刚入门的渗透新人,还是想强化实战能力的安全工程师,都能在这儿找到匹配的靶场练手项目。我们聚焦可复现的漏洞利用技巧,结合 Nmap、Metasploit、BurpSuite 等工具实战演示,帮你把靶场经验转化为真实渗透能力,一步步成长为能在实战中 "打怪升级" 的渗透高手 |
| 博主年度总结与收获 | 这里是旺仔 Sec 的创作成长日记!作为 CSDN 认证的网络安全优质创作者,我把每一年的技术深耕、创作思考、成长突破都浓缩在这儿 ------ 从漏洞分析的技术沉淀,到内容创作的经验复盘,再到从工程师到博主的身份进阶,每一篇总结都是 "技术探索 + 创作感悟" 的双料干货 |
🤵♂️ 个人博客主页: @旺仔Sec的博客主页
WeChat公众号:鹏璃安全✍🏻 博主身份:网络安全兼技能大赛工程师(NISP、CISP、华为IE、IP、redhat、软考等职业证书报考可找我报考!)
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注(各大技能大赛参考答案链接如下)
🖥️:软件测试技能大赛参考答案
模块一:区块链产品方案设计及系统运维(35 分)
选手完成本模块的任务后,将任务中软件建模图、配置文件、运行结果等截图(截图内容清晰且完整)和文字内容粘贴至客户端桌面【工位号文件夹\模块一提交结果.docx】中对应的任务序号下。
任务 1-1:区块链产品需求分析与方案设计
航班延误险中涉及到乘客、航空公司、区块链系统平台、保险公司等参与方,他们需要在区块链系统平台中完成账户注册、身份上链、机票购买、保险购买等多种业务活动。通过对业务活动的功能分析,可以更好的服务系统的开发流程。基于航班延误险系统架构图,以区块链航班延误系统为背景,结合账户注册、登录服务、入驻上链、购买机票等核心功能描述,使用 Visio 绘制用例图、功能图、架构图等概要设计。
本任务需要依据项目背景完成需求分析与方案设计,具体要求如下:
1.根据区块链航班延误险平台项目背景描述,对区块链航班延误险平台进行需求分析,完成以下任务:
(1)编写用户群体需求分析,明确系统用户群体及其需求;
(2)绘制系统 UML 用例图,用例图中包含系统参与角色以及用例。
2.依据延误险系统业务流程以及给出的航班延误系统的核心流程,使用 Visio
绘制业务系统功能图;
表 1-1-1 航班延误险系统的核心流程
| 发布理赔协议流程 | 保险公司起草航班延误险理赔协议,使用保险公司的私钥对理赔协议进行签名并广播到区块链中 |
|---|---|
| 生成航班延误险理赔合约流程 | 乘机人购买航空公司的机票后,通过乘机人节点在理赔协议中填写个人信息和航班信息,生成航班延误险理赔合约 |
| 理赔合约属性文本广播流程 | 乘机人对航班延误理赔合约提炼合约属性文本,使用私钥对合约属性本文以及理赔合约进行签名后广播到区块链中 |
| 航班延误赔付流程 | 链上节点实时监控航班时间,并在航班延误满足条件时,判断保险公司对乘机人的航班延误赔付 |
3.按照基础层、合约层、接口层以及应用层的结构来设计区块链系统的架构,其中在基础层需指明需要的节点、名称、协议、存储等信息,使用 Visio 绘制系统架构图。
任务 1-2:区块链系统部署与运维
围绕区块链航班延误险平台部署与运维需求,进行项目相关系统、节点以及管理工具的部署工作。通过监控工具完成对网络、节点服务的监控。最终利用业务需求规范,完成系统日志、网络参数、节点服务等系统结构的维护,具体要求如下:
1.根据参数与端口设置要求,部署区块链系统并验证;
2.根据参数与端口设置要求,部署区块链网络管理平台并验证;
3.基于区块链系统相关管理平台,按照任务指南实施系统运维工作并验证;
4.基于区块链系统相关监管工具,按照任务指南对区块链系统进行监管。子任务 1-2-1: 搭建区块链系统并验证
基于给定的虚拟机环境 M1-A、M1-B 以及链环境(地址"/root/tools"),搭建如下图所示的双机、三机构、二群组、七节点的星形组网拓扑区块链系统。其中,二群组名称分别为 group1、group2,三个机构名称为 agencyA、agencyB、 agencyC。p2p_port、channel_port、jsonrpc_port 起始端口分别为 30330、20230、 8545,确保搭建的区块链系统能正常运行。

具体工作内容如下:
(1)采用默认配置分别搭建双主机区块链网络;
(2)通过命令分别在 M1-A 和 M1-B 上验证区块链节点进程运行状况;
(3)通过命令分别在 M1-A 和 M1-B 上验证区块链连接状态和共识状态日志输出。
子任务 1-2-2:搭建区块链系统管理平台并验证
基于给定服务器环境以及软件(地址"/root/tools"),搭建区块链控制台并开展相关运维工作,具体工作内容如下:
(1)在 M1-A 主机上面配置控制台,修改配置信息,使用 Console 连接
agencyB 中节点,部署 HelloWorld.sol 智能合约;
(3)使用控制台完成 HelloWorld.sol 智能合约中的 set 与 get 方法操作;
(3)使用机器 M1-A 控制台检查区块链中的当前区块高度以及查看部署合约的交易详情。
子任务 1-2-3:区块链节点运维
基于已完成的区块链系统与管理平台搭建工作,开展区块链节点的加入与退出运维工作,具体内容如下:
(1)基于服务器中的扩容工具,在机器(M1-B)上进行新节点(Node7)扩容并加入群组 Group1;
(2)使用机器(M1-B)检查扩容完成的区块链节点(Node7)的连接状况以及新节点在群组(Group1)中的共识状态;
(3)修改配置文件,指定 node3 输出等级为警告级,并设置日志存储阈值为 50MB。
子任务 1-2-4:区块链网络运维
根据任务描述要求,完成网络配置与管理运维操作,具体内容如下:
(1)设置区块链系统黑名单,修改 M1-B 的 node7 配置将 node3 设为黑名单,并通过命令检查;
(2)在 M1-A 上将区块链网络中群组 2 的最大交易数量设为 3000;
(3)在 M1-A 上通过控制台检查群组 2 的区块最大打包交易数量。
任务 1-3:区块链系统测试
设计对区块链系统的测试流程;结合实际业务需求,调用部署的智能合约进行系统测试、性能测试等;根据业务需求,分析并且修复给定智能合约中的安全漏洞。利用模拟业务和测试工具来完成对区块链系统服务数据的测试。
子任务 1-3-1:系统测试
在 M1-A 登录 linux 服务器,进入指定操作目录(/root/tools/webase)中完成区块链节点管理器的配置部署,并进行节点接口测试,具体操作任务如
下:
(1)完成 webase-node-manager 数据库初始化操作;
(2)修改 application.yml 配置文件,进行 webase-node-manager 服务配置,包括数据库名称,数据库用户,数据库密码等;
(3)使用命令启动 webase-node-manager 管理平台服务,并检查节点管理是否正常启动;
(4)进行节点管理服务的 API 接口(创建 front 对象)测试。子任务 1-3-2:压力测试
基于 M1-A 虚拟机,使用提供的 caliper 素材,进入/root/tools/benchmarks目录下使用 Caliper 测试工具对 HelloWorld.sol 中 set 和 get 功能进行压力测试,具体操作任务如下:
(1)修改 fisco-bcos.json 文件,配置连接节点为 agencyA 的 node0 节点,测试合约为 HelloWorld.sol;
(2)配置进行压测的 js 信息,设置 txNumber=100,tps=1;
(3)提供 set 功能核心测试代码;
(4)提供 get 功能核心测试代码;
(5)执行压测,所有测试通过率为 100%。
模块二:智能合约开发与测试(40 分)
选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图
(截图内容清晰且完整)粘贴至客户端桌面【工位号文件夹\模块二提交结果.docx】中对应的任务序号下。
任务 2-1:智能合约设计
根据区块链航空延误险系统需求分析和设计文档的描述,绘制智能合约 UML
时序图,编写该区块链产品的智能合约功能需求文档。具体要求如下:
1.绘制区块链航空延误险系统智能合约的 UML 时序图;
2.结合区块链航空延误险系统项目背景、概要设计、需求分析和功能设计等,编写区块链航空延误险系统的智能合约功能需求文档。
任务 2-2:智能合约开发
使用 Solidity 语言进行智能合约开发,根据需求功能介绍在待补充源码中完成程序接口功能的编码,解决代码错误和警告,正确编译合约,功能调试正确,运行合约进行业务功能的验证,下列子任务中的合约编码表示合约中对应接口功能开发。
子任务 2-2-1:航班信息存证上链功能
根据功能介绍在待补充源码中完成航班延误存证上链功能的编码,解决代码错误和警告,正确编译合约,功能调试正确。
(1)编写获取航班信息接口,实现依据航班号获得航班号对应的计划起飞时间、实际起飞时间、到达时间、是否延误状态的功能,代码截图保存;
表 2-2-1 FlightInfo 实体说明
| 名称 | 说明 |
|---|---|
| flightNumber | 航班号 |
| departureTime | 计划起飞时间 |
| actualDepartureTime | 实际起飞时间 |
| arrivalTime | 到达时间 |
| delayed | 是否延误 |
(2)编写判断航班是否延误接口,实现依据航班号获得航班号对应的航班是否延误,得到航班是否延误的结果功能,代码截图保存。
子任务 2-2-2:航班延误保险购买功能
根据需求功能介绍在待补充源码中完成航班延误购买功能的编码,解决代码错误和警告,正确编译合约,功能调试正确,运行合约中的保险购买、退保功能。
(1)编写航班保险购买上链接口,完成只有购买机票的用户可以购买保险,且购买保险的时间不能超过购买机票后的 0.5 小时的功能,符合条件则用户可以购买保险,将用户购买保险状态上链,代码截图保存;
(2)编写退保接口,完成保险公司预存赔偿金后,用户无法退保,反之用户可退保的功能,将用户退保状态上链,并退还用户保费功能,代码截图保存。子任务 2-2-3:航班延误险理赔功能
根据需求功能介绍在待补充源码中完成航班延误险理赔功能的编码,解决代码错误和警告,正确编译合约,功能调试正确。
(1)编写客户理赔接口,实现如果航班延误超过 4 小时,将赔偿金赔偿给乘客的功能,补全代码并截图;
(2)编写保险公司收取保费接口,实现如果航班没有延误或者延误时间少于 4 小时,将保费转账给保险公司,并退还赔偿金的功能,补全代码并截图。
任务 2-3:智能合约测试
子任务 2-3-1:基于 Web 前置平台的合约测试
1.解决代码错误和警告,正确编译所有合约并部署合约,成功获取部署的合约地址和 abi,智能合约地址截图,abi 文件命名为【智能合约.abi】并保存至客户端桌面【工位号文件夹】下;。
2.使用 WeBASE 调用任务 2-2 中所有需要补全代码的智能合约接口进行测试,运行结果截图。
子任务 2-3-2:漏洞测试
有如下问题智能合约:
合约一:
bash
pragma solidity ^0.4.25; contract ExternalService {
function performAction() public returns (bool) {
return true;
}
}
合约二:
bash
pragma solidity ^0.4.25;
import "./ExternalService.sol"; contract VulnerableContract {
mapping(address => uint8) public balances; address public admin;
uint public lastUpdateTime;
ExternalService public externalService;
constructor(address _externalService) { admin = msg.sender;
externalService = ExternalService(_externalService); lastUpdateTime = block.timestamp;
}
// 只有管理员可以调用的存款函数
function adminDeposit(address _user, uint8 _amount) public { require(msg.sender == admin, "Only admin can deposit"); if (block.timestamp - lastUpdateTime <= 1 days) {
}
balances[_user] += _amount; lastUpdateTime = block.timestamp;
}
// 取款函数
function withdraw(uint8 _amount) public {
require(balances[msg.sender] >= _amount); balances[msg.sender] -= _amount;
externalService.performAction();
}
// 获取余额
function getBalance() public view returns (uint8) { return balances[msg.sender];
}
function transferAdmin(address _newAdmin) public { admin = _newAdmin;
}
}
(1)分析以上智能合约中存在的漏洞,并说明其可能造成的危害;
(2)完善攻击函数,基于 webase-front 复现智能合约中存在的漏洞;进行漏洞修复,并验证修复结果,并说明修复内容。
模块三:区块链应用系统开发(20 分)
选手完成本模块的任务后,将任务中添加代码、Web 页面、运行结果等截图粘贴至客户端桌面【工位号文件夹\模块三提交结果.docx】中对应的任务序号下。
任务 3-1:区块链应用前端功能开发
使用Vue调用航班管理接口,将获取的航班号、计划起飞时间、实际起飞时间、到达时间、是否延误等信息传递给前端模板,要求如下:
(1)使用 VsCode 工具,在 flightList.vue 文件中完成购买机票功能并按照航班管理原型图的长度、宽度、行高、间距、文字样式、颜色等,完成航班信息管理页面的开发,将 Web 页面和代码截图保存;

(2)完成 Vue 调用航班管理接口 API,获取接口返回的航班号、计划起飞时间、实际起飞时间、到达时间、是否延误信息,填充至 Vue 页面中,将 Web 页面和代码截图保存。
任务 3-2:区块链应用后端功能开发
在航班延误 Dapp 后端开发中,使用 Java 完成在区块链中实现航班信息和航班延误的管理,获取区块链交易信息、航班信息实体类设计、MySql 数据库表结构创建、查询航班信息接口,与前端页面交互,形成完整的 Dapp 系统。
任务 3-2-1:区块链信息查询
(1)使用 Java 语言编写后端代码进行交互,获取区块链的最新高度、最新交易 Hash。
要求如下:在 IntelliJ IDEA 工具中,使用 Java-SDK 在,查询区块链的最新高度(数字)和最新交易 Hash(字符串),并将结果返回,并完成相应代码,代码和返回结果截图保存。
任务 3-2-2:声明航班信息实体类和数据库设计
(1)根据"航班信息管理合约"中变量的字段,在 Java 项目中声明实体类
(FlightInformation),将声明代码结果截图保存;
包含字段: 航班号(flightNumber)、计划起飞时间(departureTime)、实际起飞时间(practicalDepartureTime)、到达时间(arrivalTime)、是否延误
(delayState)。
(2)请打开 Navicat Premium 客户端,并连接数据库,根据第 1 步声明的实体类,创建数据库表(flight_information)与表结构字段,并给出建表语句。
任务3-2-3:编写调用航班管理合约查询航班详情接口
在航班延误 Dapp 中,使用 Java 语言完成 getPurchasedInsuranceinfo 接口调用航班管理智能合约,完成航班信息的添加和查询接口,通过 Http 请求与航班管理接口进行交互,并将获取航班号、计划起飞时间、实际起飞时间、到达时间、是否延误等信息传递给前端模板,要求如下:
(1)接收 Web 端传递的对应实体类参数(包括航班唯一标识);
(2)调用 Java-SDK,运行调用智能合约 API,获取航班详情传递给前端页面;
(3)订单详情查询成功后,将获取到的订单信息进行解析,并通过数据库依赖包(mysql-connector-java-bin.jar)存储到数据库中;
(4)使用 postman 测试功能完整性,测 试参数和结果截 图,
getPurchasedInsuranceinfo 接口部分代码截图。