当前位置: 首页 > news >正文

2025年江西省职业院校技能大赛高职组“区块链技术应用”任务书(6卷)

2025年江西省职业院校技能大赛高职组“区块链技术应用”赛项赛卷(6卷)


文章目录

  • 2025年江西省职业院校技能大赛高职组“区块链技术应用”赛项赛卷(6卷)
    • 模块一:区块链产品方案设计及系统运维(35分)
      • 任务1-1:区块链产品需求分析与方案设计(10分)
      • 任务1-2:区块链系统部署与运维(15分)
      • 任务1-3:区块链系统测试(10分)
    • 模块二:智能合约开发与测试(30分)
      • 任务2-1:智能合约设计(5分)
      • 任务2-2:智能合约开发(20分)
      • 任务2-3:智能合约测试(5分)
    • 模块三:区块链应用系统开发(30分)
      • 任务3-1:区块链应用前端功能开发(10分)
      • 任务3-2:区块链应用后端功能开发(20分)
    • 区块链技术技能大赛参考答案链接:

🔷博主介绍

致力于网络安全(漏洞挖掘、攻防实战)、Linux 内核系统(底层原理与性能调优)、区块链技术(Web3 安全与智能合约审计)、Python 语言应用(自动化攻防工具开发)、软件开发(全栈安全开发)等新一代信息技术领域的技术研究与干货分享,坚持以极简篇幅承载硬核知识的创作理念,为技术爱好者提供高效、深度、可落地的阅读体验。CSDN认证网络安全领域优质创作者、网络安全博客专家认证、阿里云专家博主

🌐各大技术专栏推荐

专栏名称专栏介绍
网络安全攻防之道为网络安全从业者、白帽黑客与技术爱好者打造的攻防知识阵地。深度剖析漏洞利用与防御的技术细节,实战演练渗透测试全流程,输出可落地的攻防策略,陪你在攻防对抗中持续进阶。
Linux 系统运维:从底层原理到企业级实战这里是 Linux 系统运维的实战修炼场:从系统初始化到高可用架构,从命令行魔术到自动化运维利器,深度拆解 CentOS/Ubuntu 在企业级业务、云原生环境中的运维密码。带你穿透系统底层逻辑,掌握性能调优、故障秒级定位、自动化脚本开发的硬核技能,进阶成为能扛住业务压力的 Linux 运维专家
【VulnHub 靶场攻防】从漏洞复现到实战渗透不管你是刚入门的渗透新人,还是想强化实战能力的安全工程师,都能在这儿找到匹配的靶场练手项目。我们聚焦可复现的漏洞利用技巧,结合 Nmap、Metasploit、BurpSuite 等工具实战演示,帮你把靶场经验转化为真实渗透能力,一步步成长为能在实战中 “打怪升级” 的渗透高手
博主年度总结与收获这里是旺仔 Sec 的创作成长日记!作为 CSDN 认证的网络安全优质创作者,我把每一年的技术深耕、创作思考、成长突破都浓缩在这儿 —— 从漏洞分析的技术沉淀,到内容创作的经验复盘,再到从工程师到博主的身份进阶,每一篇总结都是 “技术探索 + 创作感悟” 的双料干货
背景描述
新能源作为新兴领域,产业呈现碎片化与复杂化的特性,逐渐出现管理困难、供应链金融、可信监管与数据安全等一系列产业发展的阻碍。为了实现高质量发展和能源消纳利用,新能源产业发展需要与产业数字化趋势相融合。作为数字经济时代的前沿产物,区块链以其分布式存储、不可伪造和防篡改、透明可信、高可靠性和可追溯等优势,为破解能源业存在的问题和创新发展模式提供了新的机遇,满足了新能源和分布式能源数字化的需求。 区块链与太阳能的融合,可以让新能源治理变得更加高效,让能源流转到更加需要的地方,尤其在能源交易过程中实现原子化交易,太阳能管理系统中除了资产与能源外,还包括了不同主体的管理,资产与太阳能源需要和用户进行深度绑定。总之,基于区块链的太阳能管理系统可以有效提升能源利用效率,同时也可以有效降低能源浪费的现象。

在这里插入图片描述

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

