2026年中银杯湖北省职业院校技能大赛高职组区块链技术应用任务书

2026年中银杯湖北省职业院校技能大赛高职组区块链技术应用任务书

文章目录

气候变化是全球面临的重大环境挑战之一。人类活动,特别是化石燃料的燃烧,导致了温室气体(主要是二氧化碳)的排放增加,进而引发全球气温上升、海平面上升和极端天气事件频发。国际社会已经达成共识,需要减少温室气体排放来应对气候变化。因此各国纷纷提出碳达峰与碳中和目标,碳交易作为实现这一目标的重要手段,其重要性日益凸显。然而,传统的碳排放权交易市场存在信息不对称、交易成本高、透明度不足等问题。区块链技术的出现,以其去中心化、不可篡改、可追溯等特性,为解决这些问题提供了创新方案。

  1. 用户注册
    1.1. 普通用户注册
     企业或个人用户(以下简称"普通用户")在区块链平台S上提交注册申请,提供必要的信息和证件材料。这些信息包括用户的基本信息、联系电话和公司名称等。
    1.2. 管理员注册
     平台管理者(以下简称"管理员")在系统中注册,负责平台的管理和监督工作。管理员的身份信息经过严格验证,以确保管理者的合法性和公正性。
  2. 管理员审批
    o 管理员在区块链平台S上审核普通用户的注册申请,核实其提交的信息。审核通过后,普通用户正式成为平台的注册用户。
    o 管理员的审核和审批过程记录在区块链上,保证透明度和审计追踪。
  3. 碳配额的发放
    3.1. 无偿发放
     政府机构根据国家或地区的碳减排目标,为符合条件的普通用户无偿分配一定数量的碳配额。无偿发放的碳配额记录在区块链上,并分配到相应用户的账户中。
    3.2. 有偿拍卖
     除了无偿发放的碳配额,平台还会进行有偿拍卖,向用户出售额外的碳配额。拍卖由管理员组织,所有用户都可以通过区块链平台进行竞标。
     拍卖结束后,成功竞标的用户会根据竞标结果支付相应的费用,碳配额自动分配到其账户中。拍卖的过程和结果同样记录在区块链上,确保公开透明。
  4. 碳配额交易
    o 普通用户之间可以通过区块链平台进行碳配额的交易。用户A可以将多余的碳配额出售给需要更多配额的用户B。
    o 交易过程由智能合约自动执行,确保交易的公平和及时性。交易步骤包括:
     用户A发布出售碳配额的请求,包含配额数量和价格。
     用户B选择接受请求,并支付相应的款项。
     智能合约验证交易双方的身份和资产情况后,自动将碳配额从用户A的账户转移到用户B的账户,并将款项从用户B的账户转移到用户A的账户。
    o 所有交易记录都会在区块链上公开,防止任何形式的欺诈或错误。
  5. 碳配额的抵消
    o 普通用户可以选择使用持有的碳配额来抵消自身的碳排放。抵消的过程由区块链平台自动处理,确保记录的准确性和可信性。
    o 抵消过程完成后,相关信息(包括抵消的碳排放量、使用的碳配额数量等)会记录在区块链上,形成不可篡改的记录。

模块一:区块链产品方案设计及系统运维(35分)

选手完成本模块的任务后,将任务中软件建模图、配置文件、运行结果等截图(截图内容清晰且完整)和文字内容粘贴至客户端桌面【工位号文件夹\模块一提交结果.docx】中对应的任务序号下。

任务1-1:区块链产品需求分析与方案设计

  1. 根据区块链双碳交易系统项目背景描述,对区块链双碳交易系统进行需求分析,完成以下任务:
    (1)编写用户群体需求分析,明确系统用户群体及其需求;
    (2)绘制系统UML用例图,用例图中包含系统参与角色以及用例。
  2. 依据区块链双碳交易系统业务流程,使用Visio绘制业务系统功能图;

任务1-2:区块链系统部署与运维

