6 min to read
HyperLedger
하이퍼레저에 대한 정리

HyperLedger fabric 예제
필수 사항 ubuntu or Mac Git, CURL, Docker, Docker Compose, nodejs, npm 의 설치가 필요합니다.
환경 설치
- ubuntu 20.04에서의 설치입니다.
Git 설치
sudo apt install git
git version
CURl 설치
apt-get install curl
Docker 설치
sudo apt-get install docker-ce docker-ce-cli
docker -v
Docker Comper 설치
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
sudo apt install nodejs
node -v
sudo apt install npm
npm -v
HyperLedger 샘플파일 설치
curl -sSL https://bit.ly/2ysbOFE | bash -s
-
이렇게 설치하면 Samles , Binaries, Docker Images가 설치되는것을 터미널을 통해 알수있다.
- export PATH=설치된 파일의 위치/bin:$PATH
- 파일의 위치는 pwd를 쳐서 쉽게 알아낼수 있다.
Fabric test network를 통해 node 생성
-
Fabric test network를 통해서 네트워크를 구성하고 채널을 만들며 체인코드를 수행할수있습니다.
-
fabric-sample에서 test-network로 이동합니다.
-
test-network 안에 network.sh파일이 존재합니다.
-
먼저 노드를 만들기 전에 ./network.sh down을 통해 혹시나 돌아가고 있을지 모를 container를 없애주겠습니다.
-
그렇다면 기본적으로 설정 되어있는 1개의 ordered 노드와 2개의 peer 노드를 명령어를 통해 만들겠습니다.
./network.sh up
- docker ps -a 를 통해서도 docker container 3개가 실행되는것을 볼수있습니다.
- 노드의 이름이 peer0.org1.example.com , peer0.org2.example.com가 있는것을 알수있습니다.
채널 생성
- 이제 채널을 만들어 보도록 하겠습니다. 채널은 이름을 설정하지 않는다면 mychannel로 지정되며 c옵션을 통해 이름을 지정할수있습니다.
mychannel 생성
/network.sh createChannel
옵션 c를 이용하여 이름 생성
./network.sh createChannel -c channel1
또한 아래 명령어를 사용한다면 테스트 노드와 채널을 동시에 만들수있습니다.
./network.sh up createChannel
ChainCode 생성 및 실행하기
-
이제 peer노드에서 chaincode를 실행 하기위해서 peer0.org1.example.com , peer0.org2.example.com 에 chaincode를 설치해줍니다.
-
아래 명령어를 통해 fabcar chaincode가 설치 됩니다.
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
-
ls 를 실행 시켜보면 smaple.tar.gz가 생긴것을 볼수있습니다. 위 명령어를 통해 tar.gz파일로 만든후 peer에 자동으로 설치하게 됩니다.
-
peer 노드에 체인코드를 실행시키기 위해서 Fabric Binary 에 있는 bin 폴더의 peer CLI와 /Confing에 있는 core.yaml이 필요합니다.
//peer CLI
export PATH=${PWD}/../bin:$PATH
//core.yaml
export FABRIC_CFG_PATH=$PWD/../config/
- 마지막으로 org1.example.com의 체인 코드를 수행할려면 추가적인 환경변수가 필요합니다. 아래와같이 입력해주세요\
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 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}
]
에러 발생
-
위와 같이 했을때 error starting container: error starting container: API error (404): network _test not found” 이 발생했습니다.
-
위 에러나는 네트워크의 설정이 잘못되어 발생 되는것을 보아 docker-compose.yaml,core.yaml가 문제있다고 생각 됩니다.
-
docker-compose-test-net.yaml에 있는 CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_test
-
CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=docker_test로 변경합니다
-
core.yaml에 있는 NetworkMode: host
-
NetworkMode: docker_test로 변경하였습니다.
-
다시 Chaincode를 생성하고 실행했더니 무사히 잘돌아가는것을 확인했습니다.
- 다음에는 Chaincode를 직접 만들어보는 작업을 진행하도록 하겠습니다.
Comments