目錄
  1. 1. 一、trade-finance-logistics网络介绍
    1. 1.1. 1、工作交易流程
    2. 1.2. 2、构建fabric网络
  2. 2. 二、环境准备
    1. 2.1. 1、hyperledger fabric环境搭建
    2. 2.2. 2、trade-finance-logistics网络的下载
    3. 2.3. 3、设置cryptogen环境变量
    4. 2.4. 4、更改配置文件configtx.yaml
  3. 3. 三、创建channel并运行网络
    1. 3.1. 1、创建通道channel
    2. 3.2. 2、启动网络
    3. 3.3. 3、关闭网络
  4. 4. 四、生成通道文件分析
    1. 4.1. 1、网络加密材料配置文件crypto-config.yaml剖析
    2. 4.2. 2、生成所有组织加密材料
    3. 4.3. 3、通道及锚节点的配置 configtx.yaml 配置剖析
    4. 4.4. 4、通道工件配置channel-artifacts剖析
  5. 5. 四、示例贸易网络分析
    1. 5.1. 1、相关docker镜像及配置
    2. 5.2. 2、peer-base.yaml配置剖析
    3. 5.3. 3、docker-compose-base.yaml配置剖析
    4. 5.4. 4、docker-compose-e2e.yaml配置剖析
  6. 6. 五、启动样本交易网络
    1. 6.1. 1、启动网络
    2. 6.2. 2、查看docker进程
    3. 6.3. 3、查看服务
    4. 6.4. 4、关闭网络
  7. 7. 六、总结
trade-finance-logistics网络运行与分析

一、trade-finance-logistics网络介绍

1、工作交易流程

工作流程中的交易如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
1. 进口商要求出口商提供货物以换取货币
2. 出口商接受贸易协议
3. 进口商要求银行提供有利于出口商的信用证
4. 进口商的银行提供有利于出口商的信用证,并可支付给后者的银行
5. 出口商的银行代表出口商接受信用证
6. 出口商向监管机构申请E / L.
7. 监管机构向出口商提供E / L.
8. 出口商准备一批货物并将其交给承运人
9. 承运人在确认E / L后接受货物,然后向出口商提供提单
10. 出口商的银行要求进口商银行支付一半的款项
11. 进口商的银行将一半的金额转移到出口商的银行
12. 承运人将货物运至目的地
13. 进口商的银行向出口商的银行支付剩余金额

这是一个解释交易工作流程的图表:

2、构建fabric网络

样本贸易网络将由四个组织组成,分别代表出口商,进口商,承运商和监管机构。后两者分别代表运营商和监管机构实体。但是,出口组织既代表出口实体又代表其银行。同样,进口商组织代表进口实体及其银行。如下图所示:

二、环境准备

1、hyperledger fabric环境搭建

具体过程见https://j-kangel.github.io/2019/03/24/hyperledger/

2、trade-finance-logistics网络的下载

1
2
$ cd $GOPATH/src  
$ git clone https://github.com/HyperledgerHandsOn/trade-finance-logistics.git

3、设置cryptogen环境变量

1
2
3
4
5
6
7
$ export PATH=$PATH:~/go/src/github.com/hyperledger/fabric/fabric-samples/bin
$ cryptogen version #测试是否生效
cryptogen:
Version: 1.4.0
Commit SHA: d700b43
Go version: go1.11.1
OS/Arch: linux/amd64

4、更改配置文件configtx.yaml

1
2
$ cd go/src/trade-finance-logistics/network
$ gedit configtx.yaml

将以下内容移至文件末尾,这是因为hyperledger fabric1.4更新的语法规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Profiles:

FourOrgsTradeOrdererGenesis:
Capabilities:
<<: *ChannelCapabilities
Orderer:
<<: *OrdererDefaults
Organizations:
- *TradeOrdererOrg
Capabilities:
<<: *OrdererCapabilities
Consortiums:
TradeConsortium:
Organizations:
- *ExporterOrg
- *ImporterOrg
- *CarrierOrg
- *RegulatorOrg
FourOrgsTradeChannel:
Consortium: TradeConsortium
Application:
<<: *ApplicationDefaults
Organizations:
- *ExporterOrg
- *ImporterOrg
- *CarrierOrg
- *RegulatorOrg
Capabilities:
<<: *ApplicationCapabilities