围绕区块链双碳交易系统部署与运维需求,进行项目相关系统、节点以及管理工具的部署工作。通过监控工具完成对网络、节点服务的监控。最终根据业务需求规范,完成系统日志、网络参数、节点服务等系统结构的维护。

(1)根据参数与端口设置要求,部署区块链系统并验证;

(2)根据参数与端口设置要求,部署区块链网络管理平台并验证;

(3)基于区块链系统相关管理平台,按照任务指南实施系统运维工作并验证;

(4)基于区块链系统相关监管工具,按照任务指南对区块链系统进行监管。

子任务1-2-1: 搭建区块链系统并验证

基于给定服务器环境以及软件(地址"/root/tools"),搭建单机、单机构、两群组、四节点的区块链系统并验证,具体工作内容如下:

群组编号 节点数 P2P端口 channel端口 rpc端口
群组1 2 30300 20200 8545
群组2 2 30302 20202 8547

(1)搭建区块链网络,两个节点属于群组1,另外两个节点属于群组2,其他配置见节点配置表,运行搭建脚本后的输出结果截图保存;

(2)通过命令验证区块链节点进程运行状况,结果截图;

(3)通过命令验证区块链节点(node1)连接节点数和共识状态日志输出,结果截图。

子任务1-2-2:搭建区块链控制台并验证

基于给定服务器环境以及软件(地址"/root/tools"),搭建区块链控制台并开展相关运维工作,具体工作内容如下:

(1)配置控制台,管理相关证书并指定群组1启动,启动结果截图;

(2)使用控制台部署HelloWorld智能合约,结果截图;

(3)使用控制台依次调用HelloWorld智能合约的set与get操作,结果截图;

(4)将控制台从group1切换到group2,结果截图。

子任务1-2-3:区块链账户权限控制

基于已完成的区块链系统与控制台搭建工作,开展区块链账户权限管理等运维工作,具体内容如下:

(1)创建三个新的账户,并使用账户1(account1)登录群组1控制台,添加账户1(account1)、账户2(account2)和账户3(account3)为委员并验证,使用控制台验证委员列表结果截图保存;

(2)修改账户1的票数为2并验证,修改投票阈值为75%并验证,验证结果截图保存;

(3)撤销账户3(account3)的委员权限,设置账户3为运维角色并验证,验证结果截图保存。

子任务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进行签名,结果截图;

(3)使用WeBASE-Front查询机器历史性能信息,结果截图。

序号 中文 参数名 类型 必填 说明
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语言进行智能合约开发,根据需求功能介绍在待补充源码中完成程序接口功能的编码,解决代码错误和警告,正确编译合约,功能调试正确,运行合约进行业务功能的验证,下列子任务中的合约编码表示合约中对应接口功能开发。
子任务2-2-1:角色访问控制合约开发

