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

news2024/12/24 8:32:05

  基于已有的链进行测试(build_chain默认建的链 四个节 点):

第一步:搭链

1. 安装依赖 在ubuntu操作系统中,操作步骤如下:

sudo apt install -y openssl curl

2. 创建操作目录, 下载安装脚本

## 创建操作目录

cd ~ && mkdir -p fisco && cd fisco

## 下载脚本
curl -LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.7.1/build_chain.sh
chmod +x build_chain.sh
#搭链
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 –e ./fisco-bcos

3. 启动链

bash nodes/127.0.0.1/start_all.sh

第二步:配置网络配置文件

在networks/fisco-bcos/test/创建fisco-bcos2.json配置网络适配文件:

{
    "caliper": {
        "blockchain": "fisco-bcos"
    },
    "fisco-bcos": {
        "config": {
            "privateKey": "bcec428d5205abe0f0cc8a734083908d9eb8563e31f943d760786edf42ad67dd",
            "account": "0x0ff8981ebc130c7874ac7093a4d0c0e3d4f36b08"
        },
        "network": {
            "nodes": [
                {
                    "ip": "127.0.0.1",
                    "rpcPort": "8545",
                    "channelPort": "20200"
                },
                {
                    "ip": "127.0.0.1",
                    "rpcPort": "8546",
                    "channelPort": "20201"
                },
                {
                    "ip": "127.0.0.1",
                    "rpcPort": "8547",
                    "channelPort": "20202"
                },
                {
                    "ip": "127.0.0.1",
                    "rpcPort": "8548",
                    "channelPort": "20203"
                }
            ],
            "authentication": {
                "key":"/home/myy/Desktop/fisco-bcos/nodes/127.0.0.1/sdk/sdk.key",
                "cert": "/home/myy/Desktop/fisco-bcos/nodes/127.0.0.1/sdk/sdk.crt",
                "ca": "/home/myy/Desktop/fisco-bcos/nodes/127.0.0.1/sdk/ca.crt"
            },
            "groupID": 1,
            "timeout": 100000
        },
        "smartContracts": [
            {
                "id": "helloworld",
                "path": "src/fisco-bcos/helloworld/HelloWorld.sol",
                "language": "solidity",
                "version": "v0"
            }
        ]
    },
    "info": {
        "Version": "2.0.0",
        "Size": "4 Nodes",
        "Distribution": "Single Host"
    }
}

第三步,对本地四节点链进行测试

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

测试和进程资源状态都可以监测,但在本地监测中,无法监测每个节点的资源状态。

第四步:停止节点

bash nodes/127.0.0.1/stop_all.sh

 

如何改成预编译的智能合约进行测试?

测试文件参数介绍 参数 含义

  • test.name 要在报告中显示的benchmark的短名称。
  • test.description 要在报告中显示的benchmark的详细说明。
  • test.workers 与工作线程相关的对象的配置。
  • test.workers.type (暂未投入使用)
  • test.workers.number 指定用于执行工作负载的工作进程数。
  • test.rounds 对象回合数组,一个数组下可以有多轮不同的测试任务。
  • test.rounds[i].label 该轮测试的名称,通常对应于该轮要提交的测试的类型。
  • test.rounds[i].txNumber应在该轮任务提交的任务数。
  • test.rounds[i].txDuration 该轮提交任务数的用时(单位,秒)。
  • test.rounds[i].rateControl 描述该轮的速率控制策略。
  • test.rounds[i].workload 描述该轮的工作负载模块。
  • test.rounds[i].workload.module 该轮基准测试工作负载模块实现的路径。
  • test.rounds[i].workload.arguments 作为配置,传递给该轮工作负载模块的参数 

通过Java SDK进行压力测试

配置工程链基本环境后,介绍具体测试步骤和要点。

  • 1. 编写合约:HelloWorld合约。
  • 2. 编译智能合约,将其转为Java文件,从上述WeBASE-Front中,也能编译并导出Java文件。
  • 3. 将编译生成的Java文件导入工程中,如HelloWorld.java。
  • 4. 基于上述文件,调用合约功能和接口,编写相关测试案例,例如:ContractTest。
  • 5. 基于Spring提供的gradle插件,我们可以通过”./gradlew test”命令来运行所有测试案例。
  • 6. 如果需要持续集成,可以在配置和初始化FISCO BCOS后,将步骤5命令加入自动化脚本中。