选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图粘贴至客户端桌面【区块链技术应用赛\重命名为工位号\模块一提交结果.docx】中对应的任务序号下。

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

本环节需要依据项目背景完成需求分析与方案设计,具体要求如下:
1.根据题干描述使用Visio或是思维导图工具展现本系统的系统架构图,最好分为业务平台和支撑平台两个部分。
2.根据题干中描述内容,设计总体功能结构图
3.根据题干中描述内容,完善“系统概要设计说明书.doc”具体工作内容如下:
(1)将设计内容根据说明书模块需求进行补充,并完善概要设计说明书中的“需求概要”
(2)完善说明书中接口说明部分内容

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

围绕新能源管理区块链平台部署与运维需求,进行项目相关系统、节点以及管理工具的部署工作。通过通过监控工具完成对网络、节点服务的监控。最终利用业务需求规范,完成系统日志、网络参数、节点服务等系统结构的维护,具体要求如下:
1.根据参数与端口设置要求,部署区块链系统并验证;
2.根据参数与端口设置要求,部署区块链网络管理平台并验证;
3.基于区块链系统相关管理平台,按照任务指南实施系统运维工作并验证。
4.基于区块链系统相关监管工具,按照任务指南对区块链系统进行监管。

子任务1-2-1: 搭建区块链系统并验证
参照ipconf文件搭建区块链系统,要求在系统中包括3个独立组织以及6个节点,网络拓扑为星型网络,并且在联盟链中需实现2个数据隔离场景(group1、group2),节点可根据具体业务加入不同的业务场景。具体工作内容如下:
1.使用给定工具(地址“/root/tools”),配置区块链系统。
2.启动区块链系统全部节点并验证启动情况。
3.检查节点的连接状态以及所属场景的共识状态。
子任务1-2-2:搭建区块链系统管理平台并验证
基于给定服务器环境、软件以及工具(地址“/root/tools”),构建区块链系统相关控制台,并通过控制台实现相关系统管理,具体工作内容如下:
1.使用给定工具,配置控制台证书。
2.使用给定工具,以pem加密方式创建3个区块链账户(Account1、Account2、Account3)。
3.使用给定工具,通过Account1登录控制台,并查看区块高度。
4.使用给定工具,通过Account2登录控制台,并查看共识状态。
子任务1-2-3:区块链节点运维
基于已完成的区块链系统与管理平台搭建工作,开展区块链节点的加入与退出运维工作,具体内容如下:
1.获取node3的节点ID
2.启动控制台,在group1中移除node3节点
3.检查node3节点共识状态日志
子任务1-2-4:区块链网络运维
基于已完成的区块链系统与管理平台搭建工作,开展相关节点运维工作,具体内容如下:
1.生成新节点(node4),启动并检查
2.修改新节点配置,并查看节点的nodeid
3.将新节点作为观察节点加入group1当中,并检查是否加入成功
4.将区块打包最大交易数量设为2000笔。

任务1-3:区块链系统测试(10分)

设计对区块链系统的测试流程;结合实际业务需求,调用部署的智能合约中进行系统测试、性能测试等;根据业务需求,分析并且修复给定智能合约中的安全漏洞。利用模拟业务和测试工具来完成对区块链系统服务数据的测试。
1.使用命令启动区块链系统可视化一体平台并验证启动情况
2.使用可视化一体平台,创建user3用户,部署新能源管理合约,调用合约注册功能(account_register),将user3进行注册为“用户”并获取正确返回。
3.使用可视化一体平台,调用新能源管理合约judgeUserRole功能,验证注册情况。
4.参照工程项目(地址:“/root/projects”)使用Caliper测试工具对新能源管理系统智能合约太阳能板能源信息新增(Energy_insert)功能进行压力测试。具体要求如下:
(1)提供核心测试代码。
(2)设置txNumber=10,tps=1,所有测试通过率为100%
5.智能合约安全漏洞测试。
有如下问题智能合约:

