区块链安全应用----压力测试

通过Caliper进行压力测试程序

1.环境配置

第一步. 配置基本环境
  • 部署Caliper的计算机需要有外网权限;
  • 操作系统版本需要满足以下要求:Ubuntu >= 16.04、CentOS >= 7或MacOS >= 10.14;
  • 部署Caliper的计算机需要安装有以下软件:python 2.7、make、g++、gcc及git。
第二步. 安装NodeJS

版本要求:

  • NodeJS 8 (LTS), 9, 或 10 (LTS),Caliper尚未在更高的NodeJS版本中进行过验证。

安装指南:

  • 建议使用nvm(Node Version Manager)安装,nvm的安装方式如下:

首先重新装一个虚拟机(Ubuntu 20.04 安装教程_ubuntu20.04安装教程-CSDN博客  )

然后在建立root用户

下载curl命令  apt install curl

 

安装nvm

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
# 若出现因网络问题导致长时间下载失败,可尝试以下命令
curl -o- https://gitee.com/mirrors/nvm/raw/v0.33.2/install.sh | bash

# 加载nvm配置
source ~/.$(basename $SHELL)rc

# 安装Node.js 8
nvm install 8

# 使用Node.js 8
nvm use 8

 

第三步. 部署Docker
# 更新包索引
sudo apt-get update

 

# 安装基础依赖库
sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common

 

# 添加Docker官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

 

# 添加docker仓库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

 

# 更新包索引
sudo apt-get update

 

# 安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io

 

第四步. 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

 

2. Caliper部署 

第一步. 部署

Caliper提供了方便易用的命令行界面工具caliper-cli,推荐在本地进行局部安装:

建立一个工作目录

mkdir benchmarks && cd benchmarks

对NPM项目进行初始化

npm init

 这一步主要是为在工作目录下创建package.json文件以方便后续依赖项的安装,如果不需要填写项目信息的话可以直接执行npm init -y

安装caliper-cli
npm install --only=prod @hyperledger/caliper-cli@0.2.0

 

由于Caliper所有依赖项的安装较为耗时,因此使用--only=prod选项用于指定NPM只安装Caliper的核心组件,而不安装其他的依赖项(如各个区块链平台针对Caliper的适配器)。在部署完成后,可以通过caliper-cli显式绑定需要测试的区块链平台及相应的适配器。

验证caliper-cli安装成功
npx caliper --version

 若安装成功,则会打印相应的版本信息,如:

第二步. 绑定

由于Caliper采用了轻量级的部署方式,因此需要显式的绑定步骤指定要测试的平台及适配器版本,caliper-cli会自动进行相应依赖项的安装。使用npx caliper bind命令进行绑定,命令所需的各项参数可以通过如下命令查看:

px caliper bind --help

–caliper-bind-sut :用于指定需要测试的区块链平台,即受测系统(***S***ystem ***u***nder ***T***est);

–caliper-bind-sdk:用于指定适配器版本;

–caliper-bind-cwd:用于绑定caliper-cli的工作目录,caliper-cli在加载配置文件等场合时均是使用相对于工作目录的相对路径;

–caliper-bind-args:用于指定caliper-cli在安装依赖项时传递给npm的参数,如用于全局安装的-g

对于FISCO BCOS,可以采用如下方式进行绑定:

npx caliper bind --caliper-bind-sut fisco-bcos --caliper-bind-sdk latest

 

遇到以上问题第一种可以直接在命令行前面加上sudo

第二种:重新下载nodejs以及npm

sudo apt-get install nodejs npm

然后在重新运行

sudo npx caliper bind --caliper-bind-sut fisco-bcos --caliper-bind-sdk latest

第三步. 快速体验FISCO BCOS基准测试

为方便测试人员快速上手,FISCO BCOS已经为Caliper提供了一组预定义的测试样例,测试对象涵盖HelloWorld合约、Solidity版转账合约及预编译版转账合约。同时在测试样例中,Caliper测试脚本会使用docker在本地自动部署及运行4个互连的节点组成的链,因此测试人员无需手工搭链及编写测试用例便可直接运行这些测试样例。

在工作目录下下载预定义测试用例

git clone https://github.com/vita-dounai/caliper-benchmarks.git
注意 若出现网络问题导致的长时间拉取代码失败,则尝试以下方式:
# 拉取gitee代码
git clone https://gitee.com/vita-dounai/caliper-benchmarks.git

执行HelloWorld合约测试

npx caliper benchmark run --caliper-workspace caliper-benchmarks --caliper-benchconfig benchmarks/samples/fisco-bcos/helloworld/config.yaml  --caliper-networkconfig networks/fisco-bcos/4nodes1group/fisco-bcos.json

遇到以下错误: 

