上海市第二届职业技能大赛区块链技术项目参赛心得总结
引言
由题目可知,我参加了今年上海市第二届职业技能大赛的区块链技术项目,比赛时间于今年5月10号就开始,11号就结束了,但是我拖到年底才想说做一个参赛心得总结吧,也算是给自己参赛经验总结,后续也从我参赛和做题后感想以及一些资料也给后续参赛的一点参考吧。赛事从传统业务场景结合区块链技术,实现技术点考察,我参考的考题是结合航运场景下出题,涉及到的海关、航运公司等多方参与的场景下对相应技能点进行考察出题。

前言–适合参加的人员类型
前期准备
报名确定参赛是24年底的时候,因为有同事参加了第一届且成绩不错,区块链协会的人找到公司让推荐人参赛,同事就推荐我参加了,想着每年取得一点小成绩的自我KPI就报名了。
第一届试题文件参考
本来以为可能3月份就考试,想着年后回来准备应该刚好,前期只给了一个区块链应用操作样题,题目包含三大块,只包含各块大致会考的点,非常粗略,后续也会把相关资料都分享出来。
- 模块A部分截图

- 模块B 部分截图

- 模块C 部分截图

当然还有一些第一届的赛务手册和技术文件之类的,后续也会一起发出来,除此之外,我还从上届参加比赛的同事处要到了一些额外的资料,包括他后续参加第一届国赛的试题练习等资料。
第二届正式发布的样例试题
从上述的试题可知考试分3大块,但是因为第一届可能在疫情所以举办了两次,第二次24年举办是时候算第一届其实分4大模块,一天考完的,从我这次考完回头看第一届参考性不大了,因为市赛最后会取前二去参加国赛,后续第二届的题其实更靠拢国赛的出题思路,且考试的区块链底层技术选型也因国赛产生与第一届非常大的不同,这里划重点!
在3月4日的时候发了第二届的参赛样题、区块链技术文件、评分框架共三个文件
竞赛样题
样例试题是结合区块链技术和某一应用场景,围绕该场景的三个模块进行考核,涉及到区块链运维、区块链测试、区块链应用三部分,里面的小项有些写的很笼统,当然考试题目还有很多小细分,题量很大,基本属于是得操作步骤熟练操作还得不出差错才行。


- 部分内容截图如上所示,具体内容见完整打包链接文件
区块链技术文件
主要描述了一下参赛的规则、相关规定,最重要的是给出了参赛电脑的环境以及给出的提供的工具,但里面埋大坑,其实实际参赛的时候给出的根本与这个技术文件提供的不符合,例如文件中提到的提供长安链及套件、Hyperledger Fabric及套件就根本没有,只有Fisco-bcos部分考题中需要的,因为考试题目全围绕Fisco-bcos出题,且部署底链方式指定化,当然出于好评分的角度确实指定具体的更好评分,但是和一开始说的不限制底链运用就背道相驰的,如果前期没有准备对方向很可能很难得分。

例如上述的截图工具,连接虚拟机的工具得自己提前熟悉,开发工具和软件也得习惯,在第一次选手赛前开会中我曾提出是否后端可用GO,以及提供配套的开发工具,总裁说都会提供,但赛题直接是以 java 出题,未考虑到多语言后端开发人员的需求,这点如果非 java 开发人员或者不懂 java 的可以不用考虑该比赛了。

从提供的开发环境也是,看着应该是不限制底链和开发语音参赛,但实际题目考量很单一,只考了 java 方向的开发以及底链只设计到Fisco-bcos的指定部署方式。
评分框架
评分框架主要是针对每项细评分给分标准,部分截图示例如下,具体细则见总材料文档吧