pragma solidity ^0.8.3;
contract EtherGame {uint public targetAmount = 7 ether;address public winner;function deposit() public payable {require(msg.value == 1 ether, "You can only send 1 Ether");uint balance = address(this).balance;require(balance <= targetAmount, "Game is over");if (balance == targetAmount) {winner = msg.sender;}}function claimReward() public {require(msg.sender == winner, "Not winner");(bool sent, ) = msg.sender.call{value: address(this).balance}("");require(sent, "Failed to send Ether");}
}
contract Attack {EtherGame etherGame;constructor(EtherGame _etherGame) {etherGame = EtherGame(_etherGame);}function attack() public payable {address payable addr = payable(address(etherGame));selfdestruct(addr);}
}

(1)分析智能合约中存在问题,并说明危害。
(2)根据truffle工具中的代码文件,编写测试用例,复现智能合约中存在的漏洞。
(3)创建新的智能合约,修复其中问题,说明修复内容并测试。

模块二:智能合约开发与测试(30分)

选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图粘贴至客户端桌面【区块链技术应用赛\重命名为工位号\模块二提交结果.docx】中对应的任务序号下。

任务2-1:智能合约设计(5分)

子任务2-1-1 编写新能源智能合约功能需求文档
根据区块链新能源管理项目背景和需求分析,编写该区块链新能源管理的智能合约功能需求文档。
子任务2-1-2 完成区块链新能源管理智能合约的设计

  1. 设计区块链新能源管理智能合约接口,画出区块链新能源管理智能合约的角色UML用例图。
  2. 以图文结合的方式描述智能合约各参与实体间的关系。

任务2-2:智能合约开发(20分)

使用Solidity语言完成智能合约开发、部署和调用,要求如下:
子任务2-2-1:太阳能板管理接口编码

  1. 根据文档要求,编写太阳能板新增接口功能,必须将新增太阳能板数据存入指定表中,在存储完成后需触发后事件并返回存储与否的标识。
  2. 根据文档要求,编写太阳能板修改接口,必须通过指定表修改完成数据更新,在完成更新后需触发事件并返回更新与否的标识。
    子任务2-2-2:能源管理接口编码
  3. 根据文档要求,编写能源新增接口功能,必须将新增能源数据存入指定表中,在存储完成后需触发后事件并返回存储与否的标识。
  4. 根据文档要求,编写能源修改接口,必须通过指定表修改完成数据更新,在完成更新后需触发事件并返回更新与否的标识。
    子任务2-2-3:合约部署和调用
  5. 解决代码错误和警告,正确编译并部署合约,成功获取部署的合约地址和abi。
  6. 调用太阳能板查询合约接口,完整验证业务流程。
  7. 调用能源查询合约接口,完整验证业务流程。

任务2-3:智能合约测试(5分)

根据已完成的智能合约,针对开发功能开展相关合约测试工作,具体工作内容如下:

  1. 调用太阳能板查询合约接口,完整验证业务流程。
  2. 调用能源查询合约接口,完整验证业务流程。

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

选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图粘贴至客户端桌面【区块链技术应用赛\重命名为工位号\模块三提交结果.docx】中对应的任务序号下。

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

1.请基于前端系统的开发模板,在注册组件Register.vue、中添加对应的逻辑代码,实现对前端的角色选择功能,并测试功能完整性,示例页面如下(2分):

在这里插入图片描述
本任务的具体要求如下:
(1)需要填写的项有地址、角色、密码
(2)地址项输入框默认内容为“请输入0x开头的用户地址”,若不满足则报错
(3)角色使用单选按钮组件,可选项为“用户”和“电力公司”
(4)密码项需验证长度大于6位,输入框默认内容为“请输入6位以上的密码”
(5)页面需要有“返回”按钮,可以返回登录页面
(6)注册成功后返回登录页面Login.js:
代码片段1:

  <el-row style="height: 100%;"><el-col :span="8" :offset="8" class="register-box"><el-row><el-col :span="16" :offset="4"><el-form :model="queryForm" ref="queryForm" label-width="100px"><h2>注册页面</h2><el-form-item label="地址:" prop="address"><input type="primary" 选手填写部分v-model=选手填写部分/></el-form-item><el-form-item label="角色:" prop="role">选手填写部分</el-form-item><el-form-item label="密码:" prop="password"><input type="primary" 选手填写部分 v-model=选手填写部分show-password/></el-form-item></el-form></el-col></el-row><el-row style="margin-bottom: 20px"><el-col :span="16" :offset="4"><el-button type="primary" 选手填写部分round>注册</el-button><el-button type="primary" 选手填写部分round>返回</el-button></el-col></el-row>
