深入解析:2025年广东省职业院校技能大赛高职组“区块链技术应用”竞赛试题(四)
2026-01-23 09:29 tlnshuju 阅读(0) 评论(0) 收藏 举报2025年广东省职业院校技能大赛高职组“区块链技术应用”竞赛试题(四)
文章目录
博主介绍
致力于网络安全(漏洞挖掘、攻防实战)、Linux 内核系统(底层原理与性能调优)、区块链技术(Web3 安全与智能合约审计)、Python 语言应用(自动化攻防工具开发)、软件开发(全栈安全开发)等新一代信息技术领域的技术研究与干货分享,坚持以
极简篇幅承载硬核知识的创作理念,为技术爱好者提供高效、深度、可落地的阅读体验。CSDN认证网络安全领域优质创作者、网络安全博客专家认证、阿里云专家博主。
各大技术专栏推荐
| 专栏名称 | 专栏介绍 |
|---|---|
| 网络安全攻防之道 | 为网络安全从业者、白帽黑客与技术爱好者打造的攻防知识阵地。深度剖析漏洞利用与防御的技术细节,实战演练渗透测试全流程,输出可落地的攻防策略,陪你在攻防对抗中持续进阶。 |
| Linux 系统运维:从底层原理到企业级实战 | 这里是 Linux 系统运维的实战修炼场:从系统初始化到高可用架构,从命令行魔术到自动化运维利器,深度拆解 CentOS/Ubuntu 在企业级业务、云原生环境中的运维密码。带你穿透系统底层逻辑,掌握性能调优、故障秒级定位、自动化脚本开发的硬核技能,进阶成为能扛住业务压力的 Linux 运维专家 |
| 【VulnHub 靶场攻防】从漏洞复现到实战渗透 | 不管你是刚入门的渗透新人,还是想强化实战能力的安全工程师,都能在这儿找到匹配的靶场练手项目。我们聚焦可复现的漏洞利用技巧,结合 Nmap、Metasploit、BurpSuite 等工具实战演示,帮你把靶场经验转化为真实渗透能力,一步步成长为能在实战中 “打怪升级” 的渗透高手 |
| 博主年度总结与收获 | 这里是旺仔 Sec 的创作成长日记!作为 CSDN 认证的网络安全优质创作者,我把每一年的技术深耕、创作思考、成长突破都浓缩在这儿 —— 从漏洞分析的技术沉淀,到内容创作的经验复盘,再到从工程师到博主的身份进阶,每一篇总结都是 “技术探索 + 创作感悟” 的双料干货 |
♂️ 个人博客主页:@旺仔Sec的博客主页
WeChat公众号:鹏璃安全
✍ 博主身份:网络安全兼技能大赛工程师(NISP、CISP、华为IE、IP、redhat、软考等职业证书报考可找我报考!)
希望大家多多支持,我们一起进步!
如果文章对你有帮助的话, 欢迎评论 点赞 收藏 加关注(各大技能大赛参考答案链接如下)
️:软件测试技能大赛参考答案
:软件测试—单元自动化接口测试参考答案
:区块链技术应用技能大赛参考答案
:大数据应用开发职业院校竞赛答案参阅
:GZ100移动应用设计与开发参考答案
✍:GZ031应用软件系统开发参考答案
☠:网络安全职业技能大赛任务解析
模块一:区块链产品方案设计及系统运维(35 分)
选手完成本模块的任务后,将任务中软件建模图、配置文件、运行结果等截图(截图内容清晰且完整)和文字内容粘贴至客户端桌面【工位号文件夹\模块一提交结果.docx】中对应的任务序号下。
任务 1-1:区块链产品需求分析与方案设计
房屋租赁平台中涉及到租客、房东、区块链租房平台、房屋等参与方,他们需要在区块链租房平台中完成账户注册、身份上链、出租房屋、生成合同等多种业务活动。通过对业务活动的功能分析,可以更好的服务系统的开发流程。基于房屋租赁平台系统架构,以区块链房屋租赁平台为背景,结合账户注册、登录服务、入驻上链、房屋出租、房租缴费等核心功能描述,撰写流程图/功能图、用例图等概要设计。
房屋租赁平台中涉及到租客、房东、区块链租房平台、房屋等参与方,他们需要在区块链租房平台中完成账户注册、身份上链、出租房屋、生成合同等多种业务活动。通过对业务活动的功能分析,可以更好的服务系统的开发流程。基于房屋租赁平台系统架构,以区块链房屋租赁平台为背景,结合账户注册、登录服务、入驻上链、房屋出租、房租缴费等核心功能描述,使用 Visio 绘制用例图、功能图、架构图等概要设计。
本任务需要依据项目背景完成需求分析与方案设计,具体要求如下:
1.根据项目给定的背景描述和房屋租赁平台业务概览图,对房屋租赁平台进行分析,完成以下任务:
(1)编写用户群体需求分析,明确系统用户群体及其需求;
(2)绘制系统 UML 用例图,用例图中包含系统参与角色以及用例。
2.依据给定的背景信息、房屋租赁平台业务概览图以及给出的房屋租赁平台的核心流程,使用 Visio 编制业务系统功能图;
| 发布租房合同流程 | 房东起草租房合同协议,填写房屋信息、租期、房租等。使用房东的私钥对租房合同进行签名并广播到区块链中进行存证 |
|---|---|
| 签署合同流程 | 房东对租房合同进行签名 |
| 缴纳房租流程 | 区块链房屋租赁平台节点实时房屋到期时间 |
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)编写房东签署合同接口,完成本合同位置只允许房东签署,通过合同中的信息生成租赁合同的链上哈希,触发协议签署合同的功能,其中合同中的信息包括房东链上账户、租客链上账户、租赁开始时间、租赁结束时间、月租金额、押金金额、交租时间,代码及调用结果截图保存;
| 名称 | 说明 |
|---|---|
| landlord | 房东的账户 |
| tenant | 租客的账户 |
| rentAmount | 每月租金金额(默认3000) |
| depositAmount | 押金金额(默认 3000) |
| rentDueDate | 租金到期日(默认 16) |
| leaseStartDate | 租赁开始日期 |
| leaseEndDate | 租赁结束日期 |
| leaseDuration | 租赁期限 |
(2)编写租金支付接口,完成只允许租客支付租金的规则,检查支付的租金金额是否正确,触发记录租金支付情况的功能,代码及调用结果截图保存。子任务 2-2-2:违约管理功能
根据需求功能介绍在待补充源码中完成违约管理功能的编码,解决代码错误和警告,正确编译合约,功能调试正确,运行合约中的房东终止合同、租客终止合同接口功能。
(1)编写房东终止合同接口,实现房东终止合同判断,如果租客已经终止合同则合同无效,如果合同有效,对合同终止状态进行标记,将剩余押金退还给租客的功能,代码及调用结果截图保存;
| 名称 | 说明 |
|---|---|
| gracePeriod | 宽限期 |
| terminationFee | 终止合同费用 |
| contractActive | 合同是否有效 |
| landlordTerminated | 房东是否终止合同 |
| tenantTerminated | 租客是否终止合同 |
| tenantDefaulted | 租客是否违约 |
| securityReturned | 押金是否已退还 |
(2)编写租客终止合同接口,实现租客终止合同判断,如果房东已经终止合同则合同无效,如果合同有效,对合同终止状态进行标记,将剩余押金退还给房东的功能,其中字段包括房东地址、租客地址、租金、押金、合同开始日期、合同结束日期、宽限期、终止合同费用、合同是否有效、房东是否终止合同、租客是否终止合同、租客是否违约、押金是否已退还,代码截图保存。
子任务 2-2-3:押金管理功能
根据需求功能介绍在待补充源码中完成押金管理功能的编码,解决代码错误和警告,正确编译合约,功能调试正确,运行合约中的租客缴纳押金情况查询、房东收取押金情况查询接口功能。
(1)编写房东收取押金情况查询接口,实现房东是否已收到押金的功能,代码及调用结果截图保存。
任务 2-3:智能合约测试
子任务 2-3-1:基于 Web 前置平台的合约测试
1.解决代码错误和警告,正确编译所有合约并部署合约,成功获取部署的合约地址和 abi,智能合约地址截图,abi 文件命名为【智能合约.abi】并保存至客户端桌面【工位号文件夹】下;。
子任务 2-3-2:漏洞测试
合约一:
pragma solidity ^0.4.25; contract ExternalService {
function performAction() public returns (bool) {
return true;
}
}
合约二:
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) {
require(_amount <= 100, "Can only deposit up to 100 per day");
}
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:区块链应用前端功能开发
在 user.vue 完成区块链应用系统的构建、服务器端(后端)与 Web 端(前端)的接口的联调。要求如下:
1.使用 VsCode 工具,按照押金详情原型图的长度、宽度、行高、间距、文字样式、颜色等,完成押金详情页面的样式开发,将 Web 页面和代码截图保存;
2.使用 VsCode 工具,完成 Vue 调用押金查询接口 API,获取接口返回的租房人、房屋位置、楼号、押金金额、收款人、收款日期信息,填充至 Vue 页面中,将 Web 页面和代码截图保存。
任务 3-2:区块链应用后端功能开发
子任务 3-2-1:区块链网络环境启动
区块链应用系统开发需要区块链底层网络进行支撑,完成和链上数据进行交互,与节点建立链接,完成链上信息查询。要求如下:
(1)使用 IntelliJ IDEA 工具,打开(BlockController.java)文件,在查询区块链信息接口中,使用 Java-SDK 获取区块链的最新高度和最新交易 Hash,并将结果按十进制的整数和字符串类型返回,将代码和结果截图保存。
子任务 3-2-2:编写签署房屋租赁合同合约接口和数据库设计
(1)根据“签署房屋租赁合同合约”中的字段,在 Java 项目中声明实体类
(LeaseContract),将声明代码结果截图保存;
房东的账户地址(landlord)
租客的账户地址(tenant)
每月租金金额(monthlyRent)
押金金额(depositAmount)
租金到期日(rentDueDate)
租赁开始日期(leaseStartDate)
租赁结束日期(leaseEndDate)
(2)请打开 Navicat Premium 客户端,并连接到数据库,根据第一步中声明的实体类,创建一个名为" house_leasing_contract "的数据库表,包含以下字段,并给出建表语句:
房东的账户地址(landlord)
租客的账户地址(tenant)
每月租金金额(monthly_rent)
押金金额(deposit_amount)
租金到期日(rent_due_date)
租赁开始日期(lease_start_date)
租赁结束日期(lease_end_date)
子任务 3-2-3:编写调用签署合同接口
已将押金管理合约部署至区块链,完成调用房东签署合同合约接口,要求如下:
(1)接受从 Web 端接收对应各种参数;
(2)调用智能合约 API,返回调用结果信息传递给前端页面,返回信息包括
(massage:“创建成功”)以及交易成功后的返回信息如 input,transactionHash
等;
(3)签署合同成功后,对合同信息进行解析,并通过数据库依赖包(mysql- connector-java-bin.jar)存储到数据库中;
(4)使用 postman 测试功能完整性,测试参数和结果截图,调用房东签署合同合约接口部分的代码截图。
浙公网安备 33010602011771号