2025年广东省职业院校技能大赛高职组“区块链技术应用”竞赛试题(五)

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、软考等职业证书报考可找我报考!)

🐋 希望大家多多支持,我们一起进步!😄

如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注(各大技能大赛参考答案链接如下)

🖥️:软件测试技能大赛参考答案

🙌:软件测试---单元自动化接口测试参考答案

👻:区块链技术应用技能大赛参考答案

🚀:大数据应用开发职业院校竞赛答案参阅

🔎:GZ100移动应用设计与开发参考答案

✍:GZ031应用软件系统开发参考答案

☠:网络安全职业技能大赛任务解析

模块一:区块链产品方案设计及系统运维(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 PensionAccount 实体说明

名称 说明
name 姓名
age 年龄
Id 身份证号码
employer 雇主
joiningDate 工作时间
salary 工资
contributionBase 缴费基数

子任务 2-2-2:雇主账户管理功能

根据需求功能介绍在待补充源码中完成账户管理功能的编码,解决代码错误和警告,正确编译合约,功能调试正确,编写雇主账户结构体、添加新雇主账户。
表 2-2-2 EmployerAccount 雇主账户实体说明

名称 说明
companyName 单位名称
balance 余额

1.编写雇主账户结构体,代码截图保存;

2.编写添加新雇主账户接口,实现当账户不存在,只有管理员可以添加雇主账户,雇主新账户中账户余额为 0,代码截图保存。
子任务 2-2-3:保险转移功能

根据需求功能介绍在待补充源码中完成保险转移功能的编码,解决代码错误和警告,正确编译合约,功能调试正确,运行合约中的申请转移关系、接收账户转移接口。
表 2-2-3 Application 实体说明

名称 说明
Id 申请人身份证号
originalCity 原城市
targetCity 目标城市
stopPayment 是否停缴
approved 是否批准

1.编写申请转移关系接口,实现创建申请、添加到申请列表功能,其中创建申请需要设置申请人地址、原城市、目标城市、停缴状态、批准状态,代码截图保存;

2.编写接收账户转移接口,实现获取账户,进行账户授权状态、接收状态、个人账户基金、统筹账户基金、养老保险账户的信息设置,代码截图保存。

任务 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) {
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:区块链应用前端功能开发

完成区块链应用系统中的职工养老保险申请页面渲染,要求如下:

(1)按照生成养老保险账户原型图的长度、宽度、行高、间距、文字样式、颜色等,完成订单详情页面的样式开发,将结果截图保存;

(2)完成Vue调用添加养老保险账户API,将养老保险账户信息提交至API接口中,web页面和代码截图保存。

任务 3-2:区块链应用后端功能开发

子任务 3-2-1: 获取区块链交易信息

区块链应用系统开发需要区块链底层网络进行支撑,完成和链上数据进行交互,并完成链上信息查询。

要求如下:

(1)打开(IndexController.java)文件,查询区块链信息接口。使用

Java-SDK获取区块链的最新高度和最新交易Hash,并将结果按十进制的整数和字符串类型返回,将代码和结果截图保存;
子任务 3-2-2: 声明生成养老保险账户实体类和数据库设计

使用Java语言,完成区块链系统数据的存储。要求如下:

(1)根据"账户管理合约"中变量的字段,在Java项目中声明实体类

(PensionAccount),将代码截图保存。

包含字段:个人账户余额(personalBalance)、总账户余额(overallBalance)、雇主是否为职工的赞助商(isSponsor)、缴费时间(paymentTimestamp)、参保人姓名(insuredPersonName)、参保人身份证(insuredPersonIdentityCard)、

参保人工作单位(insuredPersonWorkUnit)、工作年限(workingYear)、薪资

(salary)、缴费基数(paymentBase)

(2)请打开Navicat Premium 客户端,并连接数据库,根据第1步声明的实体类,创建数据库表(pension_account)与表结构字段,建表字段截图保存。
子任务 3-2-3: 编写调用账户管理合约添加养老保险账户接口

请使用Java语言,通过Java-SDK完成调用账户管理合约接口,添加养老保险账户。要求如下:

(1)接收从Web端对应各种参数(包括参保人姓名、身份证、工作单位、工作年限、工资、缴费基数);

(2)调用Java-SDK,运行调用智能合约API,接收养老保险账户的钱包地址、账户余额等信息传递给前端页面;

(3)养老保险账户创建成功后,将获取到的钱包信息进行解析,并通过数据库依赖包(mysql-connector-java-bin.jar)存储到数据库中;

(4)使用 postman 测试功能完整性,测试参数和结果截图,成调用账户管理合约接口接口部分代码截图。

需要培训可联系博主!

相关推荐
7***n751 小时前
区块链在金融中的去中心化金融
金融·去中心化·区块链
7***53342 小时前
区块链智能合约审计
区块链·智能合约
旺仔Sec3 小时前
2025年广东省职业院校技能大赛高职组“区块链技术应用”竞赛试题(二)
java·区块链
y***54886 小时前
区块链在物流中的货物追踪
区块链
唐僧洗头爱飘柔95278 小时前
【区块链技术(02)】区块链三种类型:公有链、私有链、联盟差异;激励问题、最终确定性问题
区块链·联盟链·私有链·公有链·激励问题·隐私问题·最终确定性
S***t7141 天前
Web3.0在去中心化应用中的交易处理
web3·去中心化·区块链
白鹭凡1 天前
Web3——区块链基础
web3·区块链
E***q5391 天前
区块链跨链技术
区块链
9***P3341 天前
区块链智能合约形式验证
区块链·智能合约