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

电影网站开发库表结构专业拓客团队怎么收费

电影网站开发库表结构,专业拓客团队怎么收费,顺企网官网下载安装,淘宝官网免费开店入口fabric的test-network例子有一个orderer组织、两个peer组织、每个组织一个节点,只有系统通道(system-channel),没有其他应用通道。我们可以使用./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函数

![(https://img-blog.csdnimg.cn/426279b880cd4e28a4c1464c207cadfc.png)

再来看createChannel()函数

function createChannel() {# Bring up the network if it is not already up.if [ ! -d "organizations/peerOrganizations" ]; theninfoln "Bringing up network"networkUp  # 启动网络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_NAME="mychannel")。

createChannel() {# setGlobals函数在scripts/envVar.sh文件中定义# 作用是为peer组织设置环境变量# 指定了组织的管理员用户的证书文件的位置# 需要配置交易文件channel.tx,并且只有组织的管理身份才能执行创建通道的命令setGlobals 1# 在 raft leader还没有设置前一直循环local rc=1local COUNTER=1while [ $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 rc=1local COUNTER=1## 有时加入需要时间,因此重试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 ]; thenHOST="peer0.org1.example.com"PORT=7051elif [ $ORG -eq 2 ]; thenHOST="peer0.org2.example.com"PORT=9051elif [ $ORG -eq 3 ]; thenHOST="peer0.org3.example.com"PORT=11051elseerrorln "Org${ORG} unknown"fiset -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 failed"successln "Anchor peer set for org '$CORE_PEER_LOCALMSPID' on channel '$CHANNEL_NAME'"
}

至此创建通道和加入通道完成。

http://www.yayakq.cn/news/449758/

相关文章:

  • 网站建设网络推广柯做毛绒玩具在什么网站上找客户
  • 广东专业做网站个人网站建设思路
  • 做网站的人多吗深圳网站建设价格是多少
  • 优惠券网站要怎么做wordpress 80端口
  • 沧州海外网站建设三亚网站建设美工
  • 沈阳网站推广优化公司丹东建设网官方网站
  • 河南省教育厅官方网站师德建设网络营销方案的制定
  • 在印度做视频网站网站发布与推广怎么写
  • 找人做网站 源码被盗用06628 网页制作与网站建设
  • 如何注册网站免费的沈阳地区精神文明建设网站
  • 柳州中小企业网站建设手机版网站开发教学
  • 做搜狗网站排名软郑州豆芽网站建设
  • ae做的动效怎么放在网站上wordpress评论qq
  • 网站建设图片尺寸app开发和网站开发价格
  • 南宁手机网站建设公司注册网站会员 我们的信息
  • 网站产品原型图关于网站开发与设计论文
  • 西安网站维护推广商城网站建设自助建站平台
  • 郑州做招商的网站wordpress 设置显示中文
  • 做盗版小说网站犯法吗网页欢迎页面设计
  • 河南专业网站建设招聘东莞做网站首选
  • 个人网站推广江门企业免费建站
  • 正能量不良网站软件下载个人建设网站维护费是多少
  • 使用vue做的网站3g免费网站制作
  • 打开山东城市建设职业学院网站怎么自己建立一个网站
  • 网站建设 模块做网站最常用的软件是什么
  • 建晨网站建设有限公司新手编程入门先学什么
  • 中能建西北城市建设有限公司网站ip库网站源码
  • 电脑网站兼职在哪里做网站设计与维护
  • 网站关键词和描述自己做网站用花钱么
  • 2017主流网站开发语言企业进行网站建设的方式