함수
- clearContainers
- removeUnwantedImages
- checkPrereqs
- createOrgs
- createConsortium
- networkUp
- createChannel
- deployCC
- networkDown
network.sh 은 하이퍼레저 패브릭 공식 문서에 fabric-samples 에 test-network 안에 있는 네트워크와 관련된 쉘 스크립트입니다.
파일은 주석과 함께 설명이 자세히 되어 있습니다.
1. clearContainers
주석 설명 : 컨테이너의 ID를 얻고 제거. network down 에 사용된다.
함수 설명 : 컨테이너 아이디를 찾고 해당 아이디의 길이가 0이거나 빈 문자열일 경우 아래 문자를 출력
infoln 은 scripts/utils.sh에 있는 파란색으로 출력해주는 출력문.
위 함수를 이해하기 위해 알아야 할 쉘 스크립트 문법입니다.
if 문의 옵션
-z : 문자열의 길이가 0이면 참
[expr1 -o expr2] : expr1 OR expr2 의 결과, 즉 둘 중 하나가 참이면 참
awk 에 대해
awk 는 리눅스에서 레코드를 선택하고 포함하는 값을 조작하거나 데이터화하는 프로그램입니다.
데이터를 분류한 다음 패턴 매칭 여부를 검사하거나 데이터 조작 및 연산 등의 액션을 수행하고 그 결과를 출력합니다.
저도 처음 본 거라 아래 블로그들을 확인하면 더 빠르게 이해하실 수 있을 거 같습니다.
zzsza.github.io/development/2017/12/20/linux-6/
docekr rm -f 는 컨테이너 삭제 명령입니다.
2.removeUnwantedImages
주석 설명 : setup 할 때 생성했던 이미지를 삭제 network down 때 사용
함수 설명 : 컨테이너 아이디를 찾고 해당 아이디의 길이가 0이거나 빈 문자열일 경우 아래 문자를 출력
infoln 은 scripts/utils.sh에 있는 파란색으로 출력해주는 출력문.
3. checkPrereqs
주석 설명 : 적절한 버전의 바이너리/이미지가 깔렸는데 추후에 어떠한 아이템을 더 하고 싶으면 이 곳을 체크하면 됨
함수 설명:
부분적으로 찾아보기
[expr1 -ne expr2] : expr1 != expr2 의 결과, Not Equal 이면 참
[-d FILE] FILE이 디렉토리이면 참
피어의 바이너리 파일과 configuration 파일을 못 찾으면 에러
fabric tools와 도커의 버전이 맞는지 확인하고 맞지 않으면 에러 메시지 출력
4. createOrgs
주석 설명 : 네트워크를 올리기 전에 각 조직들은 네트워크를 정의하기 위해 crypto material 이 필요. 하이퍼레저 패브린은 허가형 블록체인이고 네트워크에서 각 노드와 클라이언트는 인증을 사용하고 사인하기 위한 키와 행동 보증이 필요합니다. 게다가 클라이언트들은 조직에 속하기 위해 네트워크의 맴버여야 한다. 그러므로 조직의 crypto material 을 생성하기 위해 cryptogen tool 또는 Fabric CA을 사용할 수 있다.
샘플 네트워크는 보통 cryptogen을 이용한다. cryptogen은 페브릭 네트워크에서 사용할 수 있는 인증과 키를 빠르게 생성하여 개발과 테스트를 할 수 있다. 'organizations/cryptogent' 디렉토리에 있다. Crytogen은 각 조직에 'organizations' 디렉토리안에 crypto material 을 생성한다.
또한 Fabric CA 를 통해서도 crypto material을 생성할 수 있다. CA 각 조직을 위한 믿을 만한 루트를 생성하여 인증과 키를 제공한다. 여기서는 docker compose를 통해서 세개의 CA를 들고 온다. 각 피어 조직과 ordering 조직에.
이 configuration 파일은 'organizations/fabric-ca' 디렉터리에서 사용이 가능하다.
함수 설명:
부분적으로 살펴보기
쉘 스크립트 문법인데 아래 블로그를 참조했습니다.
blog.naver.com/PostView.nhn?blogId=happy_jhyo&logNo=70146791303&redirect=Dlog&widgetTypeCall=true
set -x는 xtrace 로 추적 기능이 생겨서 표준 에러로 커맨드 출력
만약 추적 기능을 쓰지 않으려면 set +x 를 사용
쉘 스크립트 > 와 <
>1 은 커맨드의 표준 출력을 다음에 나오는 파일 디스크립터에 전달
>2 쉘 스크립트의 표준 에러를 다음에 나오는 파일 디스크립터에 전달
>&2 모든 출력을 강제로 쉘 스크립트의 표준 에러로 출력
2>&1 : 2>> 의 축약형으로 결과를 로그파일에 저장하고 표준에러의 결과를 파일 디스크립터에 추가
[-f FILE] FILE 이 존재하고 정규파일이면 참
5. createConsortium
주석 설명 : crypto material 을 생성하면 orderer 시스템 채널의 제네시스 블록(첫 블록)을 생성해야함.
configtxgen tool을 통해 생성할 수 있다. 'configtx.yaml' 파일은 샘플 네트워크에 대한 정의를 포함함.
피어와 ordering 조직은 'Profiles' 에 정의 되어 있다. 파일은 MSP 위치를 가리킴.
본질적으로 채널 MSP 는 노드와 클라이언트를 네트워크 맴버로 인식하는 것을 허가함.
또한 이 파일은 각 피어 중에 앵커 피어를 정의한다.
정리하자면 이 함수는 order system channel 에 제네시스 블록을 생성하는 함수.
함수 설명 :
6.networkUP
주석 설명: crypto material 과 system channel 의 제네시스 블록을 만들었으니 피어와 ordering 서비스를 가져올 수 있음. 환경 변수와 파일의 마운팅 포인트가 정의된 'docker-compose-test-net.yaml' 이 네트워크 생성의 기본 파일.
즉 docker compose을 이용하여 피어와 orderer 노드를 가지고 옴.
함수 설명: checkPrereqs 을 통해 준비가 되어있는지 확인 한다. 디렉토리가 참이 아니면 조직과 컨소시엄을 함수를 통해 생성한다.
compose 파일 변수를 선언하고 데이터 베이스가 couchdb이면 추가적으로 compose 파일 변수를 선언한다.
이미지 태그를 설정하고 도커 컨테이너 실행 목록을 출력한다.
에러가 나면 에러 메세지를 출력한다.
7. createChannel
설명 : 스크립트를 호출해서 채널을 생성하고 조직들의 피어들을 join 한다. 그리고 각 조직에 앵커 피어를 업데이트한다. 피어 조직이 비어 있으면 networkup 함수를 통해 네트워크를 구축하고 createChannel.sh 에 변수를 넘겨주면서 실행합니다.
8. deployCC
설명 : 채널에 체인코드를 쿠현하기 위해 deployCC 스크립트 실행
9.networkDown
설명 : 네트워크를 닫음. 컨테이너를 지우고 이미지 또한 삭제한다.
쉘스크립트 shift 는 초기 인자를 없애고 각 인자 번호를 1씩 줄인다.
shift 이후에는 $3이 $2이가 된다.
마지막으로 수행의 모드를 정하고 요청 사항을 출력하는 구문으로 network.sh가 끝난다.
'스터디 > 블록체인 OJT' 카테고리의 다른 글
블록체인 세미나 1일차 비트코인 (0) | 2021.02.09 |
---|---|
블록체인 세미나 4일차 : 패브릭의 구조 (5) | 2021.01.27 |
블록체인 세미나 3일차 : Docker,Node.js,Go,Git 등 (0) | 2021.01.26 |