Hyperledger Network 구성 (EYFN)

Updated:

Settings

Setting 부분은 Hyperledger Fabric Network 구성 -1- 부분과 동일하니 똑같이 진행하시면 됩니다.

HandOn 부분부터 다릅니다.

HandsOn

Bring Org3 into the Channel Manually

일단 제일 먼저 기본 네트워크를 구성해줍니다. EYFN 즉 새로운 org 를 추가하기 위해서는 기존 네트워크가 만들어진 상태에서 진행해야 하기 때문입니다.

$ ./byfn.sh generate
$ ./byfn.sh up

끝나고 나서 docker ps 명령어를 치면 아래와같이 설정이 되어있어야 합니다.

$ docker ps
CONTAINER ID        IMAGE                                                                                                  COMMAND                  CREATED              STATUS              PORTS                      NAMES
39969b0b38d7        dev-peer1.org2.example.com-mycc-1.0-26c2ef32838554aac4f7ad6f100aca865e87959c9a126e86d764c8d01f8346ab   "chaincode -peer.add…"   50 seconds ago       Up 48 seconds                                  dev-peer1.org2.example.com-mycc-1.0
95358327fe95        dev-peer0.org1.example.com-mycc-1.0-384f11f484b9302df90b453200cfb25174305fce8f53f4e94d45ee3b6cab0ce9   "chaincode -peer.add…"   About a minute ago   Up About a minute                              dev-peer0.org1.example.com-mycc-1.0
a3b4300dd49b        dev-peer0.org2.example.com-mycc-1.0-15b571b3ce849066b7ec74497da3b27e54e0df1345daff3951b94245ce09c42b   "chaincode -peer.add…"   About a minute ago   Up About a minute                              dev-peer0.org2.example.com-mycc-1.0
c20200aa1fbb        hyperledger/fabric-tools:latest                                                                        "/bin/bash"              2 minutes ago        Up 2 minutes                                   cli
ea27dd462838        hyperledger/fabric-peer:latest                                                                         "peer node start"        2 minutes ago        Up 2 minutes        0.0.0.0:8051->8051/tcp     peer1.org1.example.com
a9eb0c75a4ed        hyperledger/fabric-peer:latest                                                                         "peer node start"        2 minutes ago        Up 2 minutes        0.0.0.0:7051->7051/tcp     peer0.org1.example.com
20f02bdc7981        hyperledger/fabric-peer:latest                                                                         "peer node start"        2 minutes ago        Up 2 minutes        0.0.0.0:9051->9051/tcp     peer0.org2.example.com
6e4c68bcfdab        hyperledger/fabric-peer:latest                                                                         "peer node start"        2 minutes ago        Up 2 minutes        0.0.0.0:10051->10051/tcp   peer1.org2.example.com
a67a88110615        hyperledger/fabric-orderer:latest                                                                      "orderer"                2 minutes ago        Up 2 minutes        0.0.0.0:7050->7050/tcp     orderer.example.com

Generate the Org3 Crypto Material

org3-artifacts 라는 서브 디렉토리로 들어가줍니다.

$ cd org3-artifacts

디렉토리로 들어가보면 org3-crypto.yamlconfigtx.yaml 라는 2개의 yaml 파일이 있습니다. 이 파일을 이용하여 인증서 파일을 만들어줍니다.

$ ../../bin/cryptogen generate --config=./org3-crypto.yaml
org3.example.com

그럼 아래와 같이 crypto-config 라는 폴더가 생겨납니다.

$ ls
configtx.yaml  crypto-config  org3-crypto.yaml

이제 configtxgen 유틸리티를 사용하여 Org3 특정 구성 자료를 JSON으로 출력합니다. 다음 명령을 입력하여 현재 디렉토리에서 수집해야하는 configtx.yaml 파일을 찾도록 지시합니다.

$ export FABRIC_CFG_PATH=$PWD && ../../bin/configtxgen -printOrg Org3MSP > ../channel-artifacts/org3.json
2020-01-06 11:12:53.747 UTC [common.tools.configtxgen] main -> INFO 001 Loading configuration
2020-01-06 11:12:53.748 UTC [common.tools.configtxgen.localconfig] LoadTopLevel -> INFO 002 Loaded configuration: /home/vagrant/fabric-samples/first-network/org3-artifacts/configtx.yaml
2020-01-06 11:12:53.750 UTC [common.tools.configtxgen.encoder] NewConsortiumOrgGroup -> WARN 003 Default policy emission is deprecated, please include policy specifications for the orderer org group Org3MSP in configtx.yaml

