블록체인 구조와 이론

예제로 배우는 핀테크 핵심 기술


  • 아카바네 요시하루, 아이케이 마나부, 이소 토모히로, 혼다 히로시, 노지마 리이치로, 호죠 마사시, 시바타 마사유키, 이나바 타카히로, 나리키요 요시히로, 나가이 야스토시 지음
  • 양현 옮김
  • 공무제 감수

  • 해킹 & 보안 시리즈_010
  • ISBN: 9791158390662
  • 25,000원 | 2017년 06월 23일 발행 | 264쪽



가상화폐 비트코인의 핵심 기술로 세상에 알려진 블록체인은 현재 전 세계적으로 금융을 비롯해 제조, 유통, 공공, 의료 등 대부분의 산업군에서 블록체인 기반의 서비스를 앞다투어 도입하거나 검토하고 있다. 이 책은 블록체인 기술을 쉽게 설명하고 있어서 전반적인 블록체인 기술, 특히 프라이빗 블록체인에 대해 이해하기 좋은 책이다. 블록체인 도입을 검토하는 기획자부터 블록체인 기반의 시스템을 개발해야 하는 개발자까지 블록체인의 기본 개념을 익히려면 반드시 읽어봐야 할 책이다.

★ 이 책에서 다루는 내용 ★

  • [1부 기초편] 블록체인 기술을 둘러싼 전 세계 동향 소개
  • [2부 이론편] 블록체인 기술을 구성하는 여러 기술에는 어떤 것이 있고 각각 무엇인지 설명
  • [3부 실천편] 블록체인 기술 중 대표적인 플랫폼(블록체인 기반 기술)을 몇 가지 다루며 개발에 필요한 기본적인 지식을 예제 코드와 함께 설명
  • [특별부록] 최신 Hyperledger Fabric v1.0 소개

 

추천사

"블록체인은 비트코인 등 가상 화폐의 기본 기술이다. 하지만 가상 통화뿐 아니라 다양한 분야에 응용할 수 있어 미래 사회를 바꾸는 핵심 기술이 될 것이라 생각한다. 이 책은 블록체인의 기초를 자세히 설명하고 있다."

-- 와세다 대학 금융 종합 연구소 고문, 히토츠바시 대학 명예 교수 노구치 유키오

 

상세 이미지

아카하네 요시하루

1, 3, 14장 담당, 주식회사 NTT 데이터, 금융사업추진부 기술전략추진부 시스템 기획 담당 부장

아이케이 마나부

2, 6, 8, 10, 11, 12장 담당, 주식회사 NTT 데이터, 금융사업추진부 기술전략추진부 시스템 기획 담당 과장대리

이소 토모히로

4장 담당, 주식회사 NTT 데이터, 금융사업추진부 기술전략추진부 시스템 기획 담당 주임

혼다 히로시

5장 담당, 주식회사 NTT 데이터, 금융사업추진부 기술전략추진부 시스템 기획 담당

노지마 리이치로

7장 담당, 주식회사 NTT 데이터, 금융사업추진부 기술전략추진부 시스템 기획 담당 과장대리

호죠 마사시

7장 담당, 주식회사 NTT 데이터, 기술혁신총괄본부 시스템 기술본부 방식기술부

시바타 마사유키

9장 담당, 주식회사 NTT 데이터, 금융사업추진부 기술전략추진부 시스템 기획 담당

이나바 타카히로

13장 담당, 주식회사 NTT 데이터, 금융사업추진부 기술전략추진부 시스템 기획 담당 과장대리

나리키요 요시히로

13장 담당, 주식회사 NTT 데이터, 금융사업추진부 기술전략추진부 시스템 기획 담당

나가이 야스토시

11, 12장 담당, 스즈요 신와토 주식회사

양현

경희대학교 지리학과를 졸업하고 웹 개발자로 근무하다 보안 업무에 뛰어들었다. SK인포섹에서 소스 취약점 분석, 모의해킹, 서버 취약점 분석 업무로 본격적인 보안 실무 경험을 쌓고, 일본 NHN-Techorus에서 앱(웹/모바일) 진단 및 교육을 담당하고 있다. 번역한 책으로는 『CTF 정보보안 콘테스트 챌린지 북』 『알기 쉽게 설명한 VMware NSX』 『리눅스 서버 보안』 『취약점 진단 스타트 가이드』가 있다.

 

감수/특별부록

공무제

한국IBM에서 블록체인 에반젤리스트로 활동하고 있다. 산업공학을 전공하고, 졸업 후 오픈소스 BPMS 프로젝트 멤버의 엔진 개발자로서 첫 사회생활을 시작했다. 다수의 회사에서 자바 기반 의 소프트웨어 엔지니어에서부터 WAS, 모바일 플랫폼 엔지니어 등을 담당하면서 웹에서 미들웨 어에 이르기까지 다양한 스펙트럼의 기술과 경험을 쌓았다.

  • [1부] 기초편
    • ▣ 1장: 프롤로그
      • 1.1. 비트코인이 ‘반감기’를 맞이했다!?
      • 1.2. 비트코인은 시스템 비용을 절감하는가
        • 1.2.1. 비트코인 유지 비용
        • 1.2.2. 비트코인 시스템의 처리 성능
        • 1.2.3. 사실은 비싼 비트코인
      • 1.3. 혁신은 사업 계획에 있다
      • 1.3.1. 블록체인의 본질에 대한 이해
      •  
    • ▣ 2장: 블록체인의 흐름
      • 2.1. 시작은 비트코인
        • 2.1.1. 비트코인의 탄생
        • 2.1.2. 비트코인의 평판
        • 2.1.3. 블록체인 기술에 대한 주목
      • 2.2. 핀테크로서의 블록체인 기술
      • 2.3. 시스템 개발 기술로서의 블록체인
      •  
    • ▣ 3장: 블록체인 기술이란?
      • 3.1. 블록체인과 비트코인
      • 3.2. 분산 원장을 지원하는 기술
        • 3.2.1. 분산 원장이란
        • 3.2.2. 분산 원장의 이점
        • 3.2.3. 분산 원장의 단점
      • 3.3. 블록체인이 널리 퍼질 가능성
      •  
    • ▣ 4장: 블록체인 기술의 응용
      • 4.1. 블록체인의 특징
      • 4.2. 결제 및 거래에서의 응용
        • 4.2.1. 가상 화폐
        • 4.2.2. 송금·결제
        • 4.2.3. 무역 금융
        • 4.2.4. 자금 조달
        • 4.2.5. 마켓플레이스
        • 4.2.6. 전력시장
        • 4.2.7. 영상 콘텐츠 서비스
      • 4.3. 서명 및 증명에서의 응용
        • 4.3.1. 저작권 관리
        • 4.3.2. 고액 물품 거래 추적
        • 4.3.3. 계약 관리 및 실행
        • 4.3.4. 문서 공증
      • 4.4. 신규 서비스 응용
      • 4.4.1. IoT
      • 4.4.2. 투표54
      • 4.5. 기타 응용 사례
      • 4.6. 이후 과제
      •  
    • ▣ 5장: 블록체인 업계 동향
      • 5.1. 금융 분야
        • 5.1.1. 해외 은행
        • 5.1.2. 일본 은행
        • 5.1.3. 금융 상품 거래소
        • 5.1.4. 중앙은행
        • 5.1.5. 기타 금융 분야
      • 5.2. 공공 분야
        • 5.2.1. 에스토니아 정부 동향
        • 5.2.2. 영국 정부 동향
        • 5.2.3. 미국 정부 동향
        • 5.2.4. 일본 정부 동향
      • 5.3. 기타 분야
        • 5.3.1. 제조업계 동향
        • 5.3.2. 학술업계 동향
        • 5.3.3. 업계 단체 동향
        • 5.3.4. 기타 기업·단체 동향
      •  
  • [2부] 이론편
    • ▣ 6장: 블록체인 구조
      • 6.1. 비트코인 구조
        • 6.1.1. 비트코인의 목적
        • 6.1.2. 비트코인 구현 방법
        • 6.1.3. 비잔티움 장군 문제
        • 6.1.4. 비트코인의 처리 흐름
      • 6.2. 블록체인 기술의 구성 요소와 분류
        • 6.2.1. 비트코인 이외의 블록체인 기반 기술
        • 6.2.2. 블록체인 기술 구성 요소
        • 6.2.3. 블록체인 기반 기술의 분류
      • 6.3. 블록체인 기반 기술 비교
        • 6.3.1. 아키텍처 비교
        • 6.3.2. 데이터 모델 비교
      •  
    • ▣ 7장: P2P 네트워크
      • 7.1. P2P 네트워크 개요
      • 7.2. P2P 네트워크 설계
        • 7.2.1. 퓨어 P2P와 하이브리드 P2P
        • 7.2.2. 비 구조화 오버레이와 구조화 오버레이
        • 7.2.3. 블록체인 기반 기술 분류
      • 7.3. P2P 네트워크에 따른 블록체인의 동작(개요)
      • 7.4. P2P 네트워크에 따른 블록체인의 동작(상세)
        • 7.4.1. P2P 네트워크에서 다른 노드와의 연계
        • 7.4.2. 데이터(블록) 송수신
      • 7.5. 향후 과제
      •  
    • ▣ 8장: 합의 알고리즘
      • 8.1. 합의 알고리즘이란?
      • 8.2. 계산량에 따른 증명(Proof of Work)의 문제점
      • 8.3. 합의 알고리즘의 종류
        • 8.3.1. 대표적인 합의 알고리즘
        • 8.3.2. 분산 시스템의 장애 모델
      • 8.4. 각 합의 알고리즘의 특징
      • 8.5. 이후의 과제
      •  
    • ▣ 9장: 전자 서명과 해시
      • 9.1. 전자 서명을 통한 위조 및 변조 방지
        • 9.1.1. 전자 서명 개요
        • 9.1.2. 블록체인에서 전자 서명 이용
      • 9.2. 해시를 통한 위조 및 변조 방지
        • 9.2.1. 해시 개요
        • 9.2.2. 블록체인에서 해시 이용
      • 9.3. 향후 과제
        • 9.3.1. 암호 기술로서의 과제
        • 9.3.2. 기업 이용에 있어서의 과제
      •  
    • ▣ 10장: 이용에 있어서의 과제
      • 10.1. 적용 영역의 확대와 블록체인 기반 기술
      • 10.2. 엔터프라이즈 영역에서 풀어야 할 과제
      • 10.3. 엔터프라이즈 이용에 남은 과제
      •  
  • [3부] 실천편
    • ▣ 11장: Bitcoin Core
      • 11.1. 비트코인과 Bitcoin Core
        • 11.1.1. Bitcoin Core란?
        • 11.1.2. Bitcoin Core 작동
      • 11.2. Bitcoin Core 설치부터 기동까지
        • 11.2.1. Bitcoin Core 설치
        • 11.2.2. 테스트넷에서 기동
      • 11.3. Bitcoin Core 조작
        • 11.3.1. 블록 생성
        • 11.3.2. 블록 수 확인
        • 11.3.3. 계좌 생성
        • 11.3.4. 잔고 확인
        • 11.3.5. 송금
        • 11.3.6. 채굴
        • 11.3.7. 송금 확인
      •  
    • ▣ 12장: 이더리움
      • 12.1. 이더리움 개요
        • 12.1.1. 이더리움이란?
        • 12.1.2. 이더리움 구동
        • 12.1.3. 이더리움 설치
        • 12.1.4. 테스트 네트워크 구축
        • 12.1.5. 계좌 생성
        • 12.1.6. 잔고 확인
        • 12.1.7. 블록 수 확인
        • 12.1.8. 송금
        • 12.1.9. 송금 확인
        • 12.1.10. geth 정지
      • 12.2. Contract를 사용한 샘플 개발
        • 12.2.1. 이더리움 확장 기능
        • 12.2.2. 이더리움 프로그래밍
        • 12.2.3. 개발 도구 준비
        • 12.2.4. browser-solidity 기동
        • 12.2.5. Contract 작성
        • 12.2.6. Contract 배포
        • 12.2.7. 테스트 데이터 입력
        • 12.2.8. HTML 파일 작성
        • 12.2.9. 연결 대상 및 사용자 정보 설정
        • 12.2.10. 샘플 응용 프로그램 실행
        • 12.2.11. 블록 상태 모니터링 도구 작성
      •  
    • ▣ 13장: Hyperledger Fabric
      • 13.1. Hyperledger Fabric 개요
        • 13.1.1. Hyperledger Project와 Hyperledger Fabric
        • 13.1.2. 멤버십 서비스
        • 13.1.3. 합의 알고리즘
        • 13.1.4. Fabric의 ‘원장’
        • 13.1.5. 체인 코드
        • 13.1.6. Validating Peer
        • 13.1.7. Hyperledger Project와 Hyperledger Fabric의 정보 소스
      • 13.2. Hyperledger Fabric 구동
        • 13.2.1. 개발 환경 설정
        • 13.2.2. 가상 머신에 접속
        • 13.2.3. 개발 모드로 실행
        • 13.2.4. CA 서버 기동
        • 13.2.5. Validating Peer 기동
        • 13.2.6. 체인 코드 프로세스 기동
        • 13.2.7. 로그인
        • 13.2.8. 배포 트랜잭션 실행
        • 13.2.9. Invoke 트랜잭션 실행
        • 13.2.10. Query 트랜잭션 실행
      • 13.3. 체인 코드를 사용한 샘플 개발
        • 13.3.1. 실행 환경
        • 13.3.2. 개발 도구 준비
        • 13.3.3. 체인 코드 작성
        • 13.3.4. HTML 파일 작성
        • 13.3.5. 도커 이미지 생성
        • 13.3.6. Docker Compose 설정 파일 편집
        • 13.3.7. Docker Compose에서 기동
        • 13.3.8. 샘플 응용 프로그램 실행
        • 13.3.9. 모니터링 도구 작성
      •  
    • ▣ 14장: 에필로그
      • 14.1. The DAO Attack 사건과 하드 포크 문제
        • 14.1.1. 사건의 개요와 논점
        • 14.1.2. The DAO Attack 사건의 교훈
      • 14.2. 블록체인 사용 [방법론]
      •  
    • ▣ 특별부록: Hyperledger Fabric v1.0
      • A.1. Overview
      • 1.1. 시스템 아키텍처
        • 1.1.1. 트랜잭션
        • 1.1.2. 블록체인 데이터 구조
        • 1.1.3. 노드
        • 1.1.4. 트랜잭션의 흐름
      • A.2. Fabric 네트워크 구성하기
      • 2.1. 사전 준비 사항
      • 2.2. Hyperledger Fabric 소스 받기 및 빌드
      • 2.3. Fabric 네트워크 부트스트랩을 위한 준비
        • 2.3.1. Crypto Generator
        • 2.3.2. Configuration Transaction Generator
        • 2.3.3. 설정파일 준비
        • 2.3.4. 인증서 및 아티팩트 생성
      • A.3. Fabric 네트워크 시작
      • 3.1. 채널 생성
      • 3.2. 채널에 피어 참여
        • 3.2.1. Peer0.org1
        • 3.2.2. Peer1.org1
        • 3.2.3. Peer0.org2
        • 3.2.4. Peer1.org2
      • 3.3. Anchor 피어 설정
      • 3.4. 체인코드 디폴로이 및 동작 확인
        • 3.4.1. 체인코드 디플로이
        • 3.4.2. 체인코드 초기화
        • 3.4.3. Query
        • 3.4.4. Invoke
        • 3.4.5. Query
      • A.4. CouchDB 사용하기
      • A.5. 정리하며

