Hyperledger Fabric first-network 示例(也被称为“Build Your First Network”示例和“e2e_cli”示例)展示了一个基础区块链用例教程样例的完全脚本化且端到端自动化的示例。该示例配备一个 Hyperledger Fabric 区块链网络,将一个智能合约 (chaincode-Example02) 应用程序部署到这个运行的网络,然后针对部署的链代码运行交易。
配备的 Hyperledger Fabric 区块链网络包含两个组织、每个组织两个对等节点,以及一个 Solo 订购服务。该网络支持自动配备对等节点和订购者组织的加密材料,自动配备渠道工件,以及邀请组织对等节点加入渠道。
在 区块链基础:术语表和用例 中适当了解,然后在 Hyperledger Fabric 术语表 中更深入钻研。
在本教程中,我们将展示如何将第三个组织添加到一个应用程序渠道,将它自己的对等节点添加到一个已在运行的 Hyperledger Fabric 区块链网络,然后将它加入该渠道。
configtxlator 工具提供了一个与 SDK 独立的真正无状态的 REST API,以简化 Hyperledger Fabric 区块链网络中的配置任务。该工具能够在不同的等效数据表示/格式之间轻松转换。例如,在工具操作的一种模式中,该工具在二进制 protobuf 格式与人类可读的 JSON 文本格式间来回转换。此外,该工具可以基于两组不同的配置交易之间的区别来计算配置更新。
请参阅如何使用从知名外部证书颁发机构获得的自定义配置的加密资料来配置,测试和验证Hyperledger Fabric“first-network”样本以获取根证书和中间证书。
对于命令行配置更新,确保您至少安装了 Hyperledger Fabric 的 1.1.0 预览版。 (此版本引入了对等节点渠道 signconfigtx
命令,以在提交配置更新之前收集多个签名。它还修复了 v1.0.4 中未解决的 configtxlator 工具中的错误。)其他选项包括手动收集签名或让客户端应用程序借助 NodeSDK 支持以编程方式收集需要的签名。
验证您使用的是针对所选平台的 V1.1.0 版本级别的对等节点二进制文件,如图 1 所示。
点击查看大图
本教程使用开源的 jq 工具来通过脚本处理与 configtxlator 返回的 JSON 的交互。这些 JSON 操作也可以手动或通过其他 JSON 工具执行。在 Ubuntu 平台上使用以下命令将 jq 工具安装到容器中,如图 2 所示。
apt-get -y -qq update && \apt-get install -y -qq curl && \apt-get cleancurl -o /usr/local/bin/jq http://stedolan.github.io/jq/download/linux64/jq && \ |
---|
点击查看大图
在后台启动 configtxlator 工具,验证该工具已正确启动来接收传入的客户端请求,如图 3 所示。
configtxlator start & |
---|
点击查看大图
添加第三个组织的一般步骤(本教程将会介绍)包括:
1
执行以下命令来检索应用程序渠道 mychannel 上的当前配置块。因为订购者端点受 TLS 保护,所以以参数形式提供证书颁发机构身份。
peer channel fetch config config_block.pb -o orderer.example.com:7050 -c mychannel --tls --cafile./crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem |
---|
图 4 显示已成功抓取和验证应用程序渠道 mychannel 的渠道配置块。抓取的二进制配置数据块上的 file
命令表明,像预期的一样,config_block.pb
包含一条二进制 protobuf 消息。
点击查看大图
图 5 中的控制台日志的订购者(服务器)端视图显示已成功抓取应用程序渠道 mychannel 的渠道配置。
点击查看大图
2
使用 configtxlator 工具将二进制 protobuf 渠道配置块信息解码为人类可读的文本 JSON 格式。使用 file命令验证 JSON 文件的已解码内容,看看是否已成功解码,如图 6 所示。
curl -X POST --data-binary @config_block.pb http://127.0.0.1:7059/protolator/decode/common.Block > config_block.json |
---|
点击查看大图
3
从应用程序渠道 mychannel 的已解码渠道配置块中提取数据的载荷数据节的配置节,然后验证是否已正确且成功地提取,如图 7 和 8 所示。
jq .data.data[0].payload.data.config config_block.json > config.json |
---|
点击查看大图
点击查看大图
4
修改应用程序渠道 mychannel 的渠道配置。 具体来讲,添加 Org3MSP,如图 9 所示。
点击查看大图
5
使用该工具将应用程序渠道 mychannel 的原始渠道配置编码为 protobuf,然后验证是否已正确编码,如图 10 所示。
curl -X POST --data-binary @config.json http://127.0.0.1:7059/protolator/encode/common.Config > config.pb |
---|
点击查看大图
使用该工具将应用程序渠道 mychannel 的修改后的渠道配置编码为 protobuf,然后验证是否已正确编码,如图 11 所示。
curl -X POST --data-binary @updated_config.json http://127.0.0.1:7059/protolator/encode/common.Config > updated_config.pb |
---|
点击查看大图
6
执行以下命令来计算配置更新,它们是使用该工具在应用程序渠道 mychannel 的原始和修改后的渠道配置间的过渡。验证计算的配置更新是否正确,如图 12 所示。
curl -X POST -F original=@config.pb -F updated=@updated_config.pb http://127.0.0.1:7059/configtxlator/compute/update-from-configs -F channel=mychannel > config_update.pb |
---|
点击查看大图
7
将配置更新解码为 JSON 格式并验证解码操作,如图 13 所示。
curl -X POST --data-binary @config_update.pbhttp://127.0.0.1:7059/protolator/decode/common.ConfigUpdate > config_update.json |
---|
点击查看大图
采用 JSON 格式为配置更新消息创建一个信封,验证信封创建步骤是否已成功完成,如图 14 所示。
echo '{"payload":{"header":{"channel_header":{"channel_id":"mychannel", "type":2}},"data":{"config_update":'$(cat config_update.json)'}}}' > config_update_as_envelope.json |
---|
点击查看大图
8
将配置更新消息编码为 protobuf 格式,验证编码操作是否已成功完成,如图 15 所示。
curl -X POST --data-binary @config_update_as_envelope.json http://127.0.0.1:7059/protolator/encode/common.Envelope > config_update_as_envelope.pb |
---|
点击查看大图
通过拥有管理特权的用户将环境设置为 Org1MSP,以准备对配置更新交易进行签名,如图 16 所示。
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crtCORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.keyCORE_PEER_LOCALMSPID=Org1MSPCORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crtCORE_PEER_TLS_ENABLED=trueCORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp |
---|
点击查看大图
9
执行以下命令来对配置更新交易进行签名。 参见图 17 和 18 来从客户端(CLI 容器)和服务器(订购者)端成功执行该命令。此命令将该交易的一个签名添加到文件系统中的合适位置。
peer channel signconfigtx -f config_update_as_envelope.pb -o orderer.example.com:7050 --tls --cafile ./crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem |
---|
点击查看大图
点击查看大图
通过拥有管理特权的用户将环境设置为 Org2MSP,以准备签名并提交更新交易,如图 19 所示。
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crtCORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.keyCORE_PEER_LOCALMSPID=Org2MSPCORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crtCORE_PEER_TLS_ENABLED=trueCORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp |
---|
点击查看大图
执行以下命令来提交配置更新交易。在将配置更新提交到订购者之前,update
命令自动将用户的签名添加到配置更新上(所以不需要第二次使用 signconfigtx)。参见图 20 和 21 来从客户端(CLI 容器)和服务器(订购者)端成功执行该命令。
peer channel update -f config_update_as_envelope.pb -o orderer.example.com:7050 -c mychannel --tls --cafile ./crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem |
---|
点击查看大图
执行以下命令来抓取更新的当前配置。 参见图 21 和 22 来从客户端和服务器端成功执行该命令。
peer channel fetch config config_block_Org3MSP.pb -o orderer.example.com:7050 -c mychannel --tls --cafile ./crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem |
---|
点击查看大图
点击查看大图
执行以下命令来解码成功更新的当前渠道配置,然后验证更新操作,如图 23 所示。
curl -X POST --data-binary @config_block_Org3MSP.pb http://127.0.0.1:7059/protolator/decode/common.Block > config_block_Org3MSP.json |
---|
点击查看大图
图 24 展示了对使用 configtxlator 工具生成的所有工件执行正确性验证的端到端过程。
点击查看大图
运行以下命令来确定容器日志的位置。 检查它们,确保您的配置更新流程中的每个步骤都正确完成,如图 25 所示。
docker inspect --format='{{.LogPath}}' orderer.example.com |
---|
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有