위의 명령은 JSON 파일 (org3.json)을 작성하여 첫 번째 네트워크의 루트에있는 채널 아티팩트 서브 디렉토리에 출력합니다. 이 파일에는 Org3에 대한 정책 정의와 기본 64 형식으로 제공되는 세 가지 중요한 인증서, 즉 admin user certificate (나중에 Org3 의 관리자로 작동하는 데 필요함), CA root cert 및 ` TLS root cert` 가 포함되어 있습니다. 다음 단계에서는이 JSON 파일을 채널 구성에 추가합니다.

마지막 정리 작업은 Orderer OrgMSP 자료를 Org3 crypto-config 디렉토리로 이식하는 것입니다. 특히, 우리는 Org3 엔티티와 네트워크의 orderering node 사이의 안전한 통신을 허용하는 Orderer의 TLS 루트 인증서에 관심가져야 합니다.

$ cd ../ && cp -r crypto-config/ordererOrganizations org3-artifacts/crypto-config/

이제 준비단계는 끝났습니다.

Prepare the CLI Environment

cli 컨테이너로 접속을 합니다.

$ docker exec -it cli bash
root@c20200aa1fbb:/opt/gopath/src/github.com/hyperledger/fabric/peer#

ORDERER_CACHANNEL_NAME 변수를 설정합니다.

$ 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  && export CHANNEL_NAME=mychannel

변수가 정확하게 설정이 되었는지 확인합니다.

$ echo $ORDERER_CA && echo $CHANNEL_NAME

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

Fetch the Configuration

아래 명령은 바이너리 protobuf 채널 구성 블록을 config_block.pb 에 저장합니다. 이름과 파일 확장자의 선택은 임의적입니다. 그러나 표시되는 객체 유형과 인코딩 (protobuf 또는 JSON)을 모두 식별하는 규칙을 따르는 것이 좋습니다.

$ peer channel fetch config config_block.pb -o orderer.example.com:7050 -c $CHANNEL_NAME --tls --cafile $ORDERER_CA

2020-01-06 11:20:09.140 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-01-06 11:20:09.142 UTC [cli.common] readBlock -> INFO 002 Received block: 4
2020-01-06 11:20:09.144 UTC [cli.common] readBlock -> INFO 003 Received block: 2
2020-01-06 11:20:09.144 UTC [channelCmd] fetch -> INFO 004 Retrieving last config block: 2

이것은 mychannel 에 대한 가장 최신 구성 블록이 실제로 블록 2가 아니라 생성 블록이라는 것을 알려줍니다. 기본적으로 peer channel fetch config 명령은 대상 채널에 대한 최신 구성 블록 (이 경우 세 번째 블록)을 반환합니다. BYFN 스크립트가 두 조직 (Org1Org2)의 앵커 피어를 두 개의 개별 채널 업데이트 트랜잭션에 정의했기 때문입니다.

결과적으로 다음과 같은 구성 순서가 있습니다.

  • block 0: genesis block
  • block 1: Org1 anchor peer update
  • block 2: Org2 anchor peer update

Convert the Configuration to JSON and Trim It Down

이제 configtxlator 도구를 사용하여이 채널 구성 블록을 JSON 형식 (인간이 읽고 수정할 수 있음)으로 디코딩합니다. 또한 변경하려는 내용과 관련이없는 모든 헤더, 메타 데이터, 제작자 서명 등을 제거해야합니다. jq 도구를 사용하여이를 수행합니다.

$ configtxlator proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config > config.json

이로 인해 첫 번째 네트워크 내의 fabric-samples 폴더에있는 정리 된 JSON 객체 인 config.json 이 구성 업데이트의 기준으로 사용됩니다.

Add the Org3 Crypto Material

jq 도구를 한 번 더 사용하여 Org3 구성 정의 (org3.json)를 채널의 애플리케이션 그룹 필드에 추가하고 출력 이름을 modified_config.json 으로 지정합니다.

