手动启动Fabric v1.1.0环境

一、为指定channel生成证书、密钥和节点配置文件

进入fabric-sample目录运行byfn.sh -m generate -c firstchannel,生成指定channel的相关节点证书以及配置文件

[root@localhost first-network]# ./byfn.sh -m generate -c firstchannel
Generating certs and genesis block for with channel 'firstchannel' and CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] y
proceeding ...
/home/go/src/github.com/hyperledger/bin/cryptogen

##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
+ cryptogen generate --config=./crypto-config.yaml
org1.example.com
org2.example.com
+ res=0
+ set +x

/home/go/src/github.com/hyperledger/bin/configtxgen
##########################################################
#########  Generating Orderer Genesis block ##############
##########################################################
+ configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
2020-01-13 23:46:35.681 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration
2020-01-13 23:46:35.706 CST [msp] getMspConfig -> INFO 002 Loading NodeOUs
2020-01-13 23:46:35.707 CST [msp] getMspConfig -> INFO 003 Loading NodeOUs
2020-01-13 23:46:35.707 CST [common/tools/configtxgen] doOutputBlock -> INFO 004 Generating genesis block
2020-01-13 23:46:35.708 CST [common/tools/configtxgen] doOutputBlock -> INFO 005 Writing genesis block
+ res=0
+ set +x

#################################################################
### Generating channel configuration transaction 'channel.tx' ###
#################################################################
+ configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID firstchannel
2020-01-13 23:46:35.735 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration
2020-01-13 23:46:35.758 CST [common/tools/configtxgen] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx
2020-01-13 23:46:35.759 CST [msp] getMspConfig -> INFO 003 Loading NodeOUs
2020-01-13 23:46:35.760 CST [msp] getMspConfig -> INFO 004 Loading NodeOUs
2020-01-13 23:46:35.847 CST [common/tools/configtxgen] doOutputChannelCreateTx -> INFO 005 Writing new channel tx
+ res=0
+ set +x

#################################################################
#######    Generating anchor peer update for Org1MSP   ##########
#################################################################
+ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID firstchannel -asOrg Org1MSP
2020-01-13 23:46:35.874 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration
2020-01-13 23:46:35.897 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2020-01-13 23:46:35.898 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
+ res=0
+ set +x

#################################################################
#######    Generating anchor peer update for Org2MSP   ##########
#################################################################
+ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID firstchannel -asOrg Org2MSP
2020-01-13 23:46:35.925 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration
2020-01-13 23:46:35.948 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2020-01-13 23:46:35.948 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
+ res=0
+ set +x

[root@localhost first-network]# 

此时channel-artifacts/,会有4个配置文件

[root@localhost first-network]# cd channel-artifacts/
[root@localhost channel-artifacts]# ll
总用量 28
-rw-r--r-- 1 root root   352 1月  13 23:46 channel.tx
-rw-r--r-- 1 root root 12647 1月  13 23:46 genesis.block
-rw-r--r-- 1 root root   290 1月  13 23:46 Org1MSPanchors.tx
-rw-r--r-- 1 root root   290 1月  13 23:46 Org2MSPanchors.tx
[root@localhost channel-artifacts]# 

channel、创世区块、两个组织的锚节点配置文件,

crypto-config目录里放置了网络的各个节点的证书文件和秘钥

