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

这篇具有很好参考价值的文章主要介绍了区块链安全应用-------压力测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  基于已有的链进行测试(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_all.sh

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

自定义压测代码

压测自定义合约的开发均在Java SDK Demo中进行,我们需要开发三个文件,分别是: 待压测的智能合约:HelloWorld.sol

待压测的智能合约所编译出的Java类:HelloWorld.java

压力测试程序:PerformanceHelloWorld.java

项目的存放路径

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

首先编译Helloworld.sol文件

创建 contracts/solidity文件

cd ~/java-sdk-demo/dist
mkdir -p contracts/solidity

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

生成Helloworld.sol文件 文章来源地址https://www.toymoban.com/news/detail-856806.html

cd contracts/solidity
vim HelloWorld.sol
#生成以上Helloworld智能合约完成简单的获取和设置name功能
pragma solidity >=0.4.24 <0.6.11;

contract HelloWorld {
    string public name;

    constructor() public {
        name = "Hello, World!";
    }

    function get() public view returns (string memory) {
        return name;
    }

    function set(string memory n) public {
        name = n;
    }
}

到了这里,关于区块链安全应用-------压力测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 怎样正确做 Web 应用的压力测试?

    Web 应用,通俗来讲就是一个网站,主要依托于 浏览器 来访问其功能。 那怎么正确做网站的 压力测试 呢? 提到压力测试,我们想到的是服务端压力测试,其实这是片面的,完整的压力测试包含服务端压力测试和前端压力测试。 Web应用(网站)最开始是不分前后端的(所以

    2024年02月05日
    浏览(46)
  • 怎样正确做web应用的压力测试?

    web应用,通俗来讲就是一个网站,主要依托于浏览器实现其功能。 提到压力测试,我们想到的是服务端压力测试,其实这是片面的,完整的压力测试包含服务端压力测试和前端压力测试。 下文将从以下几部分内容展开: web应用压测范围 压测流程 补充1:前端压力测试 补充

    2023年04月23日
    浏览(52)
  • 功能测试,接口测试,自动化测试,压力测试,性能测试,渗透测试,安全测试,具体是干嘛的?

    软件测试是一个广义的概念,他包括了多领域的测试内容,比如,很多新手可能都听说:功能测试,接口测试,自动化测试,压力测试,性能测试,渗透测试,安全测试等,这些专业名词,但是绝大多数人都对这些名词一知半解,所以,今天我们就来给大家做个逐一的解释:

    2024年02月03日
    浏览(60)
  • 对Mysql和应用微服务做TPS压力测试

    使用工具:mysqlslap工具 使用命令: 对命令行的诠释: 连接MySQL的用户名为root 生成自动SQL语句 使用混合类型的负载进行测试 设定并发数为100到200 每次执行1000个查询 迭代10次 整数列的数量为7 字符列的数量为13 使用自增字段 执行结果如下: 对结果的诠释: 所有查询平均运

    2024年02月03日
    浏览(29)
  • 在Android Studio上使用Monkey工具对安卓应用进行压力测试

    2–pct-trackball 调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)–(轨迹球) 3–pct-nav 调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成) 4–pct-majornav 调整“主要”导航事件的百分比(这些导航事件通常引发图

    2024年04月15日
    浏览(45)
  • 怎样正确做 Web 应用的压力测试?字节8年测试5个步骤给我看师了

    Web应用,通俗来讲就是一个网站,主要依托于浏览器来访问其功能。 那怎么正确做网站的压力测试呢? 提到压力测试,我们想到的是服务端压力测试,其实这是片面的, 完整的压力测试包含服务端压力测试和前端压力测试 。 为了让大家看完文章后,更有获得感,本文将从

    2024年02月09日
    浏览(33)
  • 区块链安全性(区块链应用)

    安全性高。区块链不受任何人和实体的控制,数据在多台计算机上完整的复制。攻击者没有一个单一的入口点,数据安全更有保障。数据不可篡改,一旦进入区块链,任何信息都是无法更改的,甚至管理员也无法修改此信息。无第三方并且可访问。区块链的去中心和帮助对点

    2024年02月03日
    浏览(39)
  • 区块链安全-----接口测试-Postman

    Postman是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大,使用简单且易 用性好 。无论是开发人员进行接口调试,还是测试人员做接口测试,Postman都是我们的首选工具 之一 。 更早的接入测试,更早的发现问题。修改问题的代价更小。保证安全性,更容易

    2024年04月14日
    浏览(59)
  • 区块链面临六大安全问题 安全测试方案研究迫在眉睫

    近年来,区块链技术逐渐成为热门话题,其应用前景受到各国政府、科研机构和企业公司的高度重视与广泛关注。随着技术的发展,区块链应用与项目层出不穷,但其安全问题不容忽视。近年来,区块链安全事件日益增多,引发的后果较为严重,造成的经济损失数以亿计。

    2024年02月10日
    浏览(44)
  • 量子时代加密安全与区块链应用的未来

    量子时代加密安全与区块链应用的未来 现代密码学仍然是一门相对年轻的学科,但其历史却显示了一种重要的模式。大多数的发展都是基于几年甚至几十年前的研究。而这种缓慢的发展速度也是有原因的,就像药物和疫苗在进入市场之前需要经过多年的严格测试一样,密码学

    2024年04月26日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包