하이퍼레저 패브릭 철저 입문

Hyperledger Fabric을 이용한 블록체인 기반 시스템 구축과 운용


  • 토모노리 시미즈, 교코 타마치, 하야토 우에노하라, 타쿠요시 사토, 신 사이토, 히토시 콘도, 츠요시 하라야마, 아키히로 카사하라, 타츠야 이와사키, 카즈유키 오가사와라 지음
  • 양현, 장승일, 연구흠 옮김

  • 해킹 & 보안 시리즈_017
  • ISBN: 9791158391492
  • 28,000원 | 2019년 04월 29일 발행 | 348쪽



오픈소스 블록체인 플랫폼 '하이퍼레저 패브릭' 실무 해설서!

'하이퍼레저 패브릭'은 블록체인을 활용한 업무 시스템을 구축하고 운영하기 위한 소프트웨어 기반이다.

이 책은 하이퍼레저 패브릭의 개요부터 환경 구축, 응용 프로그램 개발, 상세 설정까지를 체계적으로 정리했다. 먼저 블록체인의 구조와 사용 사례 등을 소개하고 그 기술이 어떻게 사업을 실현하고 개선하는 역할을 하는지 확인한다. 그리고 하이퍼레저 패브릭의 특징과 아키텍처, 트랜잭션 처리 방법 등을 설명한다. 또 하이레저 패브릭을 활용한 응용 프로그램 개발과 시스템 구축에 대해 단계별로 실행해가며 설명한다. 여기서는 자동차 소유권을 이전하는 응용 프로그램 등을 예로 스마트 계약 개발에 대해 자세히 설명한다.

이 책은 블록체인을 활용한 사업과 시스템 기획, 응용 프로그램 개발, 시스템 구축 및 운영 등에 종사하는 분에게 알맞는 책이다.

시미즈 토모노리

일본 IBM 글로벌 비즈니스 서비스 사업본부 블록체인 컨설턴트, 1장 집필

타마치 쿄코

일본 IBM 글로벌 테크놀로지 서비스 사업본부 금융 담당 I T 스페셜리스트, 2장 집필

우에노하라 하야토

일본 IBM 소프트웨어 & 시스템 개발 연구소 ICS 개발, 3장 집필

사토우 타쿠요시

일본 IBM 글로벌 비즈니스 서비스 사업 본부 금융 제3서비스, 4장 1~2절 집필

사이토 신

일본 IBM 도쿄 기초 연구소 FSS & 블록체인 솔루션, 4장 3절, 5절 집필

콘도 히토시

일본 IBM 시스템 엔지니어링 IT 스페셜리스트, 4장 4절 집필

히라야마 츠요시

일본 IBM IBM클라우드 사업본부 컨설팅 아키텍트, 5장 1, 3, 5절 집필

카사하라 아키히로

일본 IBM 글로벌 비즈니스 서비스 사업 본부 IoT 솔루션, 5장 2, 4절 집필

이와사키 타츠야

일본 IBM 글로벌 비즈니스 서비스 사업 본부 IT 아키텍트 PM, 6장 1~6절 집필

오가사와라 카즈유키

일본 IBM 시스템 엔지니어링 제2왓슨 솔루션 시니어 IT 스페셜리스트, 감수 및 6장 7절 집필

양현

경희대학교 지리학과를 졸업하고 웹 개발자로 근무하다 보안 업무에 뛰어들었다. SK인포섹에서 소스 취약점 분석, 모의해킹, 서버 취약점 분석 업무로 본격적인 보안 실무 경험을 쌓고, NHN JAPAN을 거쳐 현재 DMM.com 그룹 전사 보안을 담당하고 있다. 번역한 책으로는 『정보보안 콘테스트를 위한 CTF 문제집』 『블록체인 구조와 이론』 『CTF 정보보안 콘테스트 챌린지 북』 『알기 쉽게 설명한 VMware NSX』 『리눅스 서버 보안』 『취약점 진단 스타트 가이드』가 있다

장승일