[root@localhost crypto-config]# tree
.
├── ordererOrganizations
│?? └── example.com
│??     ├── ca
│??     │?? ├── 48e4ab6336bbd21ff94abbbdbdfd898f733b30de70f640de9531951b5c92a76c_sk
│??     │?? └── ca.example.com-cert.pem
│??     ├── msp
│??     │?? ├── admincerts
│??     │?? │?? └── [email protected]cert.pem
│??     │?? ├── cacerts
│??     │?? │?? └── ca.example.com-cert.pem
│??     │?? └── tlscacerts
│??     │??     └── tlsca.example.com-cert.pem
│??     ├── orderers
│??     │?? └── orderer.example.com
│??     │??     ├── msp
│??     │??     │?? ├── admincerts
│??     │??     │?? │?? └── [email protected]cert.pem
│??     │??     │?? ├── cacerts
│??     │??     │?? │?? └── ca.example.com-cert.pem
│??     │??     │?? ├── keystore
│??     │??     │?? │?? └── 79cc6ab0df1fcfcbcbb277d043a1f2abf1d52fa0733b6603aa33b4aeb9d30434_sk
│??     │??     │?? ├── signcerts
│??     │??     │?? │?? └── orderer.example.com-cert.pem
│??     │??     │?? └── tlscacerts
│??     │??     │??     └── tlsca.example.com-cert.pem
│??     │??     └── tls
│??     │??         ├── ca.crt
│??     │??         ├── server.crt
│??     │??         └── server.key
│??     ├── tlsca
│??     │?? ├── 05bb775fe81085d478be5db4f72ee7f4d2e7ced6e1cc3a8e3efab502d9e86240_sk
│??     │?? └── tlsca.example.com-cert.pem
│??     └── users
│??         └── [email protected]??             ├── msp
│??             │?? ├── admincerts
│??             │?? │?? └── [email protected]cert.pem
│??             │?? ├── cacerts
│??             │?? │?? └── ca.example.com-cert.pem
│??             │?? ├── keystore
│??             │?? │?? └── 443c3e090347260cd0773f023c617944b3c1f717e76b767675027bad5280a3ea_sk
│??             │?? ├── signcerts
│??             │?? │?? └── [email protected]cert.pem
│??             │?? └── tlscacerts
│??             │??     └── tlsca.example.com-cert.pem
│??             └── tls
│??                 ├── ca.crt
│??                 ├── client.crt
│??                 └── client.key
└── peerOrganizations
    ├── org1.example.com
    │?? ├── ca
    │?? │?? ├── b1fc8628b1610ee770cadb0e8a66c4c78ba4d23b678eda7f2fe0630433c53ce6_sk
    │?? │?? └── ca.org1.example.com-cert.pem
    │?? ├── msp
    │?? │?? ├── admincerts
    │?? │?? │?? └── [email protected]cert.pem
    │?? │?? ├── cacerts
    │?? │?? │?? └── ca.org1.example.com-cert.pem
    │?? │?? ├── config.yaml
    │?? │?? └── tlscacerts
    │?? │??     └── tlsca.org1.example.com-cert.pem
    │?? ├── peers
    │?? │?? ├── peer0.org1.example.com
    │?? │?? │?? ├── msp
    │?? │?? │?? │?? ├── admincerts
    │?? │?? │?? │?? │?? └── [email protected]cert.pem
    │?? │?? │?? │?? ├── cacerts
    │?? │?? │?? │?? │?? └── ca.org1.example.com-cert.pem
    │?? │?? │?? │?? ├── config.yaml
    │?? │?? │?? │?? ├── keystore
    │?? │?? │?? │?? │?? └── a75c8f89e7788658415edd4793262d74c2c2e675135885bf1e1097642fc3e458_sk
    │?? │?? │?? │?? ├── signcerts
    │?? │?? │?? │?? │?? └── peer0.org1.example.com-cert.pem
    │?? │?? │?? │?? └── tlscacerts
    │?? │?? │?? │??     └── tlsca.org1.example.com-cert.pem
    │?? │?? │?? └── tls
    │?? │?? │??     ├── ca.crt
    │?? │?? │??     ├── server.crt
    │?? │?? │??     └── server.key
    │?? │?? └── peer1.org1.example.com
    │?? │??     ├── msp
    │?? │??     │?? ├── admincerts
    │?? │??     │?? │?? └── [email protected]cert.pem
    │?? │??     │?? ├── cacerts
    │?? │??     │?? │?? └── ca.org1.example.com-cert.pem
    │?? │??     │?? ├── config.yaml
    │?? │??     │?? ├── keystore
    │?? │??     │?? │?? └── fc3b76a55a85188ee90aeb0f59c58bb8cf7e42158c6eb84bbd0a0eb65b0e85ad_sk
    │?? │??     │?? ├── signcerts
    │?? │??     │?? │?? └── peer1.org1.example.com-cert.pem
    │?? │??     │?? └── tlscacerts
    │?? │??     │??     └── tlsca.org1.example.com-cert.pem
    │?? │??     └── tls
    │?? │??         ├── ca.crt
    │?? │??         ├── server.crt
    │?? │??         └── server.key
    │?? ├── tlsca
    │?? │?? ├── 0849b9f55fde11a99c0e924a21f19783dd50eacffe5933ed191f5fe35ace76ee_sk
    │?? │?? └── tlsca.org1.example.com-cert.pem
    │?? └── users
    │??     ├── [email protected]??     │?? ├── msp
    │??     │?? │?? ├── admincerts
    │??     │?? │?? │?? └── [email protected]cert.pem
    │??     │?? │?? ├── cacerts
    │??     │?? │?? │?? └── ca.org1.example.com-cert.pem
    │??     │?? │?? ├── keystore
    │??     │?? │?? │?? └── d4984ad22f91a87a8f6ed8137d3bf4424549fe4b5f22224b3a817bb3737c5528_sk
    │??     │?? │?? ├── signcerts
    │??     │?? │?? │?? └── [email protected]cert.pem
    │??     │?? │?? └── tlscacerts
    │??     │?? │??     └── tlsca.org1.example.com-cert.pem
    │??     │?? └── tls
    │??     │??     ├── ca.crt
    │??     │??     ├── client.crt
    │??     │??     └── client.key
    │??     └── [email protected]??         ├── msp
    │??         │?? ├── admincerts
    │??         │?? │?? └── [email protected]cert.pem
    │??         │?? ├── cacerts
    │??         │?? │?? └── ca.org1.example.com-cert.pem
    │??         │?? ├── keystore
    │??         │?? │?? └── cbafefbcd58ecf9d9a77fe3b912ea0a16b60547b4fe556cf14c97e371f8ee8a4_sk
    │??         │?? ├── signcerts
    │??         │?? │?? └── [email protected]cert.pem
    │??         │?? └── tlscacerts
    │??         │??     └── tlsca.org1.example.com-cert.pem
    │??         └── tls
    │??             ├── ca.crt
    │??             ├── client.crt
    │??             └── client.key
    └── org2.example.com
        ├── ca
        │?? ├── 2d7523d79b67beea7075c098932a85c8abc621915c1f080f3e024f732ec3ced1_sk
        │?? └── ca.org2.example.com-cert.pem
        ├── msp
        │?? ├── admincerts
        │?? │?? └── [email protected]cert.pem
        │?? ├── cacerts
        │?? │?? └── ca.org2.example.com-cert.pem
        │?? ├── config.yaml
        │?? └── tlscacerts
        │??     └── tlsca.org2.example.com-cert.pem
        ├── peers
        │?? ├── peer0.org2.example.com
        │?? │?? ├── msp
        │?? │?? │?? ├── admincerts
        │?? │?? │?? │?? └── [email protected]cert.pem
        │?? │?? │?? ├── cacerts
        │?? │?? │?? │?? └── ca.org2.example.com-cert.pem
        │?? │?? │?? ├── config.yaml
        │?? │?? │?? ├── keystore
        │?? │?? │?? │?? └── aeaeeff6297ae7e62bf8f8f4333933506e5f102125c3b13cefcb133e6b3eb971_sk
        │?? │?? │?? ├── signcerts
        │?? │?? │?? │?? └── peer0.org2.example.com-cert.pem
        │?? │?? │?? └── tlscacerts
        │?? │?? │??     └── tlsca.org2.example.com-cert.pem
        │?? │?? └── tls
        │?? │??     ├── ca.crt
        │?? │??     ├── server.crt
        │?? │??     └── server.key
        │?? └── peer1.org2.example.com
        │??     ├── msp
        │??     │?? ├── admincerts
        │??     │?? │?? └── [email protected]cert.pem
        │??     │?? ├── cacerts
        │??     │?? │?? └── ca.org2.example.com-cert.pem
        │??     │?? ├── config.yaml
        │??     │?? ├── keystore
        │??     │?? │?? └── 162f9c8f83a304bd1a55ff387c401206893531d8748ce62c63f8d355de558aed_sk
        │??     │?? ├── signcerts
        │??     │?? │?? └── peer1.org2.example.com-cert.pem
        │??     │?? └── tlscacerts
        │??     │??     └── tlsca.org2.example.com-cert.pem
        │??     └── tls
        │??         ├── ca.crt
        │??         ├── server.crt
        │??         └── server.key
        ├── tlsca
        │?? ├── b196a7c2ab65ca9da09abdb438d50290f6de23767dafea12b2510bc47bf11d68_sk
        │?? └── tlsca.org2.example.com-cert.pem
        └── users
            ├── [email protected]?? ├── msp
            │?? │?? ├── admincerts
            │?? │?? │?? └── [email protected]cert.pem
            │?? │?? ├── cacerts
            │?? │?? │?? └── ca.org2.example.com-cert.pem
            │?? │?? ├── keystore
            │?? │?? │?? └── 37a15cca88cbb00b9f327a14b94f898262d3c90375d69db05c42fd0447bda63d_sk
            │?? │?? ├── signcerts
            │?? │?? │?? └── [email protected]cert.pem
            │?? │?? └── tlscacerts
            │?? │??     └── tlsca.org2.example.com-cert.pem
            │?? └── tls
            │??     ├── ca.crt
            │??     ├── client.crt
            │??     └── client.key
            └── [email protected]
                ├── msp
                │?? ├── admincerts
                │?? │?? └── [email protected]cert.pem
                │?? ├── cacerts
                │?? │?? └── ca.org2.example.com-cert.pem
                │?? ├── keystore
                │?? │?? └── aab3e8ffcd1004944815d152cc3450541852d9b5320ead700f5596a617ca6c85_sk
                │?? ├── signcerts
                │?? │?? └── [email protected]cert.pem
                │?? └── tlscacerts
                │??     └── tlsca.org2.example.com-cert.pem
                └── tls
                    ├── ca.crt
                    ├── client.crt
                    └── client.key

109 directories, 107 files
[root@localhost crypto-config]# 

二、用docker-compose指定配置文件启动网络

