Hyperledger Fabric - 自定义network.sh脚本
引言:依据hyperledger fabric提供的测试网络脚本搭建自己的网络环境
该系列参考:https://blog.csdn.net/ling1998?type=blog
执行./network.sh up 将调用脚本中networkUp()函数,函数解析如下图所示
创建自己的网络目录
进入fabric-samples目录
cd $GOPATH/src/github.com/hyperledger/fabric/scripts/fabric-samples
创建文件夹test-network-myself
mkdir test-network-myself
进入test-network-myself目录
cd test-network-myself
创建并编辑crypto-config.yaml
因hyperledger fabri是许可网络,任何节点的网络参与者都需要有证书才可以访问网络,证书是证明能够访问网络的通行证
创建crypto-config.yaml文件
touch crypto-config.yaml
编辑crypto-config.yaml文件
vim crypto-config.yaml
文件中创建2个peer节点,一个order排序节点,两个organization组织
OrdererOrgs: # 排序节点配置
- Name: Orderer # 组织名称
Domain: example.com # 组织域名
EnableNodeOUs: true # 设置为true,将会在msp目录下生成config.yaml文件
Specs:
- Hostname: orderer # 主机名称
SANS:
- localhost # 除主机名称外的别名
PeerOrgs: # peer节点配置
- Name: Org1
Domain: org1.example.com
EnableNodeOUs: true
Template: # 使用模板,将自动生成hostname,以peer0到peerN-1的顺序生成
Count: 1 # peer节点个数
SANS:
- localhost
Users:
Count: 1 # peer节点中用户数量,除了管理员以外的用户数量
- Name: Org2
Domain: org2.example.com
EnableNodeOUs: true
Template:
Count: 1
SANS:
- localhost
Users:
Count: 1
生成组织及证书
cryptogen generate --config=./crypto-config.yaml --output="organizations"
解释:
cryptogen generate命令中的参数:
--output="organizations" 用来存放构建的输出目录
--config=./crypto-config.yaml 使用的配置文件,即第2步中创建的文件
查看organization目录
[root@localhost test-network-myself]# tree organizations
organizations
├── ordererOrganizations #排序组织
│ └── example.com #配置文件中的域名作为目录
│ ├── ca #证书文件目录
│ │ ├── ca.example.com-cert.pem #公钥
│ │ └── priv_sk #私钥
│ ├── msp #存放签名用的证书文件和加密用的私钥文件
│ │ ├── admincerts #超级管理员,管理排序节点
│ │ ├── cacerts #根CA证书,可颁发其它证书
│ │ │ └── ca.example.com-cert.pem #加密证书
│ │ ├── config.yaml
│ │ └── tlscacerts #TLS根CA证书,网络安全协议
│ │ └── tlsca.example.com-cert.pem #加密证书
│ ├── orderers #配置文件中的排序节点名称作为目录,
│ │ └── orderer.example.com #配置文件中的排序节点名称.域名作为目录
│ │ ├── msp
│ │ │ ├── admincerts
│ │ │ ├── cacerts
│ │ │ │ └── ca.example.com-cert.pem
│ │ │ ├── config.yaml
│ │ │ ├── keystore
│ │ │ │ └── priv_sk
│ │ │ ├── signcerts
│ │ │ │ └── orderer.example.com-cert.pem
│ │ │ └── tlscacerts
│ │ │ └── tlsca.example.com-cert.pem
│ │ └── tls
│ │ ├── ca.crt
│ │ ├── server.crt
│ │ └── server.key
│ ├── tlsca
│ │ ├── priv_sk
│ │ └── tlsca.example.com-cert.pem
│ └── users #组织成员目录
│ └── Admin@example.com #至少有一个管理员
│ ├── msp
│ │ ├── admincerts
│ │ ├── cacerts
│ │ │ └── ca.example.com-cert.pem
│ │ ├── config.yaml
│ │ ├── keystore #账号的私钥
│ │ │ └── priv_sk
│ │ ├── signcerts #符合X.509的节点或者账户证书文件
│ │ │ └── Admin@example.com-cert.pem
│ │ └── tlscacerts
│ │ └── tlsca.example.com-cert.pem
│ └── tls
│ ├── ca.crt
│ ├── client.crt
│ └── client.key
└── peerOrganizations #peer组织
├── org1.example.com #配置文件中的域名作为目录
│ ├── ca
│ │ ├── ca.org1.example.com-cert.pem
│ │ └── priv_sk
│ ├── msp
│ │ ├── admincerts
│ │ ├── cacerts
│ │ │ └── ca.org1.example.com-cert.pem
│ │ ├── config.yaml
│ │ └── tlscacerts
│ │ └── tlsca.org1.example.com-cert.pem
│ ├── peers
│ │ └── peer0.org1.example.com
│ │ ├── msp
│ │ │ ├── admincerts
│ │ │ ├── cacerts
│ │ │ │ └── ca.org1.example.com-cert.pem
│ │ │ ├── config.yaml
│ │ │ ├── keystore
│ │ │ │ └── priv_sk
│ │ │ ├── signcerts
│ │ │ │ └── peer0.org1.example.com-cert.pem
│ │ │ └── tlscacerts
│ │ │ └── tlsca.org1.example.com-cert.pem
│ │ └── tls
│ │ ├── ca.crt
│ │ ├── server.crt
│ │ └── server.key
│ ├── tlsca
│ │ ├── priv_sk
│ │ └── tlsca.org1.example.com-cert.pem
│ └── users
│ ├── Admin@org1.example.com
│ │ ├── msp
│ │ │ ├── admincerts
│ │ │ ├── cacerts
│ │ │ │ └── ca.org1.example.com-cert.pem
│ │ │ ├── config.yaml
│ │ │ ├── keystore
│ │ │ │ └── priv_sk
│ │ │ ├── signcerts
│ │ │ │ └── Admin@org1.example.com-cert.pem
│ │ │ └── tlscacerts
│ │ │ └── tlsca.org1.example.com-cert.pem
│ │ └── tls
│ │ ├── ca.crt
│ │ ├── client.crt
│ │ └── client.key
│ └── User1@org1.example.com
│ ├── msp
│ │ ├── admincerts
│ │ ├── cacerts
│ │ │ └── ca.org1.example.com-cert.pem
│ │ ├── config.yaml
│ │ ├── keystore
│ │ │ └── priv_sk
│ │ ├── signcerts
│ │ │ └── User1@org1.example.com-cert.pem
│ │ └── tlscacerts
│ │ └── tlsca.org1.example.com-cert.pem
│ └── tls
│ ├── ca.crt
│ ├── client.crt
│ └── client.key
└── org2.example.com
├── ca
│ ├── ca.org2.example.com-cert.pem
│ └── priv_sk
├── msp
│ ├── admincerts
│ ├── cacerts
│ │ └── ca.org2.example.com-cert.pem
│ ├── config.yaml
│ └── tlscacerts
│ └── tlsca.org2.example.com-cert.pem
├── peers
│ └── peer0.org2.example.com
│ ├── msp
│ │ ├── admincerts
│ │ ├── cacerts
│ │ │ └── ca.org2.example.com-cert.pem
│ │ ├── config.yaml
│ │ ├── keystore
│ │ │ └── priv_sk
│ │ ├── signcerts
│ │ │ └── peer0.org2.example.com-cert.pem
│ │ └── tlscacerts
│ │ └── tlsca.org2.example.com-cert.pem
│ └── tls
│ ├── ca.crt
│ ├── server.crt
│ └── server.key
├── tlsca
│ ├── priv_sk
│ └── tlsca.org2.example.com-cert.pem
└── users
├── Admin@org2.example.com
│ ├── msp
│ │ ├── admincerts
│ │ ├── cacerts
│ │ │ └── ca.org2.example.com-cert.pem
│ │ ├── config.yaml
│ │ ├── keystore
│ │ │ └── priv_sk
│ │ ├── signcerts
│ │ │ └── Admin@org2.example.com-cert.pem
│ │ └── tlscacerts
│ │ └── tlsca.org2.example.com-cert.pem
│ └── tls
│ ├── ca.crt
│ ├── client.crt
│ └── client.key
└── User1@org2.example.com
├── msp
│ ├── admincerts
│ ├── cacerts
│ │ └── ca.org2.example.com-cert.pem
│ ├── config.yaml
│ ├── keystore
│ │ └── priv_sk
│ ├── signcerts
│ │ └── User1@org2.example.com-cert.pem
│ └── tlscacerts
│ └── tlsca.org2.example.com-cert.pem
└── tls
├── ca.crt
├── client.crt
└── client.key
93 directories, 85 files
生成通用连接配置文件(json与yaml文件格式)
拷贝测试网络中的ccp-generate.sh脚本文件及ccp模板文件
因ccp-generate.sh脚本使用了ccp-template.yaml文件与ccp-template.json文件,因此一起拷贝
cp ../test-network/organizations/ccp-* ./organizations/
ccp-generate.sh ccp-template.json ccp-template.yaml ordererOrganizations peerOrganizations
执行ccp-generate.sh脚本
./organizations/ccp-generate.sh
这会 在peer节点目录中生成json与yaml文件
启动网络
拷贝测试网络中的docker-compose-net.yaml文件
mkdir docker
cp ../test-network/docker/docker-compose-test-net.yaml docker/ #拷贝文件
[root@localhost test-network-myself]# ls docker #查看拷贝的文件
docker-compose-test-net.yaml
设置环境变量DOCKER_SOCK
export DOCKER_SOCK=/var/run/docker.sock #设置环境变量
使用docker-compose启动网络
docker-compose -f docker/docker-compose-test-net.yaml up -d
使用docker ps命令查看生成的容器
docker ps -a
关闭自己搭建的网络
停止并删除容器、网络、卷、镜像
docker-compose -f docker/docker-compose-test-net.yaml down --volumes --remove-orphans
删除节点目录
rm -rf ./organizations/*Organizations
生成执行启动/关闭网络脚本
提前条件:
执行完上面步骤将保留配置文件(5个),下面的脚本将基于这5个配置文件运行:
[root@localhost test-network-myself]# tree
.
├── crypto-config.yaml #生成组织节点加密配置文件
├── docker
│ └── docker-compose-test-net.yaml #启动网络配置文件
├── organizations
│ ├── ccp-generate.sh #生成通用连接配置文件脚本
│ ├── ccp-template.json #生成通用连接配置文件json格式模板
│ └── ccp-template.yaml #生成通用连接配置文件yaml格式模板
├── scripts
└── system-genesis-block
└── genesis.block
创建脚本文件network-myself.sh
touch network-myself.sh
授权network-myself.sh为可执行文件
chmod +x network-myself.sh
编写启动/关闭网络脚本
vi network-myself.sh
回车,按键盘上的 i 键或 Insert 功能键,进入编辑状态,脚本内容如下:
#!/bin/bash
#开启自己的测试网络
function networkUpMyself() {
# 关闭自己的测试网络
networkDownMyself
set -x
# 生成组织及证书
cryptogen generate --config=./crypto-config.yaml --output="organizations"
# 执行ccp-generate.sh脚本,生成通用连通配置文件
./organizations/ccp-generate.sh
# 启动网络
export DOCKER_SOCK=/var/run/docker.sock
docker-compose -f $COMPOSE_FILE_BASE up -d
set +x
}
#关闭自己的测试网络
function networkDownMyself() {
set -x
#停止和删除容器、网络、卷、镜像
export DOCKER_SOCK=/var/run/docker.sock
docker-compose -f $COMPOSE_FILE_BASE down --volumes --remove-orphans
#删除节点目录
rm -rf ./organizations/*Organizations
set +x
}
# docker-compose yaml文件地址
COMPOSE_FILE_BASE=docker/docker-compose-test-net.yaml
#参数命令
MODE=$1
if [ "${MODE}" == "up" ]; then
echo "开启自己的测试网络"
networkUpMyself
elif [ "${MODE}" == "down" ]; then
echo "关闭自己的测试网络"
networkDownMyself
else
echo "up 开启自己的测试网络"
echo "down 关闭自己的测试网络"
exit 1
fi
测试开启网络network-myself.sh up
./network-myself.sh up
测试关闭网络network-myself.sh down
./network-myself.sh down
Hyperledger Fabric - 自定义network.sh脚本的更多相关文章
- Hyperledger fabric 2.2.0 环境搭建
基础环境搭建 ### docker 安装 如果服务器上有旧版的docker,需要先执行卸载操作. $ sudo yum remove docker \ docker-common \ docker-s ...
- 第5章 Hyperledger Fabric功能
Hyperledger Fabric is a unique implementation of distributed ledger technology (DLT) that delivers e ...
- Hyperledger Fabric源码分析之Gossip
Gossip算法正如它的名字,小道消息只需要有人传播一次,那么过一段时间,所有人都会知道,就像新冠病毒一样,所以Gossip算法也有其它的别名"传染病扩散算法"."谣言传 ...
- Hyperledger Fabric 2.x 自定义智能合约
一.说明 为了持续地进行信息的更新,以及对账本进行管理(写入交易,进行查询等),区块链网络引入了智能合约来实现对账本的访问和控制:智能合约在 Fabric 中称之为 链码,是区块链应用的业务逻辑. 本 ...
- Warning Please make sure the network configuration is correct!( iaas-install-mysql.sh 脚本)
解读先电2.4版 iaas-install-mysql.sh 脚本 基础服务的操作命令已经编写成shell脚本,通过脚本进行一键安装.如下: # Controller节点 安装 执行脚本iaas-in ...
- Hyperledger Fabric手动生成CA证书搭建Fabric网络
之前介绍了使用官方脚本自动化启动一个Fabric网络,并且所有的证书都是通过官方的命令行工具cryptogen直接生成网络中的所有节点的证书.在开发环境可以这么简单进行,但是生成环境下还是需要我们自定 ...
- 7.搭建hyperledger fabric环境及启动——2019年12月12日
2019年12月12日13:05:16 声明:从网络中学习整理实践而来. 1.介绍fabric Fabric 是一个面向企业应用的区块链框架,基于 Fabric 的开发可以粗略分为几个层面: 1. 参 ...
- 基于Debian搭建Hyperledger Fabric 2.4开发环境及运行简单案例
相关实验源码已上传:https://github.com/wefantasy/FabricLearn 前言 在基于truffle框架实现以太坊公开拍卖智能合约中我们已经实现了以太坊智能合约的编写及部署 ...
- Hyperledger Fabric部署与测试(Ubuntu)
Fabric部署与测试 Fabric部署与测试最正确的还是参照官方链接:Hyperledger Fabric官方链接 ok,接下来开始部署Fabric.(以Ubuntu为例) 一.部署Fabric 1 ...
- Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署
6.1.平台特定使用的二进制文件配置 该方案与Hyperledger Fabric 1.0 从零开始(五)--运行测试e2e类似,根据企业需要,可以控制各节点的域名,及联盟链的统一域名.可以指定单独节 ...
随机推荐
- linux-大数据常用命令
1. vi/vim一般模式语法 功能描述yy 复制光标当前一行y数字y 复制一段(从第几行到第几行)p 箭头移动到目的行粘贴u 撤销上一步dd 删除光标当前行d数字d 删除光标(含)后多少行x 删除一 ...
- 数据库数据实时采集--Maxwell
1.Maxwell 简介 Maxwell 是一个能实时读取 MySQL 二进制日志文件binlog,并生成 Json格式的消息,作为生产者发送给 Kafka,Kinesis.RabbitMQ.Redi ...
- ClickHouse-4SQL参考
SQL参考 ClickHouse支持以下形式的查询: SELECT INSERT INTO CREATE ALTER 其他类型的查询 ClickHouse SQL 语句 语句表示可以使用 SQL 查询 ...
- Object类中toString()的使用
/* * Object类中toString()的使用: * * 1. 当我们输出一个对象的引用时,实际上就是调用当前对象的toString() * * 2. Object类中toString()的定义 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- 天翼云边缘安全加速平台亮相2023亚太内容分发大会暨CDN峰会
6月29日,第十二届亚太内容分发大会暨CDN峰会在北京召开.大会聚集了行业领/袖.专家和学者,深度探讨CDN的技术发展.应用与未来发展趋势,会上还公布了2023边缘加速创新企业榜单,中国电信天翼云成功 ...
- THUSC2024 & APIO2024 游记
第二次联赛以上的比赛. Day-n lxs 突然通知:从五月七日开始要去镇海中学集训(这也意味着 THUSC-APIO 中间出去玩的时间没了 ),很神秘.这是属于高二那一届考的联考连通块,不知道为什么 ...
- 2025年,Fantastic-admin 这款后台框架将继续引领潮流
前言 大言不惭的取了这个标题,但作为开发了 4 年多的 Fantastic-admin 的作者,回顾这一路走来,从一开始被指责抄袭,到现在拥有数百名付费用户和几十家付费企业.我认为我的开发理念应该是得 ...
- 解锁DeepSeek深度应用,天翼云GPU云主机强势破局!
在人工智能重塑世界的当下,一场影响深远的科技变革正在悄然上演,DeepSeek系列模型在诸多领域掀起热潮.企业级AI模型的训练与部署,不仅是技术的角力场,更是决定企业兴衰的生死线.每一次算法的迭代革新 ...
- npm i 下载太慢
1.在项目内部进入终端 2.输入:npm config set registry https://registry.npmmirror.com 修改npm下载地址为淘宝 3.然后再执行 npm i 进 ...