首页 > 编程知识 正文

无线信道优化,通信fabric

时间:2023-05-06 13:50:57 阅读:257395 作者:736

首先请确认是否安装并配置了docker和docker-compose,已安装的可忽略,未安装的可参考这篇文章的第一节

1.下载并配置Node.js

下载Node.js,v10.X LTS版本

sudo wget -P /usr/local https://cdn.npm.taobao.org/dist/node/v10.20.0/node-v10.20.0-linux-x64.tar.xzcd /usr/localsudo tar -xvf node-v10.20.0-linux-x64.tar.xz

给node文件夹权限

sudo chmod 777 -R node-v10.20.0-linux-x64

配置环境变量

vim ~/.bashrc

将以下内容复制到bashrc文件中,按I插入,插入完成后按ESC退出插入,输出:wq!保存退出,如下图所示

export PATH=$PATH:/usr/local/node-v10.20.0-linux-x64/贤惠的电脑

退出后在命令行输入以下命令刷新配置文件

source ~/.bashrc

检查是否安装成功,如果返回版本号即配置成功

node -vnpm -v 2.下载fabric-sample及fabric2.2.0二进制文件和镜像 git clone https://github.com/hyperledger/fabric-samples.gitcd fabric-samplesgit checkout 22393b629bcac7f7807cc6998aa44e06ecc77426curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.2.0 1.4.8 -s

配置环境变量

vim ~/.bashrc

将以下内容复制到bashrc文件中,按“I”插入,插入完成后按ESC退出插入,输出:wq!保存退出,如下图所示(pwd是fabric-sample的路径)

export PATH=$PATH:$(pwd)/贤惠的电脑

退出后在命令行输入以下命令刷新配置文件

source ~/.bashrc 3.创建并初始化Fabric网络 cd test-network./network.sh up createChannel./network.sh deployCC -ccn basic -ccl javascript

./network.sh up createChannel执行完毕后如下图所示

./network.sh deployCC -ccn basic -ccl javascript执行完毕后如下图所示

4.创建Caliper工作区

当前在test-network目录下,回到fabric-samples的同一级目录,在fabric-samples目录的同一级别创建一个名为caliper-workspace的文件夹,然后在caliper-workspace文件夹中,分别创建三个名为networksbenchmarksworkload的文件夹

cd ../..mkdir caliper-workspacecd caliper-workspacemkdir networksmkdir benchmarksmkdir workload

文件目录如图所示,caliper-workspace和fabric-samples在同一目录下

Caliper的安装和使用将基于当地的npm安装。(没有配置npm的小伙伴可以参考此文章中下载并配置Node.js部分)

caliper-workspace目录中,使用以下终端命令安装caliper CLI:

npm install --only=prod @hyperledger/caliper-cli@0.4.0

使用以下终端命令绑定SDK:

npx caliper 贤惠的电脑d --caliper-贤惠的电脑d-sut fabric:2.1 5.构建网络配置文件

在networks文件夹下创建一个名为networkConfig.json的文件

cd networkstouch networkConfig.json

将以下内容复制到networkConfig.json的文件中并保存,

{ "version" : "1.0", "name": "Caliper test", "caliper" : { "blockchain": "fabric" }, "clients": { "Admin@org1.example.com": { "client": { "credentialStore": { "path": "/tmp/org1", "cryptoStore": { "path": "/tmp/org1" } }, "organization": "Org1", "clientPrivateKey": { "path": "../fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk" }, "clientSignedCert": { "path": "../fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" }, "connection": { "timeout": { "peer": { "endorser": "300" } } } } } }, "channels": { "mychannel": { "created" : true, "contracts": [ { "id":"basic", "version":"1.0.0" } ] } }, "organizations":{ "Org1": { "mspid": "Org1MSP", "peers": [ "peer0.org1.example.com" ] } }, "peers": { "peer0.org1.example.com": { "url": "grpcs://localhost:7051", "tlsCACerts": { "pem": "-----BEGIN CERTIFICATE-----n<UNIQUE CONTENT>n-----END CERTIFICATE-----n" }, "grpcOptions": { "ssl-target-name-override": "peer0.org1.example.com", "hostnameOverride": "peer0.org1.example.com" } } }}