12년차 개발자로서, 학업에 뜻을 품고 동국대학교 국제정보보호 대학원에 입학하였다. 석사학위 취득 논문으로 작성한 ‘블록체인 기반 스마트계약을 활용한 전자상거래 에스크로 플랫폼 구축’을 시작으로 블록체인 시장에 뛰어들었다. 대학원 졸업 이후 블록체인 업체에서 근무하며 다양한 프로젝트를 하이퍼렛저 패브릭 기반으로 수행하고 있다. 국내 1호 CHFA(Certified Hyperledger Fabric Administrator) 취득자이기도 하다. 현재는 블록체인 개발자 양성과정에서 멘토로도 활동 중이다. 본서에서는 원서의 하이퍼레저 패브릭 1.0 소스를 1.4로 변경하는 작업과 버전 업에 따른 환경 검증과 기술에 대한 감수를 맡았다.

연구흠

고등학교 시절 우연히 접하게 된 클리퍼 4.0을 시작으로 현재 15년차 개발자로 근무하고 있다. PHP를 시작으로 Perl, ASP, JAVA, Javascript, Android 등을 다루며, Python과 Go 언어를 공부하고 있다. 새로운 기술 습득과 보안 관련 분야에 관심이 많으며, ‘없으면 만든다’라는 모토로 집에서도 취미로 개발을 할 만큼 코딩하는 것을 좋아한다. 최근 이직한 블록체인 업체에서 다양한 블록체인 기반의 프로젝트를 수행 중이며, 현재 블록체인 개발자 양성과정에서 멘토로도 활동 중이다. 본서에서는 환경 구축에 대한 부분을 검증했다.

  • ▣ 01장: 블록체인 개요
    • 1.1 블록체인이란?
      • 1.1.1 블록체인의 특징
      • 1.1.2 블록체인의 구조
      • 1.1.3 두 종류의 블록체인
      • 1.1.4 블록체인 적합성 여부
    • 1.2 블록체인의 활용
      • 1.2.1 은행에서 발행하는 가상 화폐
      • 1.2.2 무역 물류/무역 금융
      • 1.2.3 식품 추적
    •  
  • ▣ 02장: 하이퍼레저 패브릭 개요
    • 2.1 하이퍼레저 패브릭이란?
      • 2.1.1 개발 경위
      • 2.1.2 하이퍼레저 패브릭의 특징
    • 2.2 하이퍼레저 패브릭 v1.x의 아키텍처
      • 2.2.1 하이퍼레저 패브릭 v1.x의 구성 요소
      • 2.2.2 트랜잭션 처리 흐름
      • 2.2.3 가십 프로토콜
    •  
  • ▣ 03장: 하이퍼레저 패브릭 시작하기
    • 3.1 동작 환경에 대해
      • 3.1.1 동작 환경
      • 3.1.2 기본 구성
    • 3.2 하이퍼레저 패브릭 동작 환경 준비
      • 3.2.1 필요한 도구 및 소프트웨어
      • 3.2.2 ① 버추얼박스와 베이그런트 설치
      • 3.2.3 ② 가상화 게스트 OS로 우분투 설치 및 초기 설정
      • 3.2.4 ③ 필요한 도구 및 소프트웨어를 우분투에 설치
      • 3.2.5 ④ 하이퍼레저 패브릭 설치 및 동작 확인
    • 3.3 하이퍼레저 패브릭 예제 실행
      • 3.3.1 Marbles Demo 개요
      • 3.3.2 Marbles Demo 설치
      • 3.3.3 Marbles Demo 실행
      • 3.3.4 Marbles Demo 동작시켜 보기
      • 3.3.5 Marbles Demo의 정지 및 삭제
    • 3.4 하이퍼레저 패브릭 CLI
      • 3.4.1 peer 명령어
      • 3.4.2 peer 명령의 설정 항목
      • 3.4.3 peer 명령 사용 준비
      • 3.4.4 peer 명령의 보조 명령
      • 3.4.5 version 보조 명령
      • 3.4.6 node 보조 명령
      • 3.4.7 logging 보조 명령
      • 3.4.8 channel 보조 명령
      • 3.4.9 chaincode 보조 명령
      • 3.4.10 CLI 컨테이너 사용
    • 3.5 버추얼박스 가상환경을 사용하지 않는 환경 구축
      • 3.5.1 윈도우 10 프로
      • 3.5.2 macOS
    • 3.6 실전 블록체인 네트워크 준비
      • 3.6.1 실전 블록체인 네트워크
      • 3.6.2 템플릿 복사
      • 3.6.3 암호키, 인증서 생성
      • 3.6.4 docker-compose.yml 편집
      • 3.6.5 start.sh와 teardown.sh 편집
      • 3.6.6 실전 블록체인 네트워크 기동
      • 3.6.7 실전 블록체인 네트워크의 중지와 삭제
      • 3.6.8 실전 블록체인 네트워크에서 사용하는 docker-compose.yml 파일의 전체 내용
    •  
  • ▣ 04장: 하이퍼레저 패브릭 응용 프로그램 개발
    • 4.1 응용 프로그램 개발 개요
    • 4.2 예제 응용 프로그램 개요
      • 4.2.1 구현 방법
      • 4.2.2 데이터 모델
      • 4.2.3 클래스(개체)
    • 4.3 Go 언어를 이용한 스마트 계약 개발
      • 4.3.1 체인코드 라이프 사이클
      • 4.3.2 예제 체인코드 프로그래밍 모델
      • 4.3.3 초기 설정
      • 4.3.4 체인코드 템플릿 만들기
      • 4.3.5 엔티티와 API 정의
      • 4.3.6 Init 및 Invoke 구현
      • 4.3.7 응용 프로그램 로직 구현
      • 4.3.8 단위 테스트
      • 4.3.9 설치 준비
      • 4.3.10 응용 프로그램을 개발할 때 주의할 점
    • 4.4 SDK for Node.js를 이용한 응용 프로그램 개발
      • 4.4.1 SDK for Node.js 개요
      • 4.4.2 프로그래밍 모델
      • 4.4.3 예제 응용 프로그램 설명
      • 4.4.4 클라이언트 예제 응용 프로그램에 대해
    •  
  • ▣ 05장: 컴포저를 활용한 응용 프로그램 개발
    • 5.1 하이퍼레저 컴포저란?
      • 5.1.1 하이퍼레저 컴포저에서 모델의 개념
      • 5.1.2 하이퍼레저 컴포저의 개발 도구
      • 5.1.3 하이퍼레저 컴포저의 구성 요소
    • 5.2 컴포저를 사용하기 위한 준비
    • 5.3 모델, 트랜잭션, ACL, 쿼리
      • 5.3.1 하이퍼레저 패브릭 비즈니스 네트워크 정의
      • 5.3.2 모델
      • 5.3.3 트랜잭션 프로세서
      • 5.3.4 Event
      • 5.3.5 Query
      • 5.3.6 ACL
      • 5.3.7 BNA 파일을 활용한 배포
      • 5.3.8 커넥션 프로파일
      • 5.3.9 API를 통해 외부에서 비즈니스 네트워크에 접속
    • 5.4 배포와 실행
    • 5.5 하이퍼레저 컴포저 예제 응용 프로그램 개요
      • 5.5.1 Hyperledger Composer Playground
      • 5.5.2 CarAuction Network의 모델
    •  
  • ▣ 06장: 하이퍼레저 패브릭 환경설정
    • 6.1 예제 응용 프로그램을 통한 환경 이해
      • 6.1.1 예제 응용 프로그램의 전체적인 모습
      • 6.1.2 first-network의 전체적인 모습
      • 6.1.3 first-network의 byfn.sh
      • 6.1.4 클라이언트에서 직접 호출하는 예제
    • 6.2 하이퍼레저 패브릭 네트워크 준비
      • 6.2.1 인증서 생성(cryptogen)
      • 6.2.2 채널 환경설정 생성(configtxgen)
    • 6.3 하이퍼레저 패브릭 네트워크 시작
      • 6.3.1 설정 파일과 환경변수
      • 6.3.2 네트워크 시작
      • 6.3.3 채널 생성 및 참가
      • 6.3.4 체인코드 설치 및 실행
    • 6.4 상태 DB
      • 6.4.1 Apache CouchDB를 이용한 예제
      • 6.4.2 Apache CouchDB 기동 및 접속
    • 6.5 구성 변경
      • 6.5.1 채널 추가
      • 6.5.2 환경설정 변경(configtxlator)
    • 6.6 하이퍼레저 패브릭의 안전한 가동 환경 개요
      • 6.6.1 멤버십 서비스 제공자(MSP)
      • 6.6.2 MSP 설정에 필요한 정보
      • 6.6.3 MSP 설정