第一步:安装JDK

# 安装open JDK 11
sudo apt install openjdk-11-jdk
# 验证Java版本
java --version
# 输出以下内容:
#openjdk 11.0.22 2024-01-16
#OpenJDK Runtime Environment (build 11.0.22+7-post-Ubuntu-0ubuntu220.04.1)
#OpenJDK 64-Bit Server VM (build 11.0.22+7-post-Ubuntu-0ubuntu220.04.1, mixed 
mode, sharing)

第二步:编译源码 

# 下载源码
git clone https://github.com/FISCO-BCOS/java-sdk-demo

cd java-sdk-demo
git checkout main-2.0

# 编译源码
./gradlew build 

 

第三步. 配置Demo

使用Java SDK Demo之前,需要首先要Java SDK,包括证书拷贝以及端口配置,详细请参考这里

# 拷贝证书(假设SDK证书位于~/fisco/nodes/127.0.0.1/sdk目录,请根据实际情况更改路径)
cd dist
cp -r /root/fisco/nodes/127.0.0.1/sdk/* conf

# 拷贝配置文件
# 注:
#   默认搭建的FISCO BCOS区块链系统Channel端口是20200,若修改了该端口,请同步修改config.toml中的[network.peers]配置选项
$ cp conf/config-example.toml conf/config.toml
#由于我的区块链环境具有四个节点,所以应该修改java-sdk-demo/dist/conf/config.toml下的network.peers配置
peers=["127.0.0.1:20200", "127.0.0.1:20201","127.0.0.1:20202","127.0.0.1:20203"]

 

 

第四步. 执行示例压力测试程序

Java SDK Demo提供了一系列压测程序,包括串行转账合约压测、并行转账合约压测、AMOP压测等, 具体使用方法如下:

# 进入dist目录
$ cd dist
mkdir -p contracts/solidity

# 将需要转换为java代码的sol文件拷贝到dist/contracts/solidity路径下
# 转换sol, 其中${packageName}是生成的java代码包路径
# 生成的java代码位于 /dist/contracts/sdk/java目录下
$ java -cp "apps/*:lib/*:conf/" org.fisco.bcos.sdk.demo.codegen.DemoSolcToJava 
${packageName}

# 压测串行转账合约:
# count: 压测的交易总量
# tps: 压测QPS
# groupId: 压测的群组ID
java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.PerformanceOk [count] 
[tps] [groupId]



# 压测并行转账合约
# --------------------------
# 基于Solidity并行合约parallelok添加账户:
# groupID: 压测的群组ID
# count: 压测的交易总量
# tps: 压测QPS
# file: 保存生成账户的文件名
$ java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf 
[parallelok] [groupID] [add] [count] [tps] [file]
# 基于Precompiled并行合约precompiled添加账户
# (参数含义同上)
java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf 
[precompiled] [groupID] [add] [count] [tps] [file]
# --------------------------
# 基于Solidity并行合约parallelok发起转账交易压测
# groupID: 压测的群组ID
# count: 压测的交易总量
# tps: 压测的QPS
# file: 转账用户文件
$ java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf 
[parallelok] [groupID] [transfer] [count] [tps] [file]
# 基于Precompiled并行合约Precompiled发起转账压测
$ java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf 
[precompiled] [groupID] [transfer] [count] [tps] [file]
# CRUD合约压测
# 压测CRUD insert
# count: 压测的交易总量
# tps: 压测QPS
# groupId: 压测群组

$ java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.PerformanceTable 
[insert] [count] [tps] [groupId]

# 压测CRUD update
# (参数解释同上)
$ java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.PerformanceTable 
[update] [count] [tps] [groupId]

# 压测CRUD remove
# (参数解释同上)
$ java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.PerformanceTable 
[remove] [count] [tps] [groupId]

# 压测CRUD query
# (参数解释同上)
$ java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.PerformanceTable 
[query] [count] [tps] [groupId]

 以上对压测合约进行解释,然后下面是对合约进行运行

cd ~/java-sdk-demo/dist
java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.PerformanceOk [count] 
[tps] [groupId]

java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.PerformanceOk 10000 1000 1
#200000代表总测试量为10000   1000代表每秒向区块链系统发送1000次请求   1代表区块链系统的groupId

 

出现以下错误是因为搭链没有启动要先启动链 

bash start.sh

 

 

 

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

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

相关文章

HDFS分布式文件存储系统

1-1 HDFS的存储机制 按块(block)存储 hdfs在对文件数据进行存储时,默认是按照128M(包含)大小进行文件数据拆分,将不同拆分的块数据存储在不同datanode服务器上 拆分后的块数据会被分别存储在不同的服务器上 副本机制 为了保证hdfs…

标题Selenium IDE 常见错误笔记

Selenium IDE 常见错误笔记 错误1:Failed:Exceeded waiting time for new window to appear 2000ms 这个错误通常出现在第一次运行时,有两个原因: Firefox阻止了弹出式窗口,在浏览器设置里允许这个操作即可。 有些网站设置了反…

轻松上手,无缝对接:详述如何接入企讯通空号检测接口API

企讯通空号检测接口API作为一款高效、精准的手机号码状态检测工具,能够帮助企业及开发者快速识别手机号码的有效性,优化通讯资源,提升营销效果。本篇文章将带领您一步步了解如何轻松、无缝地对接企讯通空号检测接口API,让您的业务…

HIVE无法启动问题

​ 启动不了hive 一直在加载中! 问题:当我们打开电脑 想要学习hive时 我们却发现 它一直卡在启动页面 true一直后没有信息或者报错 原因:我们在之前学习时 在配置hdfs的高可用时(High Availability 简称HA) 高可用…

stm32HAL_GPIO输入

学会使用 GPIO 采集 KEY 的数据信息,这种信息采集技术在生活中常见于对大自 然环境的各种信息的采集。比如环境温度,湿度等等。我们这里以 key 为入门设 备。 一,什么是信息采集 比如环境温度,湿度等等。我们需要把这些温度&am…

Spire.PDF for .NET【文档操作】演示:更改 PDF 版本

在某些平台上上传或提交 PDF 文件时,您有时会面临平台需要特定版本的 PDF 文件的困境。如果您的PDF文件无法满足要求,则需要将其转换为不同版本以实现兼容性。本文将演示如何使用Spire.PDF for .NET以编程方式在不同版本之间转换 PDF。 Spire.PDF for .…

探秘数据库中间件:ProxySQL与MaxScale的优势与劣势

欢迎来到我的博客,代码的世界里,每一行都是一个故事 探秘数据库中间件:ProxySQL与MaxScale的优势与劣势 前言功能对比负载均衡故障转移查询路由使用场景和业务需求下的选择建议 性能对比响应速度并发连接数不同负载条件下的性能表现 高可用性…

R语言绘制动态网络图Network教程WGCNA

今天分享的笔记是使用NetworkD3对WGCNA的共表达网络进行可视化,创建交互式动态网络图,展示基因之间的相互关系,可以用于转录组或者其他调控网络展示。 加权基因共表达网络分析 (WGCNA, Weighted correlation network analysis)是用来描述不同…

大语言模型(LLM)漏洞爆发,AI模型无一幸免

本文概述了人工智能初创公司Anthropic于2024年04月03日发表的一篇针对人工智能安全的论文,该公司在本论文中宣布的一种新的“越狱”技术,名为Many-shot Jailbreaking(多轮越狱)。文章详细描述了目前大语言模型(LLM&…

AI大模型探索之路-实战篇2:基于CVP架构-企业级知识库实战落地

目录 前言 一、概述 二、本地知识库需求分析 1. 知识库场景分析 2. 知识库应用特点 3. 知识库核心功能 三、本地知识库架构设计 1. RAG架构分析 2. 大模型方案选型 3. 应用技术架构选型 4. 向量数据库选型 5. 模型选型 三、本地知识库RAG评估 四、本地知识库代码落地 1. 文件…

Godot3D学习笔记1——界面布局简介

创建完成项目之后可以看到如下界面: Godot引擎也是场景式编程,这里的一个场景相当于一个关卡。 这里我们点击左侧“3D场景”按钮创建一个3D场景,现在在中间的画面中会出现一个球。在左侧节点视图中选中“Node3D”,右键创建子节点…

day_8题解

利用最大公约数求最小公倍数 #include<iostream> using namespace std;int gcd(int a,int b) {return b?gcd(b,a%b):a; }int main() {long long a,b;cin>>a>>b;long long ansgcd(a,b);cout<<(a*b)/ans<<endl;return 0; }排序遍历&#xff0c;记…

国内开通chatgpt plus会员方法

ChatGPT镜像 今天在知乎看到一个问题&#xff1a;“平民不参与内测的话没有账号还有机会使用ChatGPT吗&#xff1f;” 从去年GPT大火到现在&#xff0c;关于GPT的消息铺天盖地&#xff0c;真要有心想要去用&#xff0c;途径很多&#xff0c;别的不说&#xff0c;国内GPT的镜像…

excel中怎么用乘法、加法来替代AND和OR函数

你可以使用乘法和加法来替代Excel中的AND和OR函数&#xff0c;虽然这样做可能会增加公式的复杂度&#xff0c;但在某些情况下是可行的。 1. 使用乘法替代AND函数&#xff1a;AND函数用于判断一系列条件是否同时成立&#xff0c;如果所有条件都为TRUE&#xff0c;则返回TRUE&…

高通发布电脑CPU,比英特尔Ultra9领先51%

要说2024年最热门的关键词&#xff0c;那肯定非 AI 莫属&#xff0c;当前 AI 已经开始深入各行各业&#xff0c;AI 电视、AI 手机、AI 车机、AI 家电&#xff0c;以及 AI PC ,这些都意味着 AI 将对各个行业带来的新风向和不小的冲击。 2024 年了&#xff0c;PC 处理器还能卷出什…

idea2019.3.5版本安装配置

安装 下载地址&#xff1a;https://www.jetbrains.com/idea/download/other.html 配置idea缓存文件位置 注意&#xff1a;为了避免后续的麻烦&#xff0c;此步骤必须为安装或者重装idea的第一步骤&#xff01;&#xff01;&#xff01; 注意&#xff1a;为了避免后续的麻烦&…

Android Studio开发工具学习之Git远程仓库拉取与推送

Git远程仓库操作 1.1 推送项目到远端服务器1.1.1 进入Gitee或Github、创建一个新的仓库1.1.2 将Android Studio中项目推送至Gitee 1.2 从远端服务器拉取项目1.2.1 AS工程页拉取新项目1.2.2 AS启动页拉取项目 1.1 推送项目到远端服务器 1.1.1 进入Gitee或Github、创建一个新的仓…

Redis 如何实现分布式锁

课程地址 单机 Redis naive 版 加锁&#xff1a; SETNX ${lockName} ${value} # set if not exist如果不存在则插入成功&#xff0c;返回 1&#xff0c;加锁成功&#xff1b;否则返回 0&#xff0c;加锁失败 解锁&#xff1a; DEL ${lockName}问题1 2 个线程 A、B&#…

实验 1--SQL Server2008数据库开发环境

文章目录 实验 1--SQL Server2008数据库开发环境2.4.1 实验目的2.4.2 实验准备2.4.3 实验内容1.利用 SSMS 访问系统自带的Report Server 数据库。2.熟悉了解 SMSS对象资源管理器树形菜单相关选择项的功能。(1)右键单击数据库Report Server&#xff0c;查看并使用相关功能;(2)选…

ubuntu系统安装配置gitlab+Jenkins+发布持续集成持续部署保姆级教程。

1、服务器环境 名称 系统 IP 备注 gitlab ubuntu20.04.2图形化 192.168.26.130 要求有6G的内存 Jenkins Ubuntu20.04.2图形化 …