第一届国赛集训参考资料(重要)
上届国赛培训老师训练资料
从上届参赛同事那边获取到一些可参考的资料,其中就包括他们参加国赛时帮他们培训的老师在某一次与其他省对抗赛时候他自己模拟的一次答案资料,没想到的是该老师来参加第二届比赛,直接来和我们一起当选手了,等参赛完再看他提供的资料只能说完全踩中题目的每个点吧,不光底链的选择,节点的分配,底链部署方式,以及后续种种,我只能说要是早知道我肯定把这个文档当赛前答案来准备了。只能说如果后续题目还是这么出,这个文档可以反复阅读,里面的部署步骤以及命令和机器熟悉适配度只能说在和题目100%匹配。

文档详细内容看总附件资料下载链接内的文件
技术准备
底链
赛前准备
考试前我的准备虽然还是偏Fisco-bcos,但因为第一届是不限制底链,只要求实现,所以在准备的时候以防万一,我还是长安链的部署也都实践了一次,但后续发现后续考题完成衔接还是Fisco-bcos更合适,至于部署方式这点我是没有想到题目有要求,以至于我就按照部署工具build_chain.sh来启动底链网络和节点生成的,所以这块就遗漏了generator方式的部署,考试中我也询问过主裁不同实现底链的方式是否可行,给的答复也模棱两可,所以得分不高可能也是这块准备缺失的原因。
开发部署工具(build_chain.sh)
组员节点管理
配置CA黑白名单
赛后心得
底链部分如上文所说,虽然技术文件说提供三种底链,但是根据考试题目已经指定使用Fisco-bcos,至于部署方式模块A就是使用运维部署工具generator完成。当然考试其他模块还涉及到其他启动链的方式,例如考试应用模块的时候使用开发部署工具build_chain.sh启动链,但模块A区块链运维考试的时候还是以generator部署为主,以及后续命令,节点准备、网络测试等。
使用generator一键部署FISCO-BCOS
合约
赛前准备
合约毫无疑问就是solidity了,虽然go也可以写合约,但题目其实已经规定了语言,附上一个学习 solidity合约的链接,基本跟着这个学习一遍,再加上计算机基础就没问题。
Solidity学习
Solidity语言语法总结
Solidity基础四
在线合约编译学习平台:remix
以下是根据样例试题自己模拟的合约,仅供参考




赛后心得
合约模块主要涉及到考试模块 C 的区块链应用的前三小项题目,主要涉及到应用业务逻辑、合约权限、以及合约的一些基础类型等的考察。基本就是按照填空的模式出题,让补充缺失的部分,基本涉及到时间类型、映射类型、枚举类型、以及业务相关的赋值,修饰器的权限控制等操作考察语法,最后需要附补充完后的文件原件,以及各模块的截图,所以熟练度也很重要,不然题量会做不完。
管理平台
赛前准备
从上述底链选择就可得知,这块的管理平台考的也是 Fisco-Bcos的WeBASE管理平台,当然不会考察一键部署的方式,而是分步骤子系统都得自己部署,涉及到的有Webase-sign 签名服务、webase-front节点前置服务、webase-node-mgr节点管理服务、web管理平台,每个子系统部署顺序如上,且子系统之间有相应的关联联系,所以每一个子系统都得部署成功,最好才能有可视化的管理平台
下面附上我自己练习部署子系统时候的命令和对应操作截图
1、Webase-sign 签名服务
数据库初始化,创建webasesign数据库 命令如下
Create database webasesign default charset utf8 collate utf8_general_ci;
修改配置文件 application.yml
注意端口是否被占用,默认5004,修改数据库连接信息

启动服务./start.sh

查看启动日志tail -f log/WeBASE-Sign.log