</el-col>

代码片段2:

     goback: function () {选手填写部分},代码片段3:register: function() {// 表单信息检查
选手填写部分          this.axios.post('/account/register', this.registerdata).then((response) => {if (response.data.code == 选手填写部分) {alert(选手填写部分)this.$router.push('/login')}else {alert(`选手填写部分, ${response.data.data}`)}})},

2.请基于前端系统的开发模板,在登录组件Login.vue文件中添加对应的登录逻辑代码,实现对后端系统的登录功能,并测试功能完整性:
本任务的具体要求如下:
(1)需要填写的项有地址、密码,且密码以密文形式展现
(2)地址填写栏默认内容为“请输入0x开头的用户地址”
(3)页面需要有“注册”按钮,可以跳转注册页面
(4)点击“登录”按钮时需要验证,地址栏内容需以”0x”开头,密码需大于6位
(5)对登录密码进行简单加密,传输内容为原内容后增加字符串“pd”
(6)登录成功后进入首页
参考界面如下:

在这里插入图片描述
代码片段1:

  <el-row style="height: 100%;"><el-col :span="8" :offset="8" class="login-box"><el-row ><el-col :span="16" :offset="4"><el-form label-width="100px"><h2>电力能源交易系统登录</h2><el-form-item label="地址:"><input type="primary" 选手填写部分v-model="logindata.address"/></el-form-item><el-form-item label="密码:"><input 选手填写部分v-model=选手填写部分/></el-form-item></el-form></el-col></el-row><el-row style="height: 50px"><el-col :span="16" :offset="4"><el-button type="primary" 选手填写部分round>登录</el-button><el-button type="primary" 选手填写部分 round>注册</el-button></el-col></el-row>

