heidsoft / cloud-bigdata-book

write book
56 stars 33 forks source link

fabric-区块链测试 #55

Open heidsoft opened 5 years ago

heidsoft commented 5 years ago
➜  first-network git:(94c21eb) ./byfn.sh up
Starting for channel 'mychannel' with CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] y
proceeding ...
LOCAL_VERSION=1.3.0
DOCKER_IMAGE_VERSION=1.3.0
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 peer1.org1.example.com ... done
Creating peer0.org1.example.com ... done
Creating peer0.org2.example.com ... done
Creating peer1.org2.example.com ... done
Creating orderer.example.com    ... done
Creating cli                    ... done

 ____    _____      _      ____    _____
/ ___|  |_   _|    / \    |  _ \  |_   _|
\___ \    | |     / _ \   | |_) |   | |
 ___) |   | |    / ___ \  |  _ <    | |
|____/    |_|   /_/   \_\ |_| \_\   |_|

Build your first network (BYFN) end-to-end test

Channel name : mychannel
Creating channel...
+ peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
+ res=0
+ set +x
2018-11-20 15:04:28.415 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-11-20 15:04:28.464 UTC [cli/common] readBlock -> INFO 002 Received block: 0
===================== Channel 'mychannel' created =====================

Having all peers join the channel...
+ peer channel join -b mychannel.block
+ res=0
+ set +x
2018-11-20 15:04:28.598 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-11-20 15:04:28.646 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
===================== peer0.org1 joined channel 'mychannel' =====================

+ peer channel join -b mychannel.block
+ res=0
+ set +x
2018-11-20 15:04:31.770 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-11-20 15:04:31.813 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
===================== peer1.org1 joined channel 'mychannel' =====================

+ peer channel join -b mychannel.block
+ res=0
+ set +x
2018-11-20 15:04:34.931 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-11-20 15:04:34.975 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
===================== peer0.org2 joined channel 'mychannel' =====================

+ peer channel join -b mychannel.block
+ res=0
+ set +x
2018-11-20 15:04:38.096 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-11-20 15:04:38.139 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
===================== peer1.org2 joined channel 'mychannel' =====================

Updating anchor peers for org1...
+ peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
+ res=0
+ set +x
2018-11-20 15:04:41.264 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-11-20 15:04:41.280 UTC [channelCmd] update -> INFO 002 Successfully submitted channel update
===================== Anchor peers updated for org 'Org1MSP' on channel 'mychannel' =====================

Updating anchor peers for org2...
+ peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org2MSPanchors.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
+ res=0
+ set +x
2018-11-20 15:04:44.411 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-11-20 15:04:44.434 UTC [channelCmd] update -> INFO 002 Successfully submitted channel update
===================== Anchor peers updated for org 'Org2MSP' on channel 'mychannel' =====================

Installing chaincode on peer0.org1...
+ peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/
+ res=0
+ set +x
2018-11-20 15:04:47.583 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-11-20 15:04:47.583 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2018-11-20 15:04:48.220 UTC [chaincodeCmd] install -> INFO 003 Installed remotely response:<status:200 payload:"OK" >
===================== Chaincode is installed on peer0.org1 =====================

Install chaincode on peer0.org2...
+ peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/
+ res=0
+ set +x
2018-11-20 15:04:48.366 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-11-20 15:04:48.366 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2018-11-20 15:04:48.614 UTC [chaincodeCmd] install -> INFO 003 Installed remotely response:<status:200 payload:"OK" >
===================== Chaincode is installed on peer0.org2 =====================

Instantiating chaincode on peer0.org2...
+ peer chaincode instantiate -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -l golang -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P 'AND ('\''Org1MSP.peer'\'','\''Org2MSP.peer'\'')'
+ res=0
+ set +x
2018-11-20 15:04:48.765 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-11-20 15:04:48.766 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
===================== Chaincode is instantiated on peer0.org2 on channel 'mychannel' =====================

Querying chaincode on peer0.org1...
===================== Querying on peer0.org1 on channel 'mychannel'... =====================
Attempting to Query peer0.org1 ...3 secs
+ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
+ res=0
+ set +x

100
===================== Query successful on peer0.org1 on channel 'mychannel' =====================
Sending invoke transaction on peer0.org1 peer0.org2...
+ peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["invoke","a","b","10"]}'
+ res=0
+ set +x
2018-11-20 15:05:27.998 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200
===================== Invoke transaction successful on peer0.org1 peer0.org2 on channel 'mychannel' =====================

