실전! 하이퍼레저 패브릭

따라 하며 배우는 기업형 블록체인 시스템 개발과 운영

기업형 블록체인 프로젝트를 위한 훌륭한 가이드를 만날 수 있습니다!

이 책에서는 하이퍼레저 패브릭(Hyperledger Fabric)의 개념을 비롯해 다양한 유형의 패브릭 네트워크를 구축하는 내용을 다룬다. 하이퍼레저 패브릭의 특징과 구성요소부터 멀티 호스트 네트워크 구성, 메트릭 모니터링, 프라이빗 데이터, 팹 토큰 등 최신 버전의 하이퍼레저 패브릭 기능까지 소개함으로써 기초 지식뿐 아니라 실무에서 하이퍼레저 패브릭을 적용하는 데 필요한 실무 지식까지 배울 수 있다. 《실전! 하이퍼레저 패브릭》은 블록체인에 관심이 있는 학생뿐만 아니라 현업에서 블록체인 업무를 담당하는 분들이 실제 프로젝트를 진행할 때 훌륭한 가이드가 될 것이다.

 

★ 이 책에서 다루는 내용 ★

  • 하이퍼레저 패브릭의 특징과 물리적, 논리적, 인증 구성요소
  • 하이퍼레저 패브릭 네트워크 구성과 동작(Solo, kafka-based 오더링)
  • cryptogen과 CA 서버를 이용한 키와 인증서 발급
  • 패브릭 대표 예제 따라 하기(build your first network, Balance Transfer)
  • 체인코드 개발과 실습
  • 프라이빗 데이터 체인코드 개발과 실습
  • 패브릭 멀티 호스트 구성
  • 유형별 채널 구성과 수정
  • 패브릭 네트워크 수정
  • 하이퍼레저 익스플로러
  • 프로메테우스와 그라파나를 이용한 메트릭 모니터링
  • 패브릭 2.0 알파 버전 팹 토큰

 

도서 상세 이미지

이승한

컴퓨터공학을 전공하고 kt ds 대졸공채 입사 후 번호이동 파트에서 KT 차세대 프로젝트 개발 및 운영개발 업무로 사회생활을 시작했다. 우연한 기회로 블록체인의 매력을 알게 되고 부서이동 후 크고 작은 블록체인 프로젝트 개발자로 근무했다. 현재는 LG유플러스 미래기술전략팀에서 블록체인 담당자로 근무하고 있으며, 블록체인 기반의 새로운 사업을 발굴 중이다. 개발과 전략기획이라는 두 마리 토끼를 잡고 싶어 여러 방면으로 노력 중이다.

이요한

KT 차세대 프로젝트에서 Legacy Enhancement 수행으로 kt ds에서 소프트웨어 엔지니어 업무를 시작했다. 현재는 KT그룹의 다양한 블록체인 프로젝트를 수행하고 있는 중이며, 블록체인뿐만 아니라 다양한 오픈소스 프로젝트에도 관심이 많다. 요즘에는 소프트웨어와 하드웨어를 접목한 새로운 사용자 경험을 제공하고자 많은 고민을 한다.

신태영

