본문 바로가기

IT/블록체인

Hyperledger Fabric Tutorial(1) - Hyperledger Fabric sample download

Hyperledger Fabric sample download

http://hyperledger-fabric.readthedocs.io/en/latest/samples.html

cd ~/workspace
git clone https://github.com/hyperledger/fabric-samples.git
cd fabric-samples
ls

hyperledger@vm001:~$                                                                                hyperledger@vm001:~$                                                                                hyperledger@vm001:~$ cd                                                                             hyperledger@vm001:~$ ls                                                                             bin  readme.md  workspace                                                                           hyperledger@vm001:~$ cd ~/workspace                                                                 hyperledger@vm001:~/workspace$ git clone https://github.com/hyperledger/fabric-samples.git          Cloning into 'fabric-samples'...                                                                    remote: Counting objects: 1373, done.                                                               remote: Compressing objects: 100% (30/30), done.                                                    remote: Total 1373 (delta 6), reused 34 (delta 4), pack-reused 1337                                 Receiving objects: 100% (1373/1373), 512.34 KiB | 254.00 KiB/s, done.                               Resolving deltas: 100% (608/608), done.                                                             Checking connectivity... done.                                                                      hyperledger@vm001:~/workspace$ ls                                                                   fabric-samples  orion.log  readme.md                                                                hyperledger@vm001:~/workspace$ cd fabric-samples/                                                   hyperledger@vm001:~/workspace/fabric-samples$ ls                                                    balance-transfer  chaincode                 fabcar     first-network    LICENSE         README.md   basic-network     chaincode-docker-devmode  fabric-ca  high-throughput  MAINTAINERS.md  scripts     hyperledger@vm001:~/workspace/fabric-samples$                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
00:20

