当前位置: 首页 > news >正文

网站建设江阴查看网站名称

网站建设江阴,查看网站名称,wordpress好难,深圳网站建设深圳网络公司fabric的test-network例子有一个orderer组织、两个peer组织、每个组织一个节点#xff0c;只有系统通道#xff08;system-channel#xff09;#xff0c;没有其他应用通道。我们可以使用./network.sh createChannel命令来创建一个名为mychannel的应用通道。 一、主要概念 … fabric的test-network例子有一个orderer组织、两个peer组织、每个组织一个节点只有系统通道system-channel没有其他应用通道。我们可以使用./network.sh createChannel命令来创建一个名为mychannel的应用通道。 一、主要概念 通道 通道用于实现区块链网络中业务的隔离一个联盟可以有多个通道每个通道可代表一项业务每个通道内的成员可以共享账本不同通道的账本彼此隔离。一个组织可以加入多个通道通道内的成员为业务参与方可以向通道发送交易经过共识后被通道内的Peer节点接收并更新到本地账本。 锚节点 锚节点主要用途用来辅助发现通道内多个组织之间的节点并将自身组织的节点信息同步至其他组织。锚节点修改锚节点需要发送更新通道配置交易。 通道配置交易 通道配置交易文件在创建通道和加入通道更新锚节点时来指定配置信息。 为什么叫通道配置交易文件个人理解是创建通道和加入通道是作为交易发送至orderer节点的所以。。。 二、创建及加入通道 cd /root/fabric/scripts/fabric-samples/test-network # 进入测试案例目录 ./network.sh createChannel # 调用network.sh脚本创建通道三、network.sh 脚本createChannel函数分析 network.sh脚本使用createChannel参数时调用的是createChannel函数 再来看createChannel()函数 function createChannel() {# Bring up the network if it is not already up.if [ ! -d organizations/peerOrganizations ]; theninfoln Bringing up networknetworkUp # 启动网络fi# 运行scripts/createChannel.sh脚本来创建通道# 创建通道创建交易和锚节点更新.# 使用configtx.yaml配置文件创建通道scripts/createChannel.sh $CHANNEL_NAME $CLI_DELAY $MAX_RETRY $VERBOSE }查看scripts/createChannel.sh脚本文件翻到最后可以发现整个脚本完成了四步操作调用了四个函数 创建通道配置交易文件 channeltx创建通道将所有节点org1 peer 和org2 peer加入通道为通道中的每个组织设置锚点 ## 创建通道交易文件 channeltx infoln Generating channel create transaction ${CHANNEL_NAME}.tx createChannelTx # 调用createChannelTx 函数FABRIC_CFG_PATH$PWD/../config/ BLOCKFILE./channel-artifacts/${CHANNEL_NAME}.block## 创建通道 infoln Creating channel ${CHANNEL_NAME} createChannel # 调用createChannel 函数 successln Channel $CHANNEL_NAME created## 将所有节点org1 peer 和org2 peer加入通道 infoln Joining org1 peer to the channel... joinChannel 1 # 调用joinChannel函数将org1 peer加入通道 infoln Joining org2 peer to the channel... joinChannel 2 ## 调用joinChannel函数将org2 peer加入通道##为通道中的每个组织设置锚点 infoln Setting anchor peer for org1... setAnchorPeer 1 # 调用setAnchorPeer函数设置org1的锚节点 infoln Setting anchor peer for org2... setAnchorPeer 2 # 调用createChannel 函数createChannelTx函数分析 函数的作用是创建通道配置交易文件 channeltx函数的核心是调用了configtxgen工具。 createChannelTx() {set -x#configtxgen工具依赖configtx.yaml文件#使用TwoOrgsChanne模板定义了应用通道配置可以用来新建应用通道。#TwoOrgsChanne模板在test-network/configtx/configtx.yaml文件定义#-profile 指定使用的是configtx.yaml中某个用于生成的Profiles配置项。#-outputCreateChannelTx 通道配置交易文件的保存路径#-channelID 在configtx中使用的通道ID就是通道名称#下面详细介绍 configtxgen工具的参数configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/${CHANNEL_NAME}.tx -channelID $CHANNEL_NAMEres$?{ set x; } 2/dev/nullverifyResult $res Failed to generate channel configuration transaction... }configtxgen工具 configtxgen工具主要功能包括 生成启动网络需要的系统通道初始区块并支持检查区块内容生成创建应用通道需要的配置交易并支持检查交易内容生成对锚点Peer锚节点的更新配置交易 configtxgen工具的可选参数 # configtxgen --help # 使用帮助命令查看Usage of configtxgen:-asOrg string作为特定组织按名称执行配置生成仅包括组织可能有权设置的写入集中的值-channelCreateTxBaseProfile string指定一个配置文件以将其视为orderer系统通道的当前状态以允许在通道创建tx文件生成期间修改非应用程序参数。仅与“outputCreateChannelTx”结合使用有效。-channelID string在configtx中使用的通道 ID-configPath string包含要使用的配置的路径如果设置-inspectBlock string打印指定路径的块中包含的配置-inspectChannelCreateTx string打印指定路径下事务中包含的配置-outputAnchorPeersUpdate string[已弃用] 创建一个配置更新来更新锚点仅适用于默认通道创建并且仅适用于第一次更新-outputBlock string写入创世块的路径如果设置-outputCreateChannelTx string设置通道创建的configtx的保存路径路径如果已设置-printOrg string将组织的定义打印为JSON。对于手动将组织添加到频道很有用-profile string指定configtx.yaml中用于生成的配置项。-version显示版本信息createChannel函数分析 函数的作用是创建通道客户端需要发送请求给Orderer创建应用通道然后等待orderer创建通道。在这里创建了一个名为mychannel通道。在network.sh中定义了CHANNEL_NAMEmychannel。 createChannel() {# setGlobals函数在scripts/envVar.sh文件中定义# 作用是为peer组织设置环境变量# 指定了组织的管理员用户的证书文件的位置# 需要配置交易文件channel.tx并且只有组织的管理身份才能执行创建通道的命令setGlobals 1# 在 raft leader还没有设置前一直循环local rc1local COUNTER1while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; dosleep $DELAYset -x#调用peer channel命令的子命令create需要由拥有创建通道权限组织管理员身份来调用在指定的排序服务上创建新的应用通道#-o order服务地址#-c 创建通道的名称#--ordererTLSHostnameOverride 验证Orderer TLS时覆盖所校验的主机名#-f 指定创建通道所用的交易文件#--outputBlock 创建通道成功后将初始区块写到本地指定文件默认为./.block。#--tls 连接到Orderer服务时是否启用TLS#--cafile 信任的排序服务的TLS CA证书PEM编码格式peer channel create -o localhost:7050 -c $CHANNEL_NAME --ordererTLSHostnameOverride orderer.example.com -f ./channel-artifacts/${CHANNEL_NAME}.tx --outputBlock $BLOCKFILE --tls --cafile $ORDERER_CA log.txt# 通道创建成功后会生成初始区块文件mychannel.blockres$?{ set x; } 2/dev/nulllet rc$resCOUNTER$(expr $COUNTER 1)donecat log.txtverifyResult $res Channel creation failed }相同可以使用peer channel --help查看全部可以使用的参数。 joinChannel​函数分析 函数的作用是将所有节点org1 peer 和org2 peer加入通道。 joinChannel被调用两次org1 peer和org1 peer2被加入节点。 # 将组织加入通道 joinChannel() {FABRIC_CFG_PATH$PWD/../config/ORG$1# setGlobals函数在scripts/envVar.sh文件中定义# 作用是为peer组织设置环境变量# 指定了组织的管理员用户的证书文件的位置# 需要拥有所加入通道的初始区块文件并且只有组织的管理身份才能执行创建通道的命令setGlobals 1setGlobals $ORGlocal rc1local COUNTER1## 有时加入需要时间因此重试while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; dosleep $DELAYset -x# peer的join子命令会将指定的Peer节点加入指定的应用通道中# -b 指定通道初始区块文件路径peer channel join -b $BLOCKFILE log.txtres$?{ set x; } 2/dev/nulllet rc$resCOUNTER$(expr $COUNTER 1)donecat log.txtverifyResult $res After $MAX_RETRY attempts, peer0.org${ORG} has failed to join channel $CHANNEL_NAME }setAnchorPeer函数分析 函数的作用是为通道中的每个组织设置锚点配置和更新锚节点的命令在setAnchorPeer.sh需要在容器中运行中。 setAnchorPeer() {ORG$1# 在setAnchorPeer.sh脚本中配置和更新锚节点docker exec cli ./scripts/setAnchorPeer.sh $ORG $CHANNEL_NAME } 再来看scripts/setAnchorPeer.sh脚本主要为三个步骤) 下面来看具体的函数实现 # 注意这必须在 CLI 容器中运行因为它需要 jq 和 configtxlator createAnchorPeerUpdate() {infoln Fetching channel config for channel $CHANNEL_NAME# fetchChannelConfig在scripts/configUpdate.sh脚本中定义将给定通道的当前道配置信息写入 JSON 文件fetchChannelConfig $ORG $CHANNEL_NAME ${CORE_PEER_LOCALMSPID}config.jsoninfoln Generating anchor peer update transaction for Org${ORG} on channel $CHANNEL_NAME # 选择是哪一个组织if [ $ORG -eq 1 ]; thenHOSTpeer0.org1.example.comPORT7051elif [ $ORG -eq 2 ]; thenHOSTpeer0.org2.example.comPORT9051elif [ $ORG -eq 3 ]; thenHOSTpeer0.org3.example.comPORT11051elseerrorln Org${ORG} unknownfiset -x# 修改配置增加锚节点jq .channel_group.groups.Application.groups.${CORE_PEER_LOCALMSPID}.values {AnchorPeers:{mod_policy: Admins,value:{anchor_peers: [{host: $HOST,port: $PORT}]},version: 0}} ${CORE_PEER_LOCALMSPID}config.json ${CORE_PEER_LOCALMSPID}modified_config.json{ set x; } 2/dev/null# createConfigUpdate在scripts/configUpdate.sh脚本中定义用于生成配置更新文件# 根据 {orgmsp}config.json 和 {orgmsp}modified_config.json两者之间的差异计算配置更新#,将其作为交易写入 {orgmsp}anchors.txcreateConfigUpdate ${CHANNEL_NAME} ${CORE_PEER_LOCALMSPID}config.json ${CORE_PEER_LOCALMSPID}modified_config.json ${CORE_PEER_LOCALMSPID}anchors.tx }#更新锚节点#peer channel update命令用于更新通道的配置信息如组织、锚节点配置等 updateAnchorPeer() {peer channel update -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com -c $CHANNEL_NAME -f ${CORE_PEER_LOCALMSPID}anchors.tx --tls --cafile $ORDERER_CA log.txtres$?cat log.txtverifyResult $res Anchor peer update failedsuccessln Anchor peer set for org $CORE_PEER_LOCALMSPID on channel $CHANNEL_NAME }至此创建通道和加入通道完成。
http://www.dnsts.com.cn/news/51064.html

