하이퍼레저 패브릭 2.x 예제 따라하기

개발개발·2022년 6월 14일
0

블록체인 관련

목록 보기
4/4

최근에 하이퍼레저를 사용하는 프로젝트에 참여하면서 chaincode를 작성해보았다.

local 환경에서 테스트 환경을 구축하고 fabric에 대해 공부해볼겸 hyperledger fabric 예제를 따라하기를 작성해본다.

목차
1. 준비
2. test-network 사용
3. 후기...

1. 준비

시작하기 전에

window를 사용하고 있어서 wsl를 설치하고 진행했다. 버전은 2로 진행

microsoft store에서 Ubuntu 20.04.4 LTS 버전 설치

Ubuntu에 curl, git, go, node.js, docker, docker-compose 등 설치(모두 최신버전)
// 준비 과정에서 진행하는 내용들도 추후에 작성할 예정

2. test-network 사용

도커를 활용한 hyperledger fabric 환경 구성

dir 두 개를 생성한다. 위치는 gopath
경로 : ~$ GOPATH/src/github.com/hyperledger

~$ git clone https://github.com/hyperledger/fabric.git
~$ git clone https://github.com/hyperledger/fabric-samples.git (이번 테스트환경에서 사용하는 파일)

준비에서 설치한 도커를 실행한다.


docker를 실행시키는 명령어들(https://docker-docs.netlify.app/config/daemon/systemd/)
1. ~$ sudo systemctl start docker
2. ~$ sudo service docker start

그 다음 hyperledger에서 제공하는 docker image들을 받아준다.
~$ curl -sSL https://bit.ly/2ysbOFE | bash -s


docker image들이 다운된다.
이제 fabric-samples/test-network로 이동하고 network.sh을 활용할 차례다. 자세한 사용법은 ./network.sh -h 를 통해 확인할 수 있다.

이전에 사용 중인 컨테이너가 있을수도 있으니 종류시키고 시작을 한다.
~$ ./network.sh down
~$ ./network.sh up

다음 채널을 생성한다. 채널명 옵션을 선택하지 않으면 'mychannel' 이 기본값으로 설정된다.
~$ ./network.sh createChannel

채널을 생성하고 체인코드를 배포한다.
~$ ./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

체인코드까지 배포되었으니 네트워크를 이용해볼 차례다. cli 컨테이너를 사용한다.
경로와 설정을 잡아줘야 한다. 아래 명령어는 fabric-samples에서 실행해야한다.

~$ export PATH=~$ {PWD}/../bin:~$ PATH
~$ export FABRIC_CFG_PATH=~$ PWD/../config/ ~$ 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

설정을 잡은 다음 원장을 초기화한다.

~$ 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":[]}'

그 다음 peer를 통해 원장정보를 조회해본다.

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

조회 결과를 보기 편하게 정렬하면 아래와 같다.

다음으로 해볼 것은 원장에 저장된 내용을 변경하는 것이다. asset6을 "a45hvn"으로 소유자를 바꿀 것이다.

~$ 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","A45hvn"]}'

이제 asset6의 소유자가 변경되었는지 확인해볼겸 다시 조회해본다.

조회 결과를 보기 편하게 정렬하면 아래와 같다.

마지막으로 ./network.sh down 명령어로 노드와 컨테이너, 도커 이미지를 지우면 끝마친다.

=====================================================

지금까지 해본 내용이 하이퍼레저 공식 문서에 나온 튜토리얼 내용이다.
(https://hyperledger-fabric.readthedocs.io/en/release-2.2/test_network.html#bring-up-the-test-network)
공식 문서를 보면 친절한 설명과 더불어 다른 예제들도 있으니 계속 공부해볼 예정이다.

3. 후기...

아직 공부가 부족해서 하이퍼레저의 구성과 원리에 대해서 포스팅하지 못하고 있다. 공부하면서 계속 끄적여보고 정리할 수 있도록 해야겠다.
profile
청포도루이보스민트티

0개의 댓글