当前位置:   article > 正文

区块链的搭建与运维3

区块链的搭建与运维3

区块链的搭建与运维3

任务一: 基于控制台理解账户

(1) 搭建单群组网络节点区块链

1.构建单群组网络节点

使用开发部署工具构建单群组网络节点,命令如下:

bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
  • 1
2.启动节点并查看节点运行状态

输入如下命令,启动所有节点

bash nodes/127.0.0.1/start_all.sh
  • 1

输入如下命令,查看节点进程,正常情况下会显示 4 个节点进程

ps -ef | grep -v grep | grep fisco-bcos
  • 1

输入如下命令,可查看节点 node0 的共识情况,正常情况下,终端会不断输出 “[SEALER]++++++++++++++++” 信息,表示节点共识正常。共识信息会不断打印,可 按 “ctrl + c” 退出。

tail -f nodes/127.0.0.1/node0/log/log* | grep +++
  • 1

在这里插入图片描述

(2) 配置控制台

在终端输入如下命令,将节点 sdk 证书拷贝到控制台 conf 目录下输入如下命令,将控制台 conf 目录下的 config-example.toml 文件重命名为 config.toml 文件

cp nodes/127.0.0.1/sdk/* console/conf/

cp console/conf/config-example.toml console/conf/config.toml
  • 1
  • 2
  • 3

在这里插入图片描述

(3) 使用账户生成脚本生成账户

1.获取账户生成脚本

输入如下命令,获取账户生成脚本

wget http://res.zhonghui.vip/blockchain/fiscobcos/01/resource/get_account.sh
  • 1

输入如下命令,修改脚本权限

chmod u+x get_account.sh
  • 1

在终端输入如下命令,生成 PEM 格式的私钥

bash get_account.sh
  • 1

生成的私钥和公钥文件在 accounts 目录下,私钥文件后缀为 pem。输入以下命 令,可查看私钥文件内容

accounts 目录下的文件名(账户地址)由脚本生成,每次生成均不同,根据自己的实 际情况输入参数

cat accounts/0xfd7bcc670ca2e3027856bf86bcfa2b9ec2c2bbb6.pem
  • 1

在这里插入图片描述

输入如下命令,可以从私钥文件计算账户地址

bash get_account.sh -k
accounts/0xfd7bcc670ca2e3027856bf86bcfa2b9ec2c2bbb6.pem
  • 1
  • 2
2.生成 PKCS12 格式存储的账户私钥

在终端输入如下命令,生成 PKCS12 格式的私钥,需要输入密码,丢失密码意味 着丢失账户

bash get_account.sh -p
  • 1

在这里插入图片描述

生成的私钥和公钥文件在 accounts 目录下,私钥文件后缀为 p12。

输入以下命 令,可查看私钥文件内容 accounts 目录下的文件名(账户地址)由脚本生成,每次生成均不同,根据自己的实 际情况输入参数

cat accounts/0x1f0053fa48e6ca0e42c88026a7d6ef06d849d683.p12
  • 1

在这里插入图片描述

由此可见,PKCS12 使用用户提供的口令加密存储私钥。

输入如下命令,可以从私钥文件计算账户地址

bash get_account.sh -P
accounts/0x1f0053fa48e6ca0e42c88026a7d6ef06d849d683.p12
  • 1
  • 2

在这里插入图片描述

(4) 使用控制台生成和使用账户

1.启动控制台

输入如下命令,启动控制台,成功启动控制台后,会出现下图标志。

bash start.sh 1 -pem account/ecdsa//0x1f0053fa48e6ca0e42c88026a7d6ef06d849d683.pem
  • 1

在这里插入图片描述

2.生成 PEM 格式存储的账户私钥

在终端输入如下命令,生成 PEM 格式的私钥

newAccount
  • 1

生成的私钥和公钥文件在 console/account/ecdsa 目录下,私钥文件后缀为 pem。在新打开的终端输入以下命令,可查看私钥文件内容

cat console/account/ecdsa/0x53efe7194dc78b8929cd33868510350c9bf2e5bb.pem
  • 1
3.生成 PKCS12 格式存储的账户私钥

在终端输入如下命令,生成 PKCS12 格式的私钥,第二个参数为密码,用户可自 行设置

newAccount p12 123456
  • 1

生成的私钥和公钥文件在 console/account/ecdsa 目录下,私钥文件后缀为 p12。在新打开的终端输入以下命令,可查看私钥文件内容

cat console/account/ecdsa/0xd9cc4927b3ec8f358f4ae3eca450c4e86058ab59.p12
  • 1
4.账户的使用

在控制台输入如下命令,可以查看账户列表

listAccount
  • 1

在这里插入图片描述

说明:

其中带有 <= 后缀标记的为当前用于发送交易的私钥账户

控制台启动需要加载私钥,在之前控制台介绍的教程中,为了简化操作,使用了 工具提供的默认账户,即默认启动(命令为 bash console/start.sh),默认启动 会随机生成一个账户。

在控制台输入如下命令,切换到 0x53efe719… 账户,该账户为 PEM 账户

loadAccount 0x53efe7194dc78b8929cd33868510350c9bf2e5bb
  • 1

在控制台输入如下命令,切换到 0x00ff4cde… 账户,该账户为 PKCS12 账户

loadAccount 0xd9cc4927b3ec8f358f4ae3eca450c4e86058ab59 p12
  • 1

输入如下命令,查看当前使用的账户

getCurrentAccount
  • 1

在这里插入图片描述

当然,也可以在启动控制台时指定账户,先使用 quit 命令退出控制台,再输入如 下命令指定 PEM 私钥启动控制台

bash console/start.sh 1 /root/Desktop/fisco/console/account/ecdsa/0x53efe7194dc78b8929cd33868510350c9bf2e5bb.pem
  • 1

启动成功后,输入如下命令查看当前使用的账户

getCurrentAccount
  • 1

也可以指定 PKCS12 格式的私钥启动控制台,先使用 quit 命令退出控制台,再输 入如下命令启动控制台

bash console/start.sh 1 -p12 /root/Desktop/fisco/console/account/ecdsa/0xd9cc4927b3ec8f358f4ae3e
ca450c4e86058ab59.p12
  • 1
  • 2

启动成功后,输入如下命令查看当前使用的账户

getCurrentAccount
  • 1
5.账户的计算过程

在终端输入如下命令,使用 openssl 生成私钥文件 ecprivkey.pem

openssl ecparam -name secp256k1 -genkey -noout -out ecprivkey.pem
  • 1

私钥文件在当前目录下,输入如下命令可查看私钥文件内容

cat ecprivkey.pem
  • 1

在这里插入图片描述

输入如下命令,可根据私钥映射出公钥,得到类似下面的字符串输出,即为公钥

openssl ec -in ecprivkey.pem -text -noout 2>/dev/null|sed -n
'7,11p' | tr -d ": \n" | awk '{print substr($0,3);}
  • 1
  • 2

在这里插入图片描述

在根据公钥获取私钥之前,需要获取 keccak-256sum 工具,输入如下命令获取工 具

wget http://res.zhonghui.vip/blockchain/fiscobcos/01/resource/keccak-256sum
  • 1

输入如下命令,修改 keccak-256sum 工具权限

chmod u+x keccak-256sum
  • 1

输入如下命令,根据上述得出的公钥计算账户地址

openssl ec -in ecprivkey.pem -text -noout 2>/dev/null| sed -n
'7,11p' | tr -d ": \n" | awk '{print substr($0,3);}' | ./keccak256sum -x -l | tr -d ' -' | tail -c 41
  • 1
  • 2

接下来我们使用之前下载的 get_account.sh 脚本根据私钥计算地址进行验证,在 终端输入如下命令

bash get_account.sh -k ecprivkey.pem
  • 1

在这里插入图片描述

任务二:压力测试(Java SDK Demo)

(1) 搭建单群组网络节点区块链

内容同上不再重复。

(2) 下载和配置 Java SDK Demo

Java SDK Demo 中的测试程序能够在部署有 JDK 1.8 ~ JDK 14 的环境中运行,虚 拟机已预装 JDK11,输入如下命令可查看 java 版本

输入如下命令,获取 Java SDK Demo 压缩包

wget http://res.zhonghui.vip/blockchain/fiscobcos/01/resource/java-sdk-demo.tar.gz
  • 1

输入如下命令,解压 Java SDK Demo,解压结果如下图(部分截图)

tar -zxvf java-sdk-demo.tar.gz
  • 1

输入如下命令,编译源码

cd java-sdk-demo && ./gradlew build
  • 1

在这里插入图片描述

输入如下名命令,进入 dist 目录

cd dist
  • 1

输入如下名命令,拷贝节点 sdk 证书文件到 conf 目录

cp ../../nodes/127.0.0.1/sdk/* conf/
  • 1

输入如下名命令,拷贝 demo 配置文件

cp conf/config-example.toml conf/config.toml
  • 1

(3) 压力测试

1.串行转账压测

Java SDK Demo提供了一系列压测程序,串行压测相关文件路径如下:

转账合约:java-sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/contract/sol/Ok.sol

压测程序:java-sdkdemo/src/main/java/org/fisco/bcos/sdk/demo/perf/PerformanceOk.java

在终端输入如下压测命令,压测串行转账 TPS

java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.PerformanceOk 1000 1000 1
  • 1

在这里插入图片描述

在这里插入图片描述

参数说明:

1000:交易的总量,即为1000笔交易,用户可自定义

1000:QPS,即该压测程序的每秒交易发送速率,用户可自定义

1:压测群组号

2.并行转账压测

并行压测相关文件路径如下:

转账合约:java-sdk-demo/src/main/java/org/fisco/bcos/sdk/demo/contract/sol/ParallelOk.sol

压测程序:java-sdkdemo/src/main/java/org/fisco/bcos/sdk/demo/perf/ParallelOkPerf.java

在终端输入如下压测命令,批量生成1000个转账用户并初始化用户金额,执行 后,生成用户列表文件 user1000.txt,压测并行转账时会用到

java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf parallelok 1 add 1000 1000 user1000.txt
  • 1

在这里插入图片描述

参数说明:

  • java -cp 'conf/:lib/*:apps/*': 这部分指定了 Java 程序的类路径,确保程序能够找到需要的配置文件和库文件。
  • org.fisco.bcos.sdk.demo.perf.ParallelOkPerf: 这是你要运行的 Java 类的完整路径和名称,即压测工具的入口类。
  • parallelok: 这是指定要压测的合约名称。
  • 1: 这是指定的群组号,确保压测在正确的区块链网络群组上执行。
  • add: 这是指定压测的操作命令,可能是初始化或者其他操作,根据具体的压测工具的功能来决定。
  • 1000: 这是指定压测的交易数量,即要执行多少次转账操作。
  • 1000: 这是指定的每秒交易数(QPS),表示在压测时模拟的交易速率。
  • user1000.txt: 这是生成的用户列表文件的名称,其中可能包含了生成的用户的详细信息。

在终端输入如下压测命令,压测用户之间两两转账

java -cp "conf/:lib/*:apps/*" org.fisco.bcos.sdk.demo.perf.ParallelOkPerf parallelok 1 transfer 10000 1000 user1000.txt true
  • 1

在这里插入图片描述

参数说明:

parallelok:压测合约名

1:压测群组号

transfer:压测操作命令

10000:压测的交易数量

1000:压测的QPS

user1000.txt:使用的用户列表文件

true:使能并行计算处理

3.CRUD 合约压测

压测

转账合约:java-sdkdemo/src/main/java/org/fisco/bcos/sdk/demo/contract/sol/TableTest.sol

压测程序:java-sdkdemo/src/main/java/org/fisco/bcos/sdk/demo/perf/PerformanceTable.java

在终端输入如下压测命令,压测向表中插入1000条数据的 TPS

java -cp "conf/:lib/*:apps/*" org.fisco.bcos.sdk.demo.perf.PerformanceTable insert 1000 1000 1
  • 1

在这里插入图片描述

参数说明:

insert:压测操作命令,此处为插入数据

1000:压测的交易总量,此处为1000条数据

1000:压测的QPS

1:压测群组号

在终端输入如下压测命令,压测更新表中1000条数据的 TPS

java -cp "conf/:lib/*:apps/*" org.fisco.bcos.sdk.demo.perf.PerformanceTable update 1000 1000 1
  • 1

在这里插入图片描述

参数说明:

update:压测操作命令,此处为更新表中数据

1000:压测的交易总量,此处为1000条数据

1000:压测的QPS

1:压测群组号

在终端输入如下压测命令,压测删除表中1000条数据的 TPS

ava -cp "conf/:lib/*:apps/*" org.fisco.bcos.sdk.demo.perf.PerformanceTable remove 1000 1000 1
  • 1

在这里插入图片描述

参数说明:

remove:压测操作命令,此处为删除表中数据

1000:压测的交易总量,此处为1000条数据

1000:压测的QPS

1:压测群组号

在终端输入如下压测命令,压测查询表中1000条数据的 TPS

 java -cp "conf/:lib/*:apps/*" org.fisco.bcos.sdk.demo.perf.PerformanceTable query 1000 1000 1
  • 1

在这里插入图片描述

参数说明:

query:压测操作命令,此处为查询表中数据

1000:压测的交易总量,此处为1000条数据

1000:压测的QPS

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/946778
推荐阅读
相关标签
  

闽ICP备14008679号