相关文章:

  • 网站建设 的系统公式php网站开发实例视频教程
  • 郑州的网站建设没公司怎么做网站
  • 网站空间续费后网页不能打开建站极速通
  • asp.net 跳转别的网站上海十大国企集团
  • 网站品牌建设方案靖江seo收费贵吗
  • 网络营销的名词解释是什么上海网站建设seodian
  • 做英语听力音频的网站企业网站建设 南通
  • 烟台专业网站建设公司wordpress间文章同步
  • 口碑好的微信网站建设代运营竞价公司
  • cc域名网站广州网站优化平台
  • 亚马逊做品牌备案自有网站广东公园网站建设代理公司
  • 宽屏网站模板wordpress 内容排版
  • 承装承修承试材料在哪个网站做经典营销案例分析
  • 旅游网站开发参考文献wordpress做后端
  • 上海知名建站公司怎么进入网站后台管理系统
  • 防止服务器上的网站被进攻回龙观做网站
  • wordpress搭建的网站亚马逊雨林的原始部落
  • 优秀网站开发公司网站建设丷金手指专业十五
  • 网站建设市场报告网站首页做的好看
  • 南通企业网站建设搜索指数的数据来源
  • 张家港网站建设公司卓越 网站
  • 网站菜单怎么做番禺做网站
  • 阿里云服务器可以访问国外网站吗怎么申请自己的网站
  • 某网站开发项目进度表作文网app
  • 手机软件制作和做网站相同广东专业做网站排名哪家好
  • 顾氏网站建设有限公司怎么样手机在线作图
  • 外贸app网站开发形象标识设计
  • 企业网站后台内容如何修改网站集约化建设的意义
  • 银川网站建设是什么电子商务网站建设最好的公司
  • 云南域名注册网站建设网站开发用什么工具