Installing chaincode on peer1.org2...
+ peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/
+ res=0
+ set +x
2018-11-20 15:05:28.150 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2018-11-20 15:05:28.150 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2018-11-20 15:05:28.394 UTC [chaincodeCmd] install -> INFO 003 Installed remotely response:<status:200 payload:"OK" >
===================== Chaincode is installed on peer1.org2 =====================

Querying chaincode on peer1.org2...
===================== Querying on peer1.org2 on channel 'mychannel'... =====================
Attempting to Query peer1.org2 ...3 secs
+ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
+ res=0
+ set +x

90
===================== Query successful on peer1.org2 on channel 'mychannel' =====================

========= All GOOD, BYFN execution completed ===========

 _____   _   _   ____
| ____| | \ | | |  _ \
|  _|   |  \| | | | | |
| |___  | |\  | | |_| |
|_____| |_| \_| |____/
heidsoft commented 5 years ago
1. 创建channel

peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

2. 将peer 加入到管道
peer channel join -b mychannel.block

3. 安装chaincode
peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/

4. 启动chaincode
peer chaincode instantiate -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -l golang -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P 'AND ('\''Org1MSP.peer'\'','\''Org2MSP.peer'\'')'

5. 查询chaincode
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

6. 调用chaincode
peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["invoke","a","b","10"]}'
heidsoft commented 5 years ago

通过hyperledger/fabric-tools:latest 容器可以操作相关的peer,如下是常用的配置环境变量

CORE_PEER_LOCALMSPID=Org1MSP
CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/go/bin:/opt/gopath/bin
PWD=/opt/gopath/src/github.com/hyperledger/fabric/peer
CORE_PEER_TLS_ENABLED=true
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
CORE_PEER_ID=cli
SHLVL=1
HOME=/root
GOROOT=/opt/go
CORE_LOGGING_LEVEL=INFO
FABRIC_CFG_PATH=/etc/hyperledger/fabric
GOCACHE=off
CORE_PEER_ADDRESS=peer0.org1.example.com:7051
LESSOPEN=| /usr/bin/lesspipe %s
GOPATH=/opt/gopath
LESSCLOSE=/usr/bin/lesspipe %s %s
_=/usr/bin/env
heidsoft commented 5 years ago
➜  first-network git:(master) ✗ configtxgen -inspectChannelCreateTx ./channel-artifacts/heidsoft/channel.tx
2018-11-21 12:06:54.460 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration
2018-11-21 12:06:54.480 CST [common/tools/configtxgen] doInspectChannelCreateTx -> INFO 002 Inspecting transaction
2018-11-21 12:06:54.481 CST [common/tools/configtxgen] doInspectChannelCreateTx -> INFO 003 Parsing transaction
{
    "payload": {
        "data": {
            "config_update": {
                "channel_id": "heidsoft",
                "isolated_data": {},
                "read_set": {
                    "groups": {
                        "Application": {
                            "groups": {
                                "Org1MSP": {
                                    "groups": {},
                                    "mod_policy": "",
                                    "policies": {},
                                    "values": {},
                                    "version": "0"
                                },
                                "Org2MSP": {
                                    "groups": {},
                                    "mod_policy": "",
                                    "policies": {},
                                    "values": {},
                                    "version": "0"
                                }
                            },
                            "mod_policy": "",
                            "policies": {},
                            "values": {},
                            "version": "0"
                        }
                    },
                    "mod_policy": "",
                    "policies": {},
                    "values": {
                        "Consortium": {
                            "mod_policy": "",
                            "value": null,
                            "version": "0"
                        }
                    },
                    "version": "0"
                },
                "write_set": {
                    "groups": {
                        "Application": {
                            "groups": {
                                "Org1MSP": {
                                    "groups": {},
                                    "mod_policy": "",
                                    "policies": {},
                                    "values": {},
                                    "version": "0"
                                },
                                "Org2MSP": {
                                    "groups": {},
                                    "mod_policy": "",
                                    "policies": {},
                                    "values": {},
                                    "version": "0"
                                }
                            },
                            "mod_policy": "Admins",
                            "policies": {
                                "Admins": {
                                    "mod_policy": "Admins",
                                    "policy": {
                                        "type": 3,
                                        "value": {
                                            "rule": "MAJORITY",
                                            "sub_policy": "Admins"
                                        }
                                    },
                                    "version": "0"
                                },
                                "Readers": {
                                    "mod_policy": "Admins",
                                    "policy": {
                                        "type": 3,
                                        "value": {
                                            "rule": "ANY",
                                            "sub_policy": "Readers"
                                        }
                                    },
                                    "version": "0"
                                },
                                "Writers": {
                                    "mod_policy": "Admins",
                                    "policy": {
                                        "type": 3,
                                        "value": {
                                            "rule": "ANY",
                                            "sub_policy": "Writers"
                                        }
                                    },
                                    "version": "0"
                                }
                            },
                            "values": {
                                "Capabilities": {
                                    "mod_policy": "Admins",
                                    "value": {
                                        "capabilities": {
                                            "V1_3": {}
                                        }
                                    },
                                    "version": "0"
                                }
                            },
                            "version": "1"
                        }
                    },
                    "mod_policy": "",
                    "policies": {},
                    "values": {
                        "Consortium": {
                            "mod_policy": "",
                            "value": {
                                "name": "SampleConsortium"
                            },
                            "version": "0"
                        }
                    },
                    "version": "0"
                }
            },
            "signatures": []
        },
        "header": {
            "channel_header": {
                "channel_id": "heidsoft",
                "epoch": "0",
                "extension": null,
                "timestamp": "2018-11-21T03:55:53Z",
                "tls_cert_hash": null,
                "tx_id": "",
                "type": 2,
                "version": 0
            },
            "signature_header": null
        }
    },
    "signature": null
}
➜  first-network git:(master) ✗
heidsoft commented 5 years ago

