ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:447.35KB ,
资源ID:30849216      下载积分:15.9 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30849216.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文((全国职业技能比赛:高职)GZ036区块链技术应用赛项赛题第6套.docx)为本站会员(gj****cr)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

(全国职业技能比赛:高职)GZ036区块链技术应用赛项赛题第6套.docx

1、2023年全国职业院校技能大赛高职组“区块链技术应用”赛项赛卷(6卷)任务书参赛队编号: 背景描述近年来,食品安全问题层出不穷,涉及到各种食品类别,如肉类、水果、蔬菜等。食品安全事故不仅影响消费者的身体健康,还会导致社会恐慌,进而影响国家经济的稳定发展。随着全球化进程的加速,食品生产、加工、运输等环节变得更加复杂,食品安全溯源变得愈发困难。在这种背景下,采用先进的技术手段来保障食品安全,提高食品质量,已成为迫切的需求。区块链技术为食品安全溯源提供了一种创新的解决方案。区块链技术能够实现数据的不可篡改、可追溯、透明共享等特性。这些特性使得区块链技术在食品安全溯源方面具有很大的潜力。通过建立基于区

2、块链技术的食品安全溯源平台,我们可以将食品安全溯源相关信息(如生产日期、产地、生产商和流通企业等)以去中心化的方式存储在区块链上,确保数据的真实性和不可篡改性。另外,利用区块链的智能合约技术,可以在保证数据安全的同时实现透明公开的食品安全溯源业务流程设计。在此基础上,引入监管机制有助于确保业务的健康发展。模块一:区块链产品方案设计及系统运维(35分)选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图粘贴至客户端桌面【区块链技术应用赛重命名为工位号模块一提交结果.docx】中对应的任务序号下。任务1-1:区块链产品需求分析与方案设计(10分)子任务1-1-1 食品安全溯源区块链产

3、品需求分析(6分)1. 根据项目背景描述,请设计一款基于区块链技术的食品溯源系统。请至少包括以下内容:(4分)(1) 用户群体及需求分析(2) 区块链技术分析(3) 需求总结和优先级排序2. 根据设计的食品溯源区块链系统,进行功能性与非功能性需求分析(2分)子任务1-1-2 食品安全溯源区块链产品设计方案(4分)设计一个基于区块链技术的食品安全溯源系统,满足以下需求:l 食品溯源:通过系统可以追溯到每一个食品的生产、加工、运输、销售等环节,并能够记录和管理每一环节的数据和信息。l 数据共享:系统应支持数据共享,各参与方可以通过系统实现数据的实时共享,提高数据的透明度和可信度,加强食品安全监管。

4、l 用户权限管理:系统应支持用户权限管理,各参与方可以根据自身权限进行数据的访问和管理,保障数据的安全和隐私。l 防篡改性:系统应具备数据防篡改性,防止数据被篡改和伪造,确保数据的真实性和可信度。请你根据以上需求设计一个食品安全溯源区块链系统,并给出系统的架构、数据结构、功能模块和技术方案。任务1-2:区块链系统部署与运维(15分)围绕食品安全溯源区块链平台部署与运维需求,进行项目相关系统、节点以及管理工具的部署工作。通过监控工具完成对网络、节点服务的监控。最终利用业务需求规范,完成系统日志、网络参数、节点服务等系统结构的维护,具体要求如下:1. 根据参数与端口设置要求,部署区块链系统并验证。

5、2. 根据参数与端口设置要求,部署区块链网络管理平台并验证。3. 基于区块链系统相关管理平台,按照任务指南实施系统运维工作并验证。4. 基于区块链系统相关监管工具,按照任务指南对区块链系统进行监管。子任务1-2-1: 搭建区块链系统并验证(4分)基于给定服务器环境以及软件(地址“/root/tools”),使用Docker配置单机4节点的区块链系统,具体要求如下:P2P起始端口30500channel起始端口20500JSONRPC8945完成任务如下:1. 完成系统搭建配置。2. 完成单机4节点区块链平台搭建,成功运行区块链系统。3. 使用基于Docker命令查看区块链系统状态。4. 检查区

6、块链系统节点node0连接状态输出。子任务1-2-2:搭建区块链系统管理平台并运维(4分)基于给定服务器环境以及软件(地址“/root/tools”),搭建区块链控制台并开展相关运维工作,具体工作内容如下:1. 配置控制台,管理相关证书并启动。2. 使用控制台查询区块链中区块高度。3. 使用控制台查询区块链中创世区块信息。4. 使用控制台查询区块链中共识状态。子任务1-2-3:区块链系统权限管理(4分)基于给定服务器环境以及软件(地址“/root/tools”),对区块链进行权限管理,具体工作如下:1. 使用控制台,分别创建Account1、Account2、Account3用户并形成委员会。