三、创建channel并运行网络

1、创建通道channel

1
2
$ cd go/src/trade-finance-logistics/network
$ ./trade.sh generate -c tradechannel

此时会创建一个排序节点(orderer)和四个对等锚节点(ImporterOrg、ExporterOrg、RegulatorOrg、CarrierOrg),并生成相应的配置文件,稍后详细分析。

2、启动网络

1
$ ./trade.sh up -c tradechannel

启动成功后显示:

1
2
3
4
5
Starting with channel 'tradechannel'
Continue? [Y/n]
proceeding ...
LOCAL_VERSION=1.4.0
DOCKER_IMAGE_VERSION=1.4.0

3、关闭网络

1
$ ./trade.sh down -c tradechannel

关闭成功后显示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Stopping ca_peerImporterOrg           ... done    #停止进口商节点证书
Stopping ca_peerRegulatorOrg ... done
Stopping ca_peerExporterOrg ... done
Stopping ca_peerCarrierOrg ... done
Stopping peer0.importerorg.trade.com ... done #停止进口商节点
Stopping peer0.carrierorg.trade.com ... done
Stopping peer0.regulatororg.trade.com ... done
Stopping orderer.trade.com ... done
Stopping peer0.exporterorg.trade.com ... done
Removing ca_peerImporterOrg ... done #移除进口商节点证书
Removing ca_peerRegulatorOrg ... done
Removing ca_peerExporterOrg ... done
Removing ca_peerCarrierOrg ... done
Removing peer0.importerorg.trade.com ... done #移除进口商节点
Removing peer0.carrierorg.trade.com ... done
Removing peer0.regulatororg.trade.com ... done
Removing orderer.trade.com ... done
Removing peer0.exporterorg.trade.com ... done
Removing network net_trade
Removing volume net_orderer.trade.com
Removing volume net_peer0.exporterorg.trade.com
Removing volume net_peer0.importerorg.trade.com
Removing volume net_peer0.regulatororg.trade.com
Removing volume net_peer0.carrierorg.trade.com

四、生成通道文件分析

1、网络加密材料配置文件crypto-config.yaml剖析

该网络包含一个排序组织和四个对等节点组织,具体关系如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
# ---------------------------------------------------------------------------
# "OrdererOrgs" - Definition of organizations managing orderer nodes
# ---------------------------------------------------------------------------
OrdererOrgs: ##管理orderer节点的组织的定义
- TradeOrderer
# ---------------------------------------------------------------------------
# "PeerOrgs" - Definition of organizations managing peer nodes
# ---------------------------------------------------------------------------
PeerOrgs: ##管理Peer节点的组织的定义
- ExporterOrg
- ImporterOrg
- CarrierOrg
- RegulatorOrg

每个组织都有各自的属性,下面以ImporterOrg为例

1
2
3
4
5
6
7
8
9
10
# ImporterOrg
# ---------------------------------------------------------------------------
- Name: ImporterOrg ##组织名称
Domain: importerorg.trade.com ##组织域名
EnableNodeOUs: true ##如果设置了EnableNodeOUs,就在msp下生成config.yaml文件
Template:
Count: 1 ##表示生成一个peer
Users:
Count: 2 ##表示生成两个普通用户
# ---------------------------------------------------------------------------

2、生成所有组织加密材料

1
$ cryptogen generate --config=./crypto-config.yaml  ##./trade.sh generate第一部分
1
2
3
4
5
6
7
8
9
$ tree -L 2 crypto-config   ##查看crypto-config的二级目录
crypto-config
├── ordererOrganizations ##order组织只有一个
│   └── trade.com
└── peerOrganizations ##peer组织有四个
├── carrierorg.trade.com
├── exporterorg.trade.com
├── importerorg.trade.com
└── regulatororg.trade.com

