Fabric手动创建通道之坑

本文深入探讨了在使用Fabric网络进行手动配置时遇到的问题,特别是configtxgen工具在生成配置文件时的通道ID设置不当导致的错误及警告。作者分享了如何避免通道ID一致性引发的权限拒绝错误,并提供了正确的配置策略。

作为一个有强迫症的代码狗来说,有时候强迫症真的是很浪费时间的一件事,这也算是一种无奈了。Fabric网络的手动配置过程主要分为三步:

  1. 利用cryptogen和configtxgen工具生成配置文件
  2. 利用Docker-Compose启动容器,利用Docker创建通道、把节点加入通道
  3. 链码操作,链码的状态有这几种:Install → Instantiate → invocable → Upgrade → Deinstantiate → Uninstall

这次在利用configtxgen工具生成配置文件的过程倒算顺畅,没有出现任何错误,却单单报出了个警告。如下:未给指定的通道 ID,系统提示会默认设置为testchainid。

2019-08-04 02:33:48.979 CST [common.tools.configtxgen] main -> WARN 001 Omitting the channel ID for configtxgen for output operations is deprecated.  Explicitly passing the channel ID will be required in the future, defaulting to 'testchainid'.

偏偏强迫症作祟,非要给它加个通道 ID。而 configtxgen 工具会生成 genesis block for orderer 和 channel configuration transaction。在不名缘由的情况下,我把两个通道ID给出了一样的参数 mychannel。如下:

# generate genesis block for orderer
configtxgen -profile ComposerOrdererGenesis -channelID mychannel -outputBlock ./config/genesis.block
if [ "$?" -ne 0 ]; then
  echo "Failed to generate orderer genesis block..."
  exit 1
fi

# generate channel configuration transaction
configtxgen -profile ComposerChannel -outputCreateChannelTx ./config/channel.tx -channelID mychannel
if [ "$?" -ne 0 ]; then
  echo "Failed to generate channel configuration transaction..."
  exit 1
fi

然后问题来了:

2019-08-03 18:40:15.625 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
Error: got unexpected status: FORBIDDEN -- implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Writers' sub-policies to be satisfied: permission denied

给出解决方案, generate genesis block for orderer 和 generate channel configuration transaction 两个中的通道ID 不能一致,都可以随便命名,generate genesis block for orderer 中的通道ID参数也可不写。

两天半的时间,心塞。。。

### 安装 Hyperledger Fabric创建通道的步骤 在虚拟机中安装 Hyperledger Fabric 并成功创建通道,需要按照以下方法操作。以下是详细的说明和相关截图提示。 #### 1. 准备虚拟机环境 确保使用的是支持虚拟化的操作系统,例如 Win10 的 Hyper-V 或 VMware 虚拟化工具。如果需要克隆现有虚拟机以节省时间,可以参考提供的克隆步骤[^3]。 #### 2. 安装 Ubuntu 系统 选择一个稳定的 Ubuntu 版本(如 Ubuntu 20.04 LTS),并将其安装到虚拟机中。确保系统已更新至最新版本: ```bash sudo apt update && sudo apt upgrade -y ``` #### 3. 获取 Hyperledger Fabric 安装脚本 通过以下命令获取官方提供的 `install-fabric.sh` 脚本,并赋予其执行权限[^1]: ```bash curl -sSLO https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh && chmod +x install-fabric.sh ``` 运行该脚本以完成 Fabric 的安装: ```bash ./install-fabric.sh ``` #### 4. 验证安装是否成功 安装完成后,可以通过以下命令验证 Fabric 是否正确安装: ```bash fabric-samples/bin/peer version fabric-samples/bin/orderer version ``` 如果显示版本号,则表示安装成功。建议截取此阶段的终端输出作为参考。 #### 5. 创建通道 Hyperledger Fabric 中的通道允许特定 Peer 节点及应用程序进行私密交互[^4]。以下是创建通道的步骤: - 进入示例目录: ```bash cd fabric-samples/test-network ``` - 启动网络: ```bash ./network.sh up ``` - 创建通道: ```bash ./network.sh createChannel ``` - 加入通道: ```bash ./network.sh joinChannel --channelName mychannel ``` #### 6. 截图参考 以下是需要截取的关键阶段的终端输出: 1. **安装验证阶段**:`fabric-samples/bin/peer version` 和 `fabric-samples/bin/orderer version` 的输出。 2. **网络启动阶段**:运行 `./network.sh up` 后的终端输出。 3. **通道创建阶段**:运行 `./network.sh createChannel` 和 `./network.sh joinChannel` 后的终端输出。 确保截图清晰可见,且包含完整的命令行和输出内容。 --- ### 注意事项 - 如果在安装过程中遇到问题,请参考官方文档或教程[^2]。 - 在 VMware 或 Hyper-V 中确保虚拟机的网络设置为桥接模式,以便虚拟机能够访问外部网络。 ---
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值