본문 바로가기
Hyperledger Fabric

hyperledger Fable - test-network 시나리오 구동

by allround 2021. 9. 2.
반응형

https://allround.tistory.com/4

 

hyperledger 테스트 환경 사전 구축 진행

먼저 환경 구축이 필요 docker docker-compose docker 설치 (hyperledger 구축 하기 위하여 여러개의 node 들이 필요한데 이를 docker 로 커버침) docker-compose 설치 (docker 를 관리하기 위한 툴 ?) 이미 설..

allround.tistory.com

이전 포스팅에 구조를 사전에 설치 했다는 전제에 테스트 진행

개발에 필요한 라이브러리 및 도구

 

https://hyperledger-fabric.readthedocs.io/en/latest/test_network.html#before-you-begin

 

Using the Fabric test network — hyperledger-fabricdocs main documentation

Docs » Getting Started - Run Fabric » Using the Fabric test network Edit on GitHub Using the Fabric test network After you have downloaded the Hyperledger Fabric Docker images and samples, you can deploy a test network by using scripts that are provided

hyperledger-fabric.readthedocs.io

기능의 상세한 설명은 영어로된 레퍼런스 사이트를 확인 하면 더욱 도움이 됩니다~

간단 명령팁!

./network.sh down (서비스 종료 - 주의 체인을 전부 초기화 해버림)

./network.sh up (체인 구동)

./network.sh createChannel -c mychannel (채널 구동 - mychannel)

./network.sh up createChannel -c mychannel (한방구동!)

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

(체인코드 배포 basic 네트워크에 go언으로 ./asset-transfer-basic/chaincode-go 체인을 배포합니다!)

사전 환경 Path 진행 (.profile 안에 추가 하여 test-network 폴더에서 source ~/.profile 하는것 권장)

#PATH 설정

export PATH=${PWD}/../bin:$PATH

#FABRIC 경로 설정

export FABRIC_CFG_PATH=$PWD/../config/ 

# Environment variables for Org1 -> peer 환경을 Org1로

export CORE_PEER_TLS_ENABLED=true

export CORE_PEER_LOCALMSPID="Org1MSP"

export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt

export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp export CORE_PEER_ADDRESS=localhost:7051

 

# Environment variables for Org2 -> peer 환경을 Org2로

export CORE_PEER_TLS_ENABLED=true

export CORE_PEER_LOCALMSPID="Org2MSP"

export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp export CORE_PEER_ADDRESS=localhost:9051

----------------------------------------------------------------------------------------------

@ peer 명령을 통하여 InitLedger 를 실행함 (체인 내부에 func 실행)

peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"InitLedger","Args":[]}

성공하면 [ -> INFO 001 Chaincode invoke successful. result: status:200 ] 반환됨

----------------------------------------------------------------------------------------------

@ peer 명령을통하여 Init 데이터 전체 확인 (이것도 체인내부에 func 를 실행함)

peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'

성공하면 결과값!

[ {"ID": "asset1", "color": "blue", "size": 5, "owner": "Tomoko", "appraisedValue": 300}, {"ID": "asset2", "color": "red", "size": 5, "owner": "Brad", "appraisedValue": 400}, {"ID": "asset3", "color": "green", "size": 10, "owner": "Jin Soo", "appraisedValue": 500}, {"ID": "asset4", "color": "yellow", "size": 10, "owner": "Max", "appraisedValue": 600}, {"ID": "asset5", "color": "black", "size": 15, "owner": "Adriana", "appraisedValue": 700}, {"ID": "asset6", "color": "white", "size": 15, "owner": "Michel", "appraisedValue": 800} ]

----------------------------------------------------------------------------------------------

@ peer 명령을 통해서 TransferAsset asset6 Christopher 전달 (asset6 의 onwer 를 변경하는 명령)

peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"TransferAsset","Args":["asset6","Christopher"]}'

성공시 응답 [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200

----------------------------------------------------------------------------------------------

@ peer 명령을 통해서 asset6 을 조회함 (사이트에선 Org2로 설정 체인지해서 하는데... 뭐 그게 그거라..)

peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset6"]}'

결과값 {"ID":"asset6","color":"white","size":15,"owner":"Christopher","appraisedValue":800}

----------------------------------------------------------------------------------------------

 

서버구동 방법에 대해선 network.sh 스크립트를 분석 할 필요가 있고

test-network 로 서버를 구축하고 거기에 따른 peer 명령으로 chaindata를 입력 조회 하는 부분에 대해서 확인 을 했습니다

물론 이것을 서비스 할려면 peer명령이 아닌 직접 chain app을 개발 하는 부분이 필요합니다

지원 언어는 go/java/javascript 가 샘플로 제공됩니다만... 개발자가 편한 언어로 하면 될듯 합니다만... 체인블럭에서는 go 가 대새적인 언어 인듯 하네여 (기회가 되면 다른 포스트에서 시간될떄 한번 포스팅을 해보겠습니다~)

반응형

'Hyperledger Fabric' 카테고리의 다른 글

원장백업?  (0) 2021.09.02
hyperledger 테스트 환경 사전 구축 진행  (0) 2021.09.02
Ubuntu 셋팅 설치  (0) 2021.09.02
하이퍼레저패브릭 구동 테스트 (셋팅준비)  (0) 2021.09.01