现在以trade.com为例进行展开分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$ tree  crypto-config/ordererOrganizations/trade.com/
crypto-config/ordererOrganizations/trade.com/
├── ca ## 存放组织根证书及私钥(采用EC算法)证书为【自签名】,组织内的实体将给予该根证书作为证书根
│   ├── ca.trade.com-cert.pem ## 证书CA
│   └── d046c897334d539608c5fa578e7686441ec41115702ff8105e22998785839612_sk ## 私钥
├── msp ## 存放该组织身份信息
│   ├── admincerts ## 组织管理员身份验证证书,【被根证书签名】
│   │   └── Admin@trade.com-cert.pem
│   ├── cacerts ## 组织的根证书 【和CA目录里面一致】
│   │   └── ca.trade.com-cert.pem
│   └── tlscacerts ## 用于TLS的CA证书,【自签名】
│   └── tlsca.trade.com-cert.pem
├── orderers ## 存放所有 Orderer 的身份信息
│   └── orderer.trade.com ## 第一个Orderer的信息msp及tls
│   ├── msp
│   │   ├── admincerts ## 组织管理员身份验证证书
│   │   │   └── Admin@trade.com-cert.pem
│   │   ├── cacerts
│   │   │   └── ca.trade.com-cert.pem
│   │   ├── keystore ## 本节点的身份私钥,用来签名
│   │   │   └── 38195f71e2b520910f2a2e405764975e235c7d97ff6a7fde41127e1575888375_sk
│   │   ├── signcerts ## 验证本节点签名的证书,【被根证书签名】
│   │   │   └── orderer.trade.com-cert.pem
│   │   └── tlscacerts ## TLS连接用的身份证书,【和msp.tlscacerts一致】
│   │   └── tlsca.trade.com-cert.pem
│   └── tls ## tls 的相关信息
│   ├── ca.crt ##【组织的根证书】
│   ├── server.crt ## 验证本节点签名的证书,【被根证书签名】
│   └── server.key ## 本节点的身份私钥,用来签名
├── tlsca ## 存放tls相关的证书和私钥
│   ├── acbada48c339b2b60cb9bac3914f359722f37de001628f110792153d8614c443_sk
│   └── tlsca.trade.com-cert.pem
└── users ## 存放属于该组织的用户的实体
└── Admin@trade.com
├── msp
│   ├── admincerts
│   │   └── Admin@trade.com-cert.pem
│   ├── cacerts
│   │   └── ca.trade.com-cert.pem
│   ├── keystore
│   │   └── 2187f9edda98eae3b2169a476e30aff6fb2781c19e6cb400671b723d7b74abde_sk
│   ├── signcerts
│   │   └── Admin@trade.com-cert.pem
│   └── tlscacerts
│   └── tlsca.trade.com-cert.pem
└── tls
├── ca.crt
├── client.crt
└── client.key

我们可以知道cryptogen工具无非就是在各个资源下生成组织和私钥、证书等等,其中最关键的就是各个资源下的MSP目录内容:

admincerts:    管理员的身份证书文件
cacerts:       信任的根证书文件
keystore:      节点的签名私钥文件
signcerts:     节点的签名身份证书文件
tlscacerts:    TLS连接用的证书

3、通道及锚节点的配置 configtx.yaml 配置剖析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Organizations:
- &TradeOrdererOrg
Name: TradeOrdererOrg #Orderer的组织的名称
ID: TradeOrdererMSP #Orderer的组织的ID
# MSPDir是包含Orderer的MSP证书目录路径
MSPDir: crypto-config/ordererOrganizations/trade.com/msp

- &ExporterOrg
Name: ExporterOrgMSP
ID: ExporterOrgMSP
MSPDir: crypto-config/peerOrganizations/exporterorg.trade.com/msp
AnchorPeers:
#锚点定义可以使用的对等节点的位置
#这些节点用于跨组织的信息交流。注意,这个值只是
#用来加密应用程序部分上下文的创世区块
- Host: peer0.exporterorg.trade.com ## 锚节点的主机名
Port: 7051 ## 锚节点的端口号

