为单个组织部署Hyperledger Composer区块链业务网络到Hyperledger Fabric
在开发环境中,只需一个简单的开发Hyperledger Fabric单一组织,为您创建单对等网络fabric-dev-servers
,以及部署区块链业务网络所需的所有Hyperledger Composer配置。
本教程将演示管理员为将单个区块链业务网络部署到单个组织的Hyperledger Fabric实例而需要采取的步骤,包括如何生成必要的Hyperledger Composer配置。后续教程将演示如何将区块链业务网络部署到多个组织的Hyperledger Fabric实例。
在本教程中,您可能希望参考Hyperledger Fabric文档。
先决条件
- 在继续之前,请确保已按照安装开发环境中的步骤进行操作。
第一步:启动Hyperledger Fabric网络
要学习本教程,您必须启动Hyperledger Fabric网络。您可以使用开发环境中提供的简单Hyperledger Fabric网络,也可以按照Hyperledger Fabric文档使用您自己构建的Hyperledger Fabric网络。
本教程假设您使用开发环境中提供的简单Hyperledger Fabric网络。如果您使用自己的Hyperledger Fabric网络,则必须在下面详述的配置和您自己的配置之间进行映射,它应该是单个组织网络。
-
通过运行以下命令启动干净的Hyperledger Fabric:
复制cd ~/fabric-dev-servers export FABRIC_VERSION=hlfv12 ./stopFabric.sh ./teardownFabric.sh ./downloadFabric.sh ./startFabric.sh
-
删除钱包中可能存在的所有商业网卡。可以安全地忽略任何表明无法找到业务网卡的错误:
复制composer card delete -c PeerAdmin@fabric-network composer card delete -c admin@tutorial-network
如果这些命令失败,那么您拥有以前版本的网卡,则必须删除文件系统卡存储。
复制
rm -fr ~/.composer
第二步:探索Hyperledger Fabric网络
此步骤将探索您刚刚开始的Hyperledger Fabric网络,以便您可以了解它的配置方式以及它所包含的组件。您将使用本节中的所有信息在后续步骤中配置Hyperledger Composer。
配置文件
在开发环境中提供的简单Hyperledger布网已经使用Hyperledger结构配置工具来配置cryptogen
和configtxgen
。
配置cryptogen
存储在文件中:
复制
~/fabric-dev-servers/fabric-scripts/hlfv12/composer/crypto-config.yaml
配置configtxgen
存储在文件中:
复制
~/fabric-dev-servers/fabric-scripts/hlfv12/composer/configtx.yaml
您可以通过阅读Hyperledger Fabric文档找到有关这些配置工具的更多信息,它们的功能以及如何使用它们。
组织
简单的Hyperledger Fabric网络由一个名为的组织组成Org1
。组织使用域名org1.example.com
。此外,还会调用此组织的成员服务提供程序(MSP)Org1MSP
。在本教程中,您将部署只有组织Org1
可以与之交互的区块链业务网络。
网络组件
Hyperledger Fabric网络由几个组件组成:
- 单个对等节点
Org1
,名为peer0.org1.example.com
。- 请求端口是7051。
- 事件中心端口是7053。
- 单个证书颁发机构(CA)
Org1
,名称为ca.org1.example.com
。- CA端口是7054。
- 单个订货人节点,名为
orderer.example.com
。- 订货人港口是7050。
Hyperledger Fabric网络组件在Docker容器中运行。在Docker容器中运行Hyperledger Composer时,上面的名称(例如peer0.org1.example.com
)可用于与Hyperledger Fabric网络进行交互。
本教程将在Docker主机上运行Hyperledger Composer命令,而不是从Docker网络内部运行。这意味着Hyperledger Composer命令必须使用Hyperledger Fabric网络localhost
作为主机名和公开的容器端口进行交互。
用户
组织Org1
配置了名为的用户Admin@org1.example.com
。该用户是管理员。组织的管理员有权将区块链业务网络的代码安装到其组织的对等方,并且还可以拥有启动区块链业务网络的权限,具体取决于配置。在本教程中,您将通过充当用户来部署区块链业务网络Admin@org1.example.com
。
用户Admin@org1.example.com
具有存储在目录中的一组证书和私钥文件:
复制
~/fabric-dev-servers/fabric-scripts/hlfv12/composer/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
稍后您将使用其中一些文件与Hyperledger Fabric网络进行交互。
除管理员外,CA(证书颁发机构)for Org1
已配置了默认用户。此默认用户的注册ID为admin
,注册密码为adminpw
。但是,该用户无权部署区块链业务网络。
渠道
最后,composerchannel
创建了一个名为channel的通道。对等节点peer0.org1.example.com
已加入此通道。您只能将Hyperledger Composer区块链业务网络部署到现有通道中,但您可以按照Hyperledger Fabric文档创建其他通道。
第三步:构建连接配置文件
连接配置文件指定了定位和连接Hyperledger Fabric网络所需的所有信息,例如所有Hyperledger Fabric网络组件的主机名和端口。在此步骤中,您将为Hyperledger Composer创建连接配置文件,以用于连接到Hyperledger Fabric网络。
-
创建一个名为的连接配置文件
connection.json
。 -
给连接配置文件
复制name
,version
并x-type
通过添加以下三行的顶部性质connection.json
:{ "name": "fabric-network", "x-type": "hlfv1", "version": "1.0.0",
name
连接配置文件中的属性为Hyperledger Fabric网络命名,因此我们稍后可以引用它。在您刚创建的连接配置文件中,名称为fabric-network
。您可以为Hyperledger Fabric网络使用任何您喜欢的名称。Hyperledger Composer旨在与不同类型的区块链网络兼容。目前,仅支持Hyperledger Fabric v1.x,但您必须指定要使用的区块链网络的类型。Hyperledger Fabric v1.2的x-type是
hlfv1
。版本号是此连接配置文件格式的版本。目前只有1个版本
1.0.0
。还有一个可选属性
x-commitTimeout
,也可以通过定义Hyperledger Composer在放弃等待之前等待提交的事务提交给组织的对等方的时间来指定。如果未指定,则为默认值300 seconds
。 -
我们必须在Hyperledger Fabric网络中指定所有对等节点的主机名和端口。只有一个同行,我们给它一个标签
复制peer0.org1.example.com
。"peers": { "peer0.org1.example.com": { "url": "grpc://localhost:7051" } },
在这里,我们已经指定了我们的单个对等节点
peer0.org1.example.com
(使用主机名localhost
),请求端口7051和事件中心端口7053。该
peers
阵列可以包含多个对等节点。如果您有多个对等节点,则应将它们全部添加到peers
对象中。 -
我们必须在Hyperledger Fabric网络中指定我们要用于注册现有用户和注册新用户的证书颁发机构(CA)的主机名和端口。
复制"certificateAuthorities": { "ca.org1.example.com": { "url": "http://localhost:7054", "caName": "ca.org1.example.com" } },
这里我们指定了单个CA
ca.org1.example.com
(使用主机名localhost
)和CA端口7054,我们还将此条目标记为ca-org1.example.com
-
我们必须指定要连接到的Hyperledger Fabric中所有排序节点的主机名和端口。
复制"orderers": { "orderer.example.com": { "url": "grpc://localhost:7050" } },
在这里,我们已经指定了我们的单个订货人节点
orderer.example.com
(使用主机名localhost
)和订货人端口7050,我们也将其标记为orderer.example.com
。该
orderers
对象可以包含多个orderer节点。如果您有多个订货人节点,则应将它们全部添加到orderers
对象中。 -
我们现在必须指定网络中的所有组织。在本教程中,只有一个组织
复制Org1
。"organizations": { "Org1": { "mspid": "Org1MSP", "peers": [ "peer0.org1.example.com" ], "certificateAuthorities": [ "ca.org1.example.com" ] } },
在这里,我们描述了同行的所有者以及他们的证书颁发机构,我们还声明了为该组织定义的MSP ID。在本教程中,它被定义为
Org1MSP
。 -
我们必须指定现有频道的名称。我们将区块链业务网络部署到渠道中
复制composerchannel
。这是在channels对象中定义的。"channels": { "composerchannel": { "orderers": [ "orderer.example.com" ], "peers": { "peer0.org1.example.com": { "endorsingPeer": true, "chaincodeQuery": true, "eventSource": true } } } },
在这里,我们定义了渠道
composerchannel
,以及作为该渠道一部分的订货人和同行。我们还指定了对等体在此通道中将执行的角色。在本教程中,我们添加了使用其标签引用的单个orderer和单个peer。对等体将安装业务网络,因此将成为事务代言人,能够处理链代码查询并生成事件。区块链业务网络将部署到所有指定的对等节点。一旦部署了区块链业务网络,指定的对等节点将用于查询区块链业务网络,支持事务和订阅事件。 -
需要的最后一节是客户端部分。客户端应用程序(例如Hyperledger Composer)使用它来了解交互时它所代表的组织以及一些额外的可选超时。
复制"client": { "organization": "Org1", "connection": { "timeout": { "peer": { "endorser": "300", "eventHub": "300", "eventReg": "300" }, "orderer": "300" } } } }
在这里,我们指定我们在Org1
。超时用于确定与对等方或订货方交互时等待响应的时间,并以秒为单位指定值。如果您没有指定任何内容,则默认为45 seconds
。
-
保存您的更改
复制connection.json
。完成的连接配置文件应如下所示:{ "name": "fabric-network", "x-type": "hlfv1", "version": "1.0.0", "peers": { "peer0.org1.example.com": { "url": "grpc://localhost:7051" } }, "certificateAuthorities": { "ca.org1.example.com": { "url": "http://localhost:7054", "caName": "ca.org1.example.com" } }, "orderers": { "orderer.example.com": { "url": "grpc://localhost:7050" } }, "organizations": { "Org1": { "mspid": "Org1MSP", "peers": [ "peer0.org1.example.com" ], "certificateAuthorities": [ "ca.org1.example.com" ] } }, "channels": { "composerchannel": { "orderers": [ "orderer.example.com" ], "peers": { "peer0.org1.example.com": { "endorsingPeer": true, "chaincodeQuery": true, "eventSource": true } } } }, "client": { "organization": "Org1", "connection": { "timeout": { "peer": { "endorser": "300", "eventHub": "300", "eventReg": "300" }, "orderer": "300" } } } }
第四步:找到Hyperledger Fabric管理员的证书和私钥
为了将区块链业务网络部署到此Hyperledger Fabric网络,我们必须将自己标识为具有执行此操作的权限的管理员。在此步骤中,您将找到将自己标识为管理员所需的文件。
Hyperledger Fabric网络的管理员是一个名为的用户Admin@org1.example.com
。该用户的证书和私钥文件存储在以下目录中:
复制
~/fabric-dev-servers/fabric-scripts/hlfv12/composer/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
您必须首先找到该用户的证书文件。证书是身份的公共部分。证书文件可以在signcerts
子目录中找到并命名Admin@org1.example.com-cert.pem
。如果您查看此文件的内容,您将找到类似于以下内容的PEM编码证书:
复制
-----BEGIN CERTIFICATE-----
MIICGjCCAcCgAwIBAgIRANuOnVN+yd/BGyoX7ioEklQwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNjI2MTI0OTI2WhcNMjcwNjI0MTI0OTI2
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABGu8KxBQ1GkxSTMVoLv7NXiYKWj5t6Dh
WRTJBHnLkWV7lRUfYaKAKFadSii5M7Z7ZpwD8NS7IsMdPR6Z4EyGgwKjTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIBmrZau7BIB9
rRLkwKmqpmSecIaOOr0CF6Mi2J5H4aauMAoGCCqGSM49BAMCA0gAMEUCIQC4sKQ6
CEgqbTYe48az95W9/hnZ+7DI5eSnWUwV9vCd/gIgS5K6omNJydoFoEpaEIwM97uS
XVMHPa0iyC497vdNURA=
-----END CERTIFICATE-----
接下来,您必须找到此用户的私钥文件。私钥用于将事务签名为此标识。私钥文件可以在keystore
子目录中找到。私钥文件的名称是长十六进制字符串,_sk
例如后缀为114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457_sk
。每次生成配置时,名称都将更改。如果您查看此文件的内容,您将找到类似于以下内容的PEM编码私钥:
复制
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg00IwLLBKoi/9ikb6
ZOAV0S1XeNGWllvlFDeczRKQn2uhRANCAARrvCsQUNRpMUkzFaC7+zV4mClo+beg
4VkUyQR5y5Fle5UVH2GigChWnUoouTO2e2acA/DUuyLDHT0emeBMhoMC
-----END PRIVATE KEY-----
记住这两个文件的路径,或将它们复制到与connection.json
您在上一步中创建的连接配置文件相同的目录中。您将在下一步中需要这些文件。
第五步:为Hyperledger Fabric管理员创建业务网卡
业务网卡包含连接到区块链业务网络和底层Hyperledger Fabric网络所需的所有信息。此信息包括在步骤3中创建的连接配置文件,以及在步骤4中为管理员提供的证书和私钥。
在此步骤中,您将创建一个业务网卡,供管理员用于将区块链业务网络部署到Hyperledger Fabric网络。
运行该composer card create
命令以创建业务网卡。您必须指定在前面的步骤中创建或定位的所有三个文件的路径:
复制
composer card create -p connection.json -u PeerAdmin -c Admin@org1.example.com-cert.pem -k 114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457_sk -r PeerAdmin -r ChannelAdmin
调用的业务网卡文件PeerAdmin@fabric-network.card
已写入当前目录。让我们探讨一下我们传递给composer card create
命令的选项。
复制
-p connection.json
这是我们在第3步中创建的连接配置文件的路径。
复制
-u PeerAdmin
这是我们用来指代管理员用户的名称。Admin@org1.example.com
我们已经给出了一个名称,而不是在任何地方使用它,PeerAdmin
因此我们可以很容易地引用这个用户。
复制
-c Admin@org1.example.com-cert.pem
这是Admin@org1.example.com
我们在第四步中找到的用户的证书文件的路径。
复制
-k 114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457_sk
这是Admin@org1.example.com
我们在第四步中找到的用户的私钥文件的路径。
复制
-r PeerAdmin -r ChannelAdmin
在这里,我们指定用户拥有的角色。此信息是必需的,以便Hyperledger Composer操场知道哪些用户能够执行哪些操作。用户Admin@org1.example.com
是Hyperledger Fabric网络的管理员,具有角色PeerAdmin
(安装链代码的ChannelAdmin
能力)和(实例化链代码的能力)。
第六步:为Hyperledger Fabric管理员导入业务网卡
Hyperledger Composer只能使用放入钱包的商务网卡。钱包是文件系统上包含业务网卡的目录。在此步骤中,您将导入步骤5中创建的业务网卡到钱包中,以便在后续步骤中使用业务网卡。
运行composer card import
命令将业务网卡导入钱包:
复制
composer card import -f PeerAdmin@fabric-network.card
让我们探讨一下我们传递给composer card import
命令的选项。
复制
-f PeerAdmin@fabric-network.card
这是我们在第五步中创建的业务网卡文件的路径。
您现在可以通过指定名称来使用此业务网卡PeerAdmin@fabric-network
。您现在已准备好将区块链业务网络部署到Hyperledger Fabric网络。
我们将部署tutorial-network
通过遵循开发人员教程创建的区块链业务网络。如果您没有按照开发人员教程创建业务网络存档(.bna)文件,请按照开发人员教程的步骤1,2和3进行操作。
第七步:将Hyperledger Composer业务网络安装到Hyperledger Fabric对等节点上
在此步骤中,您将将区块链业务网络安装到所有组织Hyperledger Fabric对等节点上。在Hyperledger Fabric术语中,这是一个链代码安装操作。
运行该composer network install
命令以将Hyperledger Composer运行时安装到您在步骤3中创建的连接配置文件中指定的Hyperledger Fabric对等节点上:
复制
composer network install -c PeerAdmin@fabric-network -a tutorial-network@0.0.1.bna
让我们探讨一下我们传递给composer network install
命令的选项。
复制
-c PeerAdmin@fabric-network
这是我们在第六步中导入钱包的业务网卡的名称。
复制
-a tutorial-network@0.0.1.bna
您必须安装业务网络的副本。在这里,我们指定我们正在部署的区块链业务网络的文件名tutorial-network@0.0.1.bna
。
第八步:启动区块链业务网络
在此步骤中,您将启动区块链业务网络。在Hyperledger Fabric术语中,这是一个链代码实例化操作。
运行composer network start
命令以启动区块链业务网络:
复制
composer network start --networkName tutorial-network --networkVersion 0.0.1 -A admin -S adminpw -c PeerAdmin@fabric-network
让我们探讨一下我们传递给composer network start
命令的选项。
复制
-c PeerAdmin@fabric-network
这是我们在第六步中导入钱包的业务网卡的名称。
复制
--networkName tutorial-network
这是区块链业务网络的名称tutorial-network
。
复制
--networkVersion 0.0.1
这是区块链业务网络的版本,在业务网络的package.json属性中tutorial-network
定义version
复制
-A admin
部署区块链业务网络时,您必须至少创建一个将成为区块链业务网络管理员的参与者。该参与者负责将其他参与者加入区块链业务网络。在这里,我们指定我们要创建一个名为的区块链业务网络管理员admin
。
复制
-S adminpw
这指定我们的区块链业务网络管理员admin
将使用注册adminpw
密钥从CA(证书颁发机构)请求证书和私钥。指定此选项时,为业务网络管理员指定的名称必须是已向CA注册的用户的现有注册ID。
现在我们的区块链业务网络已经启动,我们可以使用admin@tutorial-network.card
创建的业务网卡文件与其进行交互。
第九步:为业务网络管理员导入业务网卡
运行composer card import
命令将业务网卡导入钱包:
复制
composer card import -f admin@tutorial-network.card
您现在可以通过指定名称来使用此业务网卡admin@tutorial-network
。您现在已准备好与正在运行的区块链业务网络进行交互!
第十步:测试与区块链业务网络的连接
运行该composer network ping
命令以测试与区块链业务网络的连接:
复制
composer network ping -c admin@tutorial-network
检查测试结果是否成功,并且为业务网络列出了一个名为的参与者NetworkAdmin
。
结论
在本教程中,您已了解如何使用连接到Hyperledger Fabric网络所需的所有信息配置Hyperledger Composer,以及如何将区块链业务网络部署到该Hyperledger Fabric网络。
如果您使用了开发环境中提供的简单Hyperledger Fabric网络,为什么不通过遵循Hyperledger Fabric文档来构建您自己的Hyperledger Fabric网络,看看您是否可以成功部署区块链业务网络?