$ jq -s '.[0] * {"channel_group":{"groups":{"Application":{"groups": {"Org3MSP":.[1]}}}}}' config.json ./channel-artifacts/org3.json > modified_config.json

이제 CLI 컨테이너 내에 config.jsonmodified_config.json 이라는 두 개의 JSON 파일이 있습니다. 초기 파일에는 Org1Org2 만 포함되어 있으며 수정 된 파일에는 3 개의 조직이 모두 포함되어 있습니다. 이 시점에서 두 JSON 파일을 다시 인코딩하고 델타를 계산하면됩니다.

먼저 config.jsonconfig.pb 라는 프로토 타입으로 다시 변환하십시오.

$ configtxlator proto_encode --input config.json --type common.Config --output config.pb

그런 다음 modified_config.jsonmodified_config.pb 로 인코딩하십시오.

$ configtxlator proto_encode --input modified_config.json --type common.Config --output modified_config.pb

이제 configtxlator 를 사용하여이 두 구성 프로토 타입 간의 델타를 계산하십시오. 이 명령은 org3_update.pb 라는 새 프로토 타입 바이너리를 출력합니다.

$ configtxlator compute_update --channel_id $CHANNEL_NAME --original config.pb --updated modified_config.pb --output org3_update.pb

이 새로운 프로토 타입 인 org3_update.pb 에는 Org3 정의와 Org1 및 Org2 에 대한 고급 포인터가 포함되어 있습니다. Org1 및 Org2에 대한 광범위한 MSP 자료 및 수정 정책 정보는 채널의 생성 블록 내에 이미 존재하므로이를 무시할 수 있습니다. 따라서 두 구성 사이의 델타 만 필요합니다.

채널 업데이트를 제출하기 전에 몇 가지 최종 단계를 수행해야합니다. 먼저이 객체를 편집 가능한 JSON 형식으로 디코딩하여 org3_update.json 이라고합니다.

$ configtxlator proto_decode --input org3_update.pb --type common.ConfigUpdate | jq . > org3_update.json

이제 봉투 메시지로 감싸 야하는 디코딩 된 업데이트 파일 (org3_update.json) 이 있습니다. 이 단계는 이전에 제거했던 헤더 필드를 다시 제공합니다. 이 파일 이름을 org3_update_in_envelope.json 으로 지정합니다.

$ echo '{"payload":{"header":{"channel_header":{"channel_id":"'$CHANNEL_NAME'", "type":2}},"data":{"config_update":'$(cat org3_update.json)'}}}' | jq . > org3_update_in_envelope.json

올바르게 구성된 JSON (org3_update_in_envelope.json) 을 사용하여 마지막으로 configtxlator 도구를 활용하여 Fabric 에 필요한 본격적인 프로토 타입 형식으로 변환합니다. 최종 업데이트 개체 이름을 org3_update_in_envelope.pb 로 지정합니다.

$ configtxlator proto_encode --input org3_update_in_envelope.json --type common.Envelope --output org3_update_in_envelope.pb

처음 파일 디렉토리는 아래처럼 변경이 됩니다.

$ ls
channel-artifacts  config_block.pb  crypto  log.txt  mychannel.block scripts

$ ls
channel-artifacts  config.pb        crypto   modified_config.json  mychannel.block   org3_update.pb               org3_update_in_envelope.pb
config.json        config_block.pb  log.txt  modified_config.pb    org3_update.json  org3_update_in_envelope.json  scripts

Sign and Submit the Config Update

$ peer channel signconfigtx -f org3_update_in_envelope.pb

2020-01-06 11:22:13.217 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized

마지막으로 peer channel update 명령을 실행합니다. Org2 Admin 서명이 호출에 첨부되므로 두 번째로 프로토 타입에 수동으로 서명 할 필요가 없습니다.

$ peer channel update -f org3_update_in_envelope.pb -c $CHANNEL_NAME -o orderer.example.com:7050 --tls --cafile $ORDERER_CA

2020-01-06 11:22:52.420 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-01-06 11:22:52.440 UTC [channelCmd] update -> INFO 002 Successfully submitted channel update

Join Org3 to the Channel