代码片段2:

     loginfun() {// 表单信息检查
选手填写部分console.log(this.logindata.password )this.axios.post('/account/login', this.logindata).then((response) => {if (response.data.code == 选手填写部分) {this.$cookies.set("useraddress", response.data.data)console.log(this.$cookies.get('useraddress'))// this.uaddress = response.data.data选手填写部分          }})},

代码片段3:

  register: function () {选手填写部分}

3.请基于前端系统的开发模板,编写个人产权组件MyAsset.vue文件,实现对个人能源的管理功能,并测试功能完整性。
本任务具体要求如下:
(1)界面有明确的资产相关提示语
(2)界面需要展现当前用户设备列表,无设备时要给出提示
(3)对于每个列出的设备在操作栏增加“出售”按钮,可添加出售订单,点击后应有弹出框提示用户填写相关信息(设备编号、所属权、价格)用于出售,该弹出框有“确认”按钮,点击该按钮有结果提示
代码片段1:

    <el-row gutter="20" type="flex" justify="space-between"><el-col style="margin-bottom:0px"><el-page-header content="资产列表" @back="goBack"/></el-col><el-divider direction="horizontal " /><el-col :span="2" style="margin-bottom:10px"><el-button primary 选手填写部分>新增设备</el-button></el-col></el-row><el-row gutter="20" type="flex" justify="space-between"><el-col><el-table :data="tableData" stripe border  style="width: 100%"><el-table-column type="selection" width="55"></el-table-column><el-table-column fixed prop="numid" label=选手填写部分width="150" show-overflow-tooltip /><el-table-column prop="name" label=选手填写部分width="150" /><el-table-column prop="actual_Power" label=选手填写部分width="150" /><el-table-column prop="rated_Power" label=选手填写部分width="150" /><el-table-column prop="input_Time" label=选手填写部分width="100" /><el-table-column prop="position" label=选手填写部分width="150" /><el-table-column prop="price" label=选手填写部分width="120" />           <el-table-column prop="Ownership" label=选手填写部分 show-overflow-tooltip width="170" /><el-table-column fixed="right" label=选手填写部分width="150"><template #default><el-button link type="primary" size="small" 选手填写部分>出售</el-button></template></el-table-column></el-table>

代码片段2:

 <el-dialog v-model="dialogFormVisible2" 选手填写部分><el-form><el-form-item label="设备编号"><input v-model=选手填写部分/></el-form-item><el-form-item label="所属权"><input v-model=选手填写部分/></el-form-item><el-form-item label="价格"><el-input v-model=选手填写部分/></el-form-item>         </el-form><template #footer><span class="dialog-footer"><el-button 选手填写部分>离开</el-button><el-button type="primary" 选手填写部分>确认</el-button></span></template>          </el-dialog>

代码片段3:

  saller() {this.axios.post(选手填写部分, this.createOrderPrice).then((res) => {if (res.data.code == 选手填写部分){alert('添加成功')this.dialogFormVisible2 = 选手填写部分this.listinfo()}else('添加失败')})}},

代码片段4:

 goBack() {this.$router.push('/')},// 新增add() {
选手填写部分
},
handleClick() {选手填写部分},getAssert(){let _Address = 选手填写部分this.axios.get(`/get_Address_Assert?_Address=${_Address}`).then((res) => {if (res.data.code == 200){选手填写部分}else{alert(`失败,$(res.data.data)`)}})     
},

4.请基于前端系统的开发模板,编写产权市场组件Market.vue文件,实现产权的查询和交易功能,并测试功能完整性
本任务具体要求如下:
(1)界面有明确的产权市场相关提示语
(2)界面有输入框,提示用户输入产权型号,有搜索按钮可供搜索
(3)搜索结果展示页面展示该产权的具体信息,包括型号、卖方、额定功率、实际功率、投入时间、所在位置,有“购买”按钮可进行购买操作
(4)点击“购买按钮”,提示用户输入设备编号、所属权、当前账号,该弹出框有“确认”按钮,点击该按钮有结果提示
参考界面如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码片段1:

<el-container style="height: 100% "><el-aside width="auto"><Aside></Aside></el-aside><el-container><el-header><Header></Header></el-header><el-main><el-row><el-col><el-page-header content=选手填写部分@back="goBack"/></el-col></el-row><el-divider direction="horizontal " />

代码片段2:

   <el-row><el-input placeholder=选手填写部分 v-model="searchs" style="margin-bottom:20px"><template #append><el-button 选手填写部分><el-icon><Search /></el-icon></el-button></template></el-input>

代码片段3:

 <el-card :body-style="{ padding: '0px' }" style="margin-bottom: 20px"><imgv-for="item2 in imgs":key="item2":src="item2.img"class="image"/><span>总价:</span><span>选手填写部分</span><div style="padding: 14px"><span>选手填写部分</span><div class="bottom"><time class="time">{{ currentDate }}</time><el-button text @click="drawer = true">详细信息</el-button>  <el-button text 选手填写部分>购买</el-button>             </div><el-form size="mini"><el-form-item label="型号:">选手填写部分</el-form-item><el-form-item label="卖方:">选手填写部分</el-form-item><el-form-item label="额定功率:">选手填写部分</el-form-item><el-form-item label="实际功率:">选手填写部分                  </el-form-item><el-form-item label="投入时间:">选手填写部分</el-form-item><el-form-item label="所在位置:">选手填写部分</el-form-item></el-form>

代码片段4:

 <el-dialog v-model="transferorder" title="购买确认"><el-form><el-form-item label="设备编号"><input v-model=选手填写部分/></el-form-item><el-form-item label="所属权"><input v-model=选手填写部分/>`在这里插入代码片`</el-form-item><el-form-item label="当前账号"><el-input v-model=选手填写部分/></el-form-item>         </el-form><template #footer><span class="dialog-footer"><el-button @click="transferorder = false">离开</el-button><el-button type="primary" 选手填写部分>确认</el-button></span></template>       </el-dialog></div></el-card>

代码片段5:

transfer() {this.axios.post(`/SSPU_transfer`, this.owner).then((res) => {if (res.data.code == 200){alert(选手填写部分)this.transferorder = false}else{alert(选手填写部分)}})
},

代码片段6:

getData() {let _numid = this.searchsthis.axios.get(`/get_numid_Spu?_numid=${_numid}`).then((res) => {console.log(res.data.data)if(res.data.code == 200 ){选手填写部分console.log(res.data.data)}else{alert(`失败,$(res.data.data)`)}})}},

5.请基于前端系统的开发模板,编写管理员的区块链浏览器组件Browser.vue文件,实现底层合约的管理,并测试功能完整性
本任务具体要求如下:
(1)界面有明确的区块链浏览器相关提示语
(2)展示页面展示合约名称、合约地址、部署时间、创建时间、修改时间
(3)后端代码完成后截图
参考界面如下:
在这里插入图片描述
代码片段1:

 <el-page-header content=选手填写部分 @back="goBack" /></el-col><el-divider direction="horizontal " /><el-col><el-table:data="contracts"style="width: 100%"><el-table-columnprop="合约名称"label=选手填写部分width="180"></el-table-column><el-table-columnprop="合约地址"label=选手填写部分width="180"></el-table-column><el-table-columnprop="部署时间"label=选手填写部分></el-table-column><el-table-columnprop="创建时间"label=选手填写部分></el-table-column><el-table-columnprop="修改时间"label=选手填写部分></el-table-column>

代码片段2:

代码片段2:created() {this.axios.get(`/list`).then((response) => {if(response.data.result){this.contracts = 选手填写部分      }})}

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

1.请基于已有的项目,基于WeBASEUtils.java工具类,编写注册相关文件,实现注册接口,并测试功能完整性。
本任务具体要求如下:
(1)开发注册文件RegisterBO.java实现注册功能实体的定义包含登录页面所传递的三个变量:地址、角色、密码,并补充get、set方法
(2)开发账户管理文件AccountService.java中注册部分,再次验证前端传值,合约的交互逻辑,返回值封装成为Result结果类
(3)开发账户管理入口文件AccountController.java中注册部分,要求接口地址为/account/register

RegisterBO.java:
代码片段1public class RegisterBO {String 选手填写部分;String 选手填写部分;String 选手填写部分;public String getAddress() {选手填写部分}public void setAddress(选手填写部分) {选手填写部分}public String getRole() {选手填写部分    }public void setRole(选手填写部分) {选手填写部分}public String getPassword() {选手填写部分}public void setPassword(选手填写部分) {选手填写部分}
}
AccountService.java:
代码片段1public  Result<String> RegisterService(RegisterBO registerBO) {List funcParam = new ArrayList();funcParam.add选手填写部分;funcParam.add选手填写部分;funcParam.add选手填写部分;Dict result = weBASEUtils.commonReq(userAddress,选手填写部分, funcParam, ABI, 选手填写部分, contractAddress);JSONObject respBody = JSONUtil.parseObj(result.get("result"));String data = (String)respBody.get("message");if (data.equals("Success")) {return Result.success("ok");}else {return Result.error(ResultVO.PARAM_EMPTY);}
}
AccountService.java:
代码片段1public  Result<String> RegisterService(RegisterBO registerBO) {List funcParam = new ArrayList();funcParam.add选手填写部分;funcParam.add选手填写部分;funcParam.add选手填写部分;Dict result = weBASEUtils.commonReq(userAddress,选手填写部分, funcParam, ABI, 选手填写部分, contractAddress);JSONObject respBody = JSONUtil.parseObj(result.get("result"));String data = (String)respBody.get("message");if (data.equals("Success")) {return Result.success("ok");}else {return Result.error(ResultVO.PARAM_EMPTY);}
}

2.请基于已有的项目,基于WeBASEUtils.java工具类,编写登录相关文件,实现登录接口,并测试功能完整性。
本任务具体要求如下:
(1)开发注册文件LoginBO.java实现功能实体的定义,包含登录页面所传递的两个变量:地址、密码并补充get、set方法
(2)开发账户管理文件AccountService.java中登录部分,实现与合约的交互逻辑,返回值封装成为Result结果类
(3)开发账户管理入口文件AccountController.java中登录部分,要求接口地址为/account/login

LoginBO.java:
代码片段1public class LoginBO {String 选手填写部分;String 选手填写部分;public String getAddress() {选手填写部分}public void setAddress(选手填写部分) {选手填写部分}public String getPassword() {选手填写部分    }public void setPassword(选手填写部分) {选手填写部分    }
}
AccountService.java:
代码片段1public  Result LoginService(LoginBO loginBO) {List funcParam = new ArrayList();funcParam.add(选手填写部分);funcParam.add(选手填写部分);Dict result = weBASEUtils.commonReq(userAddress,选手填写部分, funcParam, ABI, 选手填写部分, contractAddress);JSONArray respBody = JSONUtil.parseArray(result.get("result"));String data = (String)respBody.get(0);if (data.equals("true")){return Result.success(loginBO.getAddress());}else {return Result.error(ResultVO.PARAM_EMPTY);}}AccountController.java:@RequestMapping(选手填写部分, method = RequestMethod.POST)public Result<String> login(@RequestBody LoginBO loginBO) {选手填写部分;}

3.请基于已有的项目,基于WeBASEUtils.java工具类,编写产权管理相关文件,实现产权管理的相关接口,并测试功能完整性。
本任务具体要求如下:
(1)开发文件SPU_sallerBO.java实现功能实体的定义,包含变量用户地址、价格和产权编号,并补充get、set方法
(2)开发管理文件NewEnergyService.java中产权出售部分,对前端的数据进行二次验证,要求用户地址为0x开头的数据串,实现与合约的交互逻辑,返回值封装成为Result结果类
(3)开发管理入口文件NewEnergyController.java中产权出售部分,要求接口地址为/SPU_saller,接口可接受请求方法为POST

SPU_sallerBO.java:
public class SPU_sallerBO {String 选手填写部分;String 选手填写部分;String 选手填写部分;public String get_numid() {return 选手填写部分;}public void set_numid(选手填写部分) {选手填写部分;}public String get_price() {选手填写部分;}public void set_price(选手填写部分) {选手填写部分;}public String getAddress() {选手填写部分;}public void setAddress(选手填写部分) {选手填写部分;}
}
NewEnergyService.java:public  Result<String> SPU_sallerService(SPU_sallerBO spu_sallerBO) {List funcParam = new ArrayList();if(!spu_sallerBO.getAddress().startsWith("0x")){return Result.error(ResultVO.ADDRESS_INVALID);}选手填写部分Dict result = weBASEUtils.commonReq(userAddress,选手填写部分, funcParam, ABI,选手填写部分, contractAddress);JSONObject  resBody = JSONUtil.parseObj(result.get("result"));String data = (String) resBody.get("message");if (data.equals("Success")) {return Result.success("ok");}else {return Result.success("failed");}}
NewEnergyController.java:@RequestMapping(选手填写部分, method = RequestMethod.POST)public Result<String> SPU_saller(@RequestBody SPU_sallerBO spu_sallerBO) {return 选手填写部分;}

4.请基于已有的项目,基于WeBASEUtils.java工具类,编写产权交易相关文件,实现产权交易的相关接口,并测试功能完整性。
本任务具体要求如下:
(1)开发文件SpuVO.java实现功能实体的定义,包含变量:设备编号、设备名称、实际功率、额定功率、结束时间、工作地点、单价、所属权,并补充get、set方法
(2)开发文件SPU_sallerBO.java实现功能实体的定义,包含变量:产权编号、价格、用户地址,并补充get、set方法
(3)开发管理文件NewEnergyService.java中产权交易、查询部分,实现与合约的交互逻辑,返回值封装成为Result结果类
(4)开发管理文件NewEnergyController.java中产权交易,要求接口地址为/SSPU_transfer,请求方法为POST;产权查询部分,要求接口为/get_numid_Spu_,请求方法为GET

SpuVO.java:public class SpuVO {String  选手填写部分;String  选手填写部分;String  选手填写部分;String  选手填写部分;String  选手填写部分;String  选手填写部分;String  选手填写部分String  选手填写部分;public String get_numid() {选手填写部分    }public void set_numid( 选手填写部分) {选手填写部分}public String getName() {选手填写部分}public void setName( 选手填写部分) {选手填写部分}public String getActual_Power() {选手填写部分}public void setActual_Power( 选手填写部分) {选手填写部分}public String getRated_Power() {选手填写部分    }public void setRated_Power( 选手填写部分) {选手填写部分}public String getInput_Time() {选手填写部分}public void setInput_Time( 选手填写部分) {选手填写部分}public String getPosition() {选手填写部分    }public void setPosition( 选手填写部分) {选手填写部分}public String getPrice() {选手填写部分    }public void setPrice( 选手填写部分) {选手填写部分}public String getAddress() {选手填写部分    }public void setAddress( 选手填写部分) {选手填写部分}
}
NewEnergyService.java:
public  Result<String> SPU_transferService(SPU_transferBO spu_transferBO) {List funcParam = new ArrayList();选手填写部分    Dict result = weBASEUtils.commonReq(userAddress,选手填写部分, funcParam,ABI,  选手填写部分, contractAddress);JSONObject  resBody = JSONUtil.parseObj(result.get("result"));String data = (String) resBody.get("message");if (data.equals("Success")) {return Result.success("ok");}else {return Result.success("failed");}}public Result get_numid_SpuService(String _numid) {List funcParam = new ArrayList();选手填写部分Dict result = weBASEUtils.commonReq(userAddress,选手填写部分, funcParam, ABI,选手填写部分, contractAddress);JSONArray resBody = JSONUtil.parseArray(result.get("result"));JSONArray res =  JSONUtil.parseArray(resBody.get(0));JSONArray array = new JSONArray();选手填写部分return Result.success(array);}
NewEnergyController.java:
@RequestMapping( 选手填写部分)public Result<String> SSPU_transfer(@RequestBody SPU_transferBO spu_transferBO) {return  选手填写部分);}@RequestMapping( 选手填写部分)public Result get_numid_Spu(@RequestParam("_numid") String _numid) {return  选手填写部分;}

