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

news2024/11/18 9:04:15

通过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命令进行绑定,命令所需的各项参数可以通过如下命令查看:

npx 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

执行Solidity版转账合约测试
npx caliper benchmark run --caliper-workspace caliper-benchmarks --caliper-benchconfig benchmarks/samples/fisco-bcos/transfer/solidity/config.yaml  --caliper-networkconfig networks/fisco-bcos/4nodes1group/fisco-bcos.json

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

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

相关文章

Linux入门学习 之 基础操作指令讲解(小白必看)

股票的规律找到了,不是涨就是跌 一、Linux下基本指令 1.ls 指令 2.pwd 命令 3.cd 指令 4.touch 指令 5.mkdir 指令 6.rmdir指令 && rm 指令 7.man 指令 8.cp 指令 9.mv指令 10.cat 11.more 指令 12.less 指令 13.head 指令 14.tail 指令 15…

java核心类

一,String字符串 1.1,String字符串是引用类型,且不可变 String str1 "Hello";String str2 str1.concat(" World"); // 使用concat方法连接字符串,返回一个新的字符串对象System.out.println(str1); // 输出:Hello,原始…

Linux的学习之路:15、文件(2)

摘要 这里就说一下文件描述符和重定向以及缓冲区 目录 摘要 一、文件描述符 1、0 、1、2 2、分配规则 二、重定向 三、缓冲区 四、代码 一、文件描述符 1、0 、1、2 文件描述符(File Descriptor,简称 fd)是计算机科学中的一个术语…

OpenHarmony实战开发-如何利用panel实现底部面板内嵌套列表。

介绍 本示例主要介绍了利用panel实现底部面板内嵌套列表,分阶段滑动效果场景。 效果图预览 使用说明 点击底部“展开”,弹出panel面板。在panel半展开时,手指向上滑动panel高度充满页面,手指向下滑动panel隐藏。在panel完全展开…

IO——进程间通讯 IPC

1. 进程间通信方式 (1) 早期进程间通信: 无名管道(pipe)、有名管道(fifo)、信号(signal) (2) system V IPC: 共享内存(shared memory)、消息队列(message queue)、信号灯集(semaphore set) (3) BSD: 套接字(socket) 2. 无名管道 2.1特点 …

局域网管理软件,适合在局域网内的管理软件有哪些?

信息技术的不断发展,局域网在企业、学校等机构中得到了广泛应用。 局域网不仅能够提高数据传输效率,还能实现资源共享和协同工作。 为了更好地管理和维护局域网,需要使用一些专业的局域网管理软件。 一、局域网的应用范围 局域网&#xff…

ruoyi element-ui 实现拖拉调整图片顺序

ruoyi element-ui 实现拖拉调整图片顺序 安装sortablejs https://sortablejs.com/npm 安装sortablejs npm install sortablejs --save相关options var sortable new Sortable(el, {group: "name", // or { name: "...", pull: [true, false, clone, …

华为 2024 届实习招聘——硬件-电源机试题(四套)

华为 2024 届实习招聘——硬件-电源机试题(四套) 部分题目分享,完整版带答案(有答案,答案非官方,未仔细校正,仅供参考)(共四套) 获取(WX:didadidadidida313&…

优思学院|ISO45001职业健康安全管理体系是什么?

ISO45001:2018是新公布的国际标准规范,全球备受期待的职业健康与安全国际标准(OH&S)于2018年公布,并将在全球范围内改变工作场所实践。ISO45001将取代OHSAS18001,成为全球工作场所健康与安全的参考。 ISO45001:201…

完整、免费的把pdf转word文档

在线工具网 https://www.orcc.online/pdf 支持pdf转word,免费、完整、快捷 登录网站 https://orcc.online/pdf 选择需要转换的pdf文件: 等待转换完成 点击蓝色文件即可下载 无限制,完整转换。

LLM推理加速,如何解决资源限制与效率挑战

©作者|Zane 来源|神州问学 LLM加速推理,GPU资源破局之道。 引言 大型语言模型(LLM)已经在多种领域得到应用,其重要性不言而喻。然而,随着这些模型变得越来越普遍,对GPU资源的需求也随之激增&#xff…

问卷回收率太低?用这几个小技巧轻松提升!

在进行调查研究时,高回收率是保障数据质量和调研成果有效性的关键因素之一。然而,有时候我们面对的情况是调查问卷的回收率较低,这可能会影响到数据的客观性和准确性。在这种情况下,我们需要采取措施来提高调查问卷的回收率&#…

MapReduce 机理

1.hadoop 平台进程 Namenode进程: 管理者文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。管理这些信息的文件有两个,分别是Namespace 镜像文件(Namespace image)和操作日志文件(edit log)&#xff…

Python --- 在python中安装NumPy,SciPy,Matplotlib以及scikit-learn(Windows平台)

在python中安装NumPy,SciPy,Matplotlib以及scikit-learn(Windows平台) 本文是针对(像我一样的)python新用户所写的,刚刚在电脑上装好python之后,所需的一些常见/常用的python第三方库/软件包的快速安装指引。包括了这些常用安装包…

0-1背包问题:贪心算法与动态规划的比较

0-1背包问题:贪心算法与动态规划的比较 1. 问题描述2. 贪心算法2.1 贪心策略2.2 伪代码 3. 动态规划3.1 动态规划策略3.2 伪代码 4. C语言实现5. 算法分析6. 结论7. 参考文献 1. 问题描述 0-1背包问题是组合优化中的一个经典问题。假设有一个小偷在抢劫时发现了n个…

C语言--函数递归

目录 1、什么是递归? 1.1 递归的思想 1.2 递归的限制条件 2. 递归举例 2.1 举例1:求n的阶乘 2.2 举例2:顺序打印⼀个整数的每⼀位 3. 递归与迭代 扩展学习: 早上好,下午好,晚上好 1、什么是递归&…

【Web】DASCTF X CBCTF 2022九月挑战赛 题解

目录 dino3d Text Reverser cbshop zzz_again dino3d 进来是一个js小游戏 先随便玩一下,显示要玩够1000000分 直接console改分数会被检测 先是JSFinder扫一下,扫出了check.php 到js里关键词索引搜索check.php 搜索sn,发现传入的参数是…

上古掌控安全的神-零:Spring Security5.x到Spring Security6.x的迁移

1. 本文概述 之前有写过一篇关于Spring Security的文章,但那已经是相对比较旧的版本了,就目前Spring Security6.0来说,这其中出现了不少的变动和更新,很多API的使用也是有不小的变化,所以我觉得有必要再写几篇文章学习…

OpenCV4.10使用形态运算提取水平线和垂直线

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV的查找命中或未命中 下一篇:OpenCV4.9图像金字塔-CSDN博客 目标 在本教程中,您将学习如何: 应用两个非常常见的形态运算符(即膨胀和…

java/C#语言开发的医疗信息系统10套源码

java/C#语言开发的医疗信息系统10套源码 云HIS系统源码,云LIS系统源码,PEIS体检系统,手麻系统 源 码,PACS系统源码,微源预约挂号源码,医院绩效考核源码,3D智能导诊系统源码,ADR药物…