区块链安全应用-------压力测试_区块链节点压力测试(1)

            "language": "solidity",
            "version": "v0"
        }
    ]
},
"info": {
    "Version": "2.0.0",
    "Size": "4 Nodes",
    "Distribution": "Single Host"
}

}

![](https://img-blog.csdnimg.cn/direct/5c56ddf688fd4e06a730677f6e888a67.png)![](https://img-blog.csdnimg.cn/direct/b6c33e3a2ac545feb974284349a8b09d.png)


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

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

![](https://img-blog.csdnimg.cn/direct/5e5750802a4b454f93827fa70008369f.png)


![](https://img-blog.csdnimg.cn/direct/540523fead6548d6826aaeccd58ad5d7.png)


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


#### 第四步:停止节点

bash nodes/127.0.0.1/stop_all.sh

 ![](https://img-blog.csdnimg.cn/direct/a2e8af88638446e3bbcb217dc7ad350b.png)


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


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


* 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)

![](https://img-blog.csdnimg.cn/direct/6779a2e371174e839208311dd45b3a83.png)


#### 第二步:编译源码

下载源码

git clone https://github.com/FISCO-BCOS/java-sdk-demo

cd java-sdk-demo
git checkout main-2.0

编译源码

./gradlew build

![](https://img-blog.csdnimg.cn/direct/aad52812ce9c4dc68e2864d9955153de.png)


![](https://img-blog.csdnimg.cn/direct/71d3f3ab321f4e30b5260d954874f77c.png)


 ![](https://img-blog.csdnimg.cn/direct/3c4d02ff7937444ba719a7827b15c7b4.png)


![](https://img-blog.csdnimg.cn/direct/928a58c81cc94d72944a4d076a1f2f56.png)


#### 第三步. 配置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”]

![](https://img-blog.csdnimg.cn/direct/a2e6f84377f24346958d6e9c4e3cf284.png) ![](https://img-blog.csdnimg.cn/direct/fc4fec3d86a347c19c4d001c99b4326b.png)


![](https://img-blog.csdnimg.cn/direct/1d4011168e0247cca95795bce682d301.png)


![](https://img-blog.csdnimg.cn/direct/3cbebbf5563d49d894fd0e4e10794829.png)


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


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]

 以上对压测合约进行解释,如已经生成配置文件了,就可以直接运行下面的代码


![](https://img-blog.csdnimg.cn/direct/72d4ce4d3d8f41ae9f17d71ba8ee5826.png)


然后下面是对合约进行运行

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

![](https://img-blog.csdnimg.cn/direct/c8da62b29974461d9f9aae18754838e4.png)


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


![](https://img-blog.csdnimg.cn/direct/b9b1724d044e4520a897ed7b567f45c2.png)

bash start_all.sh

 ![](https://img-blog.csdnimg.cn/direct/4f58203d98f84562919e65cf90120592.png)


### 自定义压测代码


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


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


压力测试程序:PerformanceHelloWorld.java


#### 项目的存放路径


![](https://img-blog.csdnimg.cn/direct/6202c766ae084425b1d5d52405490458.png)


首先编译Helloworld.sol文件


创建 contracts/solidity文件

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

![](https://img-blog.csdnimg.cn/direct/0b66e1c397c94a0ea63622d0cb6baa0a.png)


生成Helloworld.sol文件 

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

## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**

![img](https://img-blog.csdnimg.cn/img_convert/619912923f12851bc6295789baffd5f9.png)

![img](https://img-blog.csdnimg.cn/img_convert/972306990e93f7a93b96914425c2d6b1.png)

![img](https://img-blog.csdnimg.cn/img_convert/9f205ea32016d26394d4deeda92deb8d.png)

![img](https://img-blog.csdnimg.cn/img_convert/302a9f52c9fb797af4f4f1ef7243f882.png)

![img](https://img-blog.csdnimg.cn/img_convert/58540033ec3109abcd510bf385b02454.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

1715632224785)]

[外链图片转存中...(img-58BTrlSX-1715632224785)]

[外链图片转存中...(img-IzC3GIiB-1715632224785)]

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

接下来我将给各位同学划分一张学习计划表!

学习计划

那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:

阶段一:初级网络安全工程师

接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。

综合薪资区间6k~15k

1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?

阶段二:中级or高级网络安全工程师(看自己能力)

综合薪资区间15k~30k

7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。

零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完

用Python编写漏洞的exp,然后写一个简单的网络爬虫

PHP基本语法学习并书写一个简单的博客系统

熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)

了解Bootstrap的布局或者CSS。

阶段三:顶级网络安全工程师

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

学习资料分享

当然,只给予计划不给予学习资料的行为无异于耍流氓,这里给大家整理了一份【282G】的网络安全工程师从入门到精通的学习资料包,可点击下方二维码链接领取哦。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值