[root@localhost first-network]# docker-compose -f docker-compose-cli.yaml up
Creating network "net_byfn" with the default driver
Creating volume "net_orderer.example.com" with default driver
Creating volume "net_peer0.org1.example.com" with default driver
Creating volume "net_peer1.org1.example.com" with default driver
Creating volume "net_peer0.org2.example.com" with default driver
Creating volume "net_peer1.org2.example.com" with default driver
Creating orderer.example.com    ... done
Creating peer1.org1.example.com ... done
Creating peer1.org2.example.com ... done
Creating peer0.org2.example.com ... done
Creating peer0.org1.example.com ... done
Creating cli                    ... done
Attaching to peer0.org1.example.com, peer1.org1.example.com, peer0.org2.example.com, orderer.example.com, peer1.org2.example.com, cli
peer0.org2.example.com    | 2020-01-13 15:55:11.447 UTC [msp] getMspConfig -> INFO 001 Loading NodeOUs
orderer.example.com       | 2020-01-13 15:55:11.643 UTC [orderer/common/server] prettyPrintStruct -> INFO 001 Orderer config values:
orderer.example.com       |     General.LedgerType = "file"
orderer.example.com       |     General.ListenAddress = "0.0.0.0"
orderer.example.com       |     General.ListenPort = 7050
orderer.example.com       |     General.TLS.Enabled = true
orderer.example.com       |     General.TLS.PrivateKey = "/var/hyperledger/orderer/tls/server.key"
orderer.example.com       |     General.TLS.Certificate = "/var/hyperledger/orderer/tls/server.crt"
orderer.example.com       |     General.TLS.RootCAs = [/var/hyperledger/orderer/tls/ca.crt]
orderer.example.com       |     General.TLS.ClientAuthRequired = false
orderer.example.com       |     General.TLS.ClientRootCAs = []
orderer.example.com       |     General.Keepalive.ServerMinInterval = 1m0s
orderer.example.com       |     General.Keepalive.ServerInterval = 2h0m0s
orderer.example.com       |     General.Keepalive.ServerTimeout = 20s
orderer.example.com       |     General.GenesisMethod = "file"
orderer.example.com       |     General.GenesisProfile = "SampleInsecureSolo"
orderer.example.com       |     General.SystemChannel = "testchainid"
orderer.example.com       |     General.GenesisFile = "/var/hyperledger/orderer/orderer.genesis.block"
orderer.example.com       |     General.Profile.Enabled = false
orderer.example.com       |     General.Profile.Address = "0.0.0.0:6060"
orderer.example.com       |     General.LogLevel = "INFO"
orderer.example.com       |     General.LogFormat = "%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}"
orderer.example.com       |     General.LocalMSPDir = "/var/hyperledger/orderer/msp"
orderer.example.com       |     General.LocalMSPID = "OrdererMSP"
orderer.example.com       |     General.BCCSP.ProviderName = "SW"
orderer.example.com       |     General.BCCSP.SwOpts.SecLevel = 256
orderer.example.com       |     General.BCCSP.SwOpts.HashFamily = "SHA2"
orderer.example.com       |     General.BCCSP.SwOpts.Ephemeral = false
orderer.example.com       |     General.BCCSP.SwOpts.FileKeystore.KeyStorePath = "/var/hyperledger/orderer/msp/keystore"
orderer.example.com       |     General.BCCSP.SwOpts.DummyKeystore =
orderer.example.com       |     General.BCCSP.PluginOpts =
orderer.example.com       |     General.BCCSP.Pkcs11Opts =
orderer.example.com       |     General.Authentication.TimeWindow = 15m0s
orderer.example.com       |     FileLedger.Location = "/var/hyperledger/production/orderer"
orderer.example.com       |     FileLedger.Prefix = "hyperledger-fabric-ordererledger"
orderer.example.com       |     RAMLedger.HistorySize = 1000
orderer.example.com       |     Kafka.Retry.ShortInterval = 5s
orderer.example.com       |     Kafka.Retry.ShortTotal = 10m0s
orderer.example.com       |     Kafka.Retry.LongInterval = 5m0s
orderer.example.com       |     Kafka.Retry.LongTotal = 12h0m0s
orderer.example.com       |     Kafka.Retry.NetworkTimeouts.DialTimeout = 10s
orderer.example.com       |     Kafka.Retry.NetworkTimeouts.ReadTimeout = 10s
orderer.example.com       |     Kafka.Retry.NetworkTimeouts.WriteTimeout = 10s
orderer.example.com       |     Kafka.Retry.Metadata.RetryMax = 3
orderer.example.com       |     Kafka.Retry.Metadata.RetryBackoff = 250ms
orderer.example.com       |     Kafka.Retry.Producer.RetryMax = 3
orderer.example.com       |     Kafka.Retry.Producer.RetryBackoff = 100ms
orderer.example.com       |     Kafka.Retry.Consumer.RetryBackoff = 2s
orderer.example.com       |     Kafka.Verbose = false
orderer.example.com       |     Kafka.Version = 0.10.2.0
orderer.example.com       |     Kafka.TLS.Enabled = false
orderer.example.com       |     Kafka.TLS.PrivateKey = ""
orderer.example.com       |     Kafka.TLS.Certificate = ""
orderer.example.com       |     Kafka.TLS.RootCAs = []
orderer.example.com       |     Kafka.TLS.ClientAuthRequired = false
orderer.example.com       |     Kafka.TLS.ClientRootCAs = []
orderer.example.com       |     Debug.BroadcastTraceDir = ""
orderer.example.com       |     Debug.DeliverTraceDir = ""
orderer.example.com       | 2020-01-13 15:55:11.643 UTC [orderer/common/server] initializeServerConfig -> INFO 002 Starting orderer with TLS enabled
orderer.example.com       | 2020-01-13 15:55:11.664 UTC [fsblkstorage] newBlockfileMgr -> INFO 003 Getting block information from block storage
peer0.org1.example.com    | 2020-01-13 15:55:10.912 UTC [msp] getMspConfig -> INFO 001 Loading NodeOUs
orderer.example.com       | 2020-01-13 15:55:11.735 UTC [orderer/commmon/multichannel] NewRegistrar -> INFO 004 Starting system channel 'testchainid' with genesis block hash eaaec7c4594a95effa4526d27697326f1b9d8a205cf18881ad77334c31e6f6bf and orderer type solo
peer0.org2.example.com    | 2020-01-13 15:55:11.531 UTC [nodeCmd] serve -> INFO 002 Starting peer:
peer0.org2.example.com    |  Version: 1.1.0
peer0.org2.example.com    |  Go version: go1.9.2
peer0.org2.example.com    |  OS/Arch: linux/amd64
peer0.org2.example.com    |  Experimental features: false
peer0.org2.example.com    |  Chaincode:
peer0.org2.example.com    |   Base Image Version: 0.4.6
peer0.org2.example.com    |   Base Docker Namespace: hyperledger
peer0.org2.example.com    |   Base Docker Label: org.hyperledger.fabric
peer0.org2.example.com    |   Docker Namespace: hyperledger
peer0.org2.example.com    | 
orderer.example.com       | 2020-01-13 15:55:11.735 UTC [orderer/common/server] Start -> INFO 005 Starting orderer:
orderer.example.com       |  Version: 1.1.0
orderer.example.com       |  Go version: go1.9.2
orderer.example.com       |  OS/Arch: linux/amd64
orderer.example.com       |  Experimental features: false
orderer.example.com       | 2020-01-13 15:55:11.735 UTC [orderer/common/server] Start -> INFO 006 Beginning to serve requests
peer0.org1.example.com    | 2020-01-13 15:55:11.004 UTC [nodeCmd] serve -> INFO 002 Starting peer:
peer0.org1.example.com    |  Version: 1.1.0
peer0.org1.example.com    |  Go version: go1.9.2
peer0.org1.example.com    |  OS/Arch: linux/amd64
peer0.org1.example.com    |  Experimental features: false
peer0.org1.example.com    |  Chaincode:
peer0.org1.example.com    |   Base Image Version: 0.4.6
peer0.org1.example.com    |   Base Docker Namespace: hyperledger
peer0.org1.example.com    |   Base Docker Label: org.hyperledger.fabric
peer0.org1.example.com    |   Docker Namespace: hyperledger
peer0.org1.example.com    | 
peer0.org1.example.com    | 2020-01-13 15:55:11.004 UTC [ledgermgmt] initialize -> INFO 003 Initializing ledger mgmt
peer0.org1.example.com    | 2020-01-13 15:55:11.004 UTC [kvledger] NewProvider -> INFO 004 Initializing ledger provider
peer1.org1.example.com    | 2020-01-13 15:55:11.188 UTC [msp] getMspConfig -> INFO 001 Loading NodeOUs
peer1.org1.example.com    | 2020-01-13 15:55:11.277 UTC [nodeCmd] serve -> INFO 002 Starting peer:
peer1.org1.example.com    |  Version: 1.1.0
peer1.org1.example.com    |  Go version: go1.9.2
peer1.org1.example.com    |  OS/Arch: linux/amd64
peer1.org1.example.com    |  Experimental features: false
peer1.org1.example.com    |  Chaincode:
peer1.org1.example.com    |   Base Image Version: 0.4.6
peer1.org1.example.com    |   Base Docker Namespace: hyperledger
peer1.org1.example.com    |   Base Docker Label: org.hyperledger.fabric
peer1.org1.example.com    |   Docker Namespace: hyperledger
peer1.org1.example.com    | 
peer0.org2.example.com    | 2020-01-13 15:55:11.531 UTC [ledgermgmt] initialize -> INFO 003 Initializing ledger mgmt
peer1.org2.example.com    | 2020-01-13 15:55:11.619 UTC [msp] getMspConfig -> INFO 001 Loading NodeOUs
peer1.org1.example.com    | 2020-01-13 15:55:11.277 UTC [ledgermgmt] initialize -> INFO 003 Initializing ledger mgmt
peer1.org1.example.com    | 2020-01-13 15:55:11.277 UTC [kvledger] NewProvider -> INFO 004 Initializing ledger provider
peer1.org1.example.com    | 2020-01-13 15:55:11.374 UTC [kvledger] NewProvider -> INFO 005 ledger provider Initialized
peer1.org1.example.com    | 2020-01-13 15:55:11.374 UTC [ledgermgmt] initialize -> INFO 006 ledger mgmt initialized
peer1.org1.example.com    | 2020-01-13 15:55:11.374 UTC [peer] func1 -> INFO 007 Auto-detected peer address: 172.30.0.3:7051
peer1.org1.example.com    | 2020-01-13 15:55:11.375 UTC [peer] func1 -> INFO 008 Returning peer1.org1.example.com:7051
peer1.org1.example.com    | 2020-01-13 15:55:11.375 UTC [peer] func1 -> INFO 009 Auto-detected peer address: 172.30.0.3:7051
peer1.org1.example.com    | 2020-01-13 15:55:11.375 UTC [peer] func1 -> INFO 00a Returning peer1.org1.example.com:7051
peer0.org1.example.com    | 2020-01-13 15:55:11.116 UTC [kvledger] NewProvider -> INFO 005 ledger provider Initialized
peer0.org1.example.com    | 2020-01-13 15:55:11.116 UTC [ledgermgmt] initialize -> INFO 006 ledger mgmt initialized
peer1.org2.example.com    | 2020-01-13 15:55:11.697 UTC [nodeCmd] serve -> INFO 002 Starting peer:
peer1.org2.example.com    |  Version: 1.1.0
peer1.org2.example.com    |  Go version: go1.9.2
peer1.org2.example.com    |  OS/Arch: linux/amd64
peer1.org2.example.com    |  Experimental features: false
peer1.org2.example.com    |  Chaincode:
peer1.org2.example.com    |   Base Image Version: 0.4.6
peer1.org2.example.com    |   Base Docker Namespace: hyperledger
peer1.org2.example.com    |   Base Docker Label: org.hyperledger.fabric
peer1.org2.example.com    |   Docker Namespace: hyperledger
peer1.org2.example.com    | 
peer0.org2.example.com    | 2020-01-13 15:55:11.531 UTC [kvledger] NewProvider -> INFO 004 Initializing ledger provider
peer1.org2.example.com    | 2020-01-13 15:55:11.697 UTC [ledgermgmt] initialize -> INFO 003 Initializing ledger mgmt
peer1.org2.example.com    | 2020-01-13 15:55:11.697 UTC [kvledger] NewProvider -> INFO 004 Initializing ledger provider
peer0.org2.example.com    | 2020-01-13 15:55:11.639 UTC [kvledger] NewProvider -> INFO 005 ledger provider Initialized
peer1.org1.example.com    | 2020-01-13 15:55:11.377 UTC [nodeCmd] serve -> INFO 00b Starting peer with TLS enabled
peer0.org2.example.com    | 2020-01-13 15:55:11.639 UTC [ledgermgmt] initialize -> INFO 006 ledger mgmt initialized
peer1.org2.example.com    | 2020-01-13 15:55:11.856 UTC [kvledger] NewProvider -> INFO 005 ledger provider Initialized
peer1.org2.example.com    | 2020-01-13 15:55:11.856 UTC [ledgermgmt] initialize -> INFO 006 ledger mgmt initialized
peer0.org2.example.com    | 2020-01-13 15:55:11.639 UTC [peer] func1 -> INFO 007 Auto-detected peer address: 172.30.0.4:7051
peer1.org1.example.com    | 2020-01-13 15:55:11.381 UTC [eventhub_producer] start -> INFO 00c Event processor started
peer1.org1.example.com    | 2020-01-13 15:55:11.382 UTC [nodeCmd] computeChaincodeEndpoint -> INFO 00d Entering computeChaincodeEndpoint with peerHostname: peer1.org1.example.com
peer1.org1.example.com    | 2020-01-13 15:55:11.383 UTC [nodeCmd] computeChaincodeEndpoint -> INFO 00e Exit with ccEndpoint: peer1.org1.example.com:7052
peer1.org1.example.com    | 2020-01-13 15:55:11.383 UTC [nodeCmd] createChaincodeServer -> WARN 00f peer.chaincodeListenAddress is not set, using peer1.org1.example.com:7052
peer0.org1.example.com    | 2020-01-13 15:55:11.116 UTC [peer] func1 -> INFO 007 Auto-detected peer address: 172.30.0.2:7051
peer0.org2.example.com    | 2020-01-13 15:55:11.640 UTC [peer] func1 -> INFO 008 Returning peer0.org2.example.com:7051
peer1.org2.example.com    | 2020-01-13 15:55:11.856 UTC [peer] func1 -> INFO 007 Auto-detected peer address: 172.30.0.6:7051
peer1.org1.example.com    | 2020-01-13 15:55:11.393 UTC [chaincode] NewChaincodeSupport -> INFO 010 Chaincode support using peerAddress: peer1.org1.example.com:7052
peer1.org2.example.com    | 2020-01-13 15:55:11.857 UTC [peer] func1 -> INFO 008 Returning peer1.org2.example.com:7051
peer0.org1.example.com    | 2020-01-13 15:55:11.120 UTC [peer] func1 -> INFO 008 Returning peer0.org1.example.com:7051
peer0.org1.example.com    | 2020-01-13 15:55:11.120 UTC [peer] func1 -> INFO 009 Auto-detected peer address: 172.30.0.2:7051
peer1.org2.example.com    | 2020-01-13 15:55:11.857 UTC [peer] func1 -> INFO 009 Auto-detected peer address: 172.30.0.6:7051
peer1.org1.example.com    | 2020-01-13 15:55:11.394 UTC [sccapi] registerSysCC -> INFO 011 system chaincode cscc(github.com/hyperledger/fabric/core/scc/cscc) registered
peer1.org1.example.com    | 2020-01-13 15:55:11.394 UTC [sccapi] registerSysCC -> INFO 012 system chaincode lscc(github.com/hyperledger/fabric/core/scc/lscc) registered
peer1.org1.example.com    | 2020-01-13 15:55:11.394 UTC [sccapi] registerSysCC -> INFO 013 system chaincode escc(github.com/hyperledger/fabric/core/scc/escc) registered
peer1.org1.example.com    | 2020-01-13 15:55:11.394 UTC [sccapi] registerSysCC -> INFO 014 system chaincode vscc(github.com/hyperledger/fabric/core/scc/vscc) registered
peer1.org1.example.com    | 2020-01-13 15:55:11.394 UTC [sccapi] registerSysCC -> INFO 015 system chaincode qscc(github.com/hyperledger/fabric/core/chaincode/qscc) registered
peer0.org2.example.com    | 2020-01-13 15:55:11.640 UTC [peer] func1 -> INFO 009 Auto-detected peer address: 172.30.0.4:7051
peer0.org1.example.com    | 2020-01-13 15:55:11.121 UTC [peer] func1 -> INFO 00a Returning peer0.org1.example.com:7051
peer0.org2.example.com    | 2020-01-13 15:55:11.640 UTC [peer] func1 -> INFO 00a Returning peer0.org2.example.com:7051
peer1.org1.example.com    | 2020-01-13 15:55:11.398 UTC [gossip/service] func1 -> INFO 016 Initialize gossip with endpoint peer1.org1.example.com:7051 and bootstrap set [peer0.org1.example.com:7051]
peer0.org1.example.com    | 2020-01-13 15:55:11.123 UTC [nodeCmd] serve -> INFO 00b Starting peer with TLS enabled
peer0.org1.example.com    | 2020-01-13 15:55:11.129 UTC [eventhub_producer] start -> INFO 00c Event processor started
peer0.org1.example.com    | 2020-01-13 15:55:11.130 UTC [nodeCmd] computeChaincodeEndpoint -> INFO 00d Entering computeChaincodeEndpoint with peerHostname: peer0.org1.example.com
peer0.org1.example.com    | 2020-01-13 15:55:11.130 UTC [nodeCmd] computeChaincodeEndpoint -> INFO 00e Exit with ccEndpoint: peer0.org1.example.com:7052
peer1.org2.example.com    | 2020-01-13 15:55:11.857 UTC [peer] func1 -> INFO 00a Returning peer1.org2.example.com:7051
peer1.org1.example.com    | 2020-01-13 15:55:11.403 UTC [msp] DeserializeIdentity -> INFO 017 Obtaining identity
peer0.org2.example.com    | 2020-01-13 15:55:11.643 UTC [nodeCmd] serve -> INFO 00b Starting peer with TLS enabled
peer1.org1.example.com    | 2020-01-13 15:55:11.409 UTC [gossip/discovery] NewDiscoveryService -> INFO 018 Started {peer1.org1.example.com:7051 [] [49 143 218 110 6 23 131 50 148 148 230 200 208 172 165 194 67 16 230 217 46 113 83 234 170 54 224 92 139 28 72 74] peer1.org1.example.com:7051 <nil>} incTime is 1578930911408702039
peer1.org1.example.com    | 2020-01-13 15:55:11.409 UTC [gossip/gossip] NewGossipService -> INFO 019 Creating gossip service with self membership of {peer1.org1.example.com:7051 [] [49 143 218 110 6 23 131 50 148 148 230 200 208 172 165 194 67 16 230 217 46 113 83 234 170 54 224 92 139 28 72 74] peer1.org1.example.com:7051 <nil>}
peer0.org1.example.com    | 2020-01-13 15:55:11.131 UTC [nodeCmd] createChaincodeServer -> WARN 00f peer.chaincodeListenAddress is not set, using peer0.org1.example.com:7052
peer0.org2.example.com    | 2020-01-13 15:55:11.648 UTC [eventhub_producer] start -> INFO 00c Event processor started
peer1.org2.example.com    | 2020-01-13 15:55:11.860 UTC [nodeCmd] serve -> INFO 00b Starting peer with TLS enabled
peer0.org2.example.com    | 2020-01-13 15:55:11.649 UTC [nodeCmd] computeChaincodeEndpoint -> INFO 00d Entering computeChaincodeEndpoint with peerHostname: peer0.org2.example.com
peer1.org2.example.com    | 2020-01-13 15:55:11.864 UTC [eventhub_producer] start -> INFO 00c Event processor started
peer0.org2.example.com    | 2020-01-13 15:55:11.649 UTC [nodeCmd] computeChaincodeEndpoint -> INFO 00e Exit with ccEndpoint: peer0.org2.example.com:7052
peer1.org2.example.com    | 2020-01-13 15:55:11.865 UTC [nodeCmd] computeChaincodeEndpoint -> INFO 00d Entering computeChaincodeEndpoint with peerHostname: peer1.org2.example.com
peer0.org1.example.com    | 2020-01-13 15:55:11.141 UTC [chaincode] NewChaincodeSupport -> INFO 010 Chaincode support using peerAddress: peer0.org1.example.com:7052
peer1.org1.example.com    | 2020-01-13 15:55:11.418 UTC [gossip/gossip] start -> INFO 01a Gossip instance peer1.org1.example.com:7051 started
peer1.org1.example.com    | 2020-01-13 15:55:11.420 UTC [cscc] Init -> INFO 01b Init CSCC
peer1.org1.example.com    | 2020-01-13 15:55:11.420 UTC [sccapi] deploySysCC -> INFO 01c system chaincode cscc/(github.com/hyperledger/fabric/core/scc/cscc) deployed
peer0.org1.example.com    | 2020-01-13 15:55:11.145 UTC [sccapi] registerSysCC -> INFO 011 system chaincode cscc(github.com/hyperledger/fabric/core/scc/cscc) registered
peer0.org1.example.com    | 2020-01-13 15:55:11.145 UTC [sccapi] registerSysCC -> INFO 012 system chaincode lscc(github.com/hyperledger/fabric/core/scc/lscc) registered
peer0.org1.example.com    | 2020-01-13 15:55:11.145 UTC [sccapi] registerSysCC -> INFO 013 system chaincode escc(github.com/hyperledger/fabric/core/scc/escc) registered
peer0.org1.example.com    | 2020-01-13 15:55:11.145 UTC [sccapi] registerSysCC -> INFO 014 system chaincode vscc(github.com/hyperledger/fabric/core/scc/vscc) registered
peer0.org1.example.com    | 2020-01-13 15:55:11.145 UTC [sccapi] registerSysCC -> INFO 015 system chaincode qscc(github.com/hyperledger/fabric/core/chaincode/qscc) registered
peer0.org1.example.com    | 2020-01-13 15:55:11.149 UTC [gossip/service] func1 -> INFO 016 Initialize gossip with endpoint peer0.org1.example.com:7051 and bootstrap set [peer1.org1.example.com:7051]
peer1.org1.example.com    | 2020-01-13 15:55:11.423 UTC [sccapi] deploySysCC -> INFO 01d system chaincode lscc/(github.com/hyperledger/fabric/core/scc/lscc) deployed
peer1.org2.example.com    | 2020-01-13 15:55:11.865 UTC [nodeCmd] computeChaincodeEndpoint -> INFO 00e Exit with ccEndpoint: peer1.org2.example.com:7052
peer0.org2.example.com    | 2020-01-13 15:55:11.650 UTC [nodeCmd] createChaincodeServer -> WARN 00f peer.chaincodeListenAddress is not set, using peer0.org2.example.com:7052
peer1.org1.example.com    | 2020-01-13 15:55:11.424 UTC [escc] Init -> INFO 01e Successfully initialized ESCC
peer1.org1.example.com    | 2020-01-13 15:55:11.424 UTC [sccapi] deploySysCC -> INFO 01f system chaincode escc/(github.com/hyperledger/fabric/core/scc/escc) deployed
peer1.org2.example.com    | 2020-01-13 15:55:11.866 UTC [nodeCmd] createChaincodeServer -> WARN 00f peer.chaincodeListenAddress is not set, using peer1.org2.example.com:7052
peer0.org2.example.com    | 2020-01-13 15:55:11.654 UTC [chaincode] NewChaincodeSupport -> INFO 010 Chaincode support using peerAddress: peer0.org2.example.com:7052
peer0.org1.example.com    | 2020-01-13 15:55:11.162 UTC [msp] DeserializeIdentity -> INFO 017 Obtaining identity
peer1.org2.example.com    | 2020-01-13 15:55:11.870 UTC [chaincode] NewChaincodeSupport -> INFO 010 Chaincode support using peerAddress: peer1.org2.example.com:7052
peer1.org1.example.com    | 2020-01-13 15:55:11.426 UTC [sccapi] deploySysCC -> INFO 020 system chaincode vscc/(github.com/hyperledger/fabric/core/scc/vscc) deployed
peer0.org1.example.com    | 2020-01-13 15:55:11.168 UTC [gossip/discovery] NewDiscoveryService -> INFO 018 Started {peer0.org1.example.com:7051 [] [87 211 211 52 22 106 14 200 131 204 225 116 164 172 138 208 148 23 136 130 230 136 190 117 127 14 100 179 140 197 132 4] peer0.org1.example.com:7051 <nil>} incTime is 1578930911166966238
peer0.org1.example.com    | 2020-01-13 15:55:11.168 UTC [gossip/gossip] NewGossipService -> INFO 019 Creating gossip service with self membership of {peer0.org1.example.com:7051 [] [87 211 211 52 22 106 14 200 131 204 225 116 164 172 138 208 148 23 136 130 230 136 190 117 127 14 100 179 140 197 132 4] peer0.org1.example.com:7051 <nil>}
peer1.org1.example.com    | 2020-01-13 15:55:11.430 UTC [qscc] Init -> INFO 021 Init QSCC
peer1.org1.example.com    | 2020-01-13 15:55:11.430 UTC [sccapi] deploySysCC -> INFO 022 system chaincode qscc/(github.com/hyperledger/fabric/core/chaincode/qscc) deployed
peer1.org1.example.com    | 2020-01-13 15:55:11.430 UTC [nodeCmd] initSysCCs -> INFO 023 Deployed system chaincodes
peer1.org2.example.com    | 2020-01-13 15:55:11.871 UTC [sccapi] registerSysCC -> INFO 011 system chaincode cscc(github.com/hyperledger/fabric/core/scc/cscc) registered
peer1.org1.example.com    | 2020-01-13 15:55:11.431 UTC [nodeCmd] serve -> INFO 024 Starting peer with ID=[name:"peer1.org1.example.com" ], network ID=[dev], address=[peer1.org1.example.com:7051]
peer1.org2.example.com    | 2020-01-13 15:55:11.871 UTC [sccapi] registerSysCC -> INFO 012 system chaincode lscc(github.com/hyperledger/fabric/core/scc/lscc) registered
peer1.org1.example.com    | 2020-01-13 15:55:11.432 UTC [nodeCmd] serve -> INFO 025 Started peer with ID=[name:"peer1.org1.example.com" ], network ID=[dev], address=[peer1.org1.example.com:7051]
peer1.org1.example.com    | 2020-01-13 15:55:11.432 UTC [nodeCmd] func7 -> INFO 026 Starting profiling server with listenAddress = 0.0.0.0:6060
peer0.org2.example.com    | 2020-01-13 15:55:11.655 UTC [sccapi] registerSysCC -> INFO 011 system chaincode cscc(github.com/hyperledger/fabric/core/scc/cscc) registered
peer0.org1.example.com    | 2020-01-13 15:55:11.177 UTC [gossip/gossip] start -> INFO 01a Gossip instance peer0.org1.example.com:7051 started
peer0.org1.example.com    | 2020-01-13 15:55:11.178 UTC [cscc] Init -> INFO 01b Init CSCC
peer0.org1.example.com    | 2020-01-13 15:55:11.178 UTC [sccapi] deploySysCC -> INFO 01c system chaincode cscc/(github.com/hyperledger/fabric/core/scc/cscc) deployed
peer0.org2.example.com    | 2020-01-13 15:55:11.655 UTC [sccapi] registerSysCC -> INFO 012 system chaincode lscc(github.com/hyperledger/fabric/core/scc/lscc) registered
peer0.org1.example.com    | 2020-01-13 15:55:11.181 UTC [sccapi] deploySysCC -> INFO 01d system chaincode lscc/(github.com/hyperledger/fabric/core/scc/lscc) deployed
peer0.org2.example.com    | 2020-01-13 15:55:11.655 UTC [sccapi] registerSysCC -> INFO 013 system chaincode escc(github.com/hyperledger/fabric/core/scc/escc) registered
peer0.org1.example.com    | 2020-01-13 15:55:11.183 UTC [escc] Init -> INFO 01e Successfully initialized ESCC
peer0.org1.example.com    | 2020-01-13 15:55:11.183 UTC [sccapi] deploySysCC -> INFO 01f system chaincode escc/(github.com/hyperledger/fabric/core/scc/escc) deployed
peer0.org1.example.com    | 2020-01-13 15:55:11.185 UTC [sccapi] deploySysCC -> INFO 020 system chaincode vscc/(github.com/hyperledger/fabric/core/scc/vscc) deployed
peer1.org2.example.com    | 2020-01-13 15:55:11.871 UTC [sccapi] registerSysCC -> INFO 013 system chaincode escc(github.com/hyperledger/fabric/core/scc/escc) registered
peer1.org2.example.com    | 2020-01-13 15:55:11.872 UTC [sccapi] registerSysCC -> INFO 014 system chaincode vscc(github.com/hyperledger/fabric/core/scc/vscc) registered
peer0.org2.example.com    | 2020-01-13 15:55:11.655 UTC [sccapi] registerSysCC -> INFO 014 system chaincode vscc(github.com/hyperledger/fabric/core/scc/vscc) registered
peer0.org2.example.com    | 2020-01-13 15:55:11.656 UTC [sccapi] registerSysCC -> INFO 015 system chaincode qscc(github.com/hyperledger/fabric/core/chaincode/qscc) registered
peer0.org1.example.com    | 2020-01-13 15:55:11.187 UTC [qscc] Init -> INFO 021 Init QSCC
peer0.org1.example.com    | 2020-01-13 15:55:11.187 UTC [sccapi] deploySysCC -> INFO 022 system chaincode qscc/(github.com/hyperledger/fabric/core/chaincode/qscc) deployed
peer0.org1.example.com    | 2020-01-13 15:55:11.187 UTC [nodeCmd] initSysCCs -> INFO 023 Deployed system chaincodes
peer0.org2.example.com    | 2020-01-13 15:55:11.658 UTC [gossip/service] func1 -> INFO 016 Initialize gossip with endpoint peer0.org2.example.com:7051 and bootstrap set [peer1.org2.example.com:7051]
peer0.org1.example.com    | 2020-01-13 15:55:11.190 UTC [nodeCmd] serve -> INFO 024 Starting peer with ID=[name:"peer0.org1.example.com" ], network ID=[dev], address=[peer0.org1.example.com:7051]
peer0.org1.example.com    | 2020-01-13 15:55:11.191 UTC [nodeCmd] serve -> INFO 025 Started peer with ID=[name:"peer0.org1.example.com" ], network ID=[dev], address=[peer0.org1.example.com:7051]
peer1.org2.example.com    | 2020-01-13 15:55:11.872 UTC [sccapi] registerSysCC -> INFO 015 system chaincode qscc(github.com/hyperledger/fabric/core/chaincode/qscc) registered
peer0.org1.example.com    | 2020-01-13 15:55:11.192 UTC [nodeCmd] func7 -> INFO 026 Starting profiling server with listenAddress = 0.0.0.0:6060
peer0.org2.example.com    | 2020-01-13 15:55:11.663 UTC [msp] DeserializeIdentity -> INFO 017 Obtaining identity
peer1.org2.example.com    | 2020-01-13 15:55:11.875 UTC [gossip/service] func1 -> INFO 016 Initialize gossip with endpoint peer1.org2.example.com:7051 and bootstrap set [peer0.org2.example.com:7051]
peer0.org2.example.com    | 2020-01-13 15:55:11.668 UTC [gossip/discovery] NewDiscoveryService -> INFO 018 Started {peer0.org2.example.com:7051 [] [199 92 79 153 170 228 25 89 46 104 76 191 172 124 27 212 112 158 60 3 126 180 28 173 235 121 214 23 87 211 241 157] peer0.org2.example.com:7051 <nil>} incTime is 1578930911667293966
peer0.org2.example.com    | 2020-01-13 15:55:11.670 UTC [gossip/gossip] NewGossipService -> INFO 019 Creating gossip service with self membership of {peer0.org2.example.com:7051 [] [199 92 79 153 170 228 25 89 46 104 76 191 172 124 27 212 112 158 60 3 126 180 28 173 235 121 214 23 87 211 241 157] peer0.org2.example.com:7051 <nil>}
peer1.org2.example.com    | 2020-01-13 15:55:11.880 UTC [msp] DeserializeIdentity -> INFO 017 Obtaining identity
peer1.org2.example.com    | 2020-01-13 15:55:11.885 UTC [gossip/discovery] NewDiscoveryService -> INFO 018 Started {peer1.org2.example.com:7051 [] [198 157 145 54 160 118 194 235 137 134 179 60 153 144 168 70 67 73 212 14 27 36 142 242 212 67 45 207 175 28 85 70] peer1.org2.example.com:7051 <nil>} incTime is 1578930911884767464
peer1.org2.example.com    | 2020-01-13 15:55:11.885 UTC [gossip/gossip] NewGossipService -> INFO 019 Creating gossip service with self membership of {peer1.org2.example.com:7051 [] [198 157 145 54 160 118 194 235 137 134 179 60 153 144 168 70 67 73 212 14 27 36 142 242 212 67 45 207 175 28 85 70] peer1.org2.example.com:7051 <nil>}
peer0.org2.example.com    | 2020-01-13 15:55:11.674 UTC [gossip/gossip] start -> INFO 01a Gossip instance peer0.org2.example.com:7051 started
peer1.org2.example.com    | 2020-01-13 15:55:11.889 UTC [gossip/gossip] start -> INFO 01a Gossip instance peer1.org2.example.com:7051 started
peer1.org2.example.com    | 2020-01-13 15:55:11.891 UTC [cscc] Init -> INFO 01b Init CSCC
peer0.org2.example.com    | 2020-01-13 15:55:11.677 UTC [cscc] Init -> INFO 01b Init CSCC
peer0.org2.example.com    | 2020-01-13 15:55:11.678 UTC [sccapi] deploySysCC -> INFO 01c system chaincode cscc/(github.com/hyperledger/fabric/core/scc/cscc) deployed
peer0.org2.example.com    | 2020-01-13 15:55:11.680 UTC [sccapi] deploySysCC -> INFO 01d system chaincode lscc/(github.com/hyperledger/fabric/core/scc/lscc) deployed
peer0.org2.example.com    | 2020-01-13 15:55:11.682 UTC [escc] Init -> INFO 01e Successfully initialized ESCC
peer0.org2.example.com    | 2020-01-13 15:55:11.682 UTC [sccapi] deploySysCC -> INFO 01f system chaincode escc/(github.com/hyperledger/fabric/core/scc/escc) deployed
peer0.org2.example.com    | 2020-01-13 15:55:11.684 UTC [sccapi] deploySysCC -> INFO 020 system chaincode vscc/(github.com/hyperledger/fabric/core/scc/vscc) deployed
peer0.org2.example.com    | 2020-01-13 15:55:11.685 UTC [qscc] Init -> INFO 021 Init QSCC
peer0.org2.example.com    | 2020-01-13 15:55:11.685 UTC [sccapi] deploySysCC -> INFO 022 system chaincode qscc/(github.com/hyperledger/fabric/core/chaincode/qscc) deployed
peer0.org2.example.com    | 2020-01-13 15:55:11.685 UTC [nodeCmd] initSysCCs -> INFO 023 Deployed system chaincodes
peer1.org2.example.com    | 2020-01-13 15:55:11.892 UTC [sccapi] deploySysCC -> INFO 01c system chaincode cscc/(github.com/hyperledger/fabric/core/scc/cscc) deployed
peer0.org2.example.com    | 2020-01-13 15:55:11.686 UTC [nodeCmd] serve -> INFO 024 Starting peer with ID=[name:"peer0.org2.example.com" ], network ID=[dev], address=[peer0.org2.example.com:7051]
peer0.org2.example.com    | 2020-01-13 15:55:11.687 UTC [nodeCmd] serve -> INFO 025 Started peer with ID=[name:"peer0.org2.example.com" ], network ID=[dev], address=[peer0.org2.example.com:7051]
peer0.org2.example.com    | 2020-01-13 15:55:11.688 UTC [nodeCmd] func7 -> INFO 026 Starting profiling server with listenAddress = 0.0.0.0:6060
peer1.org2.example.com    | 2020-01-13 15:55:11.894 UTC [sccapi] deploySysCC -> INFO 01d system chaincode lscc/(github.com/hyperledger/fabric/core/scc/lscc) deployed
peer1.org2.example.com    | 2020-01-13 15:55:11.896 UTC [escc] Init -> INFO 01e Successfully initialized ESCC
peer1.org2.example.com    | 2020-01-13 15:55:11.896 UTC [sccapi] deploySysCC -> INFO 01f system chaincode escc/(github.com/hyperledger/fabric/core/scc/escc) deployed
peer1.org2.example.com    | 2020-01-13 15:55:11.898 UTC [sccapi] deploySysCC -> INFO 020 system chaincode vscc/(github.com/hyperledger/fabric/core/scc/vscc) deployed
peer1.org2.example.com    | 2020-01-13 15:55:11.899 UTC [qscc] Init -> INFO 021 Init QSCC
peer1.org2.example.com    | 2020-01-13 15:55:11.900 UTC [sccapi] deploySysCC -> INFO 022 system chaincode qscc/(github.com/hyperledger/fabric/core/chaincode/qscc) deployed
peer1.org2.example.com    | 2020-01-13 15:55:11.900 UTC [nodeCmd] initSysCCs -> INFO 023 Deployed system chaincodes
peer1.org2.example.com    | 2020-01-13 15:55:11.901 UTC [nodeCmd] serve -> INFO 024 Starting peer with ID=[name:"peer1.org2.example.com" ], network ID=[dev], address=[peer1.org2.example.com:7051]
peer1.org2.example.com    | 2020-01-13 15:55:11.901 UTC [msp] DeserializeIdentity -> INFO 025 Obtaining identity
peer1.org2.example.com    | 2020-01-13 15:55:11.902 UTC [nodeCmd] serve -> INFO 026 Started peer with ID=[name:"peer1.org2.example.com" ], network ID=[dev], address=[peer1.org2.example.com:7051]
peer1.org2.example.com    | 2020-01-13 15:55:11.904 UTC [nodeCmd] func7 -> INFO 027 Starting profiling server with listenAddress = 0.0.0.0:6060