- &ImporterOrg
Name: ImporterOrgMSP
ID: ImporterOrgMSP
MSPDir: crypto-config/peerOrganizations/importerorg.trade.com/msp
AnchorPeers:
- Host: peer0.importerorg.trade.com
Port: 7051

- &CarrierOrg
Name: CarrierOrgMSP
ID: CarrierOrgMSP
MSPDir: crypto-config/peerOrganizations/carrierorg.trade.com/msp
AnchorPeers:
- Host: peer0.carrierorg.trade.com
Port: 7051

- &RegulatorOrg
Name: RegulatorOrgMSP
ID: RegulatorOrgMSP
MSPDir: crypto-config/peerOrganizations/regulatororg.trade.com/msp
AnchorPeers:
- Host: peer0.regulatororg.trade.com
Port: 7051

################################################################################
# SECTION: Orderer
################################################################################
Orderer: &OrdererDefaults
OrdererType: solo ## Orderer类型,包含solo和kafka集群
Addresses: ## 服务地址
- orderer.trade.com:7050
BatchTimeout: 2s ## 区块打包的最大超时时间 (到了该时间就打包区块)
BatchSize:
#一个区块里最大的交易数
MaxMessageCount: 10
# 一个区块的最大字节数, 任何时候都不能超过
AbsoluteMaxBytes: 99 MB
#一个区块的建议字节数,如果一个交易消息的大小超过了这个值, 就会被放入另外一个更大的区块中
PreferredMaxBytes: 512 KB
Kafka:
Brokers: ## kafka的 brokens 服务地址 允许有多个
- 127.0.0.1:9092
Organizations: ## 参与维护 Orderer 的组织,默认为空

################################################################################
# SECTION: Application
################################################################################
Application: &ApplicationDefaults ## 自定义被引用的地址
Organizations:
################################################################################
# SECTION: Capabilities
################################################################################
Capabilities:
Global: &ChannelCapabilities
V1_1: true
Orderer: &OrdererCapabilities
V1_1: true
Application: &ApplicationCapabilities
V1_1: true

Profiles:

FourOrgsTradeOrdererGenesis:
Capabilities:
<<: *ChannelCapabilities
Orderer:
<<: *OrdererDefaults
Organizations:
- *TradeOrdererOrg
Capabilities:
<<: *OrdererCapabilities
Consortiums:
TradeConsortium:
Organizations:
- *ExporterOrg
- *ImporterOrg
- *CarrierOrg
- *RegulatorOrg
FourOrgsTradeChannel:
Consortium: TradeConsortium
Application:
<<: *ApplicationDefaults
Organizations:
- *ExporterOrg
- *ImporterOrg
- *CarrierOrg
- *RegulatorOrg
Capabilities:
<<: *ApplicationCapabilities

4、通道工件配置channel-artifacts剖析

1
$ configtxgen -profile FourOrgsTradeOrdererGenesis -outputBlock ./channel-artifacts/genesis.block   ##生成创世区块
1
$ configtxgen -profile FourOrgsTradeChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID tradechannel ## 生成通道配置信息
1
$ configtxgen -profile FourOrgsTradeChannel -outputAnchorPeersUpdate ./channel-artifacts/ExporterOrgMSPanchors.tx -channelID tradechannel -asOrg ExporterOrgMSP
1
$ configtxgen -profile FourOrgsTradeChannel -outputAnchorPeersUpdate ./channel-artifacts/ImporterOrgMSPanchors.tx -channelID tradechannel -asOrg ImporterOrgMSP
1
$ configtxgen -profile FourOrgsTradeChannel -outputAnchorPeersUpdate ./channel-artifacts/CarrierOrgMSPanchors.tx -channelID tradechannel -asOrg CarrierOrgMSP
1
$ configtxgen -profile FourOrgsTradeChannel -outputAnchorPeersUpdate ./channel-artifacts/RegulatorOrgMSPanchor.tx -channelID tradechannel -asOrg RegulatorORGMSP