이 시점에서 새로운 조직인 Org3 을 포함하도록 채널 구성이 업데이트되었습니다. 즉, 조직에 연결된 피어가 이제 내 채널에 참여할 수 있습니다.

먼저 Org3 피어 및 Org3 관련 CLI에 대한 컨테이너를 시작하겠습니다.

$ docker-compose -f docker-compose-org3.yaml up -d

Creating volume "net_peer0.org3.example.com" with default driver
Creating volume "net_peer1.org3.example.com" with default driver
WARNING: Found orphan containers (cli, peer1.org1.example.com, peer0.org1.example.com, peer0.org2.example.com, peer1.org2.example.com, orderer.example.com) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Creating peer0.org3.example.com ... done
Creating peer1.org3.example.com ... done
Creating Org3cli                ... done

docker ps 명령어를 치면 아래와같이 설정이 되어있어야 합니다.

$ docker ps
CONTAINER ID        IMAGE                                                                                                  COMMAND                  CREATED             STATUS              PORTS                      NAMES
08a94fe84b9c        hyperledger/fabric-tools:latest                                                                        "/bin/bash"              3 seconds ago       Up 2 seconds                                   Org3cli
939f8ec6075f        hyperledger/fabric-peer:latest                                                                         "peer node start"        4 seconds ago       Up 2 seconds        0.0.0.0:12051->12051/tcp   peer1.org3.example.com
22ad29d58ae6        hyperledger/fabric-peer:latest                                                                         "peer node start"        4 seconds ago       Up 2 seconds        0.0.0.0:11051->11051/tcp   peer0.org3.example.com
39969b0b38d7        dev-peer1.org2.example.com-mycc-1.0-26c2ef32838554aac4f7ad6f100aca865e87959c9a126e86d764c8d01f8346ab   "chaincode -peer.add…"   17 minutes ago      Up 17 minutes                                  dev-peer1.org2.example.com-mycc-1.0
95358327fe95        dev-peer0.org1.example.com-mycc-1.0-384f11f484b9302df90b453200cfb25174305fce8f53f4e94d45ee3b6cab0ce9   "chaincode -peer.add…"   18 minutes ago      Up 18 minutes                                  dev-peer0.org1.example.com-mycc-1.0
a3b4300dd49b        dev-peer0.org2.example.com-mycc-1.0-15b571b3ce849066b7ec74497da3b27e54e0df1345daff3951b94245ce09c42b   "chaincode -peer.add…"   18 minutes ago      Up 18 minutes                                  dev-peer0.org2.example.com-mycc-1.0
c20200aa1fbb        hyperledger/fabric-tools:latest                                                                        "/bin/bash"              19 minutes ago      Up 19 minutes                                  cli
ea27dd462838        hyperledger/fabric-peer:latest                                                                         "peer node start"        19 minutes ago      Up 19 minutes       0.0.0.0:8051->8051/tcp     peer1.org1.example.com
a9eb0c75a4ed        hyperledger/fabric-peer:latest                                                                         "peer node start"        19 minutes ago      Up 19 minutes       0.0.0.0:7051->7051/tcp     peer0.org1.example.com
20f02bdc7981        hyperledger/fabric-peer:latest                                                                         "peer node start"        19 minutes ago      Up 19 minutes       0.0.0.0:9051->9051/tcp     peer0.org2.example.com
6e4c68bcfdab        hyperledger/fabric-peer:latest                                                                         "peer node start"        19 minutes ago      Up 19 minutes       0.0.0.0:10051->10051/tcp   peer1.org2.example.com
a67a88110615        hyperledger/fabric-orderer:latest                                                                      "orderer"                19 minutes ago      Up 19 minutes       0.0.0.0:7050->7050/tcp     orderer.example.com

Setting Environments Variables

먼저 Org3cli 컨테이너로 접속을 합니다. 아래 명령어는 2번 더 사용할 예정입니다.

$ docker exec -it Org3cli /bin/bash

다음으로 먼저 환경변수 설정을 하겠습니다.

CHANNEL_NAME=mychannel
CLI_DELAY=3
LANGUAGE=golang
CLI_TIMEOUT=10
VERBOSE=false
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
CC_SRC_PATH="github.com/chaincode/chaincode_example02/go/"
VERSION=2.0

Fetch & Join Channel