启动完毕,我们再打开一个会话,查看容器

[root@localhost first-network]# docker-compose -f docker-compose-cli.yaml ps
         Name                Command       State                        Ports                      
---------------------------------------------------------------------------------------------------
cli                      /bin/bash         Up                                                      
orderer.example.com      orderer           Up      0.0.0.0:7050->7050/tcp                          
peer0.org1.example.com   peer node start   Up      0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp  
peer0.org2.example.com   peer node start   Up      0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp  
peer1.org1.example.com   peer node start   Up      0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp  
peer1.org2.example.com   peer node start   Up      0.0.0.0:10051->7051/tcp, 0.0.0.0:10053->7053/tcp
[root@localhost first-network]# 

可以看到所有节点启动成功。

三、进入cli容器中,执行创建channel,加入channel,以及部署调用chaincode等操作

[root@localhost ~]# docker exec -it cli bash
root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer#

首先需要配置ORDERER_CA环境变量指向Order节点的证书路径

echo "export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem">>/etc/profile
source /etc/profile
echo $ORDERER_CA
/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem

四、创建channel

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel create -o orderer.example.com:7050 -c firstchannel -f channel-artifacts/channel.tx --tls true --cafile $ORDERER_CA
2020-01-14 01:36:18.629 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-01-14 01:36:18.703 UTC [channelCmd] InitCmdFactory -> INFO 002 Endorser and orderer connections initialized
2020-01-14 01:36:18.909 UTC [main] main -> INFO 003 Exiting.....
root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# 