根据功能介绍在待补充源码中完成角色访问控制合约的编码,解决代码错误和警告,正确编译合约,功能调试正确。

  1. 实现授予指定账户account指定角色role功能。
    o 编写grantRole函数,进行权限验证,调用者必须拥有该角色role的管理员角色,否则抛出错误 AccessControl: sender must be an admin to grant,然后调用内部方法 _grantRole 实际授予角色。
    o 编写_grantRole函数,如果账户account尚未拥有该角色role,则将账户添加到该角色的 members 成员中,并触发 RoleGranted 事件。
    子任务2-2-2:碳凭证合约开发
    根据功能介绍在待补充源码中完成双碳交易合约的编码,解决代码错误和警告,正确编译合约,功能调试正确。
  2. 编写构造函数实现RoleManagement和ERC1155合约的初始化,并设置ERC1155URIStorage._setBaseURI(传入的字符串类型参数值均为:"Carbon certificate")。
  3. 创建新的碳证并分配给指定账户。此方法使用修饰符进行修饰只有DEFAULT_ADMIN_ROLE角色可以调用。每次调用lastCarbonId状态变量自增。调用父合约 ERC1155 中的 _mint 方法,将新数量的碳证分配给 account。调用 _setURI 方法,为新创建的碳证设置 URI,传入新碳证 ID 和 note。返回新生成的碳证 ID lastCarbonId。
    子任务2-2-3:碳交易合约开发
  4. 创建一个委托交易订单,可选择买入或卖出碳凭证。此方法使用修饰符进行修饰只有USER角色可以调用。交易状态必须是买入(TradingStatus.Buy)或卖出(TradingStatus.Sell),否则抛出错误CreditTrading: trading status error。每次调用_lastTradingId状态变量自增。如果 tradingStatus 为买入,则调用_account合约从调用者向本合约转移价格*数量的资金,并触发 BuyOrder 事件。如果 tradingStatus 为卖出,则调用 _carbonCredits 从调用者向本合约转移 carbonId 对应的 amount 数量的碳凭证,附加数据为空字符串 "",触发 SellOrder 事件。将订单信息存入 _order[]映射当中,key为_lastTradingId。返回 _lastTradingId。
  5. 编写购买碳凭证方法,即买入委托卖出的挂单。此方法使用修饰符进行修饰只有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:智能合约测试
    子任务2-3-1:角色访问控制合约测试
  6. 定义合约部署夹具(deployAccount 函数)。获取 Hardhat 本地测试网络的 6 个默认账户owner, alice, bob, carol, dave, eve。获取 Account 合约的工厂对象,得到部署后的合约实例 account。将合约实例 account 和所有测试账户返回,供测试用例调用。
  7. 测试mint方法。调用执行夹具deployAccount函数,获取部署好的合约实例 account 和管理员账户 owner。以管理员 owner 的身份,调用合约的 mint 方法铸造1000代币,接收者为owner。通过expect断言,验证owner余额为1000。

模块三:区块链应用系统开发(30分)

任务3-1:区块链应用前端功能开发

使用VsCode工具,在src\views\admin\QuotaManagement\index.vue文件中完成新建额度功能并按照下面新建额度的原型图的长度、宽度、行高、间距、文字样式、颜色等,完成新建额度页面的开发,且需要对新建额度做规则校验,校验结果如下图所示,将Web页面和代码截图保存(截图没有水印);

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

任务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。
任务3-2-2:账号注册与审核

  1. 编写SysUserController接受页面请求,使用Get方式接收请求,并使用JSON或者实体类的方式接收请求数据,根据请求参数生成密钥后返回前端。
  2. 编写SysUserController接受页面请求,使用Post方式接收页面请求,并使用JSON或者实体类的方式接收请求数据。如审核通过,调用合约校验账户信息,无误后修改状态为审核通过,如不通过直接修改状态为不通过,调用Mapper层方法保存到数据库中,将修改成功信息返回前端。

如需培训或资料可联系博主

相关推荐
STCNXPARM2 小时前
Linux-ARM-GIC interrupt子系统深度剖析
linux·运维·arm开发·gic·中断子系统
Jing_jing_X2 小时前
AI分析不同阶层思维11:计算服务器成本
运维·服务器·架构·提升·薪资
AC赳赳老秦2 小时前
ELK栈联动:DeepSeek编写Logstash过滤规则与ES日志分析逻辑
运维·前端·javascript·低代码·jenkins·数据库架构·deepseek
DBA小马哥2 小时前
时序数据库InfluxDB迁移替换:痛点剖析与解决方案
运维·数据库·时序数据库·dba
米高梅狮子2 小时前
06. Nginx 服务器
运维·服务器·nginx
信创天地2 小时前
信创环境下数据库与中间件监控实战:指标采集、工具应用与告警体系构建
java·运维·数据库·安全·elk·华为·中间件
[H*]2 小时前
Flutter框架跨平台鸿蒙开发——AnimatedIcon动画图标
运维·nginx·flutter
运维小欣2 小时前
证券行业可观测平台选型指南:数字化转型的“千里眼”
运维
科技与数码2 小时前
深圳自动化系统研发公司九科信息:以全链路产品筑牢市场标杆
运维·自动化