Hyperledger Fabric 1.4 产品链搭建教程 (二) —— MyFabric Demo链节点启动及合约部署调用
本文为Hyperledger Fabric 1.4 产品链搭建教程第二篇,介绍MyFabric Demo链的启动和合约部署以及调用
本篇代码可以从Github上下载 - myfabric-demo-chain
代码目录结构如下
myfabric-demo-chain ├── org0 ├── org0-orderer //org0 orderer 目录 ├── org1 ├── org1-peer //org1 peer目录 ├── org2 ├── org2-peer //org2 peer目录 ├── peer-cli //peer客户端目录 ├── scripts ├── start-ca.sh ├── start-chain.sh //链启动脚本 ├── start.sh ├── stop-ca.sh ├── stop-chain.sh //链结束脚本 └── stop.sh
本节教程相关部分已用
//标出。
start-chain.sh脚本依次调用
org0-orderer,
org1-peer,
org2-peer,peer-cli下的
start.sh脚本
stop-chain.sh脚本依次调用
peer-cli,
org2-peer,
org1-peer,
org0-orderer下的
stop.sh脚本
org0-orderer启动1个orderer,目录结构如下
org0-orderer ├── config │ └── configtx.yaml //链配置文件 ├── data │ └── genesis.block //orderer初始块 ├── docker-compose.yml ├── fabric-ca-orderer.dockerfile ├── start.sh └── stop.sh
docker-compose启动2个docker,orderer文件生成docker根据链配置文件生成orderer初始块,orderer节点docker
org1-peer启动2个peer,目录结构如下
org1-peer ├── docker-compose.yml ├── fabric-ca-peer.dockerfile ├── start.sh └── stop.sh
docker-compose启动2个docker,peer1-org1节点docker,peer2-org1节点docker
org2-peer启动2个peer,目录结构和org1-peer类似
peer-cli启动peer客户端并执行合约部署调用脚本,目录结构如下
peer-cli ├── chaincode │ ├── abac //示例合约Go源代码 │ └── github.com ├── config │ └── configtx.yaml //链配置文件 ├── data │ ├── channel.tx //通道初始事务 │ ├── org1_anchors.tx //org1设置锚节点事务 │ └── org2_anchors.tx //org2设置锚节点事务 ├── docker-compose.yml ├── start.sh └── stop.sh
docker-compose启动2个docker
-
通道文件生成docker,它根据链配置文件生成通道初始事务,org1设置锚节点事务,org2设置锚节点事务。
-
peer客户端docker,它运行合约部署调用脚本,执行以下步骤
基于通道初始事务创建通道并生成通道初始块 - 基于通道初始块各peer节点加入通道
- 修改通道配置设置org1锚节点
- 修改通道配置设置org2锚节点
- 在peer节点上安装合约
- 在通道上初始化合约
- 在通道上调用合约方法
上述过程中的细节,请阅读源代码,这里不再叙述。
此过程的核心要点以及关键注意事项。
-
链配置文件
configtx.yml
中MSPDir
指向上一教程生成的组织msp目录,NAME和ID中不要包含_
这种特殊字符。DemoOrdererGenesis
定义Orderer和Consortiums,DemoChannel
基于指定的Consortium定义通道的参与组织。 -
生成orderer genesis block时可以指定系统通道的名称,如不提供默认委托test-channel。
-
本Demo开启了tls和client auth。针对orderer,指定
ORDERER_GENERAL_TLS_
为前缀的4个环境变量来开启tls,指定ORDERER_GENERAL_TLS_CLIENT
为前缀的2个环境变量来开启client auth。针对peer,指定CORE_PEER_TLS_
为前缀的4个环境变量来开启tls,指定CORE_PEER_TLS_CLIENT
为前缀的4个环境来开启client auth。当peer作为client访问orderer时,需要CORE_PEER_TLS_CLIENTKEY_FILE
和CORE_PEER_TLS_CLIENTCERT_FILE
,当它作为server接受peer命令访问是,不需要这2个环境变量。 -
peer上安装的合约以docker方式运行,
CORE_VM_ENDPOINT
和CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE
指定合约docker运行的网络,确保和peer在同一网络中。 -
peer启动时可以通过
CORE_PEER_GOSSIP_BOOTSTRAP
指定同一组织下的其它节点,直接加入交换节点列表。 -
生成channel genesis block时可以指定通道名称。
-
peer客户端由
CORE_PEER_LOCALMSPID
决定调用者组织,由CORE_PEER_MSPCONFIGPATH
决定调用者身份,由CORE_PEER_ADDRESS
决定调用节点。tls需要CORE_PEER_TLS_ROOTCERT_FILE
。client auth需要CORE_PEER_TLS_CLIENTKEY_FILE
和CORE_PEER_TLS_CLIENTCERT_FILE
。 -
本Demo采用默认权限配置。创建通道、加入通道、更改通道、安装合约、初始化合约操作需要admin权限,调用合约方法普通权限即可。可以修改链配置文件自定义各种权限。
-
合约docker镜像根据节点名、合约名、合约版本生成,如果更新合约代码但并没有修改版本号,需 3ff7 要删除已有的docker镜像,重新生成才会生效。
本篇完,请继续阅读Hyperledger Fabric 1.4 产品链搭建教程 (三) —— MyFabric Demo Java SDK访问示例
- Hyperledger Fabric 1.4 产品链搭建教程
- Michael.W谈hyperledger Fabric第8期-手动搭建Fabric网络之编写用于启动网络的docker-compose配置文件-orderer节点
- Michael.W谈hyperledger Fabric第9期-手动搭建Fabric网络之编写用于启动网络的docker-compose配置文件-peer节点
- HyperLedger Fabric:自顶向下的方法--第1篇 编译fabric源码及手工搭建单个Peer节点网络
- 基于Hyperledger Fabric的多节点部署
- hyperledger fabric v1.4 linux 环境搭建 详细
- Hyperledger Fabric 排序节点启动过程
- 我对hyperledger fabric1.1.0的执着(四):部署单机多节点网络
- Ubuntn 16.04 部署Hyperledger Fabric(一)环境搭建
- Java为Hyperledger Fabric(超级账本)开发区块链链代码智能合约之环境部署
- Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署
- 区块链之Hyperledger(超级账本)Fabric v1.0 的环境搭建(超详细教程)
- Michael.W谈hyperledger Fabric第10期-手动搭建Fabric网络之启动网络与功能调试一
- Michael.W谈hyperledger Fabric第11期-手动搭建Fabric网络之启动网络与功能调试二
- Hyperledger Fabric 1.0 从零开始(七)——启动Fabric多节点集群
- Michael.W谈hyperledger Fabric第7期-手动搭建Fabric网络之编写用于启动网络的docker-compose配置文件-客户端
- 区块链之Hyperledger(超级账本)Fabric v1.0 的环境搭建(超详细教程)
- Hyperledger Fabric Orderer节点启动
- Ubuntu18.04 Hyperledger-Fabric v1.3环境搭建详细教程
- Michael.W谈hyperledger Fabric第5期-手动搭建Fabric网络之创世块/通道的生成一