查看之前启动网络的会话窗口,可以看到一些打印的相关日志

orderer.example.com       | 2020-01-14 01:36:18.653 UTC [msp] DeserializeIdentity -> INFO 007 Obtaining identity
orderer.example.com       | 2020-01-14 01:36:18.657 UTC [msp] DeserializeIdentity -> INFO 008 Obtaining identity
orderer.example.com       | 2020-01-14 01:36:18.679 UTC [msp] DeserializeIdentity -> INFO 009 Obtaining identity
orderer.example.com       | 2020-01-14 01:36:18.708 UTC [fsblkstorage] newBlockfileMgr -> INFO 00a Getting block information from block storage
orderer.example.com       | 2020-01-14 01:36:18.751 UTC [orderer/commmon/multichannel] newChain -> INFO 00b Created and starting new chain firstchannel
orderer.example.com       | 2020-01-14 01:36:18.905 UTC [msp] DeserializeIdentity -> INFO 00c Obtaining identity

将生成的firstchammel.block文件移动到channel-artifacts下

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# mv firstchannel.block channel-artifacts/

五、将peer加入channel

因为当前cli容器默认配置为peer0配置,所以可以直接使用peer channel join 将org1的peer0加入channel

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel join -b channel-artifacts/firstchannel.block 
2020-01-14 01:44:15.756 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-01-14 01:44:15.944 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
2020-01-14 01:44:15.944 UTC [main] main -> INFO 003 Exiting.....

