(一)基础网络搭建
1.涉及的术语
(1)机构
Fabric是有权限的联盟链,机构就是联盟链内的最小身份单元。一个机构内就是私有链,多个机构的私有链联合起来就是联盟链。
(2)链码
链码就是区块链上的运行的分布式程序,实现了业务系统的某种功能,实现业务系统上链的功能。
(3)链码通道
网络上数据从安全性考虑,支持数据的相互隔离,提供链码通道的方式隔离不同业务数据,提供安全内部公开的。
2.启动2节点测试网络
(1)启动区块链网络
./network.sh up -ca
备注: -ca 表示CA作为独立的服务
执行成功,应有如下几个容器。
逻辑拓扑分解:
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
结果;
/peer0.org2.example.com - 172.19.0.6
/peer0.org1.example.com - 172.19.0.5
/orderer.example.com - 172.19.0.7
/ca_org1 - 172.19.0.4
/ca_org2 - 172.19.0.3
/ca_orderer - 172.19.0.2
(2)创建应用程序通道
应用程序通道也就是链码通道,通道的作用是联盟内组织之间共享账本,账本是共享数据存储的逻辑介质,物理表现为区块存储的链式结构文件及区块文件。
./network.sh up createChannel -ca -c mychannel -s couchdb -i 2.2.1
备注:
-ca 表示CA作为独立的服务
-c 指定链码通道的名称
-s 存储类型,世界状态数据库的存储类型
-i 镜像的版本
(3)网络拓扑
机构名 |
节点 |
功能 |
IP地址 |
机构1 |
peer0.org1.example.com |
对等节点 |
172.24.0.6 |
ca_org1 |
机构1的CA节点 |
172.24.0.4 |
|
机构2 |
peer0.org2.example.com |
对等节点 |
172.24.0.7 |
ca_org2 |
机构2的CA节点 |
172.24.0.2 |
|
排序节点 |
orderer.example.com |
排序节点 |
172.24.0.5 |
ca_orderer |
排序的CA节点 |
172.24.0.3 |
(4)过程剖析
创建链码通道的过程非常复杂,这里对日志进行剖析,力度弄清楚创建链码的过程。为基础设施的维护打下基础。
❯ ./network.sh up createChannel -ca -c mychannel -s couchdb -i 2.2.1
Creating channel 'mychannel'.
If network is not up, starting nodes with CLI timeout of '5' tries and CLI delay of '3' seconds and using database 'couchdb
Generating channel create transaction 'mychannel.tx'
生成通道交易mychannel.tx
+ configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/mychannel.tx -channelID mychannel
2021-04-02 15:56:46.524 CST [common.tools.configtxgen] main -> INFO 001 Loading configuration
2021-04-02 15:56:46.550 CST [common.tools.configtxgen.localconfig] Load -> INFO 002 Loaded configuration: /home/john/Downloads/hyper-ledger-inst/2-create-testnetwork/test-network/configtx/configtx.yaml
2021-04-02 15:56:46.550 CST [common.tools.configtxgen] doOutputChannelCreateTx -> INFO 003 Generating new channel configtx
2021-04-02 15:56:46.553 CST [common.tools.configtxgen] doOutputChannelCreateTx -> INFO 004 Writing new channel tx
+ res=0
Generating anchor peer update transactions
Generating anchor peer update transaction for Org1MSP
生成机构1锚节点交易Org1MSPanchors.tx
+ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
2021-04-02 15:56:46.586 CST [common.tools.configtxgen] main -> INFO 001 Loading configuration
2021-04-02 15:56:46.615 CST [common.tools.configtxgen.localconfig] Load -> INFO 002 Loaded configuration: /home/john/Downloads/hyper-ledger-inst/2-create-testnetwork/test-network/configtx/configtx.yaml
2021-04-02 15:56:46.615 CST [common.tools.configtxgen] doOutputAnchorPeersUpdate -> INFO 003 Generating anchor peer update
2021-04-02 15:56:46.617 CST [common.tools.configtxgen] doOutputAnchorPeersUpdate -> INFO 004 Writing anchor peer update
+ res=0
Generating anchor peer update transaction for Org2MSP
生成机构2锚节点交易Org2MSPanchors.tx
+ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
2021-04-02 15:56:46.654 CST [common.tools.configtxgen] main -> INFO 001 Loading configuration
2021-04-02 15:56:46.681 CST [common.tools.configtxgen.localconfig] Load -> INFO 002 Loaded configuration: /home/john/Downloads/hyper-ledger-inst/2-create-testnetwork/test-network/configtx/configtx.yaml
2021-04-02 15:56:46.681 CST [common.tools.configtxgen] doOutputAnchorPeersUpdate -> INFO 003 Generating anchor peer update
2021-04-02 15:56:46.750 CST [common.tools.configtxgen] doOutputAnchorPeersUpdate -> INFO 004 Writing anchor peer update
+ res=0
Creating channel mychannel
Using organization 1
使用机构1的身份创建通道mychannel,并产生mychannel.block
+ peer channel create -o localhost:7050 -c mychannel --ordererTLSHostnameOverride orderer.example.com -f ./channel-artifacts/mychannel.tx --outputBlock ./channel-artifacts/mychannel.block --tls --cafile /home/john/Downloads/hyper-ledger-inst/2-create-testnetwork/test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
+ res=0
2021-04-02 15:56:49.809 CST [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2021-04-02 15:56:49.826 CST [cli.common] readBlock -> INFO 002 Expect block, but got status: &{NOT_FOUND}
2021-04-02 15:56:49.829 CST [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized
2021-04-02 15:56:50.060 CST [cli.common] readBlock -> INFO 004 Expect block, but got status: &{SERVICE_UNAVAILABLE}
2021-04-02 15:56:50.063 CST [channelCmd] InitCmdFactory -> INFO 005 Endorser and orderer connections initialized
2021-04-02 15:56:50.264 CST [cli.common] readBlock -> INFO 006 Expect block, but got status: &{SERVICE_UNAVAILABLE}
2021-04-02 15:56:50.267 CST [channelCmd] InitCmdFactory -> INFO 007 Endorser and orderer connections initialized
2021-04-02 15:56:50.468 CST [cli.common] readBlock -> INFO 008 Expect block, but got status: &{SERVICE_UNAVAILABLE}
2021-04-02 15:56:50.470 CST [channelCmd] InitCmdFactory -> INFO 009 Endorser and orderer connections initialized
2021-04-02 15:56:50.671 CST [cli.common] readBlock -> INFO 00a Expect block, but got status: &{SERVICE_UNAVAILABLE}
2021-04-02 15:56:50.674 CST [channelCmd] InitCmdFactory -> INFO 00b Endorser and orderer connections initialized
2021-04-02 15:56:50.875 CST [cli.common] readBlock -> INFO 00c Expect block, but got status: &{SERVICE_UNAVAILABLE}
2021-04-02 15:56:50.878 CST [channelCmd] InitCmdFactory -> INFO 00d Endorser and orderer connections initialized
2021-04-02 15:56:51.081 CST [cli.common] readBlock -> INFO 00e Received block: 0
Channel 'mychannel' created
Join Org1 peers to the channel...
Using organization 1
使用机构1的身份,把初始区块mychannel.block加入到节点
+ peer channel join -b ./channel-artifacts/mychannel.block
+ res=0
2021-04-02 15:56:54.140 CST [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2021-04-02 15:56:54.503 CST [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
Join Org2 peers to the channel...
Using organization 2
使用机构2的身份,把初始区块mychannel.block加入到节点
+ peer channel join -b ./channel-artifacts/mychannel.block
+ res=0
2021-04-02 15:56:57.561 CST [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2021-04-02 15:56:57.936 CST [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
Updating anchor peers for org1...
Using organization 1
使用机构1的身份,更新通道,指定锚节点Org1MSPanchors.tx
+ peer channel update -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx --tls --cafile /home/john/Downloads/hyper-ledger-inst/2-create-testnetwork/test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
+ res=0
2021-04-02 15:57:01.001 CST [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2021-04-02 15:57:01.012 CST [channelCmd] update -> INFO 002 Successfully submitted channel update
Anchor peers updated for org 'Org1MSP' on channel 'mychannel'
Updating anchor peers for org2...
Using organization 2
使用机构2的身份,更新通道,指定锚节点Org2MSPanchors.tx
+ peer channel update -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com -c mychannel -f ./channel-artifacts/Org2MSPanchors.tx --tls --cafile /home/john/Downloads/hyper-ledger-inst/2-create-testnetwork/test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
+ res=0
2021-04-02 15:57:07.072 CST [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2021-04-02 15:57:07.084 CST [channelCmd] update -> INFO 002 Successfully submitted channel update
Anchor peers updated for org 'Org2MSP' on channel 'mychannel'
Channel successfully joined
(5)日志分析
分析日志,理清楚节点的工作流程。
①排序节点日志
执行命令:
[root@localhost test-network]# docker logs -f orderer.example.com
日志如下:
2021-04-07 05:42:30.223 UTC [localconfig] completeInitialization -> WARN 001 General.GenesisFile should be replaced by General.BootstrapFile
2021-04-07 05:42:30.223 UTC [localconfig] completeInitialization -> INFO 002 Kafka.Version unset, setting to 0.10.2.0
2021-04-07 05:42:30.224 UTC [orderer.common.server] prettyPrintStruct -> INFO 003 Orderer config values:
排序节点配置信息
General.ListenAddress = "0.0.0.0"
General.ListenPort = 7050
General.TLS.Enabled = true
General.TLS.PrivateKey = "/var/hyperledger/orderer/tls/server.key"
General.TLS.Certificate = "/var/hyperledger/orderer/tls/server.crt"
General.TLS.RootCAs = [/var/hyperledger/orderer/tls/ca.crt]
General.TLS.ClientAuthRequired = false
General.TLS.ClientRootCAs = []
General.TLS.TLSHandshakeTimeShift = 0s
General.Cluster.ListenAddress = ""
General.Cluster.ListenPort = 0
General.Cluster.ServerCertificate = ""
General.Cluster.ServerPrivateKey = ""
General.Cluster.ClientCertificate = "/var/hyperledger/orderer/tls/server.crt"
General.Cluster.ClientPrivateKey = "/var/hyperledger/orderer/tls/server.key"
General.Cluster.RootCAs = [/var/hyperledger/orderer/tls/ca.crt]
General.Cluster.DialTimeout = 5s
General.Cluster.RPCTimeout = 7s
General.Cluster.ReplicationBufferSize = 20971520
General.Cluster.ReplicationPullTimeout = 5s
General.Cluster.ReplicationRetryTimeout = 5s
General.Cluster.ReplicationBackgroundRefreshInterval = 5m0s
General.Cluster.ReplicationMaxRetries = 12
General.Cluster.SendBufferSize = 10
General.Cluster.CertExpirationWarningThreshold = 168h0m0s
General.Cluster.TLSHandshakeTimeShift = 0s
General.Keepalive.ServerMinInterval = 1m0s
General.Keepalive.ServerInterval = 2h0m0s
General.Keepalive.ServerTimeout = 20s
General.ConnectionTimeout = 0s
General.GenesisMethod = "file"
创世纪区块文件
General.GenesisFile = "/var/hyperledger/orderer/orderer.genesis.block"
General.BootstrapMethod = "file"
General.BootstrapFile = "/var/hyperledger/orderer/orderer.genesis.block"
General.Profile.Enabled = false
General.Profile.Address = "0.0.0.0:6060"
General.LocalMSPDir = "/var/hyperledger/orderer/msp"
General.LocalMSPID = "OrdererMSP"
General.BCCSP.ProviderName = "SW"
General.BCCSP.SwOpts.SecLevel = 256
General.BCCSP.SwOpts.HashFamily = "SHA2"
General.BCCSP.SwOpts.Ephemeral = true
General.BCCSP.SwOpts.FileKeystore.KeyStorePath = ""
General.BCCSP.SwOpts.DummyKeystore =
General.BCCSP.SwOpts.InmemKeystore =
General.Authentication.TimeWindow = 15m0s
General.Authentication.NoExpirationChecks = false
FileLedger.Location = "/var/hyperledger/production/orderer"
FileLedger.Prefix = "hyperledger-fabric-ordererledger"
Kafka.Retry.ShortInterval = 5s
Kafka.Retry.ShortTotal = 10m0s
Kafka.Retry.LongInterval = 5m0s
Kafka.Retry.LongTotal = 12h0m0s
Kafka.Retry.NetworkTimeouts.DialTimeout = 10s
Kafka.Retry.NetworkTimeouts.ReadTimeout = 10s
Kafka.Retry.NetworkTimeouts.WriteTimeout = 10s
Kafka.Retry.Metadata.RetryMax = 3
Kafka.Retry.Metadata.RetryBackoff = 250ms
Kafka.Retry.Producer.RetryMax = 3
Kafka.Retry.Producer.RetryBackoff = 100ms
Kafka.Retry.Consumer.RetryBackoff = 2s
Kafka.Verbose = true
Kafka.Version = 0.10.2.0
Kafka.TLS.Enabled = false
Kafka.TLS.PrivateKey = ""
Kafka.TLS.Certificate = ""
Kafka.TLS.RootCAs = []
Kafka.TLS.ClientAuthRequired = false
Kafka.TLS.ClientRootCAs = []
Kafka.TLS.TLSHandshakeTimeShift = 0s
Kafka.SASLPlain.Enabled = false
Kafka.SASLPlain.User = ""
Kafka.SASLPlain.Password = ""
Kafka.Topic.ReplicationFactor = 1
Debug.BroadcastTraceDir = ""
Debug.DeliverTraceDir = ""
Consensus = map[SnapDir:/var/hyperledger/production/orderer/etcdraft/snapshot WALDir:/var/hyperledger/production/orderer/etcdraft/wal]
Operations.ListenAddress = "127.0.0.1:8443"
Operations.TLS.Enabled = false
Operations.TLS.PrivateKey = ""
Operations.TLS.Certificate = ""
Operations.TLS.RootCAs = []
Operations.TLS.ClientAuthRequired = false
Operations.TLS.ClientRootCAs = []
Operations.TLS.TLSHandshakeTimeShift = 0s
Metrics.Provider = "disabled"
Metrics.Statsd.Network = "udp"
Metrics.Statsd.Address = "127.0.0.1:8125"
Metrics.Statsd.WriteInterval = 30s
Metrics.Statsd.Prefix = ""
ChannelParticipation.Enabled = false
ChannelParticipation.RemoveStorage = false
TLS启用,TLS安全传输层协议
2021-04-07 05:42:30.324 UTC [orderer.common.server] initializeServerConfig -> INFO 004 Starting orderer with TLS enabled
2021-04-07 05:42:30.424 UTC [blkstorage] NewProvider -> INFO 005 Creating new file ledger directory at /var/hyperledger/production/orderer/chains
2021-04-07 05:42:30.479 UTC [orderer.common.server] Main -> INFO 006 Bootstrapping the system channel
从区块存储上获取区块信息
2021-04-07 05:42:30.479 UTC [blkstorage] newBlockfileMgr -> INFO 007 Getting block information from block storage
2021-04-07 05:42:30.529 UTC [orderer.common.server] selectClusterBootBlock -> INFO 008 Cluster boot block is bootstrap (genesis) block; Blocks Header.Number system-channel=0, bootstrap=0
一致性类型: etcdraft
2021-04-07 05:42:30.533 UTC [orderer.common.server] Main -> INFO 009 Starting with system channel: system-channel, consensus type: etcdraft
2021-04-07 05:42:30.534 UTC [orderer.common.server] Main -> INFO 00a Setting up cluster
2021-04-07 05:42:30.534 UTC [orderer.common.server] reuseListener -> INFO 00b Cluster listener is not configured, defaulting to use the general listener on port 7050
2021-04-07 05:42:30.534 UTC [orderer.common.server] reuseListener -> INFO 00c Cluster listener is not configured, defaulting to use the general listener on port 7050
2021-04-07 05:42:30.556 UTC [orderer.common.cluster] loadVerifier -> INFO 00d Loaded verifier for channel system-channel from config block at index 0
2021-04-07 05:42:30.559 UTC [certmonitor] trackCertExpiration -> INFO 00e The enrollment certificate will expire on 2022-04-07 05:42:00 +0000 UTC
2021-04-07 05:42:30.559 UTC [certmonitor] trackCertExpiration -> INFO 00f The server TLS certificate will expire on 2022-04-07 05:42:00 +0000 UTC
2021-04-07 05:42:30.559 UTC [certmonitor] trackCertExpiration -> INFO 010 The client TLS certificate will expire on 2022-04-07 05:42:00 +0000 UTC
2021-04-07 05:42:30.671 UTC [orderer.consensus.etcdraft] HandleChain -> INFO 011 EvictionSuspicion not set, defaulting to 10m0s
没有钱包wallet法相,创建信息的钱包
2021-04-07 05:42:30.677 UTC [orderer.consensus.etcdraft] createOrReadWAL -> INFO 012 No WAL data found, creating new WAL at path '/var/hyperledger/production/orderer/etcdraft/wal/system-channel' channel=system-channel node=1
2021-04-07 05:42:30.779 UTC [orderer.commmon.multichannel] Initialize -> INFO 013 Starting system channel 'system-channel' with genesis block hash 7ce1905a312e44be154d1ceaa23c33815b333c365d8040d1702bc5bd8877cbb2 and orderer type etcdraft
2021-04-07 05:42:30.781 UTC [orderer.consensus.etcdraft] Start -> INFO 014 Starting Raft node channel=system-channel node=1
2021-04-07 05:42:30.781 UTC [orderer.common.cluster] Configure -> INFO 015 Entering, channel: system-channel, nodes: []
2021-04-07 05:42:30.781 UTC [orderer.common.cluster] Configure -> INFO 016 Exiting
2021-04-07 05:42:30.782 UTC [orderer.consensus.etcdraft] start -> INFO 017 Starting raft node as part of a new channel channel=system-channel node=1
2021-04-07 05:42:30.782 UTC [orderer.consensus.etcdraft] becomeFollower -> INFO 018 1 became follower at term 0 channel=system-channel node=1
2021-04-07 05:42:30.782 UTC [orderer.consensus.etcdraft] newRaft -> INFO 019 newRaft 1 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0] channel=system-channel node=1
2021-04-07 05:42:30.782 UTC [orderer.consensus.etcdraft] becomeFollower -> INFO 01a 1 became follower at term 1 channel=system-channel node=1
2021-04-07 05:42:30.791 UTC [orderer.consensus.etcdraft] run -> INFO 01b This node is picked to start campaign channel=system-channel node=1
2021-04-07 05:42:30.796 UTC [orderer.common.server] Main -> INFO 01c Starting orderer:
Version: 2.2.1
Commit SHA: 344fda6
Go version: go1.14.4
OS/Arch: linux/amd64
2021-04-07 05:42:30.799 UTC [orderer.common.server] Main -> INFO 01d Beginning to serve requests
2021-04-07 05:42:30.831 UTC [orderer.consensus.etcdraft] apply -> INFO 01e Applied config change to add node 1, current nodes in channel: [1] channel=system-channel node=1
2021-04-07 05:42:31.822 UTC [orderer.consensus.etcdraft] Step -> INFO 01f 1 is starting a new election at term 1 channel=system-channel node=1
2021-04-07 05:42:31.822 UTC [orderer.consensus.etcdraft] becomePreCandidate -> INFO 020 1 became pre-candidate at term 1 channel=system-channel node=1
2021-04-07 05:42:31.822 UTC [orderer.consensus.etcdraft] poll -> INFO 021 1 received MsgPreVoteResp from 1 at term 1 channel=system-channel node=1
2021-04-07 05:42:31.822 UTC [orderer.consensus.etcdraft] becomeCandidate -> INFO 022 1 became candidate at term 2 channel=system-channel node=1
2021-04-07 05:42:31.822 UTC [orderer.consensus.etcdraft] poll -> INFO 023 1 received MsgVoteResp from 1 at term 2 channel=system-channel node=1
2021-04-07 05:42:31.822 UTC [orderer.consensus.etcdraft] becomeLeader -> INFO 024 1 became leader at term 2 channel=system-channel node=1
2021-04-07 05:42:31.822 UTC [orderer.consensus.etcdraft] run -> INFO 025 raft.node: 1 elected leader 1 at term 2 channel=system-channel node=1
2021-04-07 05:42:31.852 UTC [orderer.consensus.etcdraft] run -> INFO 026 Leader 1 is present, quit campaign channel=system-channel node=1
2021-04-07 05:42:31.853 UTC [orderer.consensus.etcdraft] run -> INFO 027 Raft leader changed: 0 -> 1 channel=system-channel node=1
2021-04-07 05:42:31.853 UTC [orderer.consensus.etcdraft] run -> INFO 028 Start accepting requests as Raft leader at block [0] channel=system-channel node=1
2021-04-07 05:43:36.085 UTC [orderer.consensus.etcdraft] propose -> INFO 029 Created block [1], there are 0 blocks in flight channel=system-channel node=1
2021-04-07 05:43:36.085 UTC [orderer.consensus.etcdraft] run -> INFO 02a Received config transaction, pause accepting transaction till it is committed channel=system-channel node=1
2021-04-07 05:43:36.104 UTC [comm.grpc.server] 1 -> INFO 02b streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.peer_address=172.18.0.1:54228 grpc.code=OK grpc.call_duration=183.180666ms
2021-04-07 05:43:36.105 UTC [comm.grpc.server] 1 -> INFO 02c streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=172.18.0.1:54232 grpc.code=OK grpc.call_duration=157.935901ms
写入区块到账本
2021-04-07 05:43:36.106 UTC [orderer.consensus.etcdraft] writeBlock -> INFO 02d Writing block [1] (Raft index: 3) to ledger channel=system-channel node=1
2021-04-07 05:43:36.118 UTC [blkstorage] newBlockfileMgr -> INFO 02e Getting block information from block storage
2021-04-07 05:43:36.163 UTC [orderer.consensus.etcdraft] HandleChain -> INFO 02f EvictionSuspicion not set, defaulting to 10m0s
2021-04-07 05:43:36.164 UTC [orderer.consensus.etcdraft] createOrReadWAL -> INFO 030 No WAL data found, creating new WAL at path '/var/hyperledger/production/orderer/etcdraft/wal/mychannel' channel=mychannel node=1
2021-04-07 05:43:36.185 UTC [orderer.commmon.multichannel] newChain -> INFO 031 Created and starting new channel mychannel
2021-04-07 05:43:36.185 UTC [orderer.consensus.etcdraft] Start -> INFO 032 Starting Raft node channel=mychannel node=1
2021-04-07 05:43:36.186 UTC [orderer.common.cluster] Configure -> INFO 033 Entering, channel: mychannel, nodes: []
2021-04-07 05:43:36.186 UTC [orderer.common.cluster] Configure -> INFO 034 Exiting
2021-04-07 05:43:36.186 UTC [orderer.consensus.etcdraft] start -> INFO 035 Starting raft node as part of a new channel channel=mychannel node=1
2021-04-07 05:43:36.186 UTC [orderer.consensus.etcdraft] becomeFollower -> INFO 036 1 became follower at term 0 channel=mychannel node=1
2021-04-07 05:43:36.186 UTC [orderer.consensus.etcdraft] newRaft -> INFO 037 newRaft 1 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0] channel=mychannel node=1
2021-04-07 05:43:36.186 UTC [orderer.consensus.etcdraft] becomeFollower -> INFO 038 1 became follower at term 1 channel=mychannel node=1
2021-04-07 05:43:36.193 UTC [orderer.consensus.etcdraft] run -> INFO 039 This node is picked to start campaign channel=mychannel node=1
2021-04-07 05:43:36.211 UTC [orderer.consensus.etcdraft] apply -> INFO 03a Applied config change to add node 1, current nodes in channel: [1] channel=mychannel node=1
2021-04-07 05:43:36.347 UTC [common.deliver] deliverBlocks -> WARN 03b [channel: mychannel] Rejecting deliver request for 172.18.0.1:54236 because of consenter error
2021-04-07 05:43:36.347 UTC [comm.grpc.server] 1 -> INFO 03c streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.peer_address=172.18.0.1:54236 grpc.code=OK grpc.call_duration=186.293193ms
2021-04-07 05:43:36.592 UTC [common.deliver] deliverBlocks -> WARN 03d [channel: mychannel] Rejecting deliver request for 172.18.0.1:54240 because of consenter error
2021-04-07 05:43:36.592 UTC [comm.grpc.server] 1 -> INFO 03e streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.peer_address=172.18.0.1:54240 grpc.code=OK grpc.call_duration=202.510577ms
2021-04-07 05:43:36.827 UTC [common.deliver] deliverBlocks -> WARN 03f [channel: mychannel] Rejecting deliver request for 172.18.0.1:54244 because of consenter error
2021-04-07 05:43:36.828 UTC [comm.grpc.server] 1 -> INFO 040 streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.peer_address=172.18.0.1:54244 grpc.code=OK grpc.call_duration=202.487999ms
2021-04-07 05:43:37.049 UTC [common.deliver] deliverBlocks -> WARN 041 [channel: mychannel] Rejecting deliver request for 172.18.0.1:54248 because of consenter error
2021-04-07 05:43:37.049 UTC [comm.grpc.server] 1 -> INFO 042 streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.peer_address=172.18.0.1:54248 grpc.code=OK grpc.call_duration=202.472354ms
2021-04-07 05:43:37.201 UTC [orderer.consensus.etcdraft] Step -> INFO 043 1 is starting a new election at term 1 channel=mychannel node=1
2021-04-07 05:43:37.201 UTC [orderer.consensus.etcdraft] becomePreCandidate -> INFO 044 1 became pre-candidate at term 1 channel=mychannel node=1
2021-04-07 05:43:37.201 UTC [orderer.consensus.etcdraft] poll -> INFO 045 1 received MsgPreVoteResp from 1 at term 1 channel=mychannel node=1
2021-04-07 05:43:37.201 UTC [orderer.consensus.etcdraft] becomeCandidate -> INFO 046 1 became candidate at term 2 channel=mychannel node=1
2021-04-07 05:43:37.201 UTC [orderer.consensus.etcdraft] poll -> INFO 047 1 received MsgVoteResp from 1 at term 2 channel=mychannel node=1
2021-04-07 05:43:37.201 UTC [orderer.consensus.etcdraft] becomeLeader -> INFO 048 1 became leader at term 2 channel=mychannel node=1
2021-04-07 05:43:37.201 UTC [orderer.consensus.etcdraft] run -> INFO 049 raft.node: 1 elected leader 1 at term 2 channel=mychannel node=1
2021-04-07 05:43:37.213 UTC [orderer.consensus.etcdraft] run -> INFO 04a Leader 1 is present, quit campaign channel=mychannel node=1
共识算法发挥做个,重新选leader节点,leader节点0变更为1
2021-04-07 05:43:37.213 UTC [orderer.consensus.etcdraft] run -> INFO 04b Raft leader changed: 0 -> 1 channel=mychannel node=1
2021-04-07 05:43:37.213 UTC [orderer.consensus.etcdraft] run -> INFO 04c Start accepting requests as Raft leader at block [0] channel=mychannel node=1
2021-04-07 05:43:37.320 UTC [common.deliver] Handle -> WARN 04d Error reading from 172.18.0.1:54252: rpc error: code = Canceled desc = context canceled
2021-04-07 05:43:37.320 UTC [comm.grpc.server] 1 -> INFO 04e streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.peer_address=172.18.0.1:54252 error="rpc error: code = Canceled desc = context canceled" grpc.code=Canceled grpc.call_duration=253.071227ms
2021-04-07 05:43:48.048 UTC [orderer.consensus.etcdraft] propose -> INFO 04f Created block [1], there are 0 blocks in flight channel=mychannel node=1
2021-04-07 05:43:48.049 UTC [orderer.consensus.etcdraft] run -> INFO 050 Received config transaction, pause accepting transaction till it is committed channel=mychannel node=1
2021-04-07 05:43:48.053 UTC [orderer.consensus.etcdraft] writeBlock -> INFO 051 Writing block [1] (Raft index: 3) to ledger channel=mychannel node=1
2021-04-07 05:43:48.057 UTC [orderer.common.broadcast] Handle -> WARN 052 Error reading from 172.18.0.1:54272: rpc error: code = Canceled desc = context canceled
2021-04-07 05:43:48.058 UTC [comm.grpc.server] 1 -> INFO 053 streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=172.18.0.1:54272 error="rpc error: code = Canceled desc = context canceled" grpc.code=Canceled grpc.call_duration=27.779646ms
2021-04-07 05:43:54.281 UTC [orderer.consensus.etcdraft] propose -> INFO 054 Created block [2], there are 0 blocks in flight channel=mychannel node=1
2021-04-07 05:43:54.281 UTC [orderer.consensus.etcdraft] run -> INFO 055 Received config transaction, pause accepting transaction till it is committed channel=mychannel node=1
2021-04-07 05:43:54.288 UTC [orderer.consensus.etcdraft] writeBlock -> INFO 056 Writing block [2] (Raft index: 4) to ledger channel=mychannel node=1
2021-04-07 05:43:54.306 UTC [orderer.common.broadcast] Handle -> WARN 057 Error reading from 172.18.0.1:54280: rpc error: code = Canceled desc = context canceled
2021-04-07 05:43:54.307 UTC [comm.grpc.server] 1 -> INFO 058 streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=172.18.0.1:54280 error="rpc error: code = Canceled desc = context canceled" grpc.code=Canceled grpc.call_duration=57.886174ms
②组织1对等节点日志
执行命令:
docker logs -f peer0.org1.example.com
日志如下:
2021-04-07 05:42:31.412 UTC [nodeCmd] serve -> INFO 001 Starting peer:
Version: 2.2.1
Commit SHA: 344fda6
Go version: go1.14.4
OS/Arch: linux/amd64
Chaincode:
Base Docker Label: org.hyperledger.fabric
Docker Namespace: hyperledger
2021-04-07 05:42:31.414 UTC [peer] getLocalAddress -> INFO 002 Auto-detected peer address: 172.18.0.6:7051
2021-04-07 05:42:31.415 UTC [peer] getLocalAddress -> INFO 003 Returning peer0.org1.example.com:7051
2021-04-07 05:42:31.615 UTC [nodeCmd] initGrpcSemaphores -> INFO 004 concurrency limit for endorser service is 2500
2021-04-07 05:42:31.615 UTC [nodeCmd] initGrpcSemaphores -> INFO 005 concurrency limit for deliver service is 2500
2021-04-07 05:42:31.615 UTC [nodeCmd] serve -> INFO 006 Starting peer with TLS enabled
2021-04-07 05:42:31.744 UTC [certmonitor] trackCertExpiration -> INFO 007 The enrollment certificate will expire on 2022-04-07 05:42:00 +0000 UTC
2021-04-07 05:42:31.752 UTC [certmonitor] trackCertExpiration -> INFO 008 The server TLS certificate will expire on 2022-04-07 05:42:00 +0000 UTC
2021-04-07 05:42:31.792 UTC [ledgermgmt] NewLedgerMgr -> INFO 009 Initializing LedgerMgr
数据库
2021-04-07 05:42:31.945 UTC [leveldbhelper] openDBAndCheckFormat -> INFO 00a DB is empty Setting db format as 2.0
2021-04-07 05:42:31.970 UTC [blkstorage] NewProvider -> INFO 00b Creating new file ledger directory at /var/hyperledger/production/ledgersData/chains/chains
2021-04-07 05:42:32.035 UTC [leveldbhelper] openDBAndCheckFormat -> INFO 00c DB is empty Setting db format as 2.0
2021-04-07 05:42:32.099 UTC [leveldbhelper] openDBAndCheckFormat -> INFO 00d DB is empty Setting db format as 2.0
2021-04-07 05:42:32.149 UTC [ledgermgmt] NewLedgerMgr -> INFO 00e Initialized LedgerMgr
2021-04-07 05:42:32.219 UTC [gossip.service] New -> INFO 00f Initialize gossip with endpoint peer0.org1.example.com:7051
P2P协议
2021-04-07 05:42:32.222 UTC [gossip.gossip] New -> INFO 010 Creating gossip service with self membership of Endpoint: peer0.org1.example.com:7051, InternalEndpoint: peer0.org1.example.com:7051, PKI-ID: 7bffefe95aa9aafada7b93e38bd7b0ec1821bb4749297534f3f8401aa69fbeca, Metadata:
2021-04-07 05:42:32.223 UTC [lifecycle] InitializeLocalChaincodes -> INFO 011 Initialized lifecycle cache with 0 already installed chaincodes
2021-04-07 05:42:32.224 UTC [nodeCmd] computeChaincodeEndpoint -> INFO 012 Entering computeChaincodeEndpoint with peerHostname: peer0.org1.example.com
2021-04-07 05:42:32.224 UTC [nodeCmd] computeChaincodeEndpoint -> INFO 013 Exit with ccEndpoint: peer0.org1.example.com:7052
2021-04-07 05:42:32.230 UTC [gossip.gossip] start -> INFO 014 Gossip instance peer0.org1.example.com:7051 started
2021-04-07 05:42:32.265 UTC [sccapi] DeploySysCC -> INFO 015 deploying system chaincode 'lscc'
2021-04-07 05:42:32.266 UTC [sccapi] DeploySysCC -> INFO 016 deploying system chaincode 'cscc'
2021-04-07 05:42:32.266 UTC [sccapi] DeploySysCC -> INFO 017 deploying system chaincode 'qscc'
2021-04-07 05:42:32.267 UTC [sccapi] DeploySysCC -> INFO 018 deploying system chaincode '_lifecycle'
2021-04-07 05:42:32.267 UTC [nodeCmd] serve -> INFO 019 Deployed system chaincodes
2021-04-07 05:42:32.267 UTC [discovery] NewService -> INFO 01a Created with config TLS: true, authCacheMaxSize: 1000, authCachePurgeRatio: 0.750000
2021-04-07 05:42:32.267 UTC [nodeCmd] registerDiscoveryService -> INFO 01b Discovery service activated
2021-04-07 05:42:32.267 UTC [nodeCmd] serve -> INFO 01c Starting peer with ID=[peer0.org1.example.com], network ID=[dev], address=[peer0.org1.example.com:7051]
2021-04-07 05:42:32.268 UTC [nodeCmd] func6 -> INFO 01d Starting profiling server with listenAddress = 0.0.0.0:6060
2021-04-07 05:42:32.268 UTC [nodeCmd] serve -> INFO 01e Started peer with ID=[peer0.org1.example.com], network ID=[dev], address=[peer0.org1.example.com:7051]
2021-04-07 05:42:32.269 UTC [kvledger] LoadPreResetHeight -> INFO 01f Loading prereset height from path [/var/hyperledger/production/ledgersData/chains]
2021-04-07 05:42:32.269 UTC [blkstorage] preResetHtFiles -> INFO 020 No active channels passed
使用创世纪区块创建账本
2021-04-07 05:43:40.684 UTC [ledgermgmt] CreateLedger -> INFO 021 Creating ledger [mychannel] with genesis block
2021-04-07 05:43:40.717 UTC [blkstorage] newBlockfileMgr -> INFO 022 Getting block information from block storage
2021-04-07 05:43:40.772 UTC [kvledger] CommitLegacy -> INFO 023 [mychannel] Committed block [0] with 1 transaction(s) in 23ms (state_validation=1ms block_and_pvtdata_commit=9ms state_commit=3ms) commitHash=[]
2021-04-07 05:43:40.781 UTC [ledgermgmt] CreateLedger -> INFO 024 Created ledger [mychannel] with genesis block
2021-04-07 05:43:40.788 UTC [peer.orderers] Update -> WARN 025 Config defines both orderer org specific endpoints and global endpoints, global endpoints will be ignored channel=mychannel
2021-04-07 05:43:40.789 UTC [gossip.gossip] JoinChan -> INFO 026 Joining gossip network of channel mychannel with 2 organizations
2021-04-07 05:43:40.789 UTC [gossip.gossip] learnAnchorPeers -> INFO 027 No configured anchor peers of Org1MSP for channel mychannel to learn about
2021-04-07 05:43:40.789 UTC [gossip.gossip] learnAnchorPeers -> INFO 028 No configured anchor peers of Org2MSP for channel mychannel to learn about
2021-04-07 05:43:40.812 UTC [gossip.state] NewGossipStateProvider -> INFO 029 Updating metadata information for channel mychannel, current ledger sequence is at = 0, next expected block is = 1
2021-04-07 05:43:40.812 UTC [deliveryClient] StartDeliverForChannel -> INFO 02a This peer will retrieve blocks from ordering service and disseminate to other peers in the organization for channel mychannel
2021-04-07 05:43:40.829 UTC [endorser] callChaincode -> INFO 02b finished chaincode: cscc duration: 161ms channel= txID=cef47128
2021-04-07 05:43:40.829 UTC [comm.grpc.server] 1 -> INFO 02c unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:49678 grpc.code=OK grpc.call_duration=168.568798ms
2021-04-07 05:43:48.084 UTC [gossip.privdata] StoreBlock -> INFO 02d [mychannel] Received block [1] from buffer
2021-04-07 05:43:48.097 UTC [peer.orderers] Update -> WARN 02e Config defines both orderer org specific endpoints and global endpoints, global endpoints will be ignored channel=mychannel
加入具有2个组织的P2P网络
2021-04-07 05:43:48.098 UTC [gossip.gossip] JoinChan -> INFO 02f Joining gossip network of channel mychannel with 2 organizations
了解到配置的组织1的锚节点
2021-04-07 05:43:48.098 UTC [gossip.gossip] learnAnchorPeers -> INFO 030 Learning about the configured anchor peers of Org1MSP for channel mychannel: [{peer0.org1.example.com 7051}]
2021-04-07 05:43:48.098 UTC [gossip.gossip] learnAnchorPeers -> INFO 031 Anchor peer for channel mychannel with same endpoint, skipping connecting to myself
组织2没有配置锚节点
2021-04-07 05:43:48.098 UTC [gossip.gossip] learnAnchorPeers -> INFO 032 No configured anchor peers of Org2MSP for channel mychannel to learn about
2021-04-07 05:43:48.099 UTC [committer.txvalidator] Validate -> INFO 033 [mychannel] Validated block [1] in 14ms
一次调用完成
2021-04-07 05:43:48.125 UTC [comm.grpc.server] 1 -> INFO 034 unary call completed grpc.service=gossip.Gossip grpc.method=Ping grpc.request_deadline=2021-04-07T05:43:50.124Z grpc.peer_address=172.18.0.7:35102 grpc.peer_subject="CN=peer0,OU=peer,O=Hyperledger,ST=North Carolina,C=US" grpc.code=OK grpc.call_duration=235.203µs
节点探测我们
2021-04-07 05:43:48.147 UTC [gossip.comm] GossipStream -> INFO 035 Peer f850bdee22e3bfa395f027390db753d9ca6a1cd78ad60a1f029b38eafeaac205 (172.18.0.7:35102) probed us
2021-04-07 05:43:48.147 UTC [comm.grpc.server] 1 -> INFO 036 streaming call completed grpc.service=gossip.Gossip grpc.method=GossipStream grpc.request_deadline=2021-04-07T05:43:58.129Z grpc.peer_address=172.18.0.7:35102 grpc.peer_subject="CN=peer0,OU=peer,O=Hyperledger,ST=North Carolina,C=US" grpc.code=OK grpc.call_duration=18.247955ms
2021-04-07 05:43:48.156 UTC [comm.grpc.server] 1 -> INFO 037 unary call completed grpc.service=gossip.Gossip grpc.method=Ping grpc.request_deadline=2021-04-07T05:43:50.155Z grpc.peer_address=172.18.0.7:35104 grpc.peer_subject="CN=peer0,OU=peer,O=Hyperledger,ST=North Carolina,C=US" grpc.code=OK grpc.call_duration=269.332µs
提交了一次交易
2021-04-07 05:43:48.163 UTC [kvledger] CommitLegacy -> INFO 038 [mychannel] Committed block [1] with 1 transaction(s) in 56ms (state_validation=0ms block_and_pvtdata_commit=18ms state_commit=31ms) commitHash=[47dc540c94ceb704a23875c11273e16bb0b8a87aed84de911f2133568115f254]
成员关系改变,在线节点
2021-04-07 05:43:50.790 UTC [gossip.channel] reportMembershipChanges -> INFO 039 [[mychannel] Membership view has changed. peers went online: [[peer0.org2.example.com:9051 ]] , current view: [[peer0.org2.example.com:9051 ]]]
2021-04-07 05:43:54.406 UTC [gossip.privdata] StoreBlock -> INFO 03a [mychannel] Received block [2] from buffer
2021-04-07 05:43:54.422 UTC [comm.grpc.server] 1 -> INFO 03b unary call completed grpc.service=gossip.Gossip grpc.method=Ping grpc.request_deadline=2021-04-07T05:43:56.422Z grpc.peer_address=172.18.0.7:35110 grpc.peer_subject="CN=peer0,OU=peer,O=Hyperledger,ST=North Carolina,C=US" grpc.code=OK grpc.call_duration=287.918µs
2021-04-07 05:43:54.433 UTC [gossip.comm] GossipStream -> INFO 03c Peer f850bdee22e3bfa395f027390db753d9ca6a1cd78ad60a1f029b38eafeaac205 (172.18.0.7:35110) probed us
2021-04-07 05:43:54.433 UTC [comm.grpc.server] 1 -> INFO 03d streaming call completed grpc.service=gossip.Gossip grpc.method=GossipStream grpc.request_deadline=2021-04-07T05:44:04.428Z grpc.peer_address=172.18.0.7:35110 grpc.peer_subject="CN=peer0,OU=peer,O=Hyperledger,ST=North Carolina,C=US" grpc.code=OK grpc.call_duration=4.387018ms
2021-04-07 05:43:54.434 UTC [peer.orderers] Update -> WARN 03e Config defines both orderer org specific endpoints and global endpoints, global endpoints will be ignored channel=mychannel
2021-04-07 05:43:54.435 UTC [gossip.gossip] JoinChan -> INFO 03f Joining gossip network of channel mychannel with 2 organizations
2021-04-07 05:43:54.443 UTC [gossip.gossip] learnAnchorPeers -> INFO 040 Learning about the configured anchor peers of Org1MSP for channel mychannel: [{peer0.org1.example.com 7051}]
2021-04-07 05:43:54.448 UTC [gossip.gossip] learnAnchorPeers -> INFO 041 Anchor peer for channel mychannel with same endpoint, skipping connecting to myself
组织2配置了锚节点
2021-04-07 05:43:54.448 UTC [gossip.gossip] learnAnchorPeers -> INFO 042 Learning about the configured anchor peers of Org2MSP for channel mychannel: [{peer0.org2.example.com 9051}]
2021-04-07 05:43:54.450 UTC [committer.txvalidator] Validate -> INFO 043 [mychannel] Validated block [2] in 43ms
2021-04-07 05:43:54.491 UTC [kvledger] CommitLegacy -> INFO 044 [mychannel] Committed block [2] with 1 transaction(s) in 41ms (state_validation=0ms block_and_pvtdata_commit=11ms state_commit=7ms) commitHash=[5f88b61407b149a48413433f4670c46531e5c4a8febdc339a9536ff8716a559e]
③组织2对等节点日志
执行命令:
docker logs -f peer0.org2.example.com
日志如下:
2021-04-07 05:42:31.868 UTC [nodeCmd] serve -> INFO 001 Starting peer:
Version: 2.2.1
Commit SHA: 344fda6
Go version: go1.14.4
OS/Arch: linux/amd64
Chaincode:
Base Docker Label: org.hyperledger.fabric
Docker Namespace: hyperledger
2021-04-07 05:42:31.889 UTC [peer] getLocalAddress -> INFO 002 Auto-detected peer address: 172.18.0.7:9051
2021-04-07 05:42:31.893 UTC [peer] getLocalAddress -> INFO 003 Returning peer0.org2.example.com:9051
2021-04-07 05:42:31.929 UTC [nodeCmd] initGrpcSemaphores -> INFO 004 concurrency limit for endorser service is 2500
2021-04-07 05:42:31.929 UTC [nodeCmd] initGrpcSemaphores -> INFO 005 concurrency limit for deliver service is 2500
2021-04-07 05:42:31.929 UTC [nodeCmd] serve -> INFO 006 Starting peer with TLS enabled
2021-04-07 05:42:31.985 UTC [certmonitor] trackCertExpiration -> INFO 007 The enrollment certificate will expire on 2022-04-07 05:42:00 +0000 UTC
2021-04-07 05:42:31.989 UTC [certmonitor] trackCertExpiration -> INFO 008 The server TLS certificate will expire on 2022-04-07 05:42:00 +0000 UTC
2021-04-07 05:42:32.027 UTC [ledgermgmt] NewLedgerMgr -> INFO 009 Initializing LedgerMgr
2021-04-07 05:42:32.089 UTC [leveldbhelper] openDBAndCheckFormat -> INFO 00a DB is empty Setting db format as 2.0
2021-04-07 05:42:32.094 UTC [blkstorage] NewProvider -> INFO 00b Creating new file ledger directory at /var/hyperledger/production/ledgersData/chains/chains
2021-04-07 05:42:32.207 UTC [leveldbhelper] openDBAndCheckFormat -> INFO 00c DB is empty Setting db format as 2.0
2021-04-07 05:42:32.295 UTC [leveldbhelper] openDBAndCheckFormat -> INFO 00d DB is empty Setting db format as 2.0
2021-04-07 05:42:32.303 UTC [ledgermgmt] NewLedgerMgr -> INFO 00e Initialized LedgerMgr
2021-04-07 05:42:32.327 UTC [gossip.service] New -> INFO 00f Initialize gossip with endpoint peer0.org2.example.com:9051
2021-04-07 05:42:32.340 UTC [gossip.gossip] New -> INFO 010 Creating gossip service with self membership of Endpoint: peer0.org2.example.com:9051, InternalEndpoint: peer0.org2.example.com:9051, PKI-ID: f850bdee22e3bfa395f027390db753d9ca6a1cd78ad60a1f029b38eafeaac205, Metadata:
2021-04-07 05:42:32.342 UTC [lifecycle] InitializeLocalChaincodes -> INFO 011 Initialized lifecycle cache with 0 already installed chaincodes
2021-04-07 05:42:32.342 UTC [nodeCmd] computeChaincodeEndpoint -> INFO 012 Entering computeChaincodeEndpoint with peerHostname: peer0.org2.example.com
2021-04-07 05:42:32.343 UTC [nodeCmd] computeChaincodeEndpoint -> INFO 013 Exit with ccEndpoint: peer0.org2.example.com:9052
2021-04-07 05:42:32.346 UTC [gossip.gossip] start -> INFO 014 Gossip instance peer0.org2.example.com:9051 started
2021-04-07 05:42:32.361 UTC [sccapi] DeploySysCC -> INFO 015 deploying system chaincode 'lscc'
2021-04-07 05:42:32.362 UTC [sccapi] DeploySysCC -> INFO 016 deploying system chaincode 'cscc'
2021-04-07 05:42:32.362 UTC [sccapi] DeploySysCC -> INFO 017 deploying system chaincode 'qscc'
2021-04-07 05:42:32.363 UTC [sccapi] DeploySysCC -> INFO 018 deploying system chaincode '_lifecycle'
2021-04-07 05:42:32.363 UTC [nodeCmd] serve -> INFO 019 Deployed system chaincodes
2021-04-07 05:42:32.363 UTC [discovery] NewService -> INFO 01a Created with config TLS: true, authCacheMaxSize: 1000, authCachePurgeRatio: 0.750000
2021-04-07 05:42:32.363 UTC [nodeCmd] registerDiscoveryService -> INFO 01b Discovery service activated
启动节点,网络,节点地址
2021-04-07 05:42:32.364 UTC [nodeCmd] serve -> INFO 01c Starting peer with ID=[peer0.org2.example.com], network ID=[dev], address=[peer0.org2.example.com:9051]
2021-04-07 05:42:32.364 UTC [nodeCmd] func6 -> INFO 01d Starting profiling server with listenAddress = 0.0.0.0:6060
2021-04-07 05:42:32.364 UTC [nodeCmd] serve -> INFO 01e Started peer with ID=[peer0.org2.example.com], network ID=[dev], address=[peer0.org2.example.com:9051]
2021-04-07 05:42:32.374 UTC [kvledger] LoadPreResetHeight -> INFO 01f Loading prereset height from path [/var/hyperledger/production/ledgersData/chains]
2021-04-07 05:42:32.374 UTC [blkstorage] preResetHtFiles -> INFO 020 No active channels passed
2021-04-07 05:43:44.557 UTC [ledgermgmt] CreateLedger -> INFO 021 Creating ledger [mychannel] with genesis block
2021-04-07 05:43:44.606 UTC [blkstorage] newBlockfileMgr -> INFO 022 Getting block information from block storage
2021-04-07 05:43:44.660 UTC [kvledger] CommitLegacy -> INFO 023 [mychannel] Committed block [0] with 1 transaction(s) in 26ms (state_validation=0ms block_and_pvtdata_commit=11ms state_commit=12ms) commitHash=[]
2021-04-07 05:43:44.674 UTC [ledgermgmt] CreateLedger -> INFO 024 Created ledger [mychannel] with genesis block
2021-04-07 05:43:44.685 UTC [peer.orderers] Update -> WARN 025 Config defines both orderer org specific endpoints and global endpoints, global endpoints will be ignored channel=mychannel
2021-04-07 05:43:44.685 UTC [gossip.gossip] JoinChan -> INFO 026 Joining gossip network of channel mychannel with 2 organizations
2021-04-07 05:43:44.686 UTC [gossip.gossip] learnAnchorPeers -> INFO 027 No configured anchor peers of Org1MSP for channel mychannel to learn about
2021-04-07 05:43:44.686 UTC [gossip.gossip] learnAnchorPeers -> INFO 028 No configured anchor peers of Org2MSP for channel mychannel to learn about
2021-04-07 05:43:44.750 UTC [gossip.state] NewGossipStateProvider -> INFO 029 Updating metadata information for channel mychannel, current ledger sequence is at = 0, next expected block is = 1
2021-04-07 05:43:44.770 UTC [deliveryClient] StartDeliverForChannel -> INFO 02a This peer will retrieve blocks from ordering service and disseminate to other peers in the organization for channel mychannel
2021-04-07 05:43:44.773 UTC [endorser] callChaincode -> INFO 02b finished chaincode: cscc duration: 225ms channel= txID=b7f63cf5
2021-04-07 05:43:44.773 UTC [comm.grpc.server] 1 -> INFO 02c unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:55592 grpc.code=OK grpc.call_duration=250.134833ms
2021-04-07 05:43:48.084 UTC [gossip.privdata] StoreBlock -> INFO 02d [mychannel] Received block [1] from buffer
2021-04-07 05:43:48.097 UTC [peer.orderers] Update -> WARN 02e Config defines both orderer org specific endpoints and global endpoints, global endpoints will be ignored channel=mychannel
2021-04-07 05:43:48.097 UTC [gossip.gossip] JoinChan -> INFO 02f Joining gossip network of channel mychannel with 2 organizations
2021-04-07 05:43:48.097 UTC [gossip.gossip] learnAnchorPeers -> INFO 030 Learning about the configured anchor peers of Org1MSP for channel mychannel: [{peer0.org1.example.com 7051}]
2021-04-07 05:43:48.097 UTC [gossip.gossip] learnAnchorPeers -> INFO 031 No configured anchor peers of Org2MSP for channel mychannel to learn about
2021-04-07 05:43:48.098 UTC [committer.txvalidator] Validate -> INFO 032 [mychannel] Validated block [1] in 14ms
2021-04-07 05:43:48.130 UTC [kvledger] CommitLegacy -> INFO 033 [mychannel] Committed block [1] with 1 transaction(s) in 30ms (state_validation=0ms block_and_pvtdata_commit=8ms state_commit=7ms) commitHash=[47dc540c94ceb704a23875c11273e16bb0b8a87aed84de911f2133568115f254]
2021-04-07 05:43:49.686 UTC [gossip.channel] reportMembershipChanges -> INFO 034 [[mychannel] Membership view has changed. peers went online: [[peer0.org1.example.com:7051 ]] , current view: [[peer0.org1.example.com:7051 ]]]
2021-04-07 05:43:54.377 UTC [gossip.privdata] StoreBlock -> INFO 035 [mychannel] Received block [2] from buffer
2021-04-07 05:43:54.389 UTC [peer.orderers] Update -> WARN 036 Config defines both orderer org specific endpoints and global endpoints, global endpoints will be ignored channel=mychannel
2021-04-07 05:43:54.390 UTC [gossip.gossip] JoinChan -> INFO 037 Joining gossip network of channel mychannel with 2 organizations
2021-04-07 05:43:54.390 UTC [gossip.gossip] learnAnchorPeers -> INFO 038 Learning about the configured anchor peers of Org1MSP for channel mychannel: [{peer0.org1.example.com 7051}]
2021-04-07 05:43:54.390 UTC [gossip.gossip] learnAnchorPeers -> INFO 039 Learning about the configured anchor peers of Org2MSP for channel mychannel: [{peer0.org2.example.com 9051}]
2021-04-07 05:43:54.390 UTC [gossip.gossip] learnAnchorPeers -> INFO 03a Anchor peer for channel mychannel with same endpoint, skipping connecting to myself
2021-04-07 05:43:54.392 UTC [committer.txvalidator] Validate -> INFO 03b [mychannel] Validated block [2] in 14ms
2021-04-07 05:43:54.465 UTC [comm.grpc.server] 1 -> INFO 03c unary call completed grpc.service=gossip.Gossip grpc.method=Ping grpc.request_deadline=2021-04-07T05:43:56.465Z grpc.peer_address=172.18.0.6:38436 grpc.peer_subject="CN=peer0,OU=peer,O=Hyperledger,ST=North Carolina,C=US" grpc.code=OK grpc.call_duration=257.887µs
2021-04-07 05:43:54.471 UTC [gossip.comm] GossipStream -> INFO 03d Peer 7bffefe95aa9aafada7b93e38bd7b0ec1821bb4749297534f3f8401aa69fbeca (172.18.0.6:38436) probed us
2021-04-07 05:43:54.472 UTC [comm.grpc.server] 1 -> INFO 03e streaming call completed grpc.service=gossip.Gossip grpc.method=GossipStream grpc.request_deadline=2021-04-07T05:44:04.468Z grpc.peer_address=172.18.0.6:38436 grpc.peer_subject="CN=peer0,OU=peer,O=Hyperledger,ST=North Carolina,C=US" grpc.code=OK grpc.call_duration=3.013825ms
2021-04-07 05:43:54.488 UTC [kvledger] CommitLegacy -> INFO 03f [mychannel] Committed block [2] with 1 transaction(s) in 95ms (state_validation=0ms block_and_pvtdata_commit=64ms state_commit=12ms) commitHash=[5f88b61407b149a48413433f4670c46531e5c4a8febdc339a9536ff8716a559e]