上述是 Webase-sign 签名服务子系统的操作命令及操作结果截图
2、webase-front节点前置服务
拷贝节点配置信息到节点前置服务中
cp -r nodes/${127.0.0.1}/sdk/* ./conf/

修改配置文件 application.yml,监听端口默认5002,channelport 默认为20200

启动服务 ./start.sh

查看启动日志 tail -f log/WeBASE-Front.log

上述是 webase-front 签名服务子系统的操作命令及操作结果截图
附部署可能遇到相关问题及解决:节点管理服务附录问题及解决
3、webase-node-mgr节点管理服务
创建数据库表
Create database webasenodemanager default charset utf8 collate utf8_general_ci;
修改配置文件端口默认5001,数据库连接信息修改

每个服务单独配置,修改连接配置deployType:1,webaseSignAddress:改为对应 ip 端口

启动服务 bash start.sh

查看日志服务tail -f log/WeBASE-Node-Manager.log

上述是 webase-node-mgr 签名服务子系统的操作命令及操作结果截图
4、web管理平台
注意 nginx环境安装检查,WeBASE-Web,主要修改nginx的配置文件nginx.conf
配置文件在/usr/local/nginx/conf下面,如果这里没找到,可以到/etc下寻找,如有权限问题,请加上sudo,端口预留5000
nginx增加配置
upstream node_mgr_server{
server 10.0.0.1:5001; # 节点管理服务ip和端口
}
server {
listen 5000 default_server; # 前端端口(端口需要开通策略且不能被占用)
server_name 127.0.0.1; # 服务器ip,也可配置为域名
location / {
root /data/WeBASE-Web/dist; # 前端文件路径(文件需要有权限访问)
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
include /etc/nginx/default.d/*.conf;
location /mgr {
proxy_pass http://node_mgr_server/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
重启配置
Sudo nginx -s reload
注!!如果验证码出错,通过修改配置文件跳过验证以 root 登录

管理平台默认用户为admin,默认密码为Abcd1234

绑定前面第二步的节点前置服务
赛后心得
这块的考后心得有两点,第一点一是时间分配,上述管理平台各个子系统部署都是在上午模块 A 的最后一个板块的题目,这点在做题量和需要复制命令以及操作截图到答题 word 文档里对于时间把握以及熟练度都是有要求的。第二点是注意自己配置 java 环境,我是没想到的居然要自己配置 java 环境,因为赛务手册中的选手台式机环境软件安装中写了java jdk1.8的安装,但是我没想到没有配置环境变量,因为在我部署第一个子系统的时候提出JAVA_HOME没有安装的错误,因为子系统代码还是以 java 驱动的部署,所以在没有配置java的环境变量所以提示出错。
java环境配置
sudo apt install default-jdk
之后手动在~/.bashrc中添加JAVA_HOME,再source应用它。


各个子系统参考官方文档
Webase-sign 签名服务
webase-front 节点前置服务
webase-node-mgr 节点管理服务
web管理平台
可点击右下角选择切换底链子版本

测试
测试属于考试中的模块B部分,主要考察合约测试、接口测试、压力测试等等,以及文档书写规范等内容,这块属于唯一的主观得分点,所以答题的文档格式以及测试文件书写比较重要,这里也参考了上届培训老师提供的相关文档资料,我自己赛前准备的时候也写了一个测试例题的测试文档内容后续一起放链接文档里,供大家参考

赛题会提供相关测试的合约和接口服务(java项目代码),根据题目运行相关文档,并编写相关测试文件。其中的合约测试应该会运用到上午部署的管理平台,因为管理平台可以直接在平台部署合约并调用合约方法,但是我准备的时候做了两手准备,一个是部署好管理平台就可以直接部署截图,如果管理平台没有成功还是可以使用上午模块 A 中的console管理工具连接区块链网络部署合约还是能够正常走后续流程的,还有使用truffle、postman、vscode等工具对后续合约和接口进行测试调用
赛前练习
针对测试相关赛前准备联系文档结构大致如下截图

主要还是根据赛前样题的大致题目预测题目,以及给出的测试文档相关需要写的内容,具体章节内容详情见总链接
truffle
对于合约测试中的truffle使用,这里附上案例样题我针对合约测试的部分书写代码,供参考

赛后心得
- 1、测试这块合约测试需要学习一下truffle,这块根据每个合约测试是否符合预期,这里就不仔细展开了,可自行去学一下这块,附一个学习参考链接快速入门 Truffle
用truffle写测试用例
- 2、接口服务测试这块也是提供的 java代码,启动后需要部署到服务器,以及压力测试这块也是提供的 java 项目代码,需要补充关键空,相当于填空,这块时间太赶也太复杂和我之前预计的压力测试使用 caliper有出入,所以代码没有细看逻辑了,有余力者可以攻克一下。
- 3、测试方案和测试报告是需要写成两份 word 文档,内容大致可参考我上述的联系文档模块,这两处是唯一半主管打分点,好好准备一下规范格式可以拿分。
虽然压力测试没有使用 caliper 作为考试,但是还是分享一下前期准备的一些学习链接
Fisco-Bcos压力测试指南
性能压测工具Caliper在FISCO BCOS平台中的实践
Fabric2.3 使用Caliper进行性能测试(保姆级示范,亲测可行)
caliper-benchmarks
区块链性能测试工具Caliper
压力测试(caliper具体步骤+示例)
后端
开发语言是java,赛题也是给的 java 语言的后端代码,开发编辑器是提供idea的,项目代码其实应该就是从管理平台上,根据合约下载的后端代码,对应位置示例如下,可以自行练习的时候下一个测试合约的项目做测试

然后需要自行补充 controller层,拿我练习的一个后端代码文件截图示例

提供的项目框架,需要自行根据场景和业务需求补充接口逻辑,这块就不用额外多说了
需要注意的是需要修改配置文件,特别是部署合约后的合约地址要在后端配置文件中体现,以及需要测试不同角色的权限控制,所以不同用户的账户地址也是在配置文件中更改体现,其他的链接部署合约服务器ip、端口,以及项目运行端口就不用多说了
前端
前端开发就是用的 vue 了,开发编辑器是提供 vscode,插件丰富也轻量,不熟悉编辑器的可以提前熟悉一下试试,前端的考试也是填空,会把一些关键的赋值、给值、调用接口等位置预留出来需要补充,并截图和附上最后的页面,也有一个功能页需要自己新写,所以题量和前端熟悉度还是得要有,需要会阅读代码和补充代码逻辑,附一个vue3的基层学习教程链接吧,需要自取
VUE3学习教程链接
npm使用教程
使用vscode进行vue.js项目搭建
vscode下面开发vue.js项目
技术准备心得总结
技术准备的心得从考试完再总结的话可能涉及以下几点可供后续参考
- 1、底链以 Fisco-bcos为主,其他长安链、Fabric 都没有涉及到考题,且考察的部署方式涉及到运维部署工具generator、部署工具build_chain.sh等多种方式部署,以及节点生成也有不同的生成方式,连接区块链网络的管理工具也会涉及到console或者部署管理平台等方式
- 2、合约需要掌握 solidity 的相关基础类型、权限控制、合约业务逻辑梳理、阅读并完善等能力
- 3、管理平台考察主要是各个子系统之间的部署顺序、关系、端口和对应需要修改的配置文件等都需要自己清楚,且注意需要先自行配置 java 的环境变量即可
- 4、后端就是考察 java,将合约如何与后端做交互,配置文件需要更改的地方,业务逻辑解读实现,不同账号的权限与账号地址的生成,阅读已有的部分代码等能力
- 5、前端主要就是页面需要填入和展示的内容与后端需要交互的接口参数的赋值,以及阅读已有代码,自己实现一个页面等能力考察
考试相关
地点
考试地点比较偏:上海恒荣路200号上海工商职业技术学院
时间
- 从年底报名,主要是推荐报名,暂未看到公开报名参加渠道,有上届参赛得奖人员想再参加好像也没有通过
- 3月初发布第一次样题,以及技术文件和评分框架等文件
- 4月初开第一次主题会议:第二届上海技能大赛区块链技术赛项技术说明会,主要就是将3月发布的赛事文件由主裁一一读了一遍,也能自行提问一些问题
- 5月上旬开始的比赛,比赛一天半(周六一天,周日上午半天),前一天下午(周五下午)有环境模拟测试,可以在考试机房提前熟悉一下工具和需要的环境等问题
参赛人员
参赛人员一般都由区块链协会推荐人员,基本是协会成员单位或相关企业推荐参加,非工作的学生好像是不能报名的,大概率还有职业技术学校的老师等参加,当然我们这届就比较坑的是还有上届主裁判和国赛辅导老师和我们一起参赛,所以其实参赛人员只能说很广泛吧
其他
参赛一天半是提供午餐供给的,吃的还是不错的,早餐不提供,自行解决,第一天上午和下午的考试间隔非常短,基本只够吃个午饭,而且时间也比较紧张,基本就半小时,就得考下午的题目,更不用想午休之类的了,而且下午的考试也是会用的上午的底链部署结果,以及管理平台的部署
心得总结
从报名参赛到考试基本也有半年时间,可以将上述的问题针对性的准备好,考试就是题量比较大而且比较吃熟练度,就算提供了官方 fisco-bcos 的手册基本上不会有时间给你按照手册操作,如果想争取一个好名次,参赛人员也是影响因素,如果有几个熟悉赛事的大佬参加也就只能陪跑了,不过还是能刷一波参与优胜奖吧。根据同事经验,如果真的有机会冲击前二名就会有后续国赛参加资格,这个也会有后续集中培训的机会,不过对于企业员工这点还是得看公司是否支持,毕竟集中培训也得一个多月,也是在技术学校暑假时间这样。
赛后
技术参考链接分享
Docker常用操作命令(启动类,镜像命令,容器命令)
Linux常用命令——scp详解
【手把手教程】职业学校技能大赛“区块链技术应用”赛项-样题-区块链部署&运维&测试部分(任务1-2,1-3)
2023年全国职业院校技能大赛-高职组“区块链技术应用”赛项赛卷(1卷)
区块链职业院校技能大赛之Caliper部署教程(超级详细)
参赛资料分享
资料汇总分享
我将个人参加比赛的所有文件资料汇总到以下下载链接,供各位后续参赛选手参考:内容涉及本人25年参赛的样例试题、赛务文件、评分框架细则,往年国赛资料分享,以及本来准备考试的合约参考、三大模块练习答题资料包括命令行、操作截图等,后端、前端练习代码,以及往届参赛培训资料等内容分享。
上海市第二届职业技能大赛区块链技术项目参赛资料分享
长安链相关
虽然考试使用的是 Fisco-Bcos,但是我准备的时候还是做了两手准备,长安链相关的部署和资料也做了一份,就当做一个学习资料库吧
通过命令行体验长安链
长安链Issues提问
我还使用了拉取镜像版本部署长安链管理平台的步骤,供参考
控制台部署,版本2.3.1,注意拉取镜像版本与management-backend中的docker-compose.yml文件是否一致,且注意端口是否被占用启动拉取好的镜像,docker ps -a /docker images/
Docker start 镜像 id

一键启动 docker-compose up,也可以自己拉取好镜像,一个一个单独启动

登录前端页面

默认的账号为的admin账号,默认密码为a123456。
新增区块链,运行release ./start.sh

参赛名次结果
本次参赛结果优胜奖,且不知道最终分数和其他排名,从刚开始准备想保二争一,到参赛选手名单公布就知道和前三无缘了,当然也是有自己准备的不足和遗留之处,只能说尽力啦吧
补贴相关
参赛最重要的就是有补贴了,根据自身参赛来看,参赛人员都有1000块赛事补贴和参赛所在区的技能职业1000块补贴,以及参赛时候的住宿费和打车等费用报销,当然这些是需要发票最终和赛事人员统一发放
第二块就是比赛得奖的奖金了,第一名是一万块,第二名六千,第三名四千,优胜奖一千,这个也是最后所在区统计发放
总结
根据这次参赛也算是给自己的全栈技术做一个针对性的考察巩固吧,再加上使用区块链的一些特性与传统的项目前、后端、测试等各个环节的融合使用,抛开结果成绩虽然有所遗憾,但自我提升还是检验功能来看还是很有价值的,希望以后还能有类似的机会锻炼自己,继续打磨自身吧。
更多推荐
所有评论(0)