2025年安徽省职业院校技能大赛(高职组)区块链技术应用赛项样题任务书
文章目录
- 2025年安徽省职业院校技能大赛(高职组)区块链技术应用赛项样题任务书
-
- [一、模块一:区块链产品方案设计及系统运维(35 分)](#一、模块一:区块链产品方案设计及系统运维(35 分))
-
- [(一)任务 1-1:区块链产品需求分析与方案设计](#(一)任务 1-1:区块链产品需求分析与方案设计)
- [(二)任务 1-2:区块链系统部署与运维](#(二)任务 1-2:区块链系统部署与运维)
- [(三)任务 1-3:区块链系统测试](#(三)任务 1-3:区块链系统测试)
- [二、模块二:智能合约开发与测试(30 分)](#二、模块二:智能合约开发与测试(30 分))
-
- [(一)任务 2-1:智能合约设计](#(一)任务 2-1:智能合约设计)
- [(二)任务 2-2:智能合约开发](#(二)任务 2-2:智能合约开发)
- [(三)任务 2-3:智能合约测试](#(三)任务 2-3:智能合约测试)
- [三、模块三:区块链应用系统开发(30 分)](#三、模块三:区块链应用系统开发(30 分))
-
- [(一)任务 3-1:区块链应用前端功能开发](#(一)任务 3-1:区块链应用前端功能开发)
- [(二)任务 3-2:区块链应用后端功能开发](#(二)任务 3-2:区块链应用后端功能开发)
区块链技术应用全模块培训或资料可联系博主!
背景描述 气候变化是全球面临的重大环境挑战之一。人类活动,特别是化石燃料的燃烧,导致了温室气体(主要是二氧化碳)的排放增加,进而引发全球气温上升、海平面上升和极端天气事件频发。国际社会已经达成共识,需要减少温室气体排放来应对气候变化。因此各国纷纷提出碳达峰与碳中和目标,碳交易作为实现这一目标的重要手段,其重要性日益凸显。然而,传统的碳排放权交易市场存在信息不对称、交易成本高、透明度不足等问题。区块链技术的出现,以其去中心化、不可篡改、可追溯等特性,为解决这些问题提供了创新方案。 区块链双碳交易溯源系统可实现用户管理与碳配额全流程管控,且全环节信息上链存证。系统支持普通用户提交信息完成注册并经管理员审核,同时完成管理员合规注册;碳配额方面,既支持政府按减排目标为用户无偿分配,也可由管理员组织有偿拍卖,用户间还能通过智能合约自主开展配额交易,此外用户可使用配额抵消自身碳排放,所有流程记录均上链形成不可篡改、可追溯的可信数据。
一、模块一:区块链产品方案设计及系统运维(35 分)
选手完成本模块的任务后,将任务中软件建模图、配置文件、运行结果等截图(截图内容清晰且完整)和文字内容粘贴至客户端桌面【工位号文件夹\模块一提交结果.docx】中对应的任务序号下。
(一)任务 1-1:区块链产品需求分析与方案设计
1.根据区块链双碳交易系统项目背景描述,对区块链双碳交易系统进行需求分析,完成以下任务:
(1)编写用户群体需求分析,明确系统用户群体及其需
求;
(2)绘制系统 UML 用例图,用例图中包含系统参与角
色以及用例。
2.依据区块链双碳交易系统业务流程,使用 Visio 绘制业务系统功能图;
(二)任务 1-2:区块链系统部署与运维
围绕区块链双碳交易系统部署与运维需求,进行项目相关系统、节点以及管理工具的部署工作。通过监控工具完成对网络、节点服务的监控。最终根据业务需求规范,完成系统日志、网络参数、节点服务等系统结构的维护。
1.根据参数与端口设置要求,部署区块链系统并验证;
2.根据参数与端口设置要求,部署区块链网络管理平台并验证;
3.基于区块链系统相关管理平台,按照任务指南实施系统运维工作并验证;
4.基于区块链系统相关监管工具,按照任务指南对区块链系统进行监管。
(1)子任务 1-2-1: 搭建区块链系统并验证
基于给定服务器环境以及软件(地址"/root/tools"),搭建单机、单机构、两群组、四节点的区块链系统并验证,具体工作内容如下:

搭建区块链网络,两个节点属于群组 1,另外两个节点属于群组 2,其他配置见节点配置表,运行搭建脚本后的输出结果截图保存;
1)通过命令验证区块链节点进程运行状况,结果截图;
2)通过命令验证区块链节点(node1)连接节点数和共识状态日志输出,结果截图。
(2)子任务 1-2-2:搭建区块链控制台并验证
基于给定服务器环境以及软件(地址"/root/tools"),搭建区块链控制台并开展相关运维工作,具体工作内容如下:
1)配置控制台,管理相关证书并指定群组 1 启动,启动结果截图;
2)使用控制台部署 HelloWorld 智能合约,结果截图;
3)使用控制台依次调用 HelloWorld 智能合约的 set 与 get操作,结果截图;
4)将控制台从 group1 切换到 group2,结果截图。
(3)子任务 1-2-3:区块链账户权限控制
基于已完成的区块链系统与控制台搭建工作,开展区块链账户权限管理等运维工作,具体内容如下:
1)创建三个新的账户,并使用账户 1(account1)登录群组 1 控制台, 添加账户 1(account1)、账户 2(account2) 和账户 3(account3)为委员并验证,使用控制台验证委员列表结果截图保存;
2)修改账户 1 的票数为 2 并验证,修改投票阈值为 75%
并验证,验证结果截图保存;
3)撤销账户 3(account3)的委员权限,设置账户 3 为运维角色并验证,验证结果截图保存。
(4)子任务 1-2-4:区块链网络运维
根据任务描述要求,完成网络配置与管理运维操作,具体内容如下:
1)设置区块链系统黑名单,将 node3 设为 node0 的黑名单禁止连接,修改内容截图;
2)通过给定工具(目录/root/tools)完成新节点(node4)创建,将新节点(node4)接入群组 1 和群组 2 使用控制台验证,接入群组的验证结果截图保存;
3)在群组 1 中将 node1 设置为观察节点并验证观察节点列表,验证结果并截图。
(三)任务 1-3:区块链系统测试
基于 WeBASE 的部署脚本完成 WeBASE 环境搭建以及搭建结果验证,最后将执行结果截图保存。
1.实现 WeBASE 平台部署,访问 WeBASE 管理平台首页,首页截图保存;
2.使用WeBASE-Sign 进行对数据E7ADBEE5908D 进行签名,结果截图;
使用 WeBASE-Front 查询机器历史性能信息,结果截图。
表 2 机器历史性能查询参数表
| 序号 | 中文 | 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|---|---|
| 1 | 开始日期 | beginDate | LocalDateTime | 是 | |
| 2 | 结束日期 | endDate | LocalDateTime | 是 | |
| 3 | 对比开始日期 | contrastBeginDate | LocalDateTime | 否 | |
| 4 | 对比结束日期 | contrastEndDate | LocalDateTime | 否 | |
| 5 | 间隔 | gap | int | 否 | 默 认为 1 |
二、模块二:智能合约开发与测试(30 分)
(一)任务 2-1:智能合约设计
根据区块链双碳交易系统需求分析和设计文档的描述,绘制智能合约 UML 时序图,编写该区块链产品的智能合约功能需求文档。具体要求如下:
1.绘制区块链双碳交易系统智能合约的 UML 时序图;
2.结合区块链双碳交易系统项目背景、概要设计、需求分析和功能设计等,编写区块链双碳交易系统的智能合约功能需求文档。
(二)任务 2-2:智能合约开发
使用 Solidity 语言进行智能合约开发,根据需求功能介绍 在待补充源码中完成程序接口功能的编码,解决代码错误和警告,正确编译合约,功能调试正确,运行合约进行业务功能的验证,下列子任务中的合约编码表示合约中对应接口功能开发。
1.子任务 2-2-1:角色访问控制合约开发
根据功能介绍在待补充源码中完成角色访问控制合约的编码,解决代码错误和警告,正确编译合约,功能调试正确。
(1)实现授予指定账户 account 指定角色role 功能。
(2)编写 grantRole 函数,进行权限验证,调用者必须拥有该角色 role 的管理员角色,否则抛出错误 AccessControl: sender must be an admin to grant , 然 后 调 用 内 部 方 法
_grantRole 实际授予角色。
(3)编写_grantRole 函数,如果账户 account 尚未拥有该角色 role,则将账户添加到该角色的 members 成员中,并触发 RoleGranted 事件。
2.子任务 2-2-2:碳凭证合约开发
根据功能介绍在待补充源码中完成双碳交易合约的编码,解决代码错误和警告,正确编译合约,功能调试正确。
(1)编写构造函数实现 RoleManagement 和 ERC1155 合约的初始化,并设置 ERC1155URIStorage._setBaseURI(传入的字符串类型参数值均为:"Carbon certificate")。
(2)创建新的碳证并分配给指定账户。此方法使用修饰符进行修饰只有DEFAULT_ADMIN_ROLE 角色可以调用。每次调用lastCarbonId 状态变量自增。调用父合约 ERC1155 中的 _mint 方法, 将新数量的碳证分配给 account 。调用
_setURI 方法,为新创建的碳证设置 URI,传入新碳证 ID 和
note。返回新生成的碳证 ID lastCarbonId。
3.子任务 2-2-3:碳交易合约开发
(1)创建一个委托交易订单,可选择买入或卖出碳凭证。此方法使用修饰符进行修饰只有 USER 角色可以调用。交易状态必须是买入(TradingStatus.Buy)或卖出(TradingStatus.Sell),否则抛出错误 CreditTrading: trading status error 。每次调用
_lastTradingId 状态变量自增。如果 tradingStatus 为买入,则调用_account 合约从调用者向本合约转移价格*数量的资金,并触发 BuyOrder 事件。如果 tradingStatus 为卖出,则调用
_carbonCredits 从调用者向本合约转移 carbonId 对应的 amount 数量的碳凭证, 附加数据为空字符串 "" , 触发 SellOrder 事件。将订单信息存入 _order[]映射当中,key 为
_lastTradingId。返回 _lastTradingId。
(2)编写购买碳凭证方法,即买入委托卖出的挂单。此方法使用修饰符进行修饰只有USER 角色可以调用。订单状态必须为 TradingStatus.Sell , 否则抛出错误 CreditTrading: trading status error。从 _order 中获取 tradingId 对应的订单信息, 存储在局部变量 order 中。 将 _order[tradingId] 的 tradingStatus 更新为 TradingStatus.Finish。调用 _account 的 transferFrom 方法, 从 msg.sender 向 order.owner 转移 order.price.mul(order.amount) 的资金。
(三)任务 2-3:智能合约测试
1.定义合约部署夹具( deployAccount 函数) 。获取 Hardhat 本地测试网络的 6 个默认账户 owner, alice, bob, carol, dave, eve。获取 Account 合约的工厂对象,得到部署后的合约实例 account。将合约实例 account 和所有测试账户返回,供测试用例调用。
2.测试 mint 方法。调用执行夹具deployAccount 函数,获取部署好的合约实例 account 和管理员账户 owner。以管理员 owner 的身份,调用合约的 mint 方法铸造 1000 代币,接收者为owner。通过 expect 断言,验证 owner 余额为 1000。
三、模块三:区块链应用系统开发(30 分)
(一)任务 3-1:区块链应用前端功能开发
使 用 VsCode 工 具 , 在 src\views\admin\QuotaManagement\index.vue 文件中完成新建额度功能并按照下面新建额度的原型图的长度、宽度、行高、间距、文字样式、颜色等,完成新建额度页面的开发,且需要对新建额度做规则校验,校验结果如下图所示,将 Web 页面和代码截图保存(截图没有水印);