학부생 시절 정보통신공학을 전공하고 kt ds에서 신입사원으로 첫 사회생활을 시작했다. 3년간 KT 차세대 프로젝트에서 개발 및 운영 업무를 담당했고 프로젝트 오픈 이후에는 팀 변경과 함께 블록체인 관련 프로젝트를 꾸준히 진행 중이다. 최근에는 블록체인 외에도 MSA, Agile 등 다양한 기술에 관심을 갖고 있으며, 꾸준히 발전하는 사람이 되기 위해 노력하고 있다.

  • ▣ 1장: 들어가며
      1. 블록체인이란?
        1. 실무에서의 블록체인
      •  
  • ▣ 2장: 하이퍼레저 패브릭이란?
      1. 개방형, 기업형 블록체인의 탄생 배경
      1. 하이퍼레저 패브릭의 특징
      1. 하이퍼레저 패브릭의 물리적 구성요소
      1. 하이퍼레저 패브릭의 논리적 구성요소
      1. 하이퍼레저 패브릭의 인증 구성요소
    •  
  • ▣ 3장: 하이퍼레저 패브릭 시작하기
      1. 환경 구성
      • Node.js 설치
      • Golang 설치
      • 도커, 도커 컴포즈 설치
      • 도커 컴포즈 설치
      1. 하이퍼레저 패브릭 환경 구성
      • 하이퍼레저 패브릭 바이너리 파일 설치
      • 하이퍼레저 패브릭 이미지 파일로 설치
    •  
  • ▣ 4장: 하이퍼레저 패브릭 예제 따라하기
      1. first-network 예제 따라하기
      1. Balance Transfer 예제 따라하기
      1. 트랜잭션 라이프 사이클
      • 트랜잭션 라이프 사이클 파헤치기
    •  
  • ▣ 5장: 하이퍼레저 패브릭 자세히 보기
      1. 하이퍼레저 패브릭 네트워크 준비
      • 하이퍼레저 패브릭 키와 인증서 생성
      • 하이퍼레저 패브릭 네트워크 구성을 위한 파일 생성
      1. 하이퍼레저 패브릭 네트워크 올리기
      • 하이퍼레저 패브릭 네트워크에 참여하는 애플리케이션 알아보기
      • Solo, LevelDB를 적용한 블록체인 네트워크 구성
      • 주키퍼, 카프카, 카우치디비를 적용한 블록체인 네트워크 구성
      • 하이퍼레저 패브릭 네트워크 수정
      1. 채널 구성
      • configtx.yaml 파일 파헤치기
      • 유형별 채널 설정 변경
      1. 체인코드 만들고 사용하기
      • 스마트 계약이란?
      • 하이퍼레저의 스마트 계약(체인코드)
      • 체인코드 개발
      • 체인코드 사용을 위한 네트워크 구성 및 카우치디비 설정
      • 체인코드 설치와 초기화
      1. 프라이빗 데이터 사용하기
      • 프라이빗 데이터 트랜잭션 흐름
      • 프라이빗 데이터 사용을 위한 준비
      • 프라이빗 데이터를 사용해 저장/조회 하기
      1. 하이퍼레저 패브릭 멀티 호스트 구성
      • 도커 스웜 네트워크 구성
      • 피어 컨테이너 설정
      • 오더러 컨테이너 설정
      • 하이퍼레저 패브릭 CA 컨테이너 설정
      • 하이퍼레저 패브릭 카프카, 주키퍼 컨테이너 설정
      • 블록체인 네트워크 구동
    •  
  • ▣ 6장: 하이퍼레저 모니터링
      1. 하이퍼레저 익스플로러 소개
      • 하이퍼레저 익스플로러 설치
      • 하이퍼레저 익스플로러를 위한 데이터베이스 설정
      • 하이퍼레저 익스플로러를 위한 블록체인 네트워크 작동하기
      • 하이퍼레저 익스플로러를 위한 패브릭 환경 설정
      • 하이퍼레저 익스플로러 빌드
      • 하이퍼레저 익스플로러 실행
    •  
  • ▣ 7장: 하이퍼레저 패브릭 운영 서비스
      1. 하이퍼레저 패브릭 운영을 위한 API
      • 로그 레벨 관리
      • 헬스 체크
      • 메트릭
      1. 프로메테우스와 그라파나를 이용한 메트릭 모니터링
      • 프로메테우스 설치
      • 프로메테우스와 블록체인 네트워크 연동하기
      • 그라파나 설치
      • 그라파나와 프로메테우스 연동
    •  
  • ▣ 8장: 하이퍼레저 패브릭 2.0 알파 버전 알아보기
      1. 팹 토큰이란?
      1. 팹 토큰의 라이프 사이클
      • 팹 토큰 발행
      • 팹 토큰 리스트
      • 팹 토큰 전송
      • 팹 토큰 상환
      1. 팹 토큰 트랜잭션의 흐름과 검증
  • 11쪽, 표 2.1의 3행 3열

    체인코드가 설치되고 설치된 체이코드를 실행하는 역할을 합니다.

    ==>

    체인코드가 설치되고 설치된 체인코드를 실행하는 역할을 합니다.

  • 124쪽, 예제 코드에서 밑에서 5번째 줄

    - orderer0..example.com:7050
    

    ==>

    - orderer0.example.com:7050
    
  • 140쪽, 예제 5.24를 다음 코드로 대체(파일 다운로드: docker-compose-peer.yaml)

    version: '2'
    
    networks:
    blockchain_network:
    
    services:
    peer0.org1.example.com:
      container_name: peer0.org1.example.com
      image: hyperledger/fabric-peer:1.4.0
      environment:
        - CORE_PEER_ID=peer0.org1.example.com
        - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
        - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:7051
        - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
        - CORE_PEER_LOCALMSPID=Org1MSP
    
    
        - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
        - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=mqcouch_bn_blockchain_network
    
        - CORE_PEER_TLS_ENABLED=true
        - CORE_PEER_GOSSIP_USELEADERELECTION=true
        - CORE_PEER_GOSSIP_ORGLEADER=false
        - CORE_PEER_PROFILE_ENABLED=true
        - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
        - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
        - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
    
    
        - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
        - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0:5984
        - CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=couchdb0
        - CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=peer0couchdb
      volumes:
          - /var/run/:/host/var/run/
          - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
          - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
    
      working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
      command: peer node start
      networks:
        - blockchain_network
      ports:
        - 7051:7051
        - 7052:7052
        - 7053:7053
    
    peer1.org1.example.com:
      container_name: peer1.org1.example.com
      image: hyperledger/fabric-peer:1.4.0
      environment:
        - CORE_LOGGING_LEVEL=DEBUG
        - CORE_PEER_ID=peer1.org1.example.com
        - CORE_PEER_ADDRESS=peer1.org1.example.com:7051
        - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:7051
        - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
        - CORE_PEER_LOCALMSPID=Org1MSP
    
    
        - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
        - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=mqcouch_bn_blockchain_network
    
        - CORE_PEER_TLS_ENABLED=true
        - CORE_PEER_GOSSIP_USELEADERELECTION=true
        - CORE_PEER_GOSSIP_ORGLEADER=false
        - CORE_PEER_PROFILE_ENABLED=true
        - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
        - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
        - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
    
    
        - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
        - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb1:5984
        - CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=couchdb1
        - CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=peer1couchdb
      volumes:
          - /var/run/:/host/var/run/
          - ./crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
          - ./crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls
    
      working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
      command: peer node start
      networks:
        - blockchain_network
      ports:
        - 8051:7051
        - 8052:7052
        - 8053:7053