然后查看$CORE_PEER_ADDRESS变量值

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# echo $CORE_PEER_ADDRESS
peer0.org1.example.com:7051

当前是org1的peer0,我们设置为org1的peer1

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# CORE_PEER_ADDRESS=peer1.org1.example.com:7051  
root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# echo $CORE_PEER_ADDRESS
peer1.org1.example.com:7051

再次执行peer channel join 将org1的peer1加入channel

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel join -b channel-artifacts/firstchannel.block 
2020-01-14 02:03:26.240 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-01-14 02:03:26.413 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
2020-01-14 02:03:26.413 UTC [main] main -> INFO 003 Exiting.....

设置org2环境变量

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# CORE_PEER_LOCALMSPID=Org2MSP
root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin\@org2.example.com/msp/

设置org2的peer0环境变量

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# CORE_PEER_ADDRESS=peer0.org2.example.com:7051

将org2的peer0加入channel

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel join -b channel-artifacts/firstchannel.block 
2020-01-14 02:13:45.975 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-01-14 02:13:46.146 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
2020-01-14 02:13:46.146 UTC [main] main -> INFO 003 Exiting.....

设置org2的peer1环境变量,将org2的peer2加入channel

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# CORE_PEER_ADDRESS=peer1.org2.example.com:7051
root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel join -b channel-artifacts/firstchannel.block 
2020-01-14 02:15:04.296 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-01-14 02:15:04.467 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
2020-01-14 02:15:04.467 UTC [main] main -> INFO 003 Exiting.....