$ peer channel fetch 0 $CHANNEL_NAME.block -o orderer.example.com:7050 -c $CHANNEL_NAME --tls --cafile $ORDERER_CA

2020-01-07 13:34:36.159 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-01-07 13:34:36.162 UTC [cli.common] readBlock -> INFO 002 Received block: 0

peer0.org3

PEER0_ORG3_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt
CORE_PEER_LOCALMSPID="Org3MSP"
CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG3_CA
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp
CORE_PEER_ADDRESS=peer0.org3.example.com:11051

$ peer channel join -b $CHANNEL_NAME.block

2020-01-07 13:36:36.686 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-01-07 13:36:36.706 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel

peer1.org3

export CORE_PEER_ADDRESS=peer1.org3.example.com:12051

$ peer channel join -b $CHANNEL_NAME.block

2020-01-07 13:37:31.067 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-01-07 13:37:31.088 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel

Install Chaincode

peer0.org3

CORE_PEER_ADDRESS=peer0.org3.example.com:11051 

$ peer chaincode install -n mycc -v ${VERSION} -l ${LANGUAGE} -p ${CC_SRC_PATH}

2020-01-07 13:40:35.753 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2020-01-07 13:40:35.754 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2020-01-07 13:40:35.877 UTC [chaincodeCmd] install -> INFO 003 Installed remotely response:<status:200 payload:"OK" >

여기서 Org3cli 컨테이너를 나간 뒤 cli 컨테이너로 접속합니다.

$ docker exec -it cli /bin/bash

다음 Setting Environments Variables 설정한 환경변수를 다시 설정해줍니다.

peer0.org1

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

$ peer chaincode install -n mycc -v ${VERSION} -l ${LANGUAGE} -p ${CC_SRC_PATH}

2020-01-07 13:55:38.492 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2020-01-07 13:55:38.493 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2020-01-07 13:55:38.609 UTC [chaincodeCmd] install -> INFO 003 Installed remotely response:<status:200 payload:"OK" >

peer0.org2

PEER0_ORG2_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
CORE_PEER_LOCALMSPID="Org2MSP"
CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG2_CA
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:9051

$ peer chaincode install -n mycc -v ${VERSION} -l ${LANGUAGE} -p ${CC_SRC_PATH}

2020-01-07 13:57:06.527 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2020-01-07 13:57:06.528 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2020-01-07 13:57:06.649 UTC [chaincodeCmd] install -> INFO 003 Installed remotely response:<status:200 payload:"OK" >

Upgrade Chaincode

peer0.org1

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

$ peer chaincode upgrade -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -v 2.0 -c '{"Args":["init","a","90","b","210"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer','Org3MSP.peer')"

2020-01-07 14:00:30.299 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2020-01-07 14:00:30.300 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc

여기서 cli 컨테이너를 나간 뒤 Org3cli 컨테이너로 접속합니다.

$ docker exec -it Org3cli /bin/bash

마찬가지로 Setting Environments Variables 설정한 환경변수를 다시 설정해줍니다.

Invoke, Query

peer0.org3 Query

PEER0_ORG3_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt
CORE_PEER_LOCALMSPID="Org3MSP"
CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG3_CA
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp
CORE_PEER_ADDRESS=peer0.org3.example.com:11051

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

90

Invoke

peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc $PEER_CONN_PARMS -c '{"Args":["invoke","a","b","10"]}'

2020-01-07 14:09:08.245 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200

peer0.org3 Query

PEER0_ORG3_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt
CORE_PEER_LOCALMSPID="Org3MSP"
CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG3_CA
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp
CORE_PEER_ADDRESS=peer0.org3.example.com:11051

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

80

peer0.org2 Query

PEER0_ORG2_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
CORE_PEER_LOCALMSPID="Org2MSP"
CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG2_CA
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:9051

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

80

peer0.org1 Query

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

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

80

이렇게 까지 확인하면 끝났습니다.

이 포스트는 ./eyfn.sh generate./eyfn.sh up 까지의 과정입니다. peer 를 추가하고 chaincode 를 업데이트 하는 부분은 다른 포스트에서도 확인하고 많이 해봤기 때문에 설명은 적게하고 generate 부분을 많이 추가하도록 노력했습니다.

감사합니다.

Leave a comment