티스토리 뷰
[Blockchain 네트워크 구성] peer channel fetch 명령을 통한 블록 파일 fetch
miiingo 2019. 12. 18. 14:21공식 문서
내용 번역
지정된 블록을 가져 와서 파일에 씁니다.
사용법:
peer channel fetch <newest|oldest|config|(number)> [출력파일] [플래그]
플래그:
--bestEffort fetch 요청이 최선의 노력으로 오류를 무시하고 블록을 리턴해야하는지 여부
-c, --channelID string newChain 명령의 경우 생성할 채널 ID. 250자 미만의 소문자 및 다음 정규식과 일치해야함: [a-z][a-z0-9.-]*
-h, --help fetch 명령에 대한 도움말
Global 플래그:
--cafile string 오더링 엔드포인트(ordering endpoint)에 대해 PEM으로 인코딩된 신뢰할 수 있는 인증서가 포함된 파일의 경로
--certfile string 오더러 엔드포인트(orderer endpoint)와의 상호 TLS 통신에 사용할 PEM으로 인코딩된 X509 공개 키를 포함하는 파일의 경로
--clientauth 오더러 엔드포인트(orderer endpoint)와 통신할 때 상호 TLS 사용
--connTimeout duration 클라이언트 연결 timeout 시간 (default 3초)
--keyfile string 오더러 엔드포인트(orderer endpoint)와의 상호 TLS 통신에 사용할 PEM으로 인코딩된 개인 키가 포함된 파일의 경로
-o, --orderer string 오더링 서비스 엔드포인트(Ordering service endpoint)
--ordererTLSHostnameOverride string 오더러(orderer)에 대한 TLS 연결의 유효성을 검증할 때 사용할 호스트 이름 오버라이드
--tls 오더러 엔드포인트(orderer endpoint)와 통신할 때 TLS 사용
사용 예시
byfn 네트워크를 기준으로 peer channel fetch 명령을 실행해봅시다.
기본 설정
peer channel fetch 명령을 실행하기 위해서는 cli 또는 peer 컨테이너에 접속해야 합니다.
여기에서는 cli 컨테이너에서 실행하도록 합니다.
# cli 컨테이너 접속
docker exec -it cli bash
블록을 fetch할 채널을 지정하기 위해 CHANNEL 변수를 사용합니다. CHANNEL 변수에 자신의 채널ID를 설정하고 해당 변수를 호출했을 때 자신의 채널ID가 출력되는지 확인합니다.
# CHANNEL 환경변수에 블록을 fetch할 채널 지정
export CHANNEL=mychannel
echo $CHANNEL
mychannel
newest: 가장 최신 블록 fetch
가장 최신 블록을 fetch하기 위해 newest 옵션으로 실행합니다.
따로 출력파일을 지정하지 않으면 <채널ID>_newest.block이라는 파일명으로 블록 파일이 생성됩니다. 여기에서는 mychannel_newest.block 블록 파일이 생성된 것을 확인할 수 있습니다.
# 가장 최신 블록 fetch
peer channel fetch newest -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -c $CHANNEL
2019-12-12 05:07:53.875 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2019-12-12 05:07:53.937 UTC [cli.common] readBlock -> INFO 002 Received block: 4
# mychannel_newest.block 블록 파일 생성 확인
ls -al
total 48
drwxr-xr-x 5 root root 4096 Dec 12 05:07 .
drwxr-xr-x 3 root root 4096 Dec 12 01:51 ..
drwxrwxr-x 2 1000 1000 4096 Dec 12 01:51 channel-artifacts
drwxr-xr-x 4 1000 1000 4096 Dec 12 01:50 crypto
-rw-r--r-- 1 root root 3 Dec 12 01:53 log.txt
-rw-r--r-- 1 root root 15989 Dec 12 01:51 mychannel.block
-rw-r--r-- 1 root root 4854 Dec 12 05:07 mychannel_newest.block
drwxrwxr-x 2 1000 1000 4096 Dec 12 01:50 scripts
파일명을 지정하고 싶은 경우에는 newest 옵션 바로 뒤에 지정할 파일명을 입력합니다.
여기에서는 newest_<채널ID>로 설정해보겠습니다.
# 블록 파일명을 지정해 가장 최신 블록 fetch - 파일명: newest_$CHANNEL.block
peer channel fetch newest newest_$CHANNEL.block -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -c $CHANNEL
2019-12-12 05:07:53.875 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2019-12-12 05:07:53.937 UTC [cli.common] readBlock -> INFO 002 Received block: 4
# newest_mychannel.block 블록 파일 생성 확인
ls -al
total 112
drwxr-xr-x 5 root root 4096 Dec 18 02:30 .
drwxr-xr-x 3 root root 4096 Dec 12 01:51 ..
drwxrwxr-x 2 1000 1000 4096 Dec 12 01:51 channel-artifacts
drwxr-xr-x 4 1000 1000 4096 Dec 12 01:50 crypto
-rw-r--r-- 1 root root 3 Dec 12 01:53 log.txt
-rw-r--r-- 1 root root 16988 Dec 12 09:12 mychannel_2.block
-rw-r--r-- 1 root root 15989 Dec 12 01:51 mychannel.block
-rw-r--r-- 1 root root 16988 Dec 12 08:45 mychannel_config.block
-rw-r--r-- 1 root root 4854 Dec 12 05:07 mychannel_newest.block
-rw-r--r-- 1 root root 15989 Dec 12 08:35 mychannel_oldest.block
-rw-r--r-- 1 root root 4854 Dec 18 02:30 newest_mychannel.block
drwxrwxr-x 2 1000 1000 4096 Dec 12 01:50 scripts
oldest: 가장 오래된 블록 fetch
가장 오래된 블록을 fetch하기 위해 oldest 옵션으로 실행합니다.
따로 출력파일을 지정하지 않으면 <채널ID>_oldest.block이라는 파일명으로 블록 파일이 생성됩니다. 여기에서는 mychannel_oldest.block 블록 파일이 생성된 것을 확인할 수 있습니다.
# 가장 오래된 블록 fetch
peer channel fetch oldest -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -c $CHANNEL
2019-12-12 08:35:21.426 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2019-12-12 08:35:21.436 UTC [cli.common] readBlock -> INFO 002 Received block: 0
# mychannel_oldest.block 블록 파일 생성 확인
ls -al
total 64
drwxr-xr-x 5 root root 4096 Dec 12 08:35 .
drwxr-xr-x 3 root root 4096 Dec 12 01:51 ..
drwxrwxr-x 2 1000 1000 4096 Dec 12 01:51 channel-artifacts
drwxr-xr-x 4 1000 1000 4096 Dec 12 01:50 crypto
-rw-r--r-- 1 root root 3 Dec 12 01:53 log.txt
-rw-r--r-- 1 root root 15989 Dec 12 01:51 mychannel.block
-rw-r--r-- 1 root root 4854 Dec 12 05:07 mychannel_newest.block
-rw-r--r-- 1 root root 15989 Dec 12 08:35 mychannel_oldest.block
drwxrwxr-x 2 1000 1000 4096 Dec 12 01:50 scripts
파일명을 지정하고 싶은 경우에는 oldest 옵션 바로 뒤에 지정할 파일명을 입력합니다.
config: 채널 구성 블록 fetch
채널 구성 블록을 fetch하기 위해 config 옵션으로 실행합니다.
따로 출력파일을 지정하지 않으면 <채널ID>_config.block이라는 파일명으로 블록 파일이 생성됩니다. 여기에서는 mychannel_config.block 블록 파일이 생성된 것을 확인할 수 있습니다.
# 채널 구성 블록 fetch
peer channel fetch config -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -c $CHANNEL
2019-12-12 08:45:20.605 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2019-12-12 08:45:20.611 UTC [cli.common] readBlock -> INFO 002 Received block: 4
2019-12-12 08:45:20.621 UTC [cli.common] readBlock -> INFO 003 Received block: 2
2019-12-12 08:45:20.621 UTC [channelCmd] fetch -> INFO 004 Retrieving last config block: 2
# mychannel_config.block 블록 파일 생성 확인
ls -al
total 84
drwxr-xr-x 5 root root 4096 Dec 12 08:45 .
drwxr-xr-x 3 root root 4096 Dec 12 01:51 ..
drwxrwxr-x 2 1000 1000 4096 Dec 12 01:51 channel-artifacts
drwxr-xr-x 4 1000 1000 4096 Dec 12 01:50 crypto
-rw-r--r-- 1 root root 3 Dec 12 01:53 log.txt
-rw-r--r-- 1 root root 15989 Dec 12 01:51 mychannel.block
-rw-r--r-- 1 root root 16988 Dec 12 08:45 mychannel_config.block
-rw-r--r-- 1 root root 4854 Dec 12 05:07 mychannel_newest.block
-rw-r--r-- 1 root root 15989 Dec 12 08:35 mychannel_oldest.block
drwxrwxr-x 2 1000 1000 4096 Dec 12 01:50 scripts
파일명을 지정하고 싶은 경우에는 config 옵션 바로 뒤에 지정할 파일명을 입력합니다.
(number): 특정 번호의 블록 fetch
특정 번호의 블록을 fetch하기 위해 (number) 옵션으로 실행합니다. (number) 부분에 fetch를 원하는 블록 번호를 입력하면 됩니다.
따로 출력파일을 지정하지 않으면 <채널ID>_.block이라는 파일명으로 블록 파일이 생성됩니다. 여기에서는 블록 번호를 2로 설정했기 때문에 mychannel_2.block 블록 파일이 생성된 것을 확인할 수 있습니다.
# 특정 번호의 블록 fetch
peer channel fetch 2 -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -c $CHANNEL
2019-12-18 05:00:01.573 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2019-12-18 05:00:01.605 UTC [cli.common] readBlock -> INFO 002 Received block: 2
# mychannel_2.block 블록 파일 생성 확인
ls -al
total 104
drwxr-xr-x 5 root root 4096 Dec 18 05:00 .
drwxr-xr-x 3 root root 4096 Dec 12 01:51 ..
drwxrwxr-x 2 1000 1000 4096 Dec 12 01:51 channel-artifacts
drwxr-xr-x 4 1000 1000 4096 Dec 12 01:50 crypto
-rw-r--r-- 1 root root 3 Dec 12 01:53 log.txt
-rw-r--r-- 1 root root 16988 Dec 18 05:00 mychannel_2.block
-rw-r--r-- 1 root root 15989 Dec 12 01:51 mychannel.block
-rw-r--r-- 1 root root 16988 Dec 12 08:45 mychannel_config.block
-rw-r--r-- 1 root root 4854 Dec 12 05:07 mychannel_newest.block
-rw-r--r-- 1 root root 15989 Dec 12 08:35 mychannel_oldest.block
drwxrwxr-x 2 1000 1000 4096 Dec 12 01:50 scripts
파일명을 지정하고 싶은 경우에는 (number) 옵션 바로 뒤에 지정할 파일명을 입력합니다.
블록 번호는 0번부터 시작하기 때문에 (block_height - 1)까지 설정할 수 있습니다.
현재 block_height 값을 알고 싶으면 peer channel getinfo 명령을 사용하면 됩니다.
# 현재 block_height 확인
# peer channel getinfo -c <채널ID>
peer channel getinfo -c $CHANNEL
2019-12-18 01:09:44.120 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
Blockchain info: {"height":5,"currentBlockHash":"PNR4rQEkMutRupbD+RnsL0UmZ+s0heoxl4lMJZFw7To=","previousBlockHash":"piotYkUTIg5JPf4+AKk5conUUs6QPNvA2atNu68ogDE="}
'Blockchain > Blockchain 네트워크 구성' 카테고리의 다른 글
- Total
- Today
- Yesterday
- 하이퍼레저 패브릭
- 빅데이터 강의
- Hyperledger Fabric
- DOCs
- 알고리즘
- 암브로셔스
- docker
- 빅데이터 기초
- codility
- 코딜리티
- 빅데이터 교육
- 블록 체인
- 빅데이터
- 코테
- 문제풀이
- 어서와 데이터는 처음이지
- 기초 of 기초 데이터 개념
- 하이퍼레저 인디
- ubuntu
- Private Data
- 코딩테스트
- Hyperledger Fabric v1.2
- 직딩잇템
- javascript
- Blockchain
- 블록체인
- 하이퍼레저 페브릭
- Hyperledger Fabric v1.1
- Hyperledger Indy
- ambrosus
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |