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

网站建设江阴店面设计的重要性

网站建设江阴,店面设计的重要性,wordpress option,网上商城系统的设计与实现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.tj-hxxt.cn/news/137698.html

相关文章:

  • 电脑可以做网站主机么学风建设网站
  • 网站服务费算什么费用杭州萧山网站建设公司
  • 厦门市建设局官方网站证书查询pc建站网站
  • 关于网站建设的建议报告没有网站可以做京东联盟吗
  • html公益网站模板用什么网站做浏览器主页
  • 设计网站公司都选亿企邦前端程序员培训班
  • wordpress建立php站点地图软件开发流程解读
  • 国外做彩票网站违法吗中国工程建设监理网站
  • 做色流网站服务器网络营销战略规划
  • 合肥网站优化seo网站点击量设计
  • 吴江住房和城乡建设局官方网站有没有个人做的网站赚流量费
  • 做网站一条龙提供网站建设教学视频
  • 食品行业网站建设如何让搜索引擎不收录网站
  • 领导不愿意做招聘网站怎么办无锡网站维护
  • 注册公司网站模版怎样在安装wordpress
  • 上海市网站开发网站优化外包推荐
  • 重庆建站模板源码建设公司和建筑公司有什么区别
  • 北京住房与城乡建设厅网站首页网站加黑链
  • 电影网站模板html北京 网站建设 招标信息
  • 能搜任何网站的浏览器解除网站被拦截的方法
  • 东莞网站排名情感视频素材网站
  • 苏州公司做变更网站搜索引擎优化的定义
  • 公司网站建设应注意什么200元自助网站建设
  • 做视频网站对服务器要去西安做公司网站
  • 长沙网站制作公司怎么做爱网站最新发布址
  • 中国著名的网站建设公司东营市建设监理协会网站
  • html5自适应网站源码WordPress指定IP访问
  • 网站策划方案1500字wordpress theme framework
  • 大石桥网站漂亮的html静态页面
  • 登封网站关键词优化软件网站建设哪种好