注意"pem": "-----BEGIN CERTIFICATE-----n<UNIQUE CONTENT>n-----END CERTIFICATE-----n"中的内容需要根据自己网络中生成的证书内容来更改,查看方式如下:

cd ../..cd fabric-samples/test-network/organizations/peerOrganizations/org1.example.com

打开connection-org1.json,复制以下内容替换networkConfig.json文件中"pem": "-----BEGIN CERTIFICATE-----n<UNIQUE CONTENT>n-----END CERTIFICATE-----n"的内容

替换networkConfig.json文件中tlsCACerts的内容,并保存

6.构建测试工作负载模块

在workload文件夹中,创建一个名为readAsset.js的文件

cd ..cd workloadtouch readAsset.js

将以下内容复制到readAsset.js的文件中并保存:

'use strict';const { WorkloadModuleBase } = require('@hyperledger/caliper-core');class MyWorkload extends WorkloadModuleBase { constructor() { super(); } async initializeWorkloadModule(workerIndex, totalWorkers, roundIndex, roundArguments, sutAdapter, sutContext) { await super.initializeWorkloadModule(workerIndex, totalWorkers, roundIndex, roundArguments, sutAdapter, sutContext); for (let i=0; i<this.roundArguments.assets; i++) { const assetID = `${this.workerIndex}_${i}`; console.log(`Worker ${this.workerIndex}: Creating asset ${assetID}`); const request = { contractId: this.roundArguments.contractId, contractFunction: 'CreateAsset', invokerIdentity: 'Admin@org1.example.com', contractArguments: [assetID,'blue','20','penguin','500'], readOnly: false }; await this.sutAdapter.sendRequests(request); } } async submitTransaction() { const randomId = Math.floor(Math.random()*this.roundArguments.assets); const myArgs = { contractId: this.roundArguments.contractId, contractFunction: 'ReadAsset', invokerIdentity: 'Admin@org1.example.com', contractArguments: [`${this.workerIndex}_${randomId}`], readOnly: true }; await this.sutAdapter.sendRequests(myArgs); } async cleanupWorkloadModule() { for (let i=0; i<this.roundArguments.assets; i++) { const assetID = `${this.workerIndex}_${i}`; console.log(`Worker ${this.workerIndex}: Deleting asset ${assetID}`); const request = { contractId: this.roundArguments.contractId, contractFunction: 'DeleteAsset', invokerIdentity: 'Admin@org1.example.com', contractArguments: [assetID], readOnly: false }; await this.sutAdapter.sendRequests(request); } }}function createWorkloadModule() { return new MyWorkload();}module.exports.createWorkloadModule = createWorkloadModule; 7.构建基准测试配置文件

在benchmarks文件夹下创建一个名为myAssetBenchmark.yaml

cd ..cd benchmarkstouch myAssetBenchmark.yaml

将以下内容复制到myAssetBenchmark.yaml的文件中并保存:

test: name: basic-contract-benchmark description: test benchmark workers: type: local number: 2 rounds: - label: readAsset description: Read asset benchmark txDuration: 30 rateControl: type: fixed-load opts: transactionLoad: 2 workload: module: workload/readAsset.js arguments: assets: 10 contractId: basicmonitors: resource: - module: docker options: interval: 5 containers: - all 8.运行Caliper基准测试

运行以下指令

npx caliper launch manager --caliper-workspace ./ --caliper-networkconfig networks/networkConfig.json --caliper-benchconfig benchmarks/myAssetBenchmark.yaml --caliper-flow-only-test --caliper-fabric-gateway-enabled --caliper-fabric-gateway-discovery

测试结果如下:

同时在caliper-workspace目录下生成了一个名为report.html的报告,打开即可查看性能测试报告。

打开后如图所示

欢迎小伙伴的讨论,若有问题请在评论区评论,谢谢你。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。