7、2. 使用控制台,修改Account1的投票权重为2。3. 使用控制台,将Account2从委员会中剔除,并赋予普通用户权限。子任务1-2-4:区块链系统监控(3分)基于搭建完成的区块链系统,编写监控脚本,检测区块链程序的运行情况,最后将执行结果截图保存。具体要求:1. 编写脚本1,每隔1秒检查一次区块链节点进程数量,若为4则打印正常信息,否则打印错误信息。2. 编写脚本2,每隔3秒检查一次区块链节点进程占用的端口数量,若为12则打印正常信息,否则打印错误信息。任务1-3:区块链系统测试(10分)设计对区块链系统的测试流程;结合实际业务需求,调用部署的智能合约中进行系统测试、性能测试等;根据业

8、务需求,分析并且修复给定智能合约中的安全漏洞。利用模拟业务和测试工具完成区块链系统服务数据的测试。1. 使用命令启动区块链系统可视化一体平台并验证启动情况(1分)2. 通过可视化平台生成包括生产商(producer)、经销商(distributor)、零售商(retailer)账户,并将账户以p12加密形式导出后,导入指定的前置可视化平台,并验证地址一致性(1分)3. 使用Postman对上述功能接口进行验证,并将验证结果截图提交工程文档。l 使用Postman对食品溯源系统服务端“获取食品”(/food)功能接口进行验证,并将验证结果截图。(1分)请求路由:/food请求方法:GET输入项说

9、明:输入项类型说明traceNumberString食品编号输出项说明:输出项类型说明currentString食品当前所处用户地址nameString食品名称produceString食品生产者地址timestampTimestamp食品生产时间戳qualityInteger食品质量4.参照工程项目(地址:“/root/projects”)使用Caliper测试工具对食品安全溯源系统智能合约获取食品信息(getFood)功能进行压力测试。具体要求如下:l 提供核心测试代码。(2分)l 设置txNumber=10,tps=1,所有测试通过率为100%。(1分)5.智能合约安全漏洞测试。(4分)

10、有如下问题智能合约:pragma solidity 0.7.6;contract TimeLock mapping(address = uint) public balances; mapping(address = uint) public lockTime; function deposit() external payable balancesmsg.sender += msg.value; lockTimemsg.sender = block.timestamp + 1 weeks; function increaseLockTime(uint _secondsToIncrease)

11、public lockTimemsg.sender += _secondsToIncrease; function withdraw() public require(balancesmsg.sender 0, Insufficient funds); require(block.timestamp lockTimemsg.sender, Lock time not expired); uint amount = balancesmsg.sender; balancesmsg.sender = 0; (bool sent, ) = msg.sender.callvalue: amount();

12、 require(sent, Failed to send Ether); contract Attack TimeLock timeLock; constructor(TimeLock _timeLock) timeLock = TimeLock(_timeLock); fallback() external payable function attack() public payable timeLock.depositvalue: msg.value(); timeLock.increaseLockTime( type(uint).max + 1 - timeLock.lockTime(

13、address(this) ); timeLock.withdraw(); l 分析智能合约中存在问题,并说明危害。(1分)l 根据测试工具中的代码文件,编写测试用例,复现智能合约中存在的漏洞。(1分)l 创建新的智能合约,修复其中问题,说明修复内容并测试。(2分)模块二:智能合约开发与测试(30分)任务2-1:智能合约设计5分)根据区块链食品溯源应用需求分析和方案设计文档的描述,完成以下工作要求:1. 根据区块链食品溯源应用需求分析和方案设计文档的描述,设计智能合约功能。(2分)2. 设计智能合约中各角色应具备的功能。(1分)3. 设计智能合约中食品安全溯源功能。(2分)任务2-2:智能合约

14、开发(20分)1. 食品信息(Food)、成员信息(Member)、生产订单信息(Productions)的结构体功能编码(6分)(1)编写食品信息实体功能。(2分)表2.2.1 Food实体说明名称类型说明iduint食品编号namestring食品名称foodTypestring食品类型qualitystring质量specstring规格otherstring其他信息updateTimeuint更新时间 struct Food /食品编号id /食品名称name /食品类型foodType /质量quality /规格spec /其他信息other /更新时间updateTime(2)完

15、善智能合约中用户结构体内容(2分)名称类型说明companystring公司名称locationstring地址telstring电话inchargestring负责人mainBusinessstring主营业务credituint信誉分businessTypeuint成员类型(1:生产商 2:收购商 3:运输商 4:销售商)userAddressaddress创建用户地址updateTimeuint更新时间struct Member /公司名称 string location;/地址 /电话 string incharge;/负责人 string mainBusiness;/主营业务 uin