由于FISCO BCOS对于caliper 0.2.0版本的适配存在部分不兼容情况,需要手动按照(https://github.com/FISCO-BCOS/FISCO-BCOS/issues/1248)中的步骤修改代码后方可正常运行。

此报错需要修改源码才能解决:

更改1:

绿色为新增的代码,红色为源代码,需要删除。

文件位置:/node_modules/@hyperledger/caliper-fisco-bcos/lib/fiscoBcos.js

 

绿色信息增加第一段:

if (this.fiscoBcosSettings.network && this.fiscoBcosSettings.network.authentication) { for (let k in this.fiscoBcosSettings.network.authentication) {             this.fiscoBcosSettings.network.authentication[k] = CaliperUtils.resolvePath(this.fiscoBcosSettings.network.authentication[k], workspace_root); } 
}

绿色信息增加第二段:

const fiscoBcosSettings = this.fiscoBcosSettings;

 

更改二:

变动文件一:绿色为新增的代码,红色为源代码,需要删除。

文件位置:/node_modules/@hyperledger/caliper-fisco-bcos/lib/channelPromise.js

绿色增加代码:

let emitter = emitters.get(seq); if(!emitter) { //Stale message receieved return; } emitter = emitter.emitter;  

 

变动文件二:绿色为新增的代码,红色为源代码,需要删除。 文件位置:packages/caliper-fisco-bcos/lib/fiscoBcos.js

绿色增加代码:

const Color = require('./common').Color; 

 

变动文件三:绿色为新增的代码,红色为源代码,需要删除。

文件位置:/node_modules/@hyperledger/caliper-fisco-bcos/lib/web3lib/web3sync.js

27行绿色增加代码:

uuid = '0x' + uuid.replace(/-/g, '');

 

91行绿色增加代码:

extraData: '0x0'

 

118行绿色增加代码:

extraData: '0x0'

错误2:

 指定secp256k1依赖包时版本限制没写对,导致在绑定时自动安装了4.0版本的secp256k1包,但是最新的4.0的包API全部变了,导致执行出错。

有一个临时的解决方案,进入node_modules/@hyperledger/caliper-fisco-bcos目录,编辑该目录下的package.json文件,在"dependencies"中添加一项"secp256k1": “^3.8.0”,随后在该目录下执行npm i,更新完成后测试程序就能启动了。

使用npm i 的时候会出现node和npm版本号兼容的问题

 

可以升级node的版本号,使用nvm安装node14

nvm install v14.19.0

然后在重新运行npm i

 

重新执行HelloWorld合约测试

cd benchmarks/
npx caliper benchmark run --caliper-workspace caliper-benchmarks --caliper-benchconfig benchmarks/samples/fisco-bcos/helloworld/config.yaml  --caliper-networkconfig networks/fisco-bcos/4nodes1group/fisco-bcos.json

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言回顾】函数

前言1. 函数的概念和分类2.库函数3. 自定义函数3.1 自定义函数的简单介绍3.2 自定义函数举例 4. 形参和实参4.1 形参4.2 实参4.3 形参和实参的关系4.3.1 理解4.3.2 举例代码和调试 5. 嵌套函数和链式访问5.1 嵌套函数5.2 链式访问 6. 函数的声明和定义6.1 单个文件6.2 多个文件…

ChatGPT在遥感领域中的应用

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。本课程重点介绍ChatGPT在遥感中的应用,人工智…

中文编程入门(Lua5.4.6中文版)第十三章 Lua 文件操作

在《Lua世界》的冒险旅途中,勇士们时常需要与神秘的文本卷轴打交道。为了更好地掌握这些知识宝藏,Lua I/O库提供了两种强大的探索模式:简单模式和完全模式,助你轻松应对各类文献挑战。 简单模式:初识卷轴 简单模式如…

C# aspose word实现模板方式打印及打印速度慢解决方法

1.引用dll nuget或者网上都有下载的方式。不过都要收费。下载地址:https://files.cnblogs.com/files/rolayblog/Tool.zip?t1713322422&downloadtrue 2.打印模板设计 新建一个doc文档,根据自己的需求画页面。 A、普通文本 在word中需要替换值的地方添…

《2024最新Java面试题及答案(带完整目录)》

获取链接:《2024最新Java面试题及答案(带完整目录)》 更多技术书籍:技术书籍分享,前端、后端、大数据、AI、人工智能... ​ ​ ​ 4.1.9.8. 可重入锁(递归锁) ...........................…

Oracle11.2.0.1,(CVE-2012-1675)漏洞解决方案

1.进入容器停止监听 docker exec -it -u 0 oracle11g bash su - oracle lsnrctl stop listener2.找到监听配置文件位置,修改监听文件 echo $ORACLE_HOMEvi network/admin/listener.ora #在文件底部添加 SECURE_REGISTER_LISTENER (IPC) #启动监听 lsnrctl start …

基于springboot+vue+Mysql的汽车租赁系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

idea运行报错:启动命令过长

JAVA项目,运行的时候报错 Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun老问题了,记录一下 解决办法: 1、Edit Configurations 2、点击Modify options设置,勾选S…

PlistEdit Pro for Mac激活版:强大的Plist文件编辑工具

PlistEdit Pro for Mac是一款专为Mac用户设计的强大Plist文件编辑工具。Plist文件是苹果公司开发的一种XML文件格式,用于存储应用程序的配置信息和数据。这款软件为用户提供了直观、易用的界面,使编辑和管理Plist文件变得轻松简单。 PlistEdit Pro for M…

C++设计模式|创建型 3.抽象工厂模式

在上一篇文章中介绍了工厂模式,每个具体工厂负责生产一个专门的产品,其代码扩展性很好,这篇文章将介绍抽象工厂模式。 1.为什么要使用抽象工厂模式? 既然已经有了“工厂模式”,那为什么还会有抽象工厂模式呢&#xf…

生成人工智能体:人类行为的交互式模拟论文与源码架构解析(1)——场景故事介绍

生成NPC为交互应用程序创建逼真的人类行为模拟。在这项工作中,我们通过将二十五个NPC放置在一个沙盒环境中(类似于The Sims,模拟人生),展示了生成NPC的能力。用户可以观察和干预NPC的日常计划、分享新闻、建立关系以及…

就业班 第三阶段(ansible) 2401--4.16 day2 ansible2 剧本+角色

六、Ansible playbook 简介 playbook 是 ansible 用于配置,部署,和管理被控节点的剧本。   通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机达到预期的状态。playbook 就像 Ansible 控制器给被控节点列出的的…

广东海洋大学成功部署(泰迪智能科技)大数据人工智能实验室建设

广东海洋大学简称广东海大,坐落于广东省湛江市,是国家海洋局与广东省人民政府共建的省属重点建设大学、广东省高水平大学重点学科建设高校、粤港澳高校联盟成员 ,入选卓越农林人才教育培养计划,是教育部本科教学水平评估优秀院校。…

odoo添加自定义网页---添加模块图标

1.新建一个模块 python odoo-bin scaffold test_web <路径> 2.我们需要修改一下几个文件 3.web.xml <?xml version"1.0" encoding"UTF-8"?> <templates id"template" xml:space"preserve"><t t-name"T…

详解汽车交流充电桩主板的四大版本

近年来&#xff0c;在电动汽车行业快速发展背景下&#xff0c;充电桩的建设变得愈发重要&#xff0c;特别是兼容性较高、适用性较广的交流充电桩。 交流充电桩的心脏——主板的设计与功能&#xff0c;对于充电桩的性能和用户体验起着至关重要的作用。目前&#xff0c;市面上的…

康谋技术 | 深入探讨:自动驾驶中的相机标定技术

随着自动驾驶技术的快速发展&#xff0c;多传感器的数据采集和融合可以显著提高系统的冗余度和容错性&#xff0c;进而保证决策的快速性和正确性。在项目开发迭代过程中&#xff0c;传感器标定扮演着至关重要的角色&#xff0c;它位于数据采集平台与感知融合算法之间&#xff0…

如何使用自定义Promptbooks优化您的安全工作流程

在当今的数字化时代&#xff0c;安全工作流程的优化变得前所未有的重要。安全团队需要快速、有效地响应安全事件&#xff0c;以保护组织的数据和资产。Microsoft Copilot for Security提供了一种强大的工具——自定义Promptbooks&#xff0c;它可以帮助安全专家通过自动化和定制…

tmux 命令速查 导图

最近在使用tmux&#xff0c;整理了一份命令的导图&#xff0c;大家需要自取&#xff5e; tmux是什么&#xff1f; Tmux是一个终端复用器&#xff0c;一个非常有用的linux开发工具。 基本概念 会话&#xff1a; 与命令下的终端窗口类似&#xff1b;tmux进程&#xff0c;可包…

SpringBoot整合Swagger2

SpringBoot整合Swagger2 1.什么是Swagger2&#xff1f;&#xff08;应用场景&#xff09;2.项目中如何使用2.1 导入依赖2.2 编写配置类2.3 注解使用2.3.1 controller注解&#xff1a;2.3.2 方法注解2.3.3 实体类注解2.3.4 方法返回值注解2.3.5 忽略的方法 3.UI界面 1.什么是Swa…

短视频矩阵系统----技术源头开发

短视频矩阵系统--- 1. 确定账号类型和目标受众 2. 准备账号资料 3. 搭建系统框架 4. 开发核心功能 5. 测试和调试 6. 部署和维护 7. 推广和运营 在开发短视频账号矩阵系统源码时&#xff0c;可以使用一些开源框架和工具来提高开发效率和降低开发难度。同时&#xff0c;需要组…