六、更新channel的锚节点

首先推出cli容器,重新进入,要不在执行channel update时会报错

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# exit
[root@localhost ~]# docker exec -it cli bash

设置ORDERER_CA环境变量

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem
root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# echo $ORDERER_CA
/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem

根据channel-artifacts/Org1MSPanchors.tx的配置,更新org1锚节点

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel update -o orderer.example.com:7050 -c firstchannel -f channel-artifacts/Org1MSPanchors.tx --tls true --cafile $ORDERER_CA 
2020-01-14 02:26:39.195 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-01-14 02:26:39.225 UTC [channelCmd] update -> INFO 002 Successfully submitted channel update
2020-01-14 02:26:39.226 UTC [main] main -> INFO 003 Exiting.....

根据channel-artifacts/Org2MSPanchors.tx的配置,更新org2锚节点

七、安装chaincode

首先进入/opt/gopath/src目录

root@063be0d1e577:/opt/gopath/src# cd /opt/gopath/src/

运行peer chaincode install 安装指定路径的chaincode 

root@063be0d1e577:/opt/gopath/src# peer chaincode install -n firstchaincode -v 1.0 -p github.com/chaincode/chaincode_example02/go/
2020-01-14 02:42:56.619 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2020-01-14 02:42:56.619 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2020-01-14 02:42:56.959 UTC [main] main -> INFO 003 Exiting.....