以上命令均包含在./trade.sh中,该脚本还应包含将环境变量FABRIC_CFG_PATH设置为指向包含configtx.yaml文件的文件夹才能使configtxgen工具正常工作。

1
2
$ export PATH=${PWD}/../bin:${PWD}:$PATH   ##配置cryptogen环境变量(前面已配置,此例子无效)
$ export FABRIC_CFG_PATH=${PWD} ## ${PWD}获取当前目录路径的字符串值

查看channel-artifacts文件夹

1
2
3
4
5
6
7
8
$ tree channel-artifacts
channel-artifacts/
├── CarrierOrgMSPanchors.tx ##Carrier组织MSP锚节点配置
├── channel.tx ##通道配置
├── ExporterOrgMSPanchors.tx ##Exportor组织MSP锚节点配置
├── genesis.block ##创世区块
├── ImporterOrgMSPanchors.tx ##Importer组织MSP锚节点通道配置
└── RegulatorOrgMSPanchors.tx ##Regulator组织MSP锚节点通道配置

四、示例贸易网络分析

1、相关docker镜像及配置

hyperledger将该网络运行在三个docker镜像中,在前面的hyperledger fabric环境搭建中已经下拉了这些镜像,可以通过docker命令查看

1
2
3
4
$ docker images |grep hyperledger/fabric-[opc][^co].*[^-]latest
hyperledger/fabric-orderer latest ## 用于orderer
hyperledger/fabric-peer latest ## 用于peer
hyperledger/fabric-ca latest ## 用于MSP

与docker相关配置文件有三个peer-base.yaml、docker-compose-base.yaml和docker-compose-e2e.yaml,前者是后者的扩展(extends)。

2、peer-base.yaml配置剖析

peer-base.yaml在./base 文件夹中,该配置定义了四个peer共同的相关配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
services:   #服务定义 开始标签
peer-base: #服务名
image: hyperledger/fabric-peer:$IMAGE_TAG #docker镜像名
environment: #环境变量
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
# the following setting starts chaincode containers on the same
# bridge network as the peers
# https://docs.docker.com/compose/networking/
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_trade
- CORE_LOGGING_LEVEL=INFO #记录信息、警告和错误消息
#- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false
- CORE_PEER_PROFILE_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer #工作路径
command: peer node start #启动命令

3、docker-compose-base.yaml配置剖析

docker-compose-base.yaml在./base文件夹中,该配置是每个对等节点具体的配置,以peer0.exporterorg.trade.com为例(其中orderer的配置与peer-base.yaml相似,可参考上面的配置)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
peer0.exporterorg.trade.com:   #服务名
container_name: peer0.exporterorg.trade.com #容器名
extends: #扩展配置
file: peer-base.yaml #扩展配置文件
service: peer-base #扩展配置服务
environment: #环境变量
- CORE_PEER_ID=peer0.exporterorg.trade.com #ID与configtx.yaml中相匹配
- CORE_PEER_ADDRESS=peer0.exporterorg.trade.com:7051 #地址
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.exporterorg.trade.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.exporterorg.trade.com:7051
- CORE_PEER_LOCALMSPID=ExporterOrgMSP #MSP与configtx.yaml中相匹配
volumes: #挂载卷
- /var/run/:/host/var/run/
- ../crypto-config/peerOrganizations/exporterorg.trade.com/peers/peer0.exporterorg.trade.com/msp:/etc/hyperledger/fabric/msp
- ../crypto-config/peerOrganizations/exporterorg.trade.com/peers/peer0.exporterorg.trade.com/tls:/etc/hyperledger/fabric/tls
- peer0.exporterorg.trade.com:/var/hyperledger/production
ports: #端口映射 host主机端口:容器内端口
- 7051:7051 #服务器侦听端口
- 7053:7053 #客户端订阅端口
- 7055:6060

4、docker-compose-e2e.yaml配置剖析