(二)任务 3-2:区块链应用后端功能开发
1.任务 3-2-1:创建交易信息表
创建表结构:新建表名为 t_transaction 的数据表,需包含以下 12 个字段及对应配置:
字段 1:id,数据类型为 int(11),设置为非空(NOT NULL),开启自增属性(AUTO_INCREMENT),作为表的主键(PRIMARY KEY),索引类型使用 BTREE。
字段 2:index_id,数据类型为 int(11),允许为空(NULL),默认值设为 NULL。
字段 3:user_id,数据类型为 int(11),允许为空(NULL),默认值设为 NULL,添加注释 "委托者"。
字段 4:quota,数据类型为 int(11),允许为空(NULL),默认值设为 NULL,添加注释 "额度"。
字段 5:price,数据类型为 decimal(13, 2() 总长度 13 位,
小数位 2 位),允许为空(NULL),默认值设为 NULL,添加注释 "价格"。
字段 6:delist,数据类型为 int(11),允许为空(NULL),默认值设为 NULL,添加注释 "摘牌者"。
字段 7:type,数据类型为 int(4),允许为空(NULL),默认值设为 NULL,添加注释 "0 买入 1 卖出"。
字段 8:total_value,数据类型为 decimal(13, 2)(总长度
13 位,小数位 2 位),允许为空(NULL),默认值设为 NULL,添加注释 "总价值"。
字段 9:create_time,数据类型为 datetime(0)(无小数位的日期时间类型),允许为空(NULL),默认值设为 NULL,添加注释 "创建时间"。
字段 10:status,数据类型为 int(4),允许为空(NULL),默认值设为 NULL,添加注释 "交易状态"。
字段 11:deal_time,数据类型为 datetime(0)(无小数位的日期时间类型),允许为空(NULL),默认值设为 NULL,添加注释 "交易时间"。
字段 12:order_id,数据类型为 int(11),允许为空(NULL),默认值设为 NULL。
2.任务 3-2-2:账号注册与审核
(1)编写 SysUserController 接受页面请求,使用 Get 方式接收请求,并使用JSON 或者实体类的方式接收请求数据,根据请求参数生成密钥后返回前端。
(2)编写 SysUserController 接受页面请求,使用 Post 方式接收页面请求,并使用 JSON 或者实体类的方式接收请求数据。如审核通过,调用合约校验账户信息,无误后修改状态为审核通过,如不通过直接修改状态为不通过,调用 Mapper 层方法保存到数据库中,将修改成功信息返回前端。