职业素养(5分)
1.具有良好的文档写作能力,代码编写规范
2.具有团队合作精神和创新意识

区块链技术技能大赛参考答案链接:

🤵‍♂️ 个人博客主页: @旺仔Sec的博客主页
 
WeChat公众号:鹏璃安全
 
✍🏻 博主身份:网络安全兼技能大赛工程师(NISP、CISP、华为IE、IP、redhat、软考等职业证书报考可找我报考!)
 
🐋 希望大家多多支持,我们一起进步!😄
 
如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注(各大技能大赛参考答案链接如下)
 
🖥️:软件测试技能大赛参考答案
 
🙌:软件测试—单元自动化接口测试参考答案
 
👻:区块链技术应用技能大赛参考答案
 
🚀:大数据应用开发职业院校竞赛答案参阅
 
🔎:GZ100移动应用设计与开发参考答案
 
✍:GZ031应用软件系统开发参考答案
 
☠:网络安全职业技能大赛任务解析

http://www.dtcms.com/a/557761.html

相关文章:

  • 编译tiff:arm64-linux-static报错 Could NOT find CMath (missing: CMath_pow)
  • SYN关键字辨析,各种锁优缺点分析和面试题讲解
  • 3.1.2.Python基础知识
  • Qt中使用图表库
  • LV.5 文件IO
  • 做目录网站注意沧县网络推广公司
  • 技术准备十五:Elasticsearch
  • 专门做面包和蛋糕的网站山东家居行业网站开发
  • linux挂载新硬盘并提供nfs服务
  • 用asp做宠物网站页面做地方行业门户网站需要什么资格
  • 交易网站建设需要学什么软件电商网站建设济南建网站
  • Python实现从数组B中快速找到数组A中的元素及其索引
  • 高效IT学习指南:用「智能复盘系统」突破学习瓶颈
  • 广东省白云区贵阳seo网站建设
  • 粉色大气妇科医院网站源码彭阳门户网站建设
  • 507-Spring AI Alibaba Graph Human Node 功能完整案例
  • 遥感生态指数(RSEI):理论发展、方法论争与实践进展
  • cjson 的资源释放函数
  • 第6讲:常用基础与布局Widget(一):Container, Row, Column
  • 什么是网站建设塑业东莞网站建设
  • 小企业网站建设哪里做得好深圳网站搭建
  • 婚恋网站策划页面设计好吗
  • 被禁止访问网站怎么办做招聘网站的怎么引流求职者
  • 【架构艺术】自动化测试平台架构设计的一些通用要点
  • 一个做网站的公司年收入宁波最好的推广平台
  • 建设网站0基础需要学什么海口网站建设维护
  • 农产品销售系统|农产品电商|基于SprinBoot+vue的农产品销售系统(源码+数据库+文档)
  • RAG的17种方式实现方式研究
  • 做时间轴的在线网站对网站建设的调研报告
  • 做受网站在网站上做封面