为单个组织部署Hyperledger Composer区块链业务网络到Hyperledger Fabric

为单个组织部署Hyperledger Composer区块链业务网络到Hyperledger Fabric

开发环境中,只需一个简单的开发Hyperledger Fabric单一组织,为您创建单对等网络fabric-dev-servers,以及部署区块链业务网络所需的所有Hyperledger Composer配置。

本教程将演示管理员为将单个区块链业务网络部署到单个组织的Hyperledger Fabric实例而需要采取的步骤,包括如何生成必要的Hyperledger Composer配置。后续教程将演示如何将区块链业务网络部署到多个组织的Hyperledger Fabric实例。

在本教程中,您可能希望参考Hyperledger Fabric文档

先决条件

  1. 在继续之前,请确保已按照安装开发环境中的步骤进行操作。

第一步:启动Hyperledger Fabric网络

要学习本教程,您必须启动Hyperledger Fabric网络。您可以使用开发环境中提供的简单Hyperledger Fabric网络,也可以按照Hyperledger Fabric文档使用您自己构建的Hyperledger Fabric网络。

本教程假设您使用开发环境中提供的简单Hyperledger Fabric网络。如果您使用自己的Hyperledger Fabric网络,则必须在下面详述的配置和您自己的配置之间进行映射,它应该是单个组织网络。

  1. 通过运行以下命令启动干净的Hyperledger Fabric:

    复制
    cd ~/fabric-dev-servers
    export FABRIC_VERSION=hlfv12
    ./stopFabric.sh
    ./teardownFabric.sh
    ./downloadFabric.sh
    ./startFabric.sh
    
  2. 删除钱包中可能存在的所有商业网卡。可以安全地忽略任何表明无法找到业务网卡的错误:

    复制
    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结构配置工具来配置cryptogenconfigtxgen

配置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网络。

  1. 创建一个名为的连接配置文件connection.json

  2. 给连接配置文件nameversionx-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

  3. 我们必须在Hyperledger Fabric网络中指定所有对等节点的主机名和端口。只有一个同行,我们给它一个标签peer0.org1.example.com

    复制
        "peers": {
            "peer0.org1.example.com": {
                "url": "grpc://localhost:7051"
            }
        },
    

    在这里,我们已经指定了我们的单个对等节点peer0.org1.example.com(使用主机名localhost),请求端口7051和事件中心端口7053。

    peers阵列可以包含多个对等节点。如果您有多个对等节点,则应将它们全部添加到peers对象中。

  4. 我们必须在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

  5. 我们必须指定要连接到的Hyperledger Fabric中所有排序节点的主机名和端口。

    复制
        "orderers": {
            "orderer.example.com": {
                "url": "grpc://localhost:7050"
            }
        },
    

    在这里,我们已经指定了我们的单个订货人节点orderer.example.com(使用主机名localhost)和订货人端口7050,我们也将其标记为orderer.example.com

    orderers对象可以包含多个orderer节点。如果您有多个订货人节点,则应将它们全部添加到orderers对象中。

  6. 我们现在必须指定网络中的所有组织。在本教程中,只有一个组织Org1

    复制
        "organizations": {
            "Org1": {
                "mspid": "Org1MSP",
                "peers": [
                    "peer0.org1.example.com"
                ],
                "certificateAuthorities": [
                    "ca.org1.example.com"
                ]
            }
        },
    

    在这里,我们描述了同行的所有者以及他们的证书颁发机构,我们还声明了为该组织定义的MSP ID。在本教程中,它被定义为Org1MSP

  7. 我们必须指定现有频道的名称。我们将区块链业务网络部署到渠道中composerchannel。这是在channels对象中定义的。

    复制
        "channels": {
            "composerchannel": {
                "orderers": [
                    "orderer.example.com"
                ],
                "peers": {
                    "peer0.org1.example.com": {
                        "endorsingPeer": true,
                        "chaincodeQuery": true,
                        "eventSource": true
                    }
                }
            }
        },
    

    在这里,我们定义了渠道composerchannel,以及作为该渠道一部分的订货人和同行。我们还指定了对等体在此通道中将执行的角色。在本教程中,我们添加了使用其标签引用的单个orderer和单个peer。对等体将安装业务网络,因此将成为事务代言人,能够处理链代码查询并生成事件。区块链业务网络将部署到所有指定的对等节点。一旦部署了区块链业务网络,指定的对等节点将用于查询区块链业务网络,支持事务和订阅事件。

  8. 需要的最后一节是客户端部分。客户端应用程序(例如Hyperledger Composer)使用它来了解交互时它所代表的组织以及一些额外的可选超时。

    复制
        "client": {
            "organization": "Org1",
            "connection": {
                "timeout": {
                    "peer": {
                        "endorser": "300",
                        "eventHub": "300",
                        "eventReg": "300"
                    },
                    "orderer": "300"
                }
            }
        }
    }
    

在这里,我们指定我们在Org1。超时用于确定与对等方或订货方交互时等待响应的时间,并以秒为单位指定值。如果您没有指定任何内容,则默认为45 seconds

  1. 保存您的更改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网络,看看您是否可以成功部署区块链业务网络?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值