curl -sSL https://goo.gl/6wtTN5 | bash -s 1.1.0
docker images
ls bin
mkdir ~/bin
ln -s $(pwd)/bin/* ~/bin/
ls -l ~/bin/
peer

hyperledger/fabric-zookeeper   latest              92cbb952b6f8        4 weeks ago         1.39GB   hyperledger/fabric-zookeeper   x86_64-0.4.6        92cbb952b6f8        4 weeks ago         1.39GB   hyperledger/fabric-kafka       latest              554c591b86a8        4 weeks ago         1.4GB    hyperledger/fabric-kafka       x86_64-0.4.6        554c591b86a8        4 weeks ago         1.4GB    hyperledger/fabric-couchdb     latest              7e73c828fc5b        4 weeks ago         1.56GB   hyperledger/fabric-couchdb     x86_64-0.4.6        7e73c828fc5b        4 weeks ago         1.56GB   hyperledger@vm001:~/workspace/fabric-samples$ ls bin                                                configtxgen  configtxlator  cryptogen  fabric-ca-client  get-docker-images.sh  orderer  peer        hyperledger@vm001:~/workspace/fabric-samples$ ln -s $(pwd)/bin/* ~/bin/                             hyperledger@vm001:~/workspace/fabric-samples$ ls -l ~/bin/                                          total 4096                                                                                          -rwxrwxr-x 1 hyperledger hyperledger 4181224 Mar 21 13:05 bash                                      lrwxrwxrwx 1 hyperledger hyperledger      58 Mar 21 13:51 configtxgen -> /home/hyperledger/workspace/fabric-samples/bin/configtxgen                                                                     lrwxrwxrwx 1 hyperledger hyperledger      60 Mar 21 13:51 configtxlator -> /home/hyperledger/workspace/fabric-samples/bin/configtxlator                                                                 lrwxrwxrwx 1 hyperledger hyperledger      56 Mar 21 13:51 cryptogen -> /home/hyperledger/workspace/fabric-samples/bin/cryptogen                                                                         lrwxrwxrwx 1 hyperledger hyperledger      63 Mar 21 13:51 fabric-ca-client -> /home/hyperledger/workspace/fabric-samples/bin/fabric-ca-client                                                           lrwxrwxrwx 1 hyperledger hyperledger      67 Mar 21 13:51 get-docker-images.sh -> /home/hyperledger/workspace/fabric-samples/bin/get-docker-images.sh                                                   lrwxrwxrwx 1 hyperledger hyperledger      54 Mar 21 13:51 orderer -> /home/hyperledger/workspace/fabric-samples/bin/orderer                                                                             lrwxrwxrwx 1 hyperledger hyperledger      51 Mar 21 13:51 peer -> /home/hyperledger/workspace/fabric-samples/bin/peer                                                                                   hyperledger@vm001:~/workspace/fabric-samples$ peer                                                  2018-03-21 13:51:41.241 UTC [main] main -> ERRO 001 Fatal error when initializing core config : error when reading core config file: Unsupported Config Type ""                                         hyperledger@vm001:~/workspace/fabric-samples$                                                       
03:35

Building Your First Network

http://hyperledger-fabric.readthedocs.io/en/latest/build_network.html

cd ~/workspace/fabric-samples
cd first-network
./byfn.sh --help

Generate Network Artifacts

./byfn.sh -m generate

Bring Up the Network

./byfn.sh -m up
docker ps
  • 에러로 ./byfn.sh -m up 이 실행되지 않는 경우는 아래처럼 down, generate, up 다시 실행
./byfn.sh -m down
./byfn.sh -m generate
sudo rm -fr crypto-config channel-artifacts/genesis.block
./byfn.sh -m up

CORE_PEER_ID=cli                                                                                    CORE_LOGGING_LEVEL=INFO                                                                             CORE_PEER_ADDRESS=peer1.org2.example.com:7051                                                       + peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/   + res=0                                                                                             + set +x                                                                                            2018-03-21 14:13:10.078 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc   2018-03-21 14:13:10.078 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc   2018-03-21 14:13:10.588 UTC [main] main -> INFO 003 Exiting.....                                    ===================== Chaincode is installed on peer1.org2 =====================                                                                                                                        Querying chaincode on peer1.org2...                                                                 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                                        CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key                                         CORE_PEER_LOCALMSPID=Org2MSP                                                                        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                                        CORE_PEER_TLS_ENABLED=true                                                                          CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp                                                   CORE_PEER_ID=cli                                                                                    CORE_LOGGING_LEVEL=INFO                                                                             CORE_PEER_ADDRESS=peer1.org2.example.com:7051                                                       ===================== 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"]}'                                                                                                                                 
03:09

Bring Down the Network

./byfn.sh -m down
docker ps
docker ps -a

WARNING: Volume net_orderer.example.com not found.                                                  c7874ba19c1e                                                                                        ac54fd099d67                                                                                        4eae3b4762d5                                                                                        Untagged: dev-peer1.org2.example.com-mycc-1.0-26c2ef32838554aac4f7ad6f100aca865e87959c9a126e86d764c8d01f8346ab:latest                                                                                   Deleted: sha256:e49a7976f75d0b837c7b38e3198b77c700b6b6fb5efb2b71a48b5ff40151aaec                    Deleted: sha256:cdb943478e1d4041ea44449018d9512f80247ce391e2df92330033788d13515b                    Deleted: sha256:09a0c7a4eab3bb22f5430486b673974da21bdf44425a6dd05d702d98a514d7a1                    Deleted: sha256:f23a18da923239d597c4d20063822647ebf911408745c6890a567a86de1d902a                    Untagged: dev-peer0.org1.example.com-mycc-1.0-384f11f484b9302df90b453200cfb25174305fce8f53f4e94d45ee3b6cab0ce9:latest                                                                                   Deleted: sha256:41f6754e381fda6c86d6770f927137ec35d89b8ab35536402fe59d70b316e457                    Deleted: sha256:cb45259ef427c88d7bab0ccd17ce77cccc08c7f2ade0c9f814ac4dccfb86a7c6                    Deleted: sha256:d091cc677fd8f98ce1e8f2219ff9523198eec93884d7af6825e628e0c8f3961c                    Deleted: sha256:3af60ea28b4625589d2406c84fc81cbf3b9cd01f31d9da0ddfdfa7ee422af795                    Untagged: dev-peer0.org2.example.com-mycc-1.0-15b571b3ce849066b7ec74497da3b27e54e0df1345daff3951b94245ce09c42b:latest                                                                                   Deleted: sha256:95eb6282e7bf9502fe34e5ec4c308ecbedc42171995824b555c85292193bff4f                    Deleted: sha256:a100fa72c1f0a7da4aae2197355e3e80fd63cbeb6a236d1098b92f9409fa5dc0                    Deleted: sha256:0c36b33660fbb108c8b2e6fe017d67f90460fd404b6165fc8cc360d5fdbd639d                    Deleted: sha256:7a7cfca058713e06b12415067fb61a08cb76e5d37e1a2b9d57da4ee611914175                    hyperledger@vm001:~/workspace/fabric-samples/first-network$ docker ps                               CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES                                                                           hyperledger@vm001:~/workspace/fabric-samples/first-network$ docker ps -a                            CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES                                                                           hyperledger@vm001:~/workspace/fabric-samples/first-network$                                                                                                                                             
00:18

  • root 가 아닌 사용자로 실행시에는 추가로 root 사용자로 생성된 crypto-config 와 genesis.block 삭제 필요 sudo rm -fr crypto-config channel-artifacts/genesis.block

Crypto Generator

ls
../bin/cryptogen generate --config=./crypto-config.yaml
ls
export FABRIC_CFG_PATH=$PWD
ls channel-artifacts
../bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
ls channel-artifacts

channel-artifacts  docker-compose-couch-org3.yaml  eyfn.sh                                          configtx.yaml      docker-compose-couch.yaml       org3-artifacts                                   <./bin/cryptogen generate --config=./crypto-config.yaml                                             <./bin/cryptogen generate --config=./crypto-config.yaml                                             org1.example.com                                                                                    org2.example.com                                                                                    hyperledger@vm001:~/workspace/fabric-samples/first-network$ ls                                      base               crypto-config.yaml                docker-compose-org3.yaml                       byfn.sh            docker-compose-cli.yaml           eyfn.sh                                        channel-artifacts  docker-compose-couch-org3.yaml    org3-artifacts                                 configtx.yaml      docker-compose-couch.yaml         README.md                                      crypto-config      docker-compose-e2e-template.yaml  scripts                                        hyperledger@vm001:~/workspace/fabric-samples/first-network$ ls crypto-config                        ordererOrganizations  peerOrganizations                                                             hyperledger@vm001:~/workspace/fabric-samples/first-network$ export FABRIC_CFG_PATH=$PWD             hyperledger@vm001:~/workspace/fabric-samples/first-network$ ls channel-artifacts/                   <gsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block                                    <gsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block                                    2018-03-21 14:42:45.727 UTC [common/tools/configtxgen] main -> INFO 001 Loading configuration       2018-03-21 14:42:45.742 UTC [msp] getMspConfig -> INFO 002 Loading NodeOUs                          2018-03-21 14:42:45.743 UTC [msp] getMspConfig -> INFO 003 Loading NodeOUs                          2018-03-21 14:42:45.743 UTC [common/tools/configtxgen] doOutputBlock -> INFO 004 Generating genesis block                                                                                               2018-03-21 14:42:45.745 UTC [common/tools/configtxgen] doOutputBlock -> INFO 005 Writing genesis block                                                                                                  <gsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block                                    hyperledger@vm001:~/workspace/fabric-samples/first-network$ ls channel-artifacts/                   genesis.block                                                                                       hyperledger@vm001:~/workspace/fabric-samples/first-network$                                                                                                                                             
00:35

Create a Channel Configuration Transaction

ls channel-artifacts
export CHANNEL_NAME=mychannel  && ../bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME
ls channel-artifacts
../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP
ls channel-artifacts
../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP
ls channel-artifacts

2018-03-21 14:52:23.732 UTC [common/tools/configtxgen] main -> INFO 001 Loading configuration       2018-03-21 14:52:23.746 UTC [common/tools/configtxgen] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx                                                                              2018-03-21 14:52:23.747 UTC [msp] getMspConfig -> INFO 003 Loading NodeOUs                          2018-03-21 14:52:23.748 UTC [msp] getMspConfig -> INFO 004 Loading NodeOUs                          2018-03-21 14:52:23.775 UTC [common/tools/configtxgen] doOutputChannelCreateTx -> INFO 005 Writing new channel tx                                                                                       hyperledger@vm001:~/workspace/fabric-samples/first-network$ ls channel-artifacts/                   channel.tx  genesis.block                                                                           hyperledger@vm001:~/workspace/fabric-samples/first-network$ ../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP                                                                                               2018-03-21 14:52:30.690 UTC [common/tools/configtxgen] main -> INFO 001 Loading configuration       2018-03-21 14:52:30.703 UTC [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update                                                                              2018-03-21 14:52:30.704 UTC [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update                                                                                 hyperledger@vm001:~/workspace/fabric-samples/first-network$ ls channel-artifacts/                   channel.tx  genesis.block  Org1MSPanchors.tx                                                        hyperledger@vm001:~/workspace/fabric-samples/first-network$ ../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP                                                                                               2018-03-21 14:52:38.822 UTC [common/tools/configtxgen] main -> INFO 001 Loading configuration       2018-03-21 14:52:38.837 UTC [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update                                                                              2018-03-21 14:52:38.838 UTC [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update                                                                                 hyperledger@vm001:~/workspace/fabric-samples/first-network$ ls channel-artifacts/                   channel.tx  genesis.block  Org1MSPanchors.tx  Org2MSPanchors.tx                                     hyperledger@vm001:~/workspace/fabric-samples/first-network$                                         
00:28

Start the network

docker ps
docker-compose -f docker-compose-cli.yaml up -d
docker ps

hyperledger@vm001:~/workspace/fabric-samples/first-network$ docker-compose -f docker-compose-cli.yaml up -d                                                                                             Creating network "net_byfn" with the default driver                                                 Creating volume "net_peer0.org2.example.com" with default driver                                    Creating volume "net_peer1.org2.example.com" with default driver                                    Creating volume "net_peer1.org1.example.com" with default driver                                    Creating volume "net_peer0.org1.example.com" with default driver                                    Creating peer0.org1.example.com ... done                                                            Creating cli ... done                                                                               Creating orderer.example.com ...                                                                    Creating peer0.org2.example.com ...                                                                 Creating peer0.org1.example.com ...                                                                 Creating peer1.org1.example.com ...                                                                 Creating cli ...                                                                                    hyperledger@vm001:~/workspace/fabric-samples/first-network$ docker ps                               CONTAINER ID        IMAGE                               COMMAND             CREATED             STATUS              PORTS                                              NAMES                            523bf0eb7839        hyperledger/fabric-tools:latest     "/bin/bash"         4 seconds ago       Up 2 seconds                                                           cli                              39b01b51c382        hyperledger/fabric-peer:latest      "peer node start"   7 seconds ago       Up 4 seconds        0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp     peer1.org1.example.com           ad6ad20d7ed6        hyperledger/fabric-peer:latest      "peer node start"   7 seconds ago       Up 3 seconds        0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp     peer0.org1.example.com           3bb6e8722694        hyperledger/fabric-peer:latest      "peer node start"   7 seconds ago       Up 4 seconds        0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp     peer0.org2.example.com           7bb3da0abdc6        hyperledger/fabric-orderer:latest   "orderer"           7 seconds ago       Up 4 seconds        0.0.0.0:7050->7050/tcp                             orderer.example.com              3824bb32e45f        hyperledger/fabric-peer:latest      "peer node start"   7 seconds ago       Up 4 seconds        0.0.0.0:10051->7051/tcp, 0.0.0.0:10053->7053/tcp   peer1.org2.example.com           hyperledger@vm001:~/workspace/fabric-samples/first-network$                                         
00:20

Create & Join Channel

docker exec -it cli bash
export CHANNEL_NAME=mychannel
peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

ls -l

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

Update the anchor peers

peer channel update -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/Org1MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp CORE_PEER_ADDRESS=peer0.org2.example.com:7051 CORE_PEER_LOCALMSPID="Org2MSP" 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 peer channel update -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/Org2MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

E_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 peer channel join -b mychannel.block      2018-03-21 15:30:48.889 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized                                                                                        2018-03-21 15:30:48.987 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel                                                                                        2018-03-21 15:30:48.987 UTC [main] main -> INFO 003 Exiting.....                                    root@1f0808106c2e:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel update -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/Org1MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem                                                2018-03-21 15:30:52.591 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized                                                                                        2018-03-21 15:30:52.618 UTC [channelCmd] update -> INFO 002 Successfully submitted channel update   2018-03-21 15:30:52.618 UTC [main] main -> INFO 003 Exiting.....                                    root@1f0808106c2e:/opt/gopath/src/github.com/hyperledger/fabric/peer# CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp CORE_PEER_ADDRESS=peer0.org2.example.com:7051 CORE_PEER_LOCALMSPID="Org2MSP" 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 peer channel update -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/Org2MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem                                                            2018-03-21 15:30:56.581 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized                                                                                        2018-03-21 15:30:56.603 UTC [channelCmd] update -> INFO 002 Successfully submitted channel update   2018-03-21 15:30:56.603 UTC [main] main -> INFO 003 Exiting.....                                    root@1f0808106c2e:/opt/gopath/src/github.com/hyperledger/fabric/peer# exit                          hyperledger@vm001:~/workspace/fabric-samples/first-network$ exit                                                                                                                                        
00:32

Install & Instantiate Chaincode

peer chaincode install -n mycc -v 1.0 -p github.com/chaincode/chaincode_example02/go/
peer chaincode instantiate -o orderer.example.com:7050 --tls --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 $CHANNEL_NAME -n mycc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.peer','Org2MSP.peer')"

Query

peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

Invoke

peer chaincode invoke -o orderer.example.com:7050  --tls --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 $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'

Query

peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

root@523bf0eb7839:/opt/gopath/src/github.com/hyperledger/fabric/peer#                               root@523bf0eb7839:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'                                                         2018-03-21 15:07:46.862 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc   2018-03-21 15:07:46.862 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc   Query Result: 100                                                                                   2018-03-21 15:07:46.872 UTC [main] main -> INFO 003 Exiting.....                                    root@523bf0eb7839:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode invoke -o orderer.example.com:7050  --tls --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 $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'                                       2018-03-21 15:07:52.049 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc   2018-03-21 15:07:52.049 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc   2018-03-21 15:07:52.064 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 003 Chaincode invoke successful. result: status:200                                                                           2018-03-21 15:07:52.065 UTC [main] main -> INFO 004 Exiting.....                                    root@523bf0eb7839:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'                                                         2018-03-21 15:07:58.452 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc   2018-03-21 15:07:58.452 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc   Query Result: 90                                                                                    2018-03-21 15:07:58.466 UTC [main] main -> INFO 003 Exiting.....                                    root@523bf0eb7839:/opt/gopath/src/github.com/hyperledger/fabric/peer# exit                          hyperledger@vm001:~/workspace/fabric-samples/first-network$                                         hyperledger@vm001:~/workspace/fabric-samples/first-network$ docker ps |grep dev                     8114959fcdb0        dev-peer0.org1.example.com-mycc-1.0-384f11f484b9302df90b453200cfb25174305fce8f53f4e94d45ee3b6cab0ce9   "chaincode -peer.add…"   30 seconds ago      Up 29 seconds                                                          dev-peer0.org1.example.com-mycc-1.0                          hyperledger@vm001:~/workspace/fabric-samples/first-network$ exit                                                                                                                                        
01:36

How do I see these transactions?

docker logs -f cli

How can I see the chaincode logs?

docker logs dev-peer0.org2.example.com-mycc-1.0
docker logs dev-peer0.org1.example.com-mycc-1.0
docker logs dev-peer1.org2.example.com-mycc-1.0