docker-compose-e2e.yaml,由命令./trade.sh generate -c tradechannel创建,依赖于base / docker-compose-base.yaml(以及间接base / peer-base.yaml),从名为docker-compose-e2e-template.yaml的模板YAML文件创建(同一文件夹)。以exporter-ca为例查看相关MSP配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
services:   #服务定义 开始标签
exporter-ca: #服务名
image: hyperledger/fabric-ca:$IMAGE_TAG #docker镜像
environment: #环境变量
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server #在MSP中运行的服务名
- FABRIC_CA_SERVER_CA_NAME=ca-exporterorg
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.exporterorg.trade.com-cert.pem
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/6842d1c3a357472cc249fe42d3e97ffe7ba0210ab89781a3fdd73cbc30f8934b_sk
ports: #端口映射 host主机端口:容器内端口
- "7054:7054"
command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.exporterorg.trade.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/6842d1c3a357472cc249fe42d3e97ffe7ba0210ab89781a3fdd73cbc30f8934b_sk -b admin:adminpw -d' #启动命令 默认登录名和密码(分别为admin和adminpw)
volumes: #挂载卷
- ./crypto-config/peerOrganizations/exporterorg.trade.com/ca/:/etc/hyperledger/fabric-ca-server-config
container_name: ca_peerExporterOrg #容器名
networks: #所处网络
- trade

五、启动样本交易网络

1、启动网络

1
$./trade.sh up -c tradechannel

2、查看docker进程

1
2
3
4
5
6
7
8
9
10
11
$ docker ps #查看docker进程
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a716239d97ad hyperledger/fabric-peer:latest "peer node start" 26 seconds ago Up 11 seconds 0.0.0.0:9055->6060/tcp, 0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp peer0.carrierorg.trade.com
c3ce947f9490 hyperledger/fabric-peer:latest "peer node start" 26 seconds ago Up 12 seconds 0.0.0.0:8055->6060/tcp, 0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp peer0.importerorg.trade.com
f8bae3919c76 hyperledger/fabric-peer:latest "peer node start" 26 seconds ago Up 11 seconds 0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp, 0.0.0.0:7055->6060/tcp peer0.exporterorg.trade.com
f7fc7b67ab61 hyperledger/fabric-ca:latest "sh -c 'fabric-ca-se…" 26 seconds ago Up 14 seconds 0.0.0.0:7054->7054/tcp ca_peerExporterOrg
5c23b50bfbf7 hyperledger/fabric-peer:latest "peer node start" 26 seconds ago Up 9 seconds 0.0.0.0:10055->6060/tcp, 0.0.0.0:10051->7051/tcp, 0.0.0.0:10053->7053/tcp peer0.regulatororg.trade.com
6e0235be3e7e hyperledger/fabric-ca:latest "sh -c 'fabric-ca-se…" 26 seconds ago Up 9 seconds 0.0.0.0:8054->7054/tcp ca_peerImporterOrg
2e47cb0610fc hyperledger/fabric-orderer:latest "orderer" 26 seconds ago Up 13 seconds 0.0.0.0:7050->7050/tcp orderer.trade.com
d6e0acddea54 hyperledger/fabric-ca:latest "sh -c 'fabric-ca-se…" 27 seconds ago Up 15 seconds 0.0.0.0:10054->7054/tcp ca_peerRegulatorOrg
918e7707db2a hyperledger/fabric-ca:latest "sh -c 'fabric-ca-se…" 27 seconds ago Up 17 seconds 0.0.0.0:9054->7054/tcp ca_peerCarrierOrg

hyperledger/fabric-orderer:启动一个orderer服务

hyperledger/fabric-peer:启动四个peer服务

hyperledger/fabric-ca:启动四个peer的MSP服务

3、查看服务

1
2
$ docker logs <container-ID> #查看容器的运行日志
$ docker attach <container-ID> #进入容器交互界面

4、关闭网络

1
$ ./trade.sh down -c tradechannel

六、总结

以上是个人学习hyperledger fabric的一些理解和整理,欢迎参考、交流和指正。

文章作者: kangel
文章鏈接: https://j-kangel.github.io/2019/03/28/trade-finance/
版權聲明: 本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 KANGEL