fabric v1.1 自动化部署脚本

自动部署如下结构:

IP 节点 域名
10.254.186.164 orderer orderer.example.com
10.254.186.164 peer peer0.org1.example.com
10.254.247.165 peer peer1.org1.example.com
10.254.207.154 peer peer0.org2.example.com

前置环境:

  • go v1.9+
  • fabric v1.1的bin文件已经放到$PATH
  • 写好的chaincode
  • docker
  • /etc/hosts 已经配置好上面的域名映射
  • 机器间开通免密登录

启动环境:

清空环境:

相关文件:

deploy.sh

path=`pwd`
mychannel=$1

if [ $# -ne 1 ]; then
        echo "请添加channelID"
        echo $mychannel
	exit
else
        echo "start deploying"
fi

#创建文件夹
if [ ! -d ~/peer  ];then
  mkdir ~/peer
else
  echo dir exist
fi

if [ ! -d ~/orderer  ];then
  mkdir ~/orderer
else
  echo dir exist
fi

echo "##########################################################"
echo "##### Generate certificates using cryptogen tool #########"
echo "##########################################################"

cryptogen generate --config=crypto-config.yaml --output ./certs
mkdir orderer.example.com
cp -rf certs/ordererOrganizations/example.com/orderers/orderer.example.com/* orderer.example.com/
cp orderer.yaml orderer.example.com
cp orderer_start.sh orderer.example.com/start.sh
mkdir orderer.example.com/data

mkdir peer0.org1.example.com
cp -rf certs/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/* peer0.org1.example.com/
cp core.yaml peer0.org1.example.com
mkdir peer0.org1.example.com/data
cp -rf peer0.org1.example.com/ peer1.org1.example.com/
rm -rf peer1.org1.example.com/msp/
rm -rf peer1.org1.example.com/tls/
cp -rf certs/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/* peer1.org1.example.com/
sed -i "s/peer0.org1.example.com/peer1.org1.example.com/g" peer1.org1.example.com/core.yaml
cp -rf peer0.org1.example.com/ peer0.org2.example.com/
rm -rf peer0.org2.example.com/msp/
rm -rf peer0.org2.example.com/tls/
cp -rf certs/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/*  peer0.org2.example.com/
sed -i "s/peer0.org1.example.com/peer0.org2.example.com/g" peer0.org2.example.com/core.yaml
sed -i "s/Org1MSP/Org2MSP/g" peer0.org2.example.com/core.yaml

#传输peer/orderer
cp peer_start.sh peer0.org1.example.com/start.sh
cp peer_start.sh peer1.org1.example.com/start.sh
cp peer_start.sh peer0.org2.example.com/start.sh

echo "##########################################################"
echo "#########  Generating Orderer Genesis block ##############"
echo "##########################################################"

#生成创世区块
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./genesisblock
cp genesisblock ~/orderer

#远程部署peer
cd $path
ssh [email protected] "mkdir -p ~/peer; rm -rf ~/peer/*"
ssh [email protected] "mkdir -p  ~/peer; rm -rf ~/peer/*"
scp -r orderer.example.com/* ~/orderer/
scp -r peer0.org1.example.com/* ~/peer/
scp -r peer1.org1.example.com/* 10.254.247.165:~/peer/
scp -r peer0.org2.example.com/* 10.254.207.154:~/peer/

echo "##########################################################"
echo "############  start orderer && peers  ####################"
echo "##########################################################"
#启动本地的peer/orderer
cd ~/orderer
echo "strating orderer ..."
sh start.sh
if [ $? != 0 ]; then
    echo "orderer start  fail"
	exit 1
else
	echo "orderer start success"
fi

cd ~/peer
echo "starting peer ..."
sh start.sh
if [ $? != 0 ]; then
    echo "peer start  fail"
        exit 1
else
        echo "peer start success"
fi

#启动远程peer
ssh [email protected] "cd ~/peer; sh start.sh > /dev/null 2>&1 &"
ssh [email protected] "cd ~/peer; sh start.sh > /dev/null 2>&1 &"

echo "##########################################################"
echo "#########  Create Adimn && Users in each ORG #############"
echo "##########################################################"
#创建用户
#org1 Admin(peer0)
cd $path
mkdir Admin_1
cp -rf certs/peerOrganizations/org1.example.com/users/[email protected]/* Admin_1/
cp peer0.org1.example.com/core.yaml  Admin_1/
cp peer.sh Admin_1/

cd Admin_1
echo `./peer.sh node status`

#org1 user1 (peer1)
cd $path
cp -rf  Admin_1/ User_1/
rm -rf  User_1/msp
rm -rf  User_1/tls
cp -rf  certs/peerOrganizations/org1.example.com/users/[email protected]/* User_1/
sed -i "s/peer0.org1.example/peer1.org1.example/g" User_1/peer.sh

#org2 Admin
cp -rf  Admin_1/ Admin_2/
rm -rf  Admin_2/msp/
rm -rf  Admin_2/tls/
cp -rf certs/peerOrganizations/org2.example.com/users/[email protected]/* Admin_2/
sed -i "s/peer0.org1.example/peer0.org2.example/g" Admin_2/peer.sh
sed -i "s/Org1MSP/Org2MSP/g" Admin_2/peer.sh
sed -i "s/peer0.org1.example.com/peer0\.org2\.example.com/g" Admin_2/core.yaml
sed -i "s/Org1MSP/Org2MSP/g" Admin_2/core.yaml

#复制根证书
#把使用org1的另一个身份控制peer1.org1.example.com
cp -rf Admin_1/ Admin_1_2/
sed -i "s/peer0.org1.example/peer1.org1.example/g" Admin_1_2/peer.sh
cp certs/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem  Admin_1/
cp certs/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem  User_1/
cp certs/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem  Admin_2/
cp certs/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem  Admin_1_2/

echo "##########################################################"
echo "#########  Create Channel && Anchor Peer #################"
echo "##########################################################"
#创建channel
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx $mychannel.tx -channelID $mychannel
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate Org1MSPanchors.tx -channelID $mychannel -asOrg Org1MSP
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate Org2MSPanchors.tx -channelID $mychannel -asOrg Org2MSP

cd  Admin_1
./peer.sh channel create -o orderer.example.com:7050 -c $mychannel -f ../$mychannel.tx --tls true --cafile tlsca.example.com-cert.pem
cp $mychannel.block ../Admin_2
cp $mychannel.block ../User_1
cp $mychannel.block ../Admin_1_2


#peer加入channel
./peer.sh channel join -b $mychannel.block

if [ $? != 0 ]; then
    echo "peer0.org1.example join $mychannel fail"
        exit 1
else
        echo "------peer0.org1.example join $mychannel success !!!"
fi

cd ../Admin_1_2/
./peer.sh channel join -b $mychannel.block
if [ $? != 0 ]; then
    echo "peer1.org1.example join $mychannel fail"
        exit 1
else
        echo "------peer1.org1.example join $mychannel success !!!"
fi

cd ../Admin_2/
./peer.sh channel join -b $mychannel.block
if [ $? != 0 ]; then
    echo "peer0.org2.example join $mychannel fail"
        exit 1
else
        echo "------peer0.org2.example join $mychannel success !!!"
fi

cd ../Admin_1/
./peer.sh channel update -o orderer.example.com:7050 -c $mychannel -f ../Org1MSPanchors.tx --tls true --cafile ./tlsca.example.com-cert.pem

cd ../Admin_2/
./peer.sh channel update -o orderer.example.com:7050 -c $mychannel -f ../Org2MSPanchors.tx --tls true --cafile ./tlsca.example.com-cert.pem

echo "##########################################################"
echo "#################### ChainCode install ###################"
echo "##########################################################"
#安装合约
go get github.com/introclass/hyperledger-fabric-chaincodes/demo
cd $path
cd Admin_1
./peer.sh chaincode package demo-pack.out -n demo -v 0.0.1 -s -S -p github.com/introclass/hyperledger-fabric-chaincodes/demo
./peer.sh chaincode signpackage demo-pack.out signed-demo-pack.out
cp signed-demo-pack.out ../Admin_1_2/
cp signed-demo-pack.out ../Admin_2/
./peer.sh chaincode install ./signed-demo-pack.out

if [ $? != 0 ]; then
    echo "peer0.org1.example.com install $mychannel fail"
        exit 1
else
        echo "------peer0.org1.example.com $mychannel success !!!"
fi


cd ../Admin_1_2
./peer.sh chaincode install ./signed-demo-pack.out
if [ $? != 0 ]; then
    echo "peer1.org1.example.com install $mychannel fail"
        exit 1
else
        echo "------peer1.org1.example.com $mychannel success !!!"
fi

cd ../Admin_2
./peer.sh chaincode install ./signed-demo-pack.out
if [ $? != 0 ]; then
    echo "peer0.org2.example.com install $mychannel fail"
        exit 1
else
        echo "------peer0.org2.example.com $mychannel success !!!"
fi





echo "##########################################################"
echo "#################### ChainCode invoke  ###################"
echo "##########################################################"
cd ../Admin_1
echo "Admin_1 instantiate"
./peer.sh chaincode instantiate -o orderer.example.com:7050 --tls true --cafile ./tlsca.example.com-cert.pem -C $mychannel -n demo -v 0.0.1 -c '{"Args":["init"]}' -P "OR('Org1MSP.member','Org2MSP.member')"
sleep 10
echo "Admin_1 invoke"
./peer.sh chaincode invoke -o orderer.example.com:7050  --tls true --cafile ./tlsca.example.com-cert.pem -C $mychannel -n demo -c '{"Args":["write","key1","key1valueisabc"]}'
sleep 2
cd ../Admin_2
echo "Admin_2 query"
./peer.sh chaincode query -C $mychannel -n demo -c '{"Args":["query","key1"]}'
sleep 2
cd ../User_1
echo "User_1 query"
./peer.sh chaincode query -C $mychannel -n demo -c '{"Args":["query","key1"]}'



echo "deploy finished !!!"

clear.sh

killall -9 orderer
killall -9 peer
rm -rf ~/peer
rm -rf ~/orderer
rm -rf Admin\@org1.example.com/
rm -rf certs/
rm -rf genesisblock
rm -rf orderer.example.com/
rm -rf peer0.org*
rm -rf peer1.org1.example.com/
rm -rf Admin_1
rm -rf Admin_2
rm -rf User_1
rm -rf Admin_1_2
rm -rf *.tx
ssh [email protected] "killall -9 peer;rm -rf ~/peer/*"
ssh [email protected] "killall -9 peer;rm -rf ~/peer/*"

peer.sh

#!/bin/bash
export FABRIC_CFG_PATH=`pwd`

export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_TLS_CERT_FILE=./tls/client.crt
export CORE_PEER_TLS_KEY_FILE=./tls/client.key

export CORE_PEER_MSPCONFIGPATH=./msp
export CORE_PEER_ADDRESS=peer0.org1.example.com:7051
export CORE_PEER_LOCALMSPID=Org1MSP
export CORE_PEER_TLS_ROOTCERT_FILE=./tls/ca.crt
export CORE_PEER_ID=cli
export CORE_LOGGING_LEVEL=INFO

peer $*

orderer_start.sh

nohup orderer start 2>&1 &

peer_start.sh

nohup peer node start 2>&1 &

cryptoconfig.yaml

OrdererOrgs:
  - Name: Orderer
    Domain: example.com
    Specs:
      - Hostname: orderer
PeerOrgs:
  - Name: Org1
    Domain: org1.example.com
    Template:
      Count: 2
    Users:
      Count: 1
  - Name: Org2
    Domain: org2.example.com
    Template:
      Count: 1
    Users:
      Count: 1

configtx.yaml

OrdererOrgs:
  - Name: Orderer
    Domain: example.com
    Specs:
      - Hostname: orderer
PeerOrgs:
  - Name: Org1
    Domain: org1.example.com
    Template:
      Count: 2
    Users:
      Count: 1
  - Name: Org2
    Domain: org2.example.com
    Template:
      Count: 1
    Users:
      Count: 1
bogon:fabric_deploy didi$ cat configtx.yaml
Profiles:
    TwoOrgsOrdererGenesis:
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *OrdererOrg
        Consortiums:
            SampleConsortium:
                Organizations:
                    - *Org1
                    - *Org2
    TwoOrgsChannel:
        Consortium: SampleConsortium
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2
Organizations:
    - &OrdererOrg
        Name: OrdererOrg
        ID: OrdererMSP
        MSPDir: ./certs/ordererOrganizations/example.com/msp
    - &Org1
        Name: Org1MSP
        ID: Org1MSP
        MSPDir: ./certs/peerOrganizations/org1.example.com/msp
        AnchorPeers:
            - Host: peer0.org1.example.com
              Port: 7051
    - &Org2
        Name: Org2MSP
        ID: Org2MSP
        MSPDir: ./certs/peerOrganizations/org2.example.com/msp
        AnchorPeers:
            - Host: peer0.org2.example.com
              Port: 7051
Orderer: &OrdererDefaults
    OrdererType: solo
    Addresses:
        - orderer.example.com:7050
    BatchTimeout: 2s
    BatchSize:
        MaxMessageCount: 10
        AbsoluteMaxBytes: 99 MB
        PreferredMaxBytes: 512 KB
    Kafka:
        Brokers:
            - 127.0.0.1:9092
    Organizations:
Application: &ApplicationDefaults
    Organizations:

core.yaml

logging:
    peer:       warning
    cauthdsl:   warning
    gossip:     warning
    ledger:     info
    msp:        warning
    policies:   warning
    grpc:       error
    format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
peer:
    id: peer0.org1.example.com
    networkId: dev
    listenAddress: 0.0.0.0:7051
    address: 0.0.0.0:7051
    addressAutoDetect: false
    gomaxprocs: -1
    gossip:
        bootstrap: 127.0.0.1:7051
        bootstrap: peer0.org1.example.com:7051
        useLeaderElection: true
        orgLeader: false
        endpoint:
        maxBlockCountToStore: 100
        maxPropagationBurstLatency: 10ms
        maxPropagationBurstSize: 10
        propagateIterations: 1
        propagatePeerNum: 3
        pullInterval: 4s
        pullPeerNum: 3
        requestStateInfoInterval: 4s
        publishStateInfoInterval: 4s
        stateInfoRetentionInterval:
        publishCertPeriod: 10s
        skipBlockVerification: false
        dialTimeout: 3s
        connTimeout: 2s
        recvBuffSize: 20
        sendBuffSize: 200
        digestWaitTime: 1s
        requestWaitTime: 1s
        responseWaitTime: 2s
        aliveTimeInterval: 5s
        aliveExpirationTimeout: 25s
        reconnectInterval: 25s
        externalEndpoint: peer0.org1.example.com:7051
        election:
            startupGracePeriod: 15s
            membershipSampleInterval: 1s
            leaderAliveThreshold: 10s
            leaderElectionDuration: 5s
    events:
        address: 0.0.0.0:7053
        buffersize: 100
        timeout: 10ms
    tls:
        enabled: true
        cert:
            file: ./tls/server.crt
        key:
            file: ./tls/server.key
        rootcert:
            file: ./tls/ca.crt
        serverhostoverride:
    fileSystemPath: ./data
    BCCSP:
        Default: SW
        SW:
            Hash: SHA2
            Security: 256
            FileKeyStore:
                KeyStore:
    mspConfigPath: msp
    localMspId: Org1MSP
    profile:
        enabled:    true
        listenAddress: 0.0.0.0:6060
vm:
    endpoint: unix:///var/run/docker.sock
    docker:
        tls:
            enabled: false
            ca:
                file: docker/ca.crt
            cert:
                file: docker/tls.crt
            key:
                file: docker/tls.key
        attachStdout: false
        hostConfig:
            NetworkMode: host
            Dns:
               # - 192.168.0.1
            LogConfig:
                Type: json-file
                Config:
                    max-size: "50m"
                    max-file: "5"
            Memory: 2147483648
chaincode:
    peerAddress:
    id:
        path:
        name:
    builder: $(DOCKER_NS)/fabric-ccenv:$(ARCH)-$(PROJECT_VERSION)
    golang:
        runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)
    car:
        runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)
    java:
        Dockerfile:  |
            from $(DOCKER_NS)/fabric-javaenv:$(ARCH)-$(PROJECT_VERSION)
    startuptimeout: 300s
    executetimeout: 30s
    mode: net
    keepalive: 0
    system:
        cscc: enable
        lscc: enable
        escc: enable
        vscc: enable
        qscc: enable
    logging:
      level:  info
      shim:   warning
      format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
ledger:
  blockchain:
  state:
    stateDatabase: goleveldb
    couchDBConfig:
       couchDBAddress: 127.0.0.1:5984
       username:
       password:
       maxRetries: 3
       maxRetriesOnStartup: 10
       requestTimeout: 35s
       queryLimit: 10000
  history:
    enableHistoryDatabase: true
bogon:fabric_deploy didi$
bogon:fabric_deploy didi$
bogon:fabric_deploy didi$ cat core.yaml
logging:
    peer:       warning
    cauthdsl:   warning
    gossip:     warning
    ledger:     info
    msp:        warning
    policies:   warning
    grpc:       error
    format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
peer:
    id: peer0.org1.example.com
    networkId: dev
    listenAddress: 0.0.0.0:7051
    address: 0.0.0.0:7051
    addressAutoDetect: false
    gomaxprocs: -1
    gossip:
        bootstrap: 127.0.0.1:7051
        bootstrap: peer0.org1.example.com:7051
        useLeaderElection: true
        orgLeader: false
        endpoint:
        maxBlockCountToStore: 100
        maxPropagationBurstLatency: 10ms
        maxPropagationBurstSize: 10
        propagateIterations: 1
        propagatePeerNum: 3
        pullInterval: 4s
        pullPeerNum: 3
        requestStateInfoInterval: 4s
        publishStateInfoInterval: 4s
        stateInfoRetentionInterval:
        publishCertPeriod: 10s
        skipBlockVerification: false
        dialTimeout: 3s
        connTimeout: 2s
        recvBuffSize: 20
        sendBuffSize: 200
        digestWaitTime: 1s
        requestWaitTime: 1s
        responseWaitTime: 2s
        aliveTimeInterval: 5s
        aliveExpirationTimeout: 25s
        reconnectInterval: 25s
        externalEndpoint: peer0.org1.example.com:7051
        election:
            startupGracePeriod: 15s
            membershipSampleInterval: 1s
            leaderAliveThreshold: 10s
            leaderElectionDuration: 5s
    events:
        address: 0.0.0.0:7053
        buffersize: 100
        timeout: 10ms
    tls:
        enabled: true
        cert:
            file: ./tls/server.crt
        key:
            file: ./tls/server.key
        rootcert:
            file: ./tls/ca.crt
        serverhostoverride:
    fileSystemPath: ./data
    BCCSP:
        Default: SW
        SW:
            Hash: SHA2
            Security: 256
            FileKeyStore:
                KeyStore:
    mspConfigPath: msp
    localMspId: Org1MSP
    profile:
        enabled:    true
        listenAddress: 0.0.0.0:6060
vm:
    endpoint: unix:///var/run/docker.sock
    docker:
        tls:
            enabled: false
            ca:
                file: docker/ca.crt
            cert:
                file: docker/tls.crt
            key:
                file: docker/tls.key
        attachStdout: false
        hostConfig:
            NetworkMode: host
            Dns:
               # - 192.168.0.1
            LogConfig:
                Type: json-file
                Config:
                    max-size: "50m"
                    max-file: "5"
            Memory: 2147483648
chaincode:
    peerAddress:
    id:
        path:
        name:
    builder: $(DOCKER_NS)/fabric-ccenv:$(ARCH)-$(PROJECT_VERSION)
    golang:
        runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)
    car:
        runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)
    java:
        Dockerfile:  |
            from $(DOCKER_NS)/fabric-javaenv:$(ARCH)-$(PROJECT_VERSION)
    startuptimeout: 300s
    executetimeout: 30s
    mode: net
    keepalive: 0
    system:
        cscc: enable
        lscc: enable
        escc: enable
        vscc: enable
        qscc: enable
    logging:
      level:  info
      shim:   warning
      format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
ledger:
  blockchain:
  state:
    stateDatabase: goleveldb
    couchDBConfig:
       couchDBAddress: 127.0.0.1:5984
       username:
       password:
       maxRetries: 3
       maxRetriesOnStartup: 10
       requestTimeout: 35s
       queryLimit: 10000
  history:
    enableHistoryDatabase: true

orderer.yaml

General:
    LedgerType: file
    ListenAddress: 0.0.0.0
    ListenPort: 7050
    TLS:
        Enabled: true
        PrivateKey: ./tls/server.key
        Certificate: ./tls/server.crt
        RootCAs:
          - ./tls/ca.crt
#        ClientAuthEnabled: false
#        ClientRootCAs:
    LogLevel: warning
    LogFormat: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
#    GenesisMethod: provisional
    GenesisMethod: file
    GenesisProfile: SampleInsecureSolo
    GenesisFile: ./genesisblock
    LocalMSPDir: ./msp
    LocalMSPID: OrdererMSP
    Profile:
        Enabled: false
        Address: 0.0.0.0:6060
    BCCSP:
        Default: SW
        SW:
            Hash: SHA2
            Security: 256
            FileKeyStore:
                KeyStore:
FileLedger:
    Location:  ./data
    Prefix: hyperledger-fabric-ordererledger
RAMLedger:
    HistorySize: 1000
Kafka:
    Retry:
        ShortInterval: 5s
        ShortTotal: 10m
        LongInterval: 5m
        LongTotal: 12h
        NetworkTimeouts:
            DialTimeout: 10s
            ReadTimeout: 10s
            WriteTimeout: 10s
        Metadata:
            RetryBackoff: 250ms
            RetryMax: 3
        Producer:
            RetryBackoff: 100ms
            RetryMax: 3
        Consumer:
            RetryBackoff: 2s
    Verbose: false
    TLS:
      Enabled: false
      PrivateKey:
        #File: path/to/PrivateKey
      Certificate:
        #File: path/to/Certificate
      RootCAs:
        #File: path/to/RootCAs
    Version:

执行结果

[dc2-user@cli fabric-tt]$ sh deploy.sh e3
start deploying
##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
org1.example.com
org2.example.com
##########################################################
#########  Generating Orderer Genesis block ##############
##########################################################
2018-12-03 13:27:48.956 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration
2018-12-03 13:27:48.968 CST [common/tools/configtxgen] doOutputBlock -> INFO 002 Generating genesis block
2018-12-03 13:27:48.968 CST [common/tools/configtxgen] doOutputBlock -> INFO 003 Writing genesis block
core.yaml                                                                                                          100% 3775     1.8MB/s   00:00
ca.org1.example.com-cert.pem                                                                                       100%  847   599.7KB/s   00:00
tlsca.org1.example.com-cert.pem                                                                                    100%  855   598.1KB/s   00:00
1cf21cf4938f07be5e001e342ea371487395012c2189e66fff96595b8df46f2e_sk                                                100%  241   199.0KB/s   00:00
peer1.org1.example.com-cert.pem                                                                                    100%  790   554.9KB/s   00:00
[email protected]                                                                                    100%  790   555.6KB/s   00:00
start.sh                                                                                                           100%   29    20.2KB/s   00:00
ca.crt                                                                                                             100%  855   614.7KB/s   00:00
server.crt                                                                                                         100%  895   675.0KB/s   00:00
server.key                                                                                                         100%  241   184.2KB/s   00:00
core.yaml                                                                                                          100% 3775     2.1MB/s   00:00
ca.org2.example.com-cert.pem                                                                                       100%  847   702.3KB/s   00:00
tlsca.org2.example.com-cert.pem                                                                                    100%  855   729.3KB/s   00:00
e89f38b925c60d469913a9f84d935fbf9ade2f29633fb4aa0a0734048e29752e_sk                                                100%  241   210.1KB/s   00:00
peer0.org2.example.com-cert.pem                                                                                    100%  790   615.6KB/s   00:00
[email protected]                                                                                    100%  790   596.1KB/s   00:00
start.sh                                                                                                           100%   29    27.4KB/s   00:00
ca.crt                                                                                                             100%  855   710.6KB/s   00:00
server.crt                                                                                                         100%  895   754.2KB/s   00:00
server.key                                                                                                         100%  241   188.5KB/s   00:00
##########################################################
############  start orderer && peers  ####################
##########################################################
strating orderer ...
orderer start success
starting peer ...
nohup: 把输出追加到"nohup.out"
peer start success
nohup: 把输出追加到"nohup.out"
##########################################################
#########  Create Adimn && Users in each ORG #############
##########################################################
2018-12-03 13:27:50.379 CST [main] main -> INFO 001 Exiting.....
status:STARTED
##########################################################
#########  Create Channel && Anchor Peer #################
##########################################################
2018-12-03 13:27:50.461 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration
2018-12-03 13:27:50.470 CST [common/tools/configtxgen] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx
2018-12-03 13:27:50.488 CST [common/tools/configtxgen] doOutputChannelCreateTx -> INFO 003 Writing new channel tx
2018-12-03 13:27:50.523 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration
2018-12-03 13:27:50.532 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-12-03 13:27:50.532 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
2018-12-03 13:27:50.566 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration
2018-12-03 13:27:50.577 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-12-03 13:27:50.577 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
2018-12-03 13:27:50.641 CST [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-12-03 13:27:50.670 CST [channelCmd] InitCmdFactory -> INFO 002 Endorser and orderer connections initialized
2018-12-03 13:27:50.875 CST [main] main -> INFO 003 Exiting.....
2018-12-03 13:27:50.956 CST [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-12-03 13:27:50.990 CST [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
2018-12-03 13:27:50.990 CST [main] main -> INFO 003 Exiting.....
------peer0.org1.example join e3 success !!!
2018-12-03 13:27:51.045 CST [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-12-03 13:27:51.086 CST [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
2018-12-03 13:27:51.086 CST [main] main -> INFO 003 Exiting.....
------peer1.org1.example join e3 success !!!
2018-12-03 13:27:51.155 CST [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-12-03 13:27:51.199 CST [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
2018-12-03 13:27:51.200 CST [main] main -> INFO 003 Exiting.....
------peer0.org2.example join e3 success !!!
2018-12-03 13:27:51.265 CST [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-12-03 13:27:51.279 CST [channelCmd] update -> INFO 002 Successfully submitted channel update
2018-12-03 13:27:51.279 CST [main] main -> INFO 003 Exiting.....
2018-12-03 13:27:51.338 CST [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-12-03 13:27:51.349 CST [channelCmd] update -> INFO 002 Successfully submitted channel update
2018-12-03 13:27:51.349 CST [main] main -> INFO 003 Exiting.....
##########################################################
#################### ChainCode install ###################
##########################################################
2018-12-03 13:27:51.823 CST [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-12-03 13:27:51.823 CST [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2018-12-03 13:27:52.310 CST [main] main -> INFO 003 Exiting.....
Wrote signed package to signed-demo-pack.out successfully
2018-12-03 13:27:52.372 CST [main] main -> INFO 001 Exiting.....
2018-12-03 13:27:52.454 CST [main] main -> INFO 001 Exiting.....
------peer0.org1.example.com e3 success !!!
2018-12-03 13:27:52.533 CST [main] main -> INFO 001 Exiting.....
------peer1.org1.example.com e3 success !!!
2018-12-03 13:27:52.611 CST [main] main -> INFO 001 Exiting.....
------peer0.org2.example.com e3 success !!!
##########################################################
#################### ChainCode invoke  ###################
##########################################################
Admin_1 instantiate
2018-12-03 13:27:52.676 CST [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-12-03 13:27:52.676 CST [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2018-12-03 13:27:52.950 CST [main] main -> INFO 003 Exiting.....
Admin_1 invoke
2018-12-03 13:28:03.025 CST [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-12-03 13:28:03.025 CST [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2018-12-03 13:28:03.033 CST [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 003 Chaincode invoke successful. result: status:200
2018-12-03 13:28:03.033 CST [main] main -> INFO 004 Exiting.....
Admin_2 query
2018-12-03 13:28:05.106 CST [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-12-03 13:28:05.106 CST [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
Query Result: key1valueisabc
2018-12-03 13:28:05.370 CST [main] main -> INFO 003 Exiting.....
User_1 query
2018-12-03 13:28:07.454 CST [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-12-03 13:28:07.454 CST [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
Query Result: key1valueisabc
2018-12-03 13:28:07.749 CST [main] main -> INFO 003 Exiting.....
deploy finished !!!

猜你喜欢

转载自blog.csdn.net/oXiaoBuDing/article/details/84762963