예제코드 관련 GitHub 페이지

  • 21쪽, 단축 URL(https://is.gd/v3elAF)을 아래 URL로 대체

  • 36쪽, 페이지 '송금처', '입금처' 부가 설명

    송금처 ==> 송금할 곳 = 송금받는 곳

    입금처 ==> 입금한 곳
    
  • 57쪽, 3번째 줄

    SPELLS OF SENESIS: ==> SPELLS OF GENESIS:

  • 91쪽, 그림 6-11의 화살표 하단

    비트코인은 패브릭형 ==> 비트코인은 공용형

  • 103쪽, 역주 7번

    (역주) Eclipse Attace. ==> (역주) Eclipse Attack.

  • 108쪽, 9번째 줄

    다르기 대문이다. ==> 다르기 때문이다.

  • 108쪽, 밑에서 8번째 줄

    퇴츨하는 모델 ==> 퇴출하는 모델

  • 128쪽, 3부 제목

    실천편 ==> 실전편

  • 134쪽, 리스트 11-6 libdb4.8 설치 관련

    실습 환경이 우분투 16.04 버전이 아니거나, sudo add-apt-repository ppa:bitcoin/bitcoin 사용 시 에러가 나는 경우 다음과 같은 명령으로 software-properties-common, python-software-properties를 설치합니다.

    sudo apt-get install software-properties-common
    sudo apt-get install python-software-properties
    
  • 159쪽 맨 밑에 [역주]

    personal.unlockAccount(eth.account[0]) ==> personal.unlockAccount(eth.accounts[0])

  • 176쪽, 4번째 줄

    거래가 종류된 시점의 ==> 거래가 종료된 시점의

  • 176쪽, 맨 아래 URL을 대체

    https://github.com/hyperledger/fabric/chaincode/shim

    ==>

    https://godoc.org/github.com/hyperledger/fabric/core/chaincode/shim****