16、t credit;/信誉值 /成员类型(1:生产商 2:收购商 3:运输商 4:销售商) /创建用户地址; uint updateTime; (3)编写生产订单(Productions)结构体信息。(2分)表2.2.2 生产订单Productios结构体信息名称类型说明orderNouint溯源订单号produceNouint生产订单号orderTypeuint订单类型(1: 直接付款 2:凭证付款)foodIduint食品编号priceuint单价numuint生产数量updateTimeuint更新时间createUseraddress订单创建人struct Productions /总订

17、单号 /食品订单号 uint orderType;/订单类型(1: 直接付款 2:凭证) uint foodId;/产品编号 uint price;/单价 uint num;/生产数量 /更新时间;/订单创建人2.食品溯源(Trace)的接口编码(6分)(1)根据食品信息结构体,完成食品信息添加相应功能(2分)function createFood(, , , , , string memory other) public returns() foodMap = Food(foodId, name, foodType, quality, spec, other, ); emit CreateF

18、ood(foodId, name); return foodId; (2)编写食品溯源收购商创建收购订单功能。 function Buy(uint orderNo, , uint orderType,uint foodId, uint price, uint num) public returns() require(userRoleMapmsg.sender = | msg.sender = owner); buyMapbuyNo = Buys(orderNo,buyNo, orderType, foodId, price, num, now, ); return buyNo; (3)编写食

19、品溯源创建运输订单功能。 function Transport(uint orderNo, , uint orderType, uint num, string memory from_place, string memory to_place) public returns() require(userRoleMapmsg.sender = | msg.sender = owner); transportMaptransportNo = Transports(orderNo, transportNo, orderType, num, from_place, to_place, now, );

20、 return transportNo; 3.角色(Role)管理的接口编码(4分)(1)编写食品溯源增加角色接口,实现添加角色的功能。(1分)function addRole(address userAddress, uint role) public userRoleMap = role;(2)编写食品溯源获取角色功能。(1分)function getUserRole(address userAddress) public view returns() uint role = userRoleMap; return role; (3)编写食品溯源修改角色功能。(2分)function ch

21、angeRole(address userAddress, uint newrole) public userRoleMapuserAddress = newrole; Member storage = memberMapuserAddress; member.businessType = ; memberMapuserAddress = ; 4.合约编译、部署和调用(4分)(1)解决代码错误和警告,正确编译并部署合约,成功获取部署的合约地址和abi。(1分)(2)调用食品溯源智能合约的接口,完整验证业务流程。(3分)任务2-3:智能合约测试(5分)1. 配置区块链网络(1分)启动区块链网络,

22、创建新的Workspace,配置对外访问的RPC接口为7545,配置项目的配置文件config.js实现与新建Workspace的连接。2. 设置producerId和sellederId两个变量(1分)基于VSCODE加载的测试项目,补全位于test文件夹中foodTraceNew.js文件预操作的方法。在测试文件中添加预定义的方法(在其他方法启动前使用),在方法中分别设置producerId和sellederId两个变量,具体要求如下:(1)producerId设置为1(2)sellderId设置为43. 补全createMember和getMember方法(1分)基于VSCODE加载的测

23、试项目,补全位于test文件夹中foodTraceNew.js文件,添加测试用例,测试智能合约的createMember和getMember方法。4. 测试createOrder和getOrder方法(1分)基于VSCODE加载的测试项目,补全位于test文件夹中foodTraceNew.js文件,添加测试用例,测试智能合约的createOrder和getOrder方法。5. 测试createFood和getFood方法(1分)基于VSCODE加载的测试项目,补全位于test文件夹中foodTraceNew.js文件,添加测试用例,测试智能合约的createFood和getFood方法。模块三

24、:区块链应用系统开发(30分)任务3-1:前端功能开发(10分)1.请基于前端系统的开发模板,在组件main.js中添加对应的逻辑代码,实现角色生产商的部分功能,并测试功能完整性。(3分)示例页面:本任务具体要求如下:(1) 生产商首页展示已有的食品列表,若没有食品则显示暂无数据,展示列有溯源码、食品名称、生产商、生产时间;(2) 生产商首页有“退出”按钮,可以退出登录返回首页;(3) 生产商页面可以新建食品,弹出框中需要用户输入溯源码、视频名称、生产商、质检情况等,单击取消关闭弹出框,单击确定则根据操作反馈进行提示;(4) 生产商首页展示的食品列表可根据生产时间排序。Main.js代码片段1

25、: 选手填写部分 选手填写部分代码片段2: 代码片段3:.then(ret = if (ret.data.ret != 1) / 已有溯源码校验 if (ret.data.ret = 0 & ret.data.msg = traceNumber already exist) this.$message( message: 该溯源码已存在,请重新创建, type: 选手填写部分, center: true ); else this.$message( message: 选手填写部分, type: 选手填写部分, center: true ); return this.$message( message: 选手填写部分, type: 选手填写部分,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1