하이퍼레저 메모
Programming 2020. 9. 3. 16:01
https://steemit.com/kr/@cillic/hyperledger-fabric-2
이미지 썸네일 삭제
[HyperLedger Fabric 개발하기] 2. 하이퍼레저 패브릭 예제파일 다운로드 — Steemit
안녕하세요! 전편에서는 하이퍼레져 패브릭을 실행시키기 위한 환경설정을 구축하였습니다. 못보고 오신분들은 아래의 링크를 참조하셔서 꼭! 환경설정을 해주시고 오셔야 합니다. HyperLedger… by cillic
steemit.com
first-network 예제받기
------------------설치메뉴얼
1. Virtual Box 가상머신 만들기
- 메모리 4GB, 하드디스크 50GB
- 지금 새 가상 하드디스크 만들기
- VDI(VirtualBox 디스크 이미지)
- 고정크기
2. 우분투 설치: 18.04.X LTS
3. cURL 설치
sudo apt install curl
curl -V
4. 도커 설치
curl -fsSL https://get.docker.com/ | sudo sh
도커는 기본적으로 root권한 필요
리눅스 시스템의 현재 사용자를 도커 그룹에 추가해 관리자 이외의 권한으로도 도커 서버/클라이언트 수행할 수 있도록 변경
sudo usermod -aG docker $USER
sudo reboot
docker -v
도커컴포즈 설치
sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose
5. GOLANG 설치
cd /usr/local
sudo wget https://storage.googleapis.com/golang/go1.11.1.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.11.1.linux-amd64.tar.gz
환경변수 설정
echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee -a /etc/profile && \
echo 'export GOPATH=$HOME/go' | tee -a $HOME/.bashrc && \
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' | tee -a $HOME/.bashrc && \
mkdir -p $HOME/go/{src,pkg,bin}
sudo reboot
go version
6. git 설치
sudo apt install -y git
git --version
7. 파이썬 설치
sudo apt install -y python
python --version
8. Node.js, npm 설치
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
sudo reboot
nvm install 8
nvm use 8
npm install npm@5.6.0 -g
node -v
npm -v
9. VSCode 설치: 홈페이지
10. JAVA, JDK 설치
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre
javac -version
java -version
11. Gradle 설치
sudo apt install gradle
12. IntelliJ 설치: 홈페이지에서 받아 압축 해제
13. 하이퍼레저 패브릭 설치
cd $GOPATH/src
curl -sSL http://bit.ly/2ysbOFE | bash -s -- 1.4.3 1.4.3 0.4.15
하이퍼레저 패브릭 동작확인
cd $GOPATH/src/fabric-samples/first-network
./byfn.sh -h
./byfn.sh generate
./byfn.sh up
./byfn.sh down
하이퍼레저 컴포저 개발환경 구성
curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh
chmod u+x prereqs-ubuntu.sh
./prereqs-ubuntu.sh
하이퍼레저 컴포저 설치
npm install -g composer-cli@0.20
npm install -g composer-rest-server@0.20
npm install -g generator-hyperledger-composer@0.20
npm install -g yo
npm install -g composer-playground
composer-playground
------------------------
하이퍼레저 패브릭 애플리케이션 개발 관련 내용
cd $GOPATH/src
mkdir stream-music && cd stream-music
mkdir basic-network && cd basic-network
mkdir crypto-config
touch crypto-config.yaml
touch configtx.yaml
touch docker-compose.yaml
export FABRIC_CFG_PATH=$PWD
cp -r $GOPATH/src/fabric-samples/bin ./
cd $GOPATH/src/stream-music/basic-network
code crypto-config.yaml
./bin/cryptogen generate --config=./crypto-config.yaml
cd $GOPATH/src/stream-music/basic-network
code configtx.yaml
mkdir config
./bin/configtxgen -profile OrdererGenesis -outputBlock ./config/genesis.block
./bin/configtxgen -profile Channel1 - outputCreateChannelTx ./config/channel1.tx -channelID channelsales1
./bin/configtxgen -profile Channel1 -outputAnchorPeersUpdate ./config/Sales1Organchors.tx -channelID channelsales1 -asOrg Sales1Org
./bin/configtxgen -profile Channel1 -outputAnchorPeersUpdate ./config/CustomerOrganchors.tx -channelID channelsales1 -asOrg CustomerOrg
도커 컨테이너 내리기
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker imasges | grep 'func-cc'
docker volume prune
docker rm $(docker ps -aqf name=/orderer.acornpub.com)
docker rm $(docker ps -aqf name=/peer0.sales1.acornpub.com)
docker rm $(docker ps -aqf name=/peer1.sales1.acornpub.com)
docker rm $(docker ps -aqf name=/peer0.customer.acornpub.com)
docker rm $(docker ps -aqf name=/peer1.customer.acornpub.com)
docker rm $(docker ps -aqf name=/cli)
이미지 썸네일 삭제
하이퍼레저 패브릭 네트워크 구조 [Hyperledger Fabric Network Structure]
Writer : Jung Sungdong
medium.com
PANI 003 Error reading configuration: Unsupported Config Type "" 오류
- /go/src/fabric-samples/stream-music-2/basic-network를 FABRIC_CFG_PATH로.
- 0열 선택0열 다음에 열 추가
- 0행 선택0행 다음에 행 추가
셀 전체 선택
열 너비 조절
행 높이 조절
export FABRIC_CFG_PATH=$PWD |
- 셀 병합
- 행 분할
- 열 분할
- 너비 맞춤
- 삭제
$ ./bin/cryptogen generate --config=./crypto-config.yaml
$ ./bin/configtxgen -profile OrdererGenesis -outputBlock ./config/genesis.block
$ ./bin/configtxgen -profile Channel1 -outputCreateChannelTx ./config/channel1.tx
$ ./bin/configtxgen -profile Channel2 -outputCreateChannelTx ./config/channel2.tx
$ ./bin/configtxgen -profile Channel1 -outputCreateChannelTx ./config/channel1.tx -channelID
$ ./bin/configtxgen -profile Channel2 -outputCreateChannelTx ./config/channel2.tx
$ ./bin/configtxgen -profile Channel1 -outputAnchorPeersUpdate ./config/Sales1Organchors.tx -channelID channelsales1 -asOrg Sales1Org
$ ./bin/configtxgen -profile Channel2 -outputAnchorPeersUpdate ./config/Sales2Organchors.tx -channelID channelsales2 -asOrg Sales2Org
$ ./bin/configtxgen -profile Channel1 -outputAnchorPeersUpdate ./config/CustomerOrganchorsChannel1.tx -channelID channelsales1 -asOrg CustomerOrg
$ ./bin/configtxgen -profile Channel2 -outputAnchorPeersUpdate ./config/CustomerOrganchorsChannel2.tx -channelID channelsales2 -asOrg CustomerOrg
./bin/cryptogen generate --config=./crypto-config.yaml
mkdir config
./bin/configtxgen -profile OrdererGenesis -outputBlock ./config/genesis.block
./bin/configtxgen -profile Channel1 -outputCreateChannelTx ./config/channel1.tx -channelID channel1
./bin/configtxgen -profile Channel1 -outputAnchorPeersUpdate ./config/IndividualOrganchors.tx -channelID channel1 -asOrg IndividualOrg
./bin/configtxgen -profile Channel1 -outputAnchorPeersUpdate ./config/EnterpriselOrganchors.tx -channelID channel1 -asOrg EnterpriseOrg
./bin/configtxgen -profile Channel1 -outputAnchorPeersUpdate ./config/VerifierOrganchors.tx -channelID channel1 -asOrg VerifierOrg
도커컴포즈 실행
docker-compose -f docker-compose.yaml up -d orderer.recruit.net peer0.individual.recruit.net peer0.enterprise.recruit.net peer0.verifier.recruit.net cli
Individual 조직 peer0 노드 CLI 실행
docker exec -it cli bash
EnterpriseOrg 조직 peer0 노드 CLI 실행
docker exec -e "CORE_PEER_LOCALMSPID=EnterpriseOrg" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/hyperledger/fabric/peer/crypto/peerOrganizations/enterprise.recruit.net/users/Admin@enterprise.recruit.net/msp" -e "CORE_PEER_ADDRESS=peer0.enterprise.recruit.net:7051" -it cli bash
VerifierOrg 조직 peer0 노드 CLI 실행
docker exec -e "CORE_PEER_LOCALMSPID=VerifierOrg" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/hyperledger/fabric/peer/crypto/peerOrganizations/verifier.recruit.net/users/Admin@verifier.recruit.net/msp" -e "CORE_PEER_ADDRESS=peer0.verifier.recruit.net:7051" -it cli bash
채널 생성 및 Individual 조직의 peer0 노드를 channel1 채널에 가입 및 앵커 피어 지정 업데이트
peer channel create -o orderer.recruit.net:7050 -c channel1 -f /etc/hyperledger/configtx/channel1.tx &&
peer channel join -b channel1.block &&
peer channel update -o orderer.recruit.net:7050 -c channel1 -f /etc/hyperledger/configtx/IndividualOrganchors.tx
EnterpriseOrg 조직 peer0 노드를 channel1 채널에 가입 및 앵커 피어 지정 업데이트
peer channel join -b channel1.block
peer channel update -o orderer.recruit.net:7050 -c channel1 -f /etc/hyperledger/configtx/EnterpriseOrganchors.tx
VerifierOrg 조직 peer0 노드를 channel1 채널에 가입 및 앵커 피어 지정 업데이트
peer channel join -b channel1.block
peer channel update -o orderer.recruit.net:7050 -c channel1 -f /etc/hyperledger/configtx/VerifierOrganchors.tx
Chaincode 설치 및 인스턴스화
peer chaincode install -n func-cc -v 1.0 -p hyperledger/fabric/peer/chaincode/go &&
peer chaincode instantiate -o orderer.recruit.net:7050 -C channel1 -n func-cc -v 1.0 -c '{"Args":[""]}' -P "OR ('IndividualOrg.member')"
peer chaincode upgrade -o orderer.recruit.net:7050 -C channel1 -n func-cc -v 1.1 -c '{"Args":[""]}' -P "OR ('IndividualOrg.member')"
Batch
채널 생성 및 Individual 조직의 peer0 노드를 channel1 채널에 가입 및 앵커 피어 지정 업데이트
Chaincode 설치 및 인스턴스화
peer channel create -o orderer.recruit.net:7050 -c channel1 -f /etc/hyperledger/configtx/channel1.tx &&
peer channel join -b channel1.block &&
peer channel update -o orderer.recruit.net:7050 -c channel1 -f /etc/hyperledger/configtx/IndividualOrganchors.tx &&
peer chaincode install -n func-cc -v 1.0 -p hyperledger/fabric/peer/chaincode/go &&
peer chaincode instantiate -o orderer.recruit.net:7050 -C channel1 -n func-cc -v 1.0 -c '{"Args":[""]}' -P "OR ('IndividualOrg.member')" &&
peer chaincode invoke -o orderer.recruit.net:7050 -C channel1 -n func-cc -c '{"function":"initWallet", "Args":[""]}'
설치된 Chaincode 목록조회
peer chaincode list --installed
Chaincode 수정하기
1. 소스코드 수정
2. 버전 변경하여 다시 설치
peer chaincode install -n func-cc -v 2.0 -p hyperledger/fabric/peer/chaincode/go
3. 변경된 버전 설치
peer chaincode upgrade -o orderer.recruit.net:7050 -C channel1 -n func-cc -v 1.1 -c '{"Args":[""]}' -P "OR ('IndividualOrg.member')"
Chaincode 수정했지만 반영이 안 될 때
Chaincode 도커 이미지 제거
docker image list
docker image rm -f 3baa6abf8ac8
체인코드 등록 후 테스트 순서
Wallet 초기화
peer chaincode invoke -o orderer.recruit.net:7050 -C channel1 -n func-cc -c '{"function":"initWallet", "Args":[""]}'
Wallet 설정
peer chaincode invoke -o orderer.recruit.net:7050 -C channel1 -n func-cc -c '{"function":"setWallet", "Args":["INDIVIDUAL", "indv"]}'
2. Wallet 호출
peer chaincode query -o orderer.recruit.net:7050 -C channel1 -n func-cc -c '{"function":"getWallet", "Args":["indv"]}'
3. Resume 생성
peer chaincode invoke -o orderer.recruit.net:7050 -C channel1 -n func-cc -c '{"function":"setResume", "Args":["My First Resume", "JHKim", "32", "indv"]}'
4. Resume 호출
peer chaincode query -o orderer.recruit.net:7050 -C channel1 -n func-cc -c '{"function":"getResume", "Args":["MS0"]}'
peer chaincode invoke -o orderer.recruit.net:7050 -C channel1 -n func-cc -c '{"function":"updateResumeTitle", "Args":["Modified Title!!!!"]}'
API error (404): network ...not found 에러
COMPOSE_PROJECT_NAME가 설정되지 않았으므로, docker-compose.yaml 파일이 위치하는 곳에 .env 파일을 만들어 아래처럼 작성
COMPOSE_PROJECT_NAME=net
npm init
package.json 작성
npm install --save
*** connection.json의 adminPrivateKey는 docker-compose-ca.yaml에 적는 그 값과는 다른 값임
테스트 주소
http://218.150.182.180:8080/api/getWallet?walletid=1Q2W3E4R
http://218.150.182.180:8080/api/getWallet?walletid=5T6Y7U8I
http://218.150.182.180:8080/api/getAllResume
http://218.150.182.180:8080/api/purchaseResume?walletid=5T6Y7U8I&resumekey=MS0
하이퍼레저 패브릭 실전 프로젝트 소스코드
채널 생성 및 Individual 조직의 peer0 노드를 channel1 채널에 가입 및 앵커 피어 지정 업데이트
Chaincode 설치 및 인스턴스화
peer channel create -o orderer.recruit.net:7050 -c channel1 -f /etc/hyperledger/configtx/channel1.tx &&
peer channel join -b channel1.block &&
peer channel update -o orderer.recruit.net:7050 -c channel1 -f /etc/hyperledger/configtx/IndividualOrganchors.tx &&
peer chaincode install -n func-cc -v 1.0 -p hyperledger/fabric/peer/chaincode/go &&
peer chaincode instantiate -o orderer.recruit.net:7050 -C channel1 -n func-cc -v 1.0 -c '{"Args":[""]}' -P "OR ('IndividualOrg.member')"
소스테스트
peer chaincode invoke -o orderer.recruit.net:7050 -C channel1 -n func-cc -c '{"function":"initWallet", "Args":[""]}' &&
peer chaincode invoke -o orderer.recruit.net:7050 -C channel1 -n func-cc -c '{"function":"setWallet", "Args":["INDIVIDUAL", "indv"]}' &&
peer chaincode query -o orderer.recruit.net:7050 -C channel1 -n func-cc -c '{"function":"getWallet", "Args":["indv"]}' &&
peer chaincode invoke -o orderer.recruit.net:7050 -C channel1 -n func-cc -c '{"function":"setResume", "Args":["My First Resume", "JHKim", "32", "indv"]}'
peer chaincode invoke -o orderer.recruit.net:7050 -C channel1 -n func-cc -c '{"function":"updateResumeTitle", "Args":["MS0", "Modified Title!!!!"]}'
'Programming' 카테고리의 다른 글
깨끗한 코드!!! 깨끗한 코드를 원해!!! (0) | 2022.03.10 |
---|---|
MYSQL 코드 메모 (0) | 2022.02.14 |
[언리얼] 쉽게 풀어쓴 지형 용어 설명 (0) | 2020.05.26 |
호환성 보기에 대한 기록. (0) | 2020.03.06 |
Qt Android Build 환경 설정 (Command Line) (0) | 2020.03.03 |