目标创建heidsoft fabric 区块链网络

生成创世块

configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/heidsoft/genesis.block

生成Channel配置区块

configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/heidsoft/channel.tx -channelID heidsoft

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/heidsoft/Org1MSPanchors.tx -channelID heidsoft -asOrg Org1MSP

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/heidsoft/Org2MSPanchors.tx -channelID heidsoft -asOrg Org2MSP

创建管道

export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

peer channel create -o orderer.example.com:7050 -c heidsoft -f ./channel-artifacts/heidsoft/channel.tx --tls true --cafile $ORDERER_CA

将区块加入到管道peer0.org1

root@2284e29f5b2a:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel join -b heidsoft.block
2018-11-21 05:33:27.606 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-11-21 05:33:27.669 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
root@2284e29f5b2a:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel list
2018-11-21 05:33:39.095 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
Channels peers has joined:
mychannel
heidsoft
root@2284e29f5b2a:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel join --help

root@2284e29f5b2a:/opt/gopath/src/github.com/hyperledger/fabric/peer# env|grep -i CORE_PEER_LOCALMSPID
CORE_PEER_LOCALMSPID=Org1MSP
root@2284e29f5b2a:/opt/gopath/src/github.com/hyperledger/fabric/peer# env|grep -i CORE_PEER_TLS_ROOTCERT_FILE
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
root@2284e29f5b2a:/opt/gopath/src/github.com/hyperledger/fabric/peer# env|grep -i CORE_PEER_MSPCONFIGPATH
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
root@2284e29f5b2a:/opt/gopath/src/github.com/hyperledger/fabric/peer# env|grep -i CORE_PEER_ADDRESS
CORE_PEER_ADDRESS=peer0.org1.example.com:7051
root@2284e29f5b2a:/opt/gopath/src/github.com/hyperledger/fabric/peer#

加入peer1.org1

export CORE_PEER_LOCALMSPID="Org1MSP" 
export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt 
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp 
export CORE_PEER_ADDRESS=peer1.org1.example.com:7051

root@2284e29f5b2a:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel join -b heidsoft.block
2018-11-21 05:42:05.118 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-11-21 05:42:05.205 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
root@2284e29f5b2a:/opt/gopath/src/github.com/hyperledger/fabric/peer#

加入peer0.org2

export CORE_PEER_LOCALMSPID="Org2MSP" 
export 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 
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp 
export CORE_PEER_ADDRESS=peer0.org2.example.com:7051

root@2284e29f5b2a:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel join -b heidsoft.block
2018-11-21 05:44:53.250 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-11-21 05:44:53.327 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
root@2284e29f5b2a:/opt/gopath/src/github.com/hyperledger/fabric/peer#

加入peer1.org2

export CORE_PEER_LOCALMSPID="Org2MSP" 
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt 
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp 
export CORE_PEER_ADDRESS=peer1.org2.example.com:7051

root@2284e29f5b2a:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel join -b heidsoft.block
2018-11-21 05:47:30.079 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2018-11-21 05:47:30.165 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel