2023年区块链职业技能大赛——区块链应用技术(一)模块一

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

 

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

1.依据给定区块链食品溯源系统的业务架构图,对考题进行业务分析,可能多的去考虑一个业务系统所需要的模块,使用Visio或思维导图工具展现本系统的基本设计概念和处理流程,要求分为区块链食品溯源业务平台和支撑平台两个部分;

参考答案:略

2.据描述,设计区块链系统的总体功能概览图.

参考答案:略

3.整合上述设计内容,完善"01系统概要设计说明书.doc",具体工作内容如下:

⚪将设计内容根据说明书中模块需要进行补充,并完善概要设计说明书中的"需求概要"

⚪完善说明书中接口说明部分内容

 

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

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

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

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

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

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

  基于给定的服务器环境及软件(地址"/root/tools"),搭建一条4节点的区块链系统并验证,具体工作如下:

1.采用默认配置搭建区块链网络;

参考答案: 

(1)配置网络

命令: bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 

输出:21724eb705214bd5ac1dfe1e4cc22d16.png

(2)启动节点:

命令:bash nodes/127.0.0.1/start_all.sh

输出:

d8e8db06b5ff42e090c59111adb983b9.png

 2.通过命令验证区块链节点进程运行情况

参考答案:

命令: ps -ef | grep -v grep | grep fisco-bcos

输出:

374a68a23abf498395e799317708b197.png

3.通过命令验证区块链连接状态和共识状态日志输出

参考答案: 

命令: tail -f nodes/127.0.0.1/node0/log/log* | grep connected

输出:

29a9c921929a4b80982fa8b1575da7b1.png

子任务1-2-2:搭建区块链系统管理平台并验证;

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

 1.配置可视化平台,管理相关证书并启动

参考答案:

(1)配置控制台证书.

命令: cp -n console/conf/config-example.toml console/conf/config.toml && cp -r nodes/127.0.0.1/sdk/* console/conf/

输出:

cf4079b6f0f34046a3b6144b23b6ce9d.png

(2)启动控制台

命令: cd console && bash start.sh

输出:

de696897bc5c45fd825138123104c064.png

2.使用控制台安装HelloWorld智能合约

参考答案:

命令: deploy HelloWorld

输出:

 616d5172bb6341e1a931e4bfd773411f.png

3.使用控制台完成HelloWorld智能合约的set和get

参考答案:

(1)调用set操作

命令: call HelloWorld 0x26255782cf37d290a00efaa4ca1201b1ff9be081 set "Hello,Blockchain"

(2)调用get操作

命令:call HelloWorld 0x26255782cf37d290a00efaa4ca1201b1ff9be081 get

输出:

ee70bc0635ee45bd9b35f217028491ee.png

4.使用控制台查看区块链中的区块高度.

参考答案:

命令:getBlockNumber

输出: 

84aeaa64b1c2455aa36ad7992a6b078c.png

子任务1-2-3:区块链节点运维. 

  基于已经完成的区块链系统与管理平台搭建工作,开展区块链节点的加入与退出运维工作,具体工作如下:

  1.获得区块链节点输出登记为警告级,并设置日志存储阈值为100MB并验证

参考答案:

(1)修改配置文件: vi node0/config.ini

2eb72ced03254b0db1f1b21f31a65cf5.png

 (2)重新启动节点node0,使配置文件生效

命令:bash node0/stop.sh && node0/start.sh 

输出:

28df9b91fc23488099b6bf15d4181a06.png

2.通过给定的工具(地址/root/tools)完成对新节点(node4)的配置

参考答案: 

(1)使用gen_node_cert.sh 生成新节点node4

命令: bash gen_node_cert.sh -c nodes/cert/agency- o node4

输出:

8ad28add000545abbba47eca7a26bdec.png

(2)将新节点node4 复制到节点群nodes目录下

命令:cp -r bash ./node4 nodes/127.0.0.1/

输出:

e6c80144d0ef415593e11545a67c3321.png

(3)将新节点node0的文件复制到节点群node4目录下

 命令:cd nodes/127.0.0.1/ && cp node0/config.ini node0/start.sh node0/stop.sh node4/

 输出:

e27af386f3114ca39318f5efb175e0c6.png

(4)修改node4/config.ini

对于[rpc]模块,修改 channel_listen_port和jsonrpc_listen_port;

对于[p2p]模块,修改listen_port并在node中增加自身节点信息

命令:vi node4/config.ini

输出:

0746a2c927b849d99577bc72cdd32332.png

(5)复制群组配置信息

命令: cp node1/conf/group.1.genesis node4/conf/ && cp  node1/conf/group.1.ini node4/conf

输出:

75edce237b3845ca8f32540257407dbd.png

3.启动新节点加入区块链系统并验证

参考答案:

命令:cd node4 && bash stop.sh && bash start.sh 

449310a237d04d83ad3095ce576d3f11.png

(2) 检查新节点连接情况

命令:tail -f node4/log/log* | grep P2P

958fc3cafd2a4ce299a8d460589f554f.png

子任务1-2-4:区块链网络运维 

  根据任务描述要求,完成网络配置与管理运维操作,具体内容如下:

1.设置区块链系统黑名单,将node3设为黑名单禁止连接,并验证

参考答案:

(1)查看node0节点的连接状态日志(现有4个节点连接)

命令:tail -f node0/log/log* | grep connected

输出:

f8fe14c75e444be0af3676fc8e7ee391.png

(2)编辑节点node0的config.ini文件,将node3加入黑名单里面

命令:vi config.ini

编辑certficate_blacklist,设置node3节点ID为黑名单

 747110e2696a4ed9b972719539feafdb.png

(3)重新启动节点

命令:bash node0/stop.sh && bash node0/start.sh

输出:

72bab9fb6a7b4b1e9add9e44a2c8fd61.png

(4)查看node0的节点连接状态日志(现有3个节点连接)

命令:tail -f node0/log/log* | grep connected 

输出:

e3d6f33b3aea4f7db13dce7001995f79.png

(5)重复操作(1)-(4),验证节点配置数量 

2b96daa9d10640d2877bc0840a25708a.png

(6)重复操作(1)-(4),完成节点node2的配置与验证

 2f223055713244e3903f5dfe139eb859.png

(7)重复操作(1)-(4),完成节点node4的配置与验证

 e7a0053778ea4d53a04c67ad2b793eed.png

2.设置系统中区块打包数量为2000

参考答案:

(1)启动控制台:命令:bash start.sh 

 5d3ddbb966b54d0f820e0de30875c067.png

(2)设置区块打包数量为2000

命令:setSystemConfigByKey tx_count_limit 2000

输出:

 131940ad572248508e97ce61be6ecfa8.png

3.验证区块打包数量

 参考答案:

命令:getSystemConfigByKey tx_count_limit

输出:

c570793e30714b24bf44bc1c4b394267.png

任务1-3:区块链系统测试 

  设计对区块链系统的测试流程,结合实际业务需求,调用部署的智能合约中进行系统测试,性能测试等;根据业务需求,分析并且修复给定智能合约中的安全漏洞.利用模拟业务和测试工具来完成对区块链系统服务数据的测试.

1.使用命令启动区块链系统可视化一体平台并验证启动情况

参考答案:

命令:python3 deploy.py startAll

9758a91ee08e480a9e48c2cb0a300b49.png

      实现基于浏览器测试启动情况验证(访问地址http://{服务器IP}:5000)

 

 2.通过可视化平台生成包括生产商(producer)、经销商(distributor)、零售商(retailer)账户,并将账户以p12加密形式导出后倒入指定前置可视化平台,验证地址一致性.

参考答案:

(1)验证producer地址的一致

 

 

(2)验证distributor地址的一致 

 

(3)验证retailer地址的一致

 

 

3.使用postman对上述功能接口进行验证,并进行验证结果截图提交工程文档.

  1.   ⚪对食品安全溯源系统服务端“添加食品”(/produce)功能接口进行验证,并将验证结果截图提交工程文档

 

请求路由:          /produce        
请求方法:         POST
输入项说明:
输入项                类型说明
traceNumberString追踪编号
foodNameString食品名称
traceNameString存证人信息
qualityInteger食品质量

 

输出项说明:
输出项       类型说明
retInterger返回值
msgString

返回消息,“success”表示操作成功

 

 参考答案:

使用Postman正确操作如下:

0da0f48e50e049ed9ceee365dff3d2c4.png

4.  参照工程项目(地址: “/root/projects”)使用Calipers测试工具对食品安全溯源系统智能合约生成新食品(newFood) 功能进行压力测试。具体要求如下:

    ⚪  提供核心测试代码。

参考答案:

(1)config.yaml 核心代码

ff1b3f5336524a46b004d111ea08c08c.png

(2)newFood.js核心代码

 7e9bca8167e3422ea3923dc874125ccc.png

 ⚪ 设置txNumber=10,tps=1,所有测试通过率为100%

参考答案:

命令:npx caliper benchmark run --caliper-workspace caliper-benchmarks --caliper-benchconfig benchmarks/samples/fisco-bcos/trace/config.yaml --caliper-networkconfig networks/fisco-bcos/test-nw/fisco-bcos.json

输出:

8d07937e519648cca8a21fa6e090dab3.png

 report.html

622fe78879364eb09a162cf67e5ffe18.png

5.智能合约安全漏洞测试.

参考答案:略 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949764.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【HarmonyOS应用开发——ArkTS语言】欢迎界面(启动加载页)的实现【合集】

目录 😋环境配置:华为HarmonyOS开发者 📺演示效果: 📖实验步骤及方法: 一、在media文件夹中添加想要使用的图片素材​ 二、在entry/src/main/ets/page目录下创建Welcome.ets文件 1. 整体结构与组件声…

Flutter Android修改应用名称、应用图片、应用启动画面

修改应用名称 打开Android Studio,打开对应项目的android文件。 选择app下面的manifests->AndroidManifest.xml文件,将android:label"bluetoothdemo2"中的bluetoothdemo2改成自己想要的名称。重新启动或者重新打包,应用的名称…

MES管理系统如何解决企业制造瓶颈

在当今全球化与信息化高度融合的时代,制造业作为支撑国家经济发展的关键产业,正处于发展的十字路口,面临着一系列严峻挑战。从日常所需的各类用品到先进的高端工业产品,制造业的稳定发展对经济的稳健运行至关重要,一旦…

Maven 详细配置:Maven settings 配置文件的详细说明

Maven settings 配置文件是 Maven 环境的重要组成部分,它用于定义用户特定的配置信息和全局设置,例如本地仓库路径、远程仓库镜像、代理服务器以及认证信息等。settings 文件分为全局配置文件(settings.xml)和用户配置文件&#x…

【C++】18.继承

文章目录 1.继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1定义格式1.2.2继承关系和访问限定符1.2.3继承基类成员访问方式的变化 1.3 继承类模板 2.基类和派生类对象赋值转换3.继承中的作用域3.1 隐藏规则:3.2 考察继承作用域相关选择题 4.派生类的默认成员函数4…

声音是如何产生的

一、音频概述 RTMP中一般音频采用aac编码,采样率为44100HZ, 每帧1024采样,帧率43,23.2ms一帧 RTC中一般音频采用opus编码,采样率为48000HZ,每帧480采样,帧率100,10ms一帧 通道数(c…

什么是中间件中间件有哪些

什么是中间件? 中间件(Middleware)是指在客户端和服务器之间的一层软件组件,用于处理请求和响应的过程。 中间件是指介于两个不同系统之间的软件组件,它可以在两个系统之间传递、处理、转换数据,以达到协…

问题清除指南|关于num_classes与 BCELoss、BCEWithLogitsLoss 和 CrossEntropyLoss 的关系

前言:关于「 num_classes 1 」引发的探究。 2024年尾声,学弟问到一个问题:在研究工作 CNNDetection 的github开源代码 networks/trainer.py 文件的 line 27 self.model resnet50(num_classes1) 中,变量 num_classes 的值为1&…

FinDKG: 用于检测金融市场全球趋势的动态知识图谱与大型语言模型

“FinDKG: Dynamic Knowledge Graphs with Large Language Models for Detecting Global Trends in Financial Markets” 论文地址:https://arxiv.org/pdf/2407.10909 摘要 动态知识图(DKG)能够表示对象间随时间变化的关系,适用于…

Robot---奇思妙想轮足机器人

1 背景 传统机器人有足式、轮式、履带式三种移动方式,每种移动方式都有各自的优缺点。轮式机器人依靠车轮在地面上移动,能源利用率高、移动速度快,但是仅以轮子与地面接触,缺乏越障能力和对复杂地形的适应能力,尤其面对…

高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图

目录 高效工作流:用Mermaid绘制你的专属流程图 一、流程图的使用场景 1.1、流程图flowChart 1.2、使用场景 二、如何使用mermaid画出优雅的流程图 2.1、流程图添加图名 2.2、定义图类型与方向 2.3、节点形状定义 2.3.1、规定语法 2.3.2、不同节点案例 2.…

.NET框架用C#实现PDF转HTML

HTML作为一种开放标准的网页标记语言,具有跨平台、易于浏览和搜索引擎友好的特性,使得内容能够在多种设备上轻松访问并优化了在线分享与互动。通过将PDF文件转换为HTML格式,我们可以更方便地在浏览器中展示PDF文档内容,同时也更容…

Tableau数据可视化与仪表盘搭建-可视化原则及BI仪表盘搭建

目录 可视化原则 BI仪表盘搭建 仪表盘搭建原则 明确仪表盘主题 仪表盘主题拆解 开发设计工作表 经营情况总览:突出显示的文字 经营数据详情:表格 每日营收数据:多轴折线图 每日流量数据:双轴组合图 新老客占比&#xf…

AIA - APLIC之三(附APLIC处理流程图)

本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。 1 APLIC复位 APLIC复位后,其所有状态都变得有效且一致,但以下情况除外: 每个中断域的domaincfg寄存器(spec第 4.5.1 节);可能是machine-level interrupt domain的MSI地址配置寄存器(spec第4.5.3 和4.5…

unity学习5:创建一个自己的3D项目

目录 1 在unity里创建1个3D项目 1.1 关于选择universal 3d,built-in render pipeline的区别 1.2 创建1个universal 3d项目 2 打开3D项目 2.1 准备操作面板:操作界面 layout,可以随意更换 2.2 先收集资源:打开 window的 AssetStore 下载…

AI赋能跨境电商:魔珐科技3D数字人破解出海痛点

跨境出海进入狂飙时代,AI应用正在深度渗透并重塑着跨境电商产业链的每一个环节,迎来了发展的高光时刻。生成式AI时代的大幕拉开,AI工具快速迭代,为跨境电商行业的突破与飞跃带来了无限可能性。 由于跨境电商业务自身特性鲜明&…

我用Ai学Android Jetpack Compose之Text

这篇开始学习各种UI元素,答案来自 通义千问,通义千问没法生成图片,图片是我补充的。 下述代码只要复制到第一个工程,做一些import操作,一般import androidx.compose包里的东西,即可看到预览效果。完整工程代…

HashMap总结使用+原理+面试

文章目录 1.Hashmap的基本使用创建hashmap对象。遍历hashmap统计字母出现的次数用来投票计算返回JSON数据 2.hashmap源码阅读put源码阅读 3. HashMap 面试题目hashmap实现的原理什么时候数组需要进行扩容hashmap怎么确定把数据放到那个节点的哪个位置。为什么用 n - 1 与运算&a…

JS中函数基础知识之查漏补缺(写给小白的学习笔记)

函数 函数是ECMAScript中 最有意思的部分之一, 主要是因为函数实际上是对象.-- 每个函数 都是Function类型的实例,Function也有属性和方法. 因为函数是对象,所以函数名就是指向函数对象的指针. 常用的定义函数的语法: ①函数声明 ②函数表达式 ③箭头函数 function sum (n…

Skyeye 云 VUE 版本 v3.15.3 发布,涉及 ERP、OA、财务等

Skyeye 云智能制造,采用 Springboot winUI 的低代码平台、移动端采用 UNI-APP。包含 30 多个应用模块、50 多种电子流程,CRM、PM、ERP、MES、ADM、EHR、笔记、知识库、项目、门店、商城、财务、多班次考勤、薪资、招聘、云售后、论坛、公告、问卷、报表…