Hyperledger Fabric 开发链码,一般都是测试网络开发,然后部署到生产网络。
下面介绍测试网络、生产网络的一点理解。
1 测试网络 使用cryptogen等工具建立测试网络,开发环境使用。
这里以https://github.com/hyperledger/fabric-samples 2022.2.12的代码为例进行说明。
目录:fabric-samples/test-network/organizations/fabric-ca/
从上面的目录可以看到,测试网络包括:
1) 2个组织。每个组织有1个peer节点;
2) 1个order组织。组织有1个order节点;
端口分配情况:
ordererOrg 排序组织 7050端口
org1 组织 7051端口
Org2 组织 9051端口
目录:/fabric-samples/config/
包括:
core.yaml : 创建Peer节点的配置文件;
orderer.yaml :Orderer节点示例配置文件;
configtx.yaml:组织结构配置文件。
主要用来配置fabric的组织结构,通道及锚节点的配置。它主要完成以下几个功能
1)生成启动 Orderer 需要的创世区块orderer.block(genesis.block)
2)创建应用通道所需的配置交易文件
3)生成组织锚节点更新配置交易文件
目录:/fabric-samples/test-network/configtx/
生产创世区块(GenesisBlock)与通道(Channel)所需配置文件。如指定orderer服务的相关配置,以及当前的联盟信息、联盟中所属包含的组织信息,这些信息的配置被定义在该文件中。
目录:fabric-samples/test-network/organizations/cryptogen/
生产组织结构及身份认证所需的配置文件。
crypto-config-orderer.yaml
crypto-config-org1.yaml
crypto-config-org2.yaml
目录:fabric-samples/test-network/compose/docker/
实现节点容器的管理。
启动网络:
./network.sh up
下面的说明都以当前目录:fabric-samples/test-network/
启动网络前的准备:
1)为2个peer节点和1个order节点创建证书和密钥。
cryptogen工具会利用在organizations/cryptogen文件夹下的配置文件生成节点证书和密钥。看下图多了peerOrganizations、ordererOrganizations 2个文件夹。
2)创建系统的创世块。
configtxgen工具使用configtx/configtx.yaml文件来创建创世块,并存储在system-genesis-block文件夹中。
当上述两步完成之后,./network.sh会启动测试网络:
启动测试网络的步骤:
1)脚本利用在compose/docker/文件夹下的docker-compose-test-net.yaml文件创建peer和orderer节点。
2)运行./network.sh createChannel子命令,脚本还会运行script文件夹下的createChannel.sh脚本来创建所需要的channel,脚本会用peer命令来创建channel,加入两个组织。
3)运行./network.sh deployCC命令,脚本会在所有peers上运行script下的deployCC.sh脚本来安装chaincode,在chaincode的定义被提交到channel。
4)最后,peer命令会调用init函数来初始化chaincode,并将所需的数据放入chaincode中。
2 生产网络使用认证机构建立网络,设置生产组件和生产网络。
具体步骤:
步骤1:选定你的网络配置;
步骤2:为资源设置一个集群;
步骤3:设置 CA节点
步骤4:用 CA 来创建身份和 MSP
步骤5:部署节点;创建1个 peer 节点、创建1个order节点
步骤6:节点加入组织,并加入通道。链码就可以安装在节点。
小结:
如果我们只是开发链码(智能合约),测试环境就足够了。
如果线上部署,涉及了多节点,需要了解和运用kafka、Kubernetes、zookeeper等各种分布式技术和框架。