fabric示例e2e_cli中network_setup.sh流程是怎么样的
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章主要介绍了fabric示例e2e_cli中network_setup.sh流程是怎么样的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了
千家信息网最后更新 2025年02月04日fabric示例e2e_cli中network_setup.sh流程是怎么样的
这篇文章主要介绍了fabric示例e2e_cli中network_setup.sh流程是怎么样的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
fabric示例e2e_cli中network_setup.sh流程分析
network_setup.sh流程图
调用generateArtifacts.sh
docker-compose up启动cli
cli容器执行script.sh脚本
network_setup.sh函数分析
validateArgs分析
function validateArgs () { #如果参数为空,报错退出 if [ -z "${UP_DOWN}" ]; then echo "Option up / down / restart not mentioned" printHelp exit 1 fi if [ -z "${CH_NAME}" ]; then #如果第二个参数为空,创建默认名称为'mychannel'的channel echo "setting to default channel 'mychannel'" CH_NAME=mychannel fi}
函数networkUp分析
调用generateArtifacts.sh
调用docker-compose启动容器
function networkUp () { #判断是否存在crypto-config,如果存在,表示 #如果不存在,则执行generateArtifacts.sh脚本 if [ -f "./crypto-config" ]; then echo "crypto-config directory already exists." else #Generate all the artifacts that includes org certs, orderer genesis block, # channel configuration transaction source generateArtifacts.sh $CH_NAME fi #是否传入了第4个参数为couchdb,如果是启动参数带上couchdb对应的docker-compose模板文件 #实际命令:CHANNEL_NAME=mychannel TIMEOUT=10000 docker-compose -f docker-compose-cli.yaml -f COMPOSE_FILE_COUCH=docker-compose-couch.yaml up -d 2>&1 #如果不是couchdb,则不带上couchdb对应的yaml #实际命令为:CHANNEL_NAME=mychannel TIMEOUT=10000 docker-compose -f docker-compose-cli.yaml up -d 2>&1 if [ "${IF_COUCHDB}" == "couchdb" ]; then CHANNEL_NAME=$CH_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE -f $COMPOSE_FILE_COUCH up -d 2>&1 else CHANNEL_NAME=$CH_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE up -d 2>&1 fi #判断执行的返回值,如果不为0,输出错误,并且退出 if [ $? -ne 0 ]; then echo "ERROR !!!! Unable to pull the images " exit 1 fi #查看容器cli的实时日志 docker logs -f cli}
generateArtifacts.sh函数分析
generateCerts replacePrivateKey generateChannelArtifacts
函数generateCerts分析
## Generates Org certs using cryptogen toolfunction generateCerts (){ #ubuntu上OS_ARCH为linux-amd64 #OS X上OS_ARCH为darwin-amd64 #fabric目录对应的子目录查找文件cryptogen #如果该文件存在 #如果不存在执行make命令生成。不过这个make CRYPTOGEN=$FABRIC_ROOT/release/$OS_ARCH/bin/cryptogen if [ -f "$CRYPTOGEN" ]; then echo "Using cryptogen -> $CRYPTOGEN" else echo "Building cryptogen" make -C $FABRIC_ROOT release fi #实际命令cryptogen generate --config=./crypto-config.yaml #TODO待完善 echo echo "##########################################################" echo "##### Generate certificates using cryptogen tool #########" echo "##########################################################" $CRYPTOGEN generate --config=./crypto-config.yaml echo}
replacePrivateKey
## Using docker-compose template replace private key file names with constantsfunction replacePrivateKey () { #如果是OS X系统参数为-it,否则为-i #或者-i前面加上"" -i也可以避免在OS X上报错 ARCH=`uname -s | grep Darwin` if [ "$ARCH" == "Darwin" ]; then OPTS="-it" else OPTS="-i" fi #拷贝docker-compose-e2e-template.yaml文件,并且新文件命名为docker-compose-e2e.yaml cp docker-compose-e2e-template.yaml docker-compose-e2e.yaml #获取crypto-config/peerOrganizations/org1.example.com/ca/目录下_sk结尾的文件名 #把上述文件中的CA1_PRIVATE_KEY替换成上述文件名 #-i直接修改文本文件内容 #s替换指定字符,使用后缀 /g 标记会替换每一行中的所有匹配 CURRENT_DIR=$PWD cd crypto-config/peerOrganizations/org1.example.com/ca/ PRIV_KEY=$(ls *_sk) cd $CURRENT_DIR sed $OPTS "s/CA1_PRIVATE_KEY/${PRIV_KEY}/g" docker-compose-e2e.yaml cd crypto-config/peerOrganizations/org2.example.com/ca/ PRIV_KEY=$(ls *_sk) cd $CURRENT_DIR sed $OPTS "s/CA2_PRIVATE_KEY/${PRIV_KEY}/g" docker-compose-e2e.yaml}
generateChannelArtifacts
## Generate orderer genesis block , channel configuration transaction and anchor peer update transactionsfunction generateChannelArtifacts() { #ubuntu上OS_ARCH为linux-amd64 #OS X上OS_ARCH为darwin-amd64 #fabric目录对应的子目录查找文件cryptogen #如果该文件存在 #如果不存在执行make命令生成 CONFIGTXGEN=$FABRIC_ROOT/release/$OS_ARCH/bin/configtxgen if [ -f "$CONFIGTXGEN" ]; then echo "Using configtxgen -> $CONFIGTXGEN" else echo "Building configtxgen" make -C $FABRIC_ROOT release fi #使用工具configtxgen生成创世区块 ##profile指定configtx.yaml中的配置项 ##outputBlock执行生成文件路径,protobuf序列化格式 ##可以用工具以json格式查看,configtxgen -inspectBlock genesis.block echo "##########################################################" echo "######### Generating Orderer Genesis block ##############" echo "##########################################################" # Note: For some unknown reason (at least for now) the block file can't be # named orderer.genesis.block or the orderer will fail to launch! $CONFIGTXGEN -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block ##使用工具configtxgen生成channel.tx ##outputCreateChannelTx指定生成的文件路径,protobuf序列化格式 ##可以用工具以json格式查看,configtxgen -inspectChannelCreateTx channel.tx echo echo "#################################################################" echo "### Generating channel configuration transaction 'channel.tx' ###" echo "#################################################################" $CONFIGTXGEN -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME #使用工具configtxgen生成Org1MSPanchors.tx echo echo "#################################################################" echo "####### Generating anchor peer update for Org1MSP ##########" echo "#################################################################" $CONFIGTXGEN -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP #使用工具configtxgen生成Org2MSPanchors.tx echo echo "#################################################################" echo "####### Generating anchor peer update for Org2MSP ##########" echo "#################################################################" $CONFIGTXGEN -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP echo}
docker-compose启动容器
启动命令
CHANNEL_NAME=mychannel TIMEOUT=10000 docker-compose -f docker-compose-cli.yaml up -d 2>&1
script.sh分析
创建通道
加入通道
设置anchor
安装chaincode
实例化chaincode
查询/调用 chaincode
感谢你能够认真阅读完这篇文章,希望小编分享的"fabric示例e2e_cli中network_setup.sh流程是怎么样的"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
文件
生成
分析
命令
工具
参数
流程
函数
容器
格式
篇文章
示例
实际
目录
子目
子目录
序列
文件名
脚本
路径
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
免费ftp服务器安全性
主机屋mysql数据库
数据库时间不对怎么办
鸽子我的世界在服务器里坑人
建立罗斯文数据库
数据库设计介绍
中国电信软件开发工程师
i软件开发
市卫健系统网络安全工作纪实
网络安全知识观后感
网络安全的主要特
该服务器不接受角色转入
先创建数据库在搭建表
网络式数据库的应用
数据库是数据集合吗
手机版原神中的服务器如何更改
服务器怎样连接nas
kivy获取数据返回数据库
怎么在扩容服务器时不影响业务
法院的网络安全岗位
软件开发制作接单
益阳市南县软件开发合同律师
德福网络安全教育小程序
数据库为什么使用自增列作为主键
医疗器械网络安全更新流程图
统信服务器
支持物联网的信息技术包括数据库
软件开发税金全额返还吗
我的世界服务器炸服的人
数据库中数据控制语言包括