八、初始化chaincode

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode instantiate -C firstchannel -o orderer.example.com:7050 --tls true --cafile $ORDERER_CA -n firstchaincode -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')" 
2020-01-14 03:00:04.529 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2020-01-14 03:00:04.529 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2020-01-14 03:00:05.828 UTC [main] main -> INFO 003 Exiting.....

我们可以利用peer channel getinfo查看区块的信息

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel getinfo -c firstchannel
2020-01-14 03:00:48.750 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
Blockchain info: {"height":2,"currentBlockHash":"8TDJk6susa1+CkXIBunpS/AxdtdY8sOpgCRaxIW36uQ=","previousBlockHash":"wuhlnYUPDfG+Zv5kRcQk7CxhpumtJmiuWtd4t90SGzo="}
2020-01-14 03:00:48.757 UTC [main] main -> INFO 002 Exiting.....

目前区块高度为2,因为我们初始化chaincode的交易,需要通过order节点进行排序验证并写入到区块中。

九、调用chaincode

首先指定查询账户方法

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C firstchannel -n firstchaincode -c '{"Args":["query","a"]}'
2020-01-14 03:04:23.567 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2020-01-14 03:04:23.567 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
Query Result: 100
2020-01-14 03:04:23.579 UTC [main] main -> INFO 003 Exiting.....

已经正确返回了账户a的余额为100

执行转账方法,a往b转50

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode invoke -C firstchannel -o orderer.example.com:7050 --tls true --cafile $ORDERER_CA -n firstchaincode -c '{"Args":["invoke","a","b","50"]}'
2020-01-14 03:10:01.320 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2020-01-14 03:10:01.321 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2020-01-14 03:10:01.337 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 003 Chaincode invoke successful. result: status:200 
2020-01-14 03:10:01.338 UTC [main] main -> INFO 004 Exiting.....

执行完毕,我们再次查询账户

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C firstchannel -n firstchaincode -c '{"Args":["query","a"]}'
2020-01-14 03:15:44.169 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2020-01-14 03:15:44.169 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
Query Result: 50
2020-01-14 03:15:44.180 UTC [main] main -> INFO 003 Exiting.....

账户a余额变为50

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C firstchannel -n firstchaincode -c '{"Args":["query","b"]}' 
2020-01-14 03:16:06.017 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2020-01-14 03:16:06.017 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
Query Result: 250
2020-01-14 03:16:06.028 UTC [main] main -> INFO 003 Exiting.....

账户b余额变为250

查看区块信息

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel getinfo -c firstchannel
2020-01-14 03:16:42.453 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
Blockchain info: {"height":3,"currentBlockHash":"TrH17UFC7yILhxvVS02kF9dy4eG9x/+t1tsah3dMhfY=","previousBlockHash":"8TDJk6susa1+CkXIBunpS/AxdtdY8sOpgCRaxIW36uQ="}
2020-01-14 03:16:42.459 UTC [main] main -> INFO 002 Exiting.....

当前区块高度为3,说明刚才的转账交易已经打包到区块中。

十、关闭网络

退出cli容器ctrl+d

root@063be0d1e577:/opt/gopath/src/github.com/hyperledger/fabric/peer# exit
[root@localhost ~]# 

回到启动网络会话窗口,ctrl+c退出

peer0.org1.example.com    | 2020-01-14 03:00:07.951 UTC [kvledger] CommitWithPvtData -> INFO 036 Channel [firstchannel]: Committed block [2] with 1 transaction(s)
peer0.org2.example.com    | 2020-01-14 03:00:07.987 UTC [kvledger] CommitWithPvtData -> INFO 03e Channel [firstchannel]: Committed block [2] with 1 transaction(s)
peer1.org1.example.com    | 2020-01-14 03:00:07.993 UTC [kvledger] CommitWithPvtData -> INFO 03d Channel [firstchannel]: Committed block [2] with 1 transaction(s)
peer1.org2.example.com    | 2020-01-14 03:00:08.083 UTC [kvledger] CommitWithPvtData -> INFO 039 Channel [firstchannel]: Committed block [2] with 1 transaction(s)
peer0.org1.example.com    | 2020-01-14 03:10:03.481 UTC [kvledger] CommitWithPvtData -> INFO 037 Channel [firstchannel]: Committed block [3] with 1 transaction(s)
peer1.org2.example.com    | 2020-01-14 03:10:03.487 UTC [kvledger] CommitWithPvtData -> INFO 03a Channel [firstchannel]: Committed block [3] with 1 transaction(s)
peer1.org1.example.com    | 2020-01-14 03:10:03.529 UTC [kvledger] CommitWithPvtData -> INFO 03e Channel [firstchannel]: Committed block [3] with 1 transaction(s)
peer0.org2.example.com    | 2020-01-14 03:10:03.529 UTC [kvledger] CommitWithPvtData -> INFO 03f Channel [firstchannel]: Committed block [3] with 1 transaction(s)
^CGracefully stopping... (press Ctrl+C again to force)
Stopping cli                    ... done
Stopping peer0.org2.example.com ... done
Stopping peer0.org1.example.com ... done
Stopping peer1.org1.example.com ... done
Stopping peer1.org2.example.com ... done
Stopping orderer.example.com    ... done
[root@localhost first-network]# 

执行 ./byfn.sh -m down 关闭网络

[root@localhost first-network]# ./byfn.sh -m down -c firstchannle 
Stopping with channel 'firstchannle' and CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] y
proceeding ...
Removing cli                    ... done
Removing peer0.org2.example.com ... done
Removing peer0.org1.example.com ... done
Removing peer1.org1.example.com ... done
Removing peer1.org2.example.com ... done
Removing orderer.example.com    ... done
Removing network net_byfn
Removing volume net_orderer.example.com
Removing volume net_peer0.org1.example.com
Removing volume net_peer1.org1.example.com
Removing volume net_peer0.org2.example.com
Removing volume net_peer1.org2.example.com
Removing network net_byfn
WARNING: Network net_byfn not found.
Removing volume net_orderer.example.com
WARNING: Volume net_orderer.example.com not found.
Removing volume net_peer0.org1.example.com
WARNING: Volume net_peer0.org1.example.com not found.
Removing volume net_peer1.org1.example.com
WARNING: Volume net_peer1.org1.example.com not found.
Removing volume net_peer0.org2.example.com
WARNING: Volume net_peer0.org2.example.com not found.
Removing volume net_peer1.org2.example.com
WARNING: Volume net_peer1.org2.example.com not found.
2663f56a8139
Untagged: dev-peer0.org1.example.com-firstchaincode-1.0-4a20ed69acba5d93a9acbf40435c399617eeab82ff9b27ed64a73f4a730f1bdf:latest
Deleted: sha256:fdf54013ae4e0c4b4a4c8166bf546b51cf31df159e5bce9d03cdf35a82e649ff
Deleted: sha256:9db1bf27e5e962bb0e83b883e2ccce7e1071f230d54a9c762cb471cf12e1b81d
Deleted: sha256:0a8743e4a2040e9dffd0d35c5045aaf1d2b1df5ff0dfa4dbe4da0f2d9ce82780
Deleted: sha256:59b158e422154fb81cf4e267929dc7e013c3a7e48d7dbc6346afd07d08fdbcde
Error: No such image: 113a43faa138
[root@localhost first-network]# 

查看容器

[root@localhost first-network]# docker-compose -f docker-compose-cli.yaml ps
Name   Command   State   Ports
------------------------------
[root@localhost first-network]# 

已经都删除了。

猜你喜欢

转载自www.cnblogs.com/sky-cheng/p/12190036.html