C 윤대근 All Rights Reserved 1 쇄발행 2018 년 11 월 30 일 지은이윤대근 펴낸이장성두 펴낸곳주식회사제이펍 출판신고 2009 년 11 월 10 일제 호 주소경기도파주시회동길 층 3-B 호 전

Similar documents
말은 많은 Blockchain 2

09 강제근로의 금지 폭행의 금지 공민권 행사의 보장 중간착취의 금지 41 - 대판 , 2006도7660 [근로기준법위반] (쌍용자동차 취업알선 사례) 11 균등대우의 원칙 43 - 대판 , 2002도3883 [남녀고용평등법위

°æÁ¦Àü¸Á-µ¼º¸.PDF

User interface design

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

한국전자통신연구원 (ETRI) 설립일자 소재지대전광역시유성구가정로 218 대표전화 홈페이지 기관소개 한국전자통신연구원에서는중점적으로정보사회의기반구축을위한반도체, 통신, 컴퓨터분야의핵심기술연구개발,


PowerPoint Presentation

사물인터넷비즈니스빅뱅_내지_11차_ indd

View Licenses and Services (customer)

메뉴얼41페이지-2

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

vRealize Automation용 VMware Remote Console - VMware

<BFDCB1B9C0CE20C5F5C0DAB1E2BEF7C0C720B3EBBBE7B0FCB0E82E687770>

C++ Programming

SIGIL 완벽입문

SBR-100S User Manual

Windows 8에서 BioStar 1 설치하기

[Brochure] KOR_TunA

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

Microsoft Word - 08_01_블록체인.docx

INDUS-8.HWP

CONTENTS.HWP


네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 /carrena/ VMware 에서 l

Microsoft Word - src.doc

<C1A4C3A5BFACB1B D3420C1A4BDC5C1FAC8AFC0DAC0C720C6EDB0DFC7D8BCD220B9D720C0CEBDC4B0B3BCB1C0BB20C0A7C7D120B4EBBBF3BAB020C0CEB1C720B1B3C0B020C7C1B7CEB1D7B7A520B0B3B9DF20BAB8B0EDBCAD28C7A5C1F6C0AF292E687770>

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

공정한합의알고리즘 : deb 합의알고리즘 (A fair consensus algorithm : deb consensus algorithm) 목차 1. 개요 2. 합의알고리즘의공정성 3. deb 합의알고리즘 4. 공정한노드의역할및신뢰성검증 5. 성능 6. deb 합의알고

Cloud Friendly System Architecture

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

언리얼엔진4_내지_ indd

wtu05_ÃÖÁ¾

Install stm32cubemx and st-link utility

Studuino소프트웨어 설치

Microsoft Word - PLC제어응용-2차시.doc

Windows Server 2012

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

<3036C7E2BCF6C3D6C1BEBABB2E687770>


C O N T E N T S 목 차 요약 / 1 I. 중남미화장품시장현황 / 3 Ⅱ. 주요국별시장정보 / 9 ( 트렌드 유통망 인증 ) 1. 브라질 / 9 2. 멕시코 / 콜롬비아 / 칠레 / 64 Ⅲ. 우리기업진출전략 / 79 # 첨부. 화장품관

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

C++ Programming

- 목차 - 1. 개요 가. 아이콘 (ICON) 이란? 나. 주요스펙 1) 기본정보 2) 시장정보 2. 주요팀멤버및재단소개 3. ICON 컨셉및특징 - 독자적인블록체인기술, Loopchain - ICON의블록체인네트워크, 넥서스 (NEXUS) - IISS (ICON I

2001 년 4 월전력산업구조개편과함께출범한전력거래소는전력산업의중심 기관으로서전력시장및전력계통운영, 전력수급기본계획수립지원의기능을 원활히수행하고있습니다. 전력거래소는전력자유화와함께도입된발전경쟁시장 (CBP) 을지속 적인제도개선을통해안정적으로운영하고있으며, 계통운영및수급

untitled

PowerPoint 프레젠테이션

세계 비지니스 정보

Oracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치

제 출 문 중소기업청장 귀하 본 보고서를 중소기업 원부자재 구매패턴 조사를 통한 구매방식 개선 방안 연구 의 최종보고서로 제출합니다 한국산업기술대학교 산학협력단 단 장 최 정 훈 연구책임자 : 이재광 (한국산업기술대학교 부교수) 공동연구자 : 노성호

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2000) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2000 Exchange Server 2003 GFI MailEssentials 14 for

1. 블록체인이란 블록체인은말그대로블록단위의데이터를체인형태로연결해서보관하는형태로저장하는 형태를말한다, 중앙화된서버가없이분산화된 P2P 기반의네트워크에서각참여자 ( 노드 ) 들이 저장하는것에가장큰특징이있다. 현재컴퓨터시스템에서가장대중적인서비스형태는서버-클라이언트모델이다.

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기

Àç°¡ »êÀçÀå¾ÖÀÎÀÇ ÀçÈ°ÇÁ·Î±×·¥¿¡ °üÇÑ¿¬±¸.HWP

< BACFC7D1B1B3C0B0C1A4C3A5B5BFC7E228B1E2BCFABAB8B0ED D D20C6EDC1FD2035B1B32E687770>

A SQL Server 2012 설치 A.1 소개 Relational DataBase Management System SQL Server 2012는마이크로소프트사에서제공하는 RDBMS 다. 마이크로소프트사는스탠다드 standard 버전이상의상업용에디션과익스프레스 exp

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

WIZBL_WHITEPAPER 한글

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1


Operating Instructions

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

Microsoft Word - Armjtag_문서1.doc

0904-6부 tta부록

Office 365 사용자 가이드

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

비잔틴 노드에 의한 네트워크 분기 시도와, 네트워크 정지 시도를 막기 위하여 네트 워크의 모든 노드들에 2번에 거쳐 합의 데이터를 전송한다. Tendermint와 같은 선행 연구들은 PBFT를 이용하여 비트코인으로 대표되는 작업증명 알고리즘을 사용하는 블록체인 시스템의

iOS ÇÁ·Î±×·¡¹Ö 1205.PDF

i

본명세서는회원님들의이해에도움이되고자작성한내용이며, 투자권유의의도는일절없음을안내드립니다.

<4D F736F F D20B4EBBFF BFB5BEF7BAB8B0EDBCAD2E646F63>

tiawPlot ac 사용방법

ISP and CodeVisionAVR C Compiler.hwp

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

Yggdrash White Paper Kr_ver 0.18

장애인통계-0110-최종.hwp

법학박사학위논문 실손의료보험연구 2018 년 8 월 서울대학교대학원 법과대학보험법전공 박성민

PowerPoint 프레젠테이션

5월전체 :7 PM 페이지14 NO.3 Acrobat PDFWriter 제 40회 발명의날 기념식 격려사 존경하는 발명인 여러분! 연구개발의 효율성을 높이고 중복투자도 방지할 것입니다. 우리는 지금 거센 도전에 직면해 있습니다. 뿐만 아니라 전국 26

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

Samsung SDS Enterprise Cloud Networking CDN Load Balancer WAN

VPN.hwp

Endpoint Protector - Active Directory Deployment Guide

RHEV 2.2 인증서 만료 확인 및 갱신

Slide 1

Windows Live Hotmail Custom Domains Korea

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

PowerPoint Template


Cisco FirePOWER 호환성 가이드

Web Scraper in 30 Minutes 강철


Transcription:

C 2018. 윤대근 All Rights Reserved 1 쇄발행 2018 년 11 월 30 일 지은이윤대근 펴낸이장성두 펴낸곳주식회사제이펍 출판신고 2009 년 11 월 10 일제 406-2009 - 000087 호 주소경기도파주시회동길 159 3 층 3-B 호 전화 070-8201 - 9010 / 팩스 02-6280 - 0405 홈페이지 www.jpub.kr / 원고투고 jeipub@gmail.com 독자문의 readers.jpub@gmail.com / 교재문의 jeipubmarketer@gmail.com 편집부이종무, 황혜나, 최병찬, 이슬, 이주원 / 소통 기획팀민지환 / 회계팀김유미 교정 교열장성두 / 본문디자인북아이 / 표지디자인미디어픽스 용지에스에이치페이퍼 / 인쇄한승인쇄 / 제본광우제책사 ISBN 979-11-88621-45-3 (93000) 값 24,000 원 이책은저작권법에따라보호를받는저작물이므로무단전재와무단복제를금지하며, 이책내용의전부또는일부를이용하려면반드시저작권자와제이펍의서면동의를받아야합니다. 잘못된책은구입하신서점에서바꾸어드립니다. 제이펍은독자여러분의아이디어와원고투고를기다리고있습니다. 책으로펴내고자하는아이디어나원고가있는분께서는 책의간단한개요와차례, 구성과저 ( 역 ) 자약력등을메일로보내주세요. jeipub@gmail.com

드리는말씀 이책에기재된내용을기반으로한운용결과에대해저자, 소프트웨어개발자및제공자, 제이펍출판사는일체의책임을지지않으므로양해바랍니다. 이책에기재한회사명및제품명은각회사의등록상표 ( 또는상표 ) 이며, 본문중에는 TM, C, R 등의기호를생략하고있습니다. 이책에서설명하고있는실제제품버전은독자의학습시점에따라책의버전과다를수있습니다. 책내용과관련된문의사항은지은이나출판사로연락해주시기바랍니다. - 지은이 : ykudfor1@gmail.com - 출판사 : readers.jpub@gmail.com

차례 머리말 추천사 베타리더후기 ix xiii xv CHAPTER 1 블록체인이해하기 _ 1 1.1 블록체인이란? 1 1.1.1 분산원장 1 1.1.2 스마트컨트랙트 3 1.1.3 합의 3 1.2 블록체인은어떻게사용될수있을까? 4 1.2.1 오늘날의비즈니스모델 4 1.2.2 블록체인비즈니스모델 5 1.3 하이퍼레저패브릭소개 6 1.3.1 하이퍼레저프로젝트소개 6 1.3.2 하이퍼레저패브릭개요 8 1.3.3 하이퍼레저패브릭특징 11 차례 v

CHAPTER 2 하이퍼레저패브릭핵심분석 _ 13 2.1 하이퍼레저패브릭구성요소 13 2.1.1 Peer 13 2.1.2 Chaincode 16 2.1.3 DApp 22 2.1.4 Endorsement Policy 26 2.1.5 Organization 27 2.1.6 Channel 30 2.1.7 Ledger 31 2.1.8 Gossip 38 2.1.9 Identity 41 2.1.10 MSP 49 2.1.11 Orderer 54 2.2 네트워크구축과정 61 2.2.1 오더링서비스노드구축 63 2.2.2 채널생성 64 2.2.3 채널참여 65 2.2.4 체인코드 / 분산애플리케이션설치 66 2.2.5 새로운조직 / 채널추가 67 2.2.6 새로운조직의남은구성요소설치 68 2.3 트랜잭션처리과정 69 2.3.1 트랜잭션생성 70 2.3.2 트랜잭션보증 70 2.3.3 시뮬레이션결괏값 / 디지털인증서확인 71 2.3.4 최신블록생성 72 2.3.5 최신블록검증 73 2.3.6 최신블록업데이트 74 2.4 합의 75 vi 차례

CHAPTER 3 하이퍼레저패브릭실습 _ 77 3.1 패브릭설치 77 3.1.1 사전준비 77 3.1.2 하이퍼레저패브릭설치 89 3.2 멀티호스트환경운영 (Cryptogen) 93 3.2.1 네트워크구축 95 3.2.2 MSP 생성 99 3.2.3 Genesis block 생성 107 3.2.4 채널설정 110 3.2.5 MSP 디렉터리배포 112 3.2.6 Peer 구동 113 3.2.7 Kafka-Zookeeper 구동 116 3.2.8 Orderer 구동 119 3.2.9 채널생성 121 3.2.10 Peer의채널참여 123 3.2.11 Anchor peer 업데이트 125 3.2.12 체인코드설치 126 3.2.13 체인코드인스턴스생성 129 3.2.14 분산원장의데이터읽기 131 3.2.15 분산원장에데이터기록 132 3.2.16 트러블슈팅 134 3.3 멀티호스트환경운영 (Fabric-CA) 136 3.3.1 네트워크구축 138 3.3.2 Fabric-CA 서버실행및 Fabric-CA 서버의운영자계정생성 143 3.3.3 Fabric-CA 서버운영자 MSP 생성 144 3.3.4 조직생성및조직운영자 MSP 생성 145 3.3.5 Peer 및 Orderer 노드 MSP 생성 160 3.3.6 Orderer 구동 169 차례 vii

3.3.7 Peer 구동 172 3.3.8 채널생성 174 3.3.9 Peer의채널참여 174 3.3.10 Anchor peer 업데이트 175 3.3.11 체인코드설치 176 3.3.12 체인코드인스턴스생성 177 3.3.13 분산원장의데이터읽기 177 3.3.14 분산원장에데이터기록 179 3.4 Intermedia CA 운영 180 3.4.1 네트워크구축 181 3.4.2 Root CA 구동 185 3.4.3 Intermediate CA 구동 189 CHAPTER 4 프라이빗데이터 _ 195 4.1 프라이빗데이터콜렉션이란? 196 4.2 프라이빗데이터콜렉션사용예시 197 4.3 프라이빗데이터트랜잭션처리과정 199 4.4 개인정보관리 201 APPENDIX A 버추얼박스를이용한멀티호스트 VM 네트워크구성 _ 203 APPENDIX B Atom 설치및사용법 _ 207 APPENDIX C crypto-config 디렉터리구조 _ 209 찾아보기 216 viii 차례

머리말 머리말 블록체인현황 4차산업혁명시대의흐름에따라기존의중앙화된세상은점점탈중앙화된세상으로바뀌고있습니다. 예를들어, 방송국의지위는유튜브등에서활동하는 1인방송크리에이터로인해점차하락하고있으며, 기존대기업의사업영역에영향을미칠만큼우버, 에어비엔비, 렌딩클럽등의공유경제기업이성장해가고있습니다. 이러한시대를맞이하기위한가장중요한기술세가지를꼽으라면단연 빅데이터, 인공지능, 블록체인 이라할수있습니다. 이세가지기술의공통점은무엇일까요? 기술의핵심이데이터에있다는것일겁니다. 빅데이터는대량의데이터를효율적으로처리하는기술이고, 인공지능은데이터를이용해기계를똑똑하게만들어주는기술이며, 마지막으로블록체인은여러의견이있겠지만필자는중앙기관이독점하고있는데이터의주권을각각의사용자에게돌려주는기술이라고생각합니다. 이러한세가지기술이모두조화를이루어야만진정한 4차산업의시대가완성될수있다고생각합니다. 그러나빅데이터와인공지능은오래전부터많은관심속에서기술의성숙도가무르익어가고있는반면, 블록체인기술은현재가지고있는잠재력과장점에비해기술의완성도가아직까지는매우부족한실정입니다. 대표적으로, 전세계적으로가장활발하게개발되고있는이더리움만보더라도실생활에사용하기까지아직수많은기술적장벽들이남아있습니다. 머리말 ix

시중에블록체인개론서와서비스, 코인관련서적에비해기술을다루는책은극히일부라는것을알고난뒤책을집필하기로마음먹었습니다. 하이퍼레저패브릭또한많은사람의관심을받고있는블록체인플랫폼임에도불구하고관련기술서적이현재국내에단한권도없습니다. 이책은시중에많이출간되어있는블록체인기술개론서보다는한걸음더들어가서하나의대표적인프라이빗블록체인플랫폼에대한구조를분석하고시스템을직접운영해볼수있는내용을담고있습니다. 이책이여러분이블록체인전문가가될수있는좋은발판이되었으면하고, 더나아가블록체인기술발전에조금이나마이바지할수있게되면좋겠습니다. 하이퍼레저패브릭이란? 2015년, 리눅스재단에서는기업용블록체인개발을위해하이퍼레저 (Hyperledger) 프로젝트를만들었는데, 오픈소스형태의프로젝트로서전세계기업과개발자들이자발적으로기술개발에참여하는프로젝트입니다. 하이퍼레저패브릭은가장왕성하게활동중인하이퍼레저프로젝트로서초기에 IBM이제공한 44,000여줄의코드를바탕으로현재전세계개발자들이개발에참여하고있습니다. 허가형프라이빗블록체인 (Permissioned and Private Blockchain) 형태로개발되었으며, 이더리움, 비트코인등누구나참여할수있는퍼블릭블록체인과는달리 MSP(Membership Service Provider) 라는인증관리시스템에등록된사용자만이하이퍼레저패브릭블록체인에참여할수있습니다. 하이퍼레저의패브릭참여자들은비즈니스목적에알맞은형태로블록체인플랫폼을구축하는것을목표로개발되고있습니다. 예를들어금융, 물류, 의료등다양한형태의비즈니스데이터를원장에기록할수있으며, 비즈니스시스템에적합한블록생성알고리즘이나트랜잭션보증정책을선택할수도있습니다. 또한, 채널 (Channel) 이라는개념을도입해서블록체인참여자들간의프라이버시를강화할수도있습니다. x 머리말

이책의구성 이책은블록체인에대한간략한설명 (1장 ), 하이퍼레저패브릭구조분석 (2장 ), 하이퍼레저패브릭시스템운영실습 (3장 ), 프라이빗트랜잭션 (4장 ) 으로구성되어있습니다. 1장 : 블록체인에대한전반적인설명과함께하이퍼레저프로젝트, 하이퍼레저패브릭을간략하게설명합니다. 2장 : 하이퍼레저패브릭을구성하는각각의구성요소의역할과기능에대하여설명합니다. 다음으로, 하이퍼레저패브릭에서블록체인네트워크구축과정을학습한후구축된블록체인네트워크에서트랜잭션이처리되는흐름에대해자세히알아볼것입니다. 3장 : 버추얼박스로 VM을생성한후실제네트워크환경과유사한멀티호스트네트워크환경에서하이퍼레저패브릭을직접운영해봅니다. 하이퍼레저패브릭에서제공하는도구인 cryptogen을이용하여시스템을구축하는방법, Fabric-CA 를이용하여시스템을구축하는방법, 마지막으로 Intermediate CA 를포함하여시스템을구축하는실습내용을담고있습니다. 4장 : 하이퍼레저패브릭 1.2 버전에서추가된프라이빗트랜잭션에대한설명과개인정보관리기능에대해알아봅니다. 이책의대상독자 다음과같은분들이이책을읽는다면블록체인기술을습득하는데많은도움이되리라생각합니다. 블록체인기술을배우고싶은 IT 전공자 블록체인플랫폼혹은서비스를개발중인개발자 자신의회사 / 기관등에블록체인기술적용을고려중인관리자 그밖에블록체인기술에관심있는 IT 업계종사자 머리말 xi

집필후기및감사인사 8월의무더운여름에책을쓰기시작했는데쌀쌀한늦가을이되어서야출판이눈앞에보이네요. 책을쓰기로마음먹고원고를탈고하기까지업무시간과약간의수면시간을제외한대부분의시간에는원고만썼습니다. 이렇게많은노력을기울였음에도막상원고를탈고하고나니아쉬움이많이남네요. 부족하지만이책이여러분을블록체인전문가로만들수있는좋은입문서적이되면좋겠습니다. 책의부족한부분에대한피드백은언제든지환영입니다. 제이메일 (myhoneydressing@gmail.com) 로연락해주시면빠른시간안에답변드리도록하겠습니다. 이책은많은사람의도움으로탄생했습니다. 먼저, 원고를멋진책으로편집해주신제이펍출판사관계자분들께감사드립니다. 편집과정에서너무나잘도와주셨기때문에한층더완성도있는책을출판할수있었습니다. 제가 ETRI 블록체인기술연구센터에소속되지않았다면이책은세상에나오지못했을겁니다. 연구에집중할수있도록항상신경써주시고부족한저를잘이끌어주시는 ETRI 블록체인기술연구센터연구원들께도감사드리고, 국가 IT 기술발전을위해항상노력하는 ETRI 구성원모두에게도감사드립니다. 그리고이렇게좋은직장에입사하여좋은동료들을만나기까지저에게물심양면무한한도움을주신부모님께감사드립니다. 마지막으로, 뭐든지할수있는용기를주고항상옆에서힘이되어주는, 서로의정신적인버팀목이자사랑하는저의피앙세최지혜에게도고맙다는말을전합니다. 나도지혜가뉴욕에서힘든전공의과정을무사히마치고더훌륭한의사가될수있도록곁에서힘이되어줄게! 윤대근 xii 머리말

_ IBM IBM 2014 2015 Proof of Concept IBM IBM 2015 12 2016 2 IBM 30 11 IBM 2015 44 000 Open Blockchain xiii

_ 1 3 2 Public Blockchain IBM IT xiv

베타리더후기 김용현 ( 마이크로소프트MVP) 이책은블록체인기술의한축인하이퍼레저패브릭에대한개념과실습환경을친절한설명과예제를통해제공해줍니다. 하이퍼레저패브릭을처음접하거나블록체인기술에대한개념을쉽고간략하게실습을통해익히고싶은분들에게추천합니다. 깔끔한내용과쉬운설명, 그리고간결하면서확실한환경설명, 모나지않고반드시실행되는실습이매우인상깊었습니다. 개인적으로조금만더깊은내용을다루거나, 아니면응용사례와같은내용이있으면더좋았을것같기도하지만, 초심자를대상으로하는도서인만큼기획의도에충분히부합하는책인것같습니다. 김종욱 ( 네이버 ) 하이퍼레저패브릭이무엇인지한눈에파악할수있도록잘정리된책입니다. 본도서를통해하이퍼레저의개념과용도그리고기존의블록체인방식과무엇이다른지를손쉽게파악할수있었습니다. 다만, 책의수준은어디까지나처음입문하는사람의눈높이에맞추었기때문에하이퍼레저패브릭을어느정도아시는분이라면보다심화된내용을다루는책을찾아읽기를권합니다. 베타리더후기 xv

박재유 (LG전자) 올해의 IT 기술트렌드는단연블록체인일것입니다. 많은사람들이비트코인과블록체인을혼동하지만, 사실블록체인이라는기술자체는금융뿐만아니라다른산업에도광범위하게응용이가능한, 암호학기술의결정체라할수있습니다. 하이퍼레저패브릭은리눅스재단의주도로만들어진오픈소스블록체인프로젝트입니다. 퍼블릭혹은프라이빗형태로도운영이가능하므로, 관련사업을새롭게추진하려는분들에게이책이좋은지침서가될것같습니다. 손승하 ( 삼성전자 ) 리눅스파운데이션에의해시작된하이퍼레저패브릭은엔터프라이즈콘텍스트에서사용하도록설계된오픈소스프로젝트입니다. 이도서는많은개발자가참여하여빠르게성장하고있는프로젝트를쉽게명확하게설명하고있습니다. 전체구조와동작원리를쉽고빠르게접하길원하시는분들에게이책을추천합니다. 장성만 (incowiz) 프라이빗블록체인플랫폼이자다양한산업군에범용적으로도입가능한하이퍼레저패브릭에대한개념을빠르게잡기에좋은책입니다. IBM이깃허브를통해제공하는예제보다실제운영구축에필요한사항이세세하게정리되어있는것이이책의큰장점입니다. 실제구축환경이자세히설명되어있어서아주만족스러웠습니다. 제이펍은책에대한애정과기술에대한열정이뜨거운베타리더들로하여금출간되는모든서적에사전검증을시행하고있습니다. xvi 베타리더후기

CHAPTER 1C 1.1 블록체인이란? 하이퍼레저패브릭 (Hyperledger Fabric) 을소개하기에앞서블록체인 (Blockchain) 을처음접하시는분들을위해블록체인의주요개념을간단하게짚고넘어가겠습니다. 1장에서는블록체인의동작방식과핵심구성요소인분산원장, 스마트컨트랙트, 합의를간략하게설명한후하이퍼레저패브릭이기존의블록체인과비교해서어떠한특징이있는지설명하겠습니다. 1.1.1 분산원장 분산원장 (Distributed Ledger) 은블록체인을구성하는가장중요한요소중하나입니다. 또한, 블록체인을탈중앙화된시스템으로만들어주는핵심기술입니다. 거래기록등의데이터를저장하는데이터베이스 ( 원장 ) 를중앙화된서버가소유하는것이아니라, 블록체인에참여하는모든사람이동일한원장을소유하고관리하는기술을일컫습니다. 기존의시스템에서는동일한비즈니스네트워크에서도사용자마다서로다른원장에비즈니스정보를기록하는것과는달리블록체인에서는블록체인사용자모두동일한원장에비즈니스정보를기록하고관리합니다. 예를들어, A 은행을이용하는고객들은각각의서로다른고유한 1.1 블록체인이란? 1

계좌 ( 원장 ) 를가지고금융정보를기록하는반면, 다들잘알고있는비트코인, 이더리움등과같은블록체인플랫폼의경우모든사용자에대한거래기록이하나의비트코인원장에모두기록됩니다. 하지만이러한구조에서는프라이버시문제가발생할수있는데, 하이퍼레저패브릭에서는채널 (Channel) 개념을도입하여프라이버시문제를해결하였습니다. 채널에대해서는 2장에서좀더자세히다루겠습니다. 원장 A 원장 B 원장 C 원장 D 공통원장 오늘날비즈니스네트워크 VS 블록체인비즈니스네트워크 블록체인분산원장의또다른특징은모든정보가해시화되어 Append-only 방식으로만원장에저장되기때문에한번원장에기록된정보들은절대수정할수없습니다. 이와같은불가변성 (immutability) 의특성은블록체인데이터에대한악의적인변조를불가능하게만들어데이터에대한신뢰도를향상시켜주는역할을하게됩니다. 최신블록 수정불가 Block 4 Block 3 Block 2 Block 1 Block 0 데이터기록 블록체인의 Append-only 저장방식 2 CHAPTER 1 블록체인이해하기

1.1.2 스마트컨트랙트 트랜잭션전송트랜잭션수집스마트컨트랙트 원장에기록 New Block Block 4 Block 3 Block 2 Block 1 Block 0 스마트컨트랙트를통한분산원장접근예시 블록체인참여자는스마트컨트랙트 (Samat Contract, 스마트계약 ) 를통해서분산원장에정보를기록하거나불러올수있습니다. 또한, 스마트컨트랙트를이용하여단순히거래정보를읽고쓰는것뿐만아니라프로그래밍을통해거래자동화등의다양한응용프로그램을만들수도있습니다. 예를들어, 그룹공동명의의계좌를만들어서특정인원수이상의서명이있어야잔액을출금할수있는기능이나, 특정날짜에월급이입력되는기능등을스마트컨트랙트를통해구현할수있습니다. 또한, 스마트컨트랙트를좀더편리하게사용하기위해개발되는프로그램을분산애플리케이션 (Decentralized Application, DApp) 이라고하는데, 하이퍼레저패브릭에서스마트컨트랙트와분산애플리케이션이어떻게동작하는지는 2장에서좀더자세히살펴보겠습니다. 1.1.3 합의 앞절에서블록체인에참여하는모든사람이동일한원장을소유해야한다고설명했습니다. 이러한조건을만족시키기위해비트코인과이더리움에서는블록체인에참여한모든노드중암호화된퍼즐의답을가장먼저찾아내는노드의블록을최신 1.1 블록체인이란? 3

블록으로업데이트하는 PoW(Proof of Work) 방식이있습니다. EOS는블록체인참여자가 21명의블록생성자를선출하여선출된블록생성자가최신블록을생성하는 DPoS(Delegated Proof of Stake) 방식을사용합니다. 이밖에도대부분의블록체인플랫폼에서 PoW와 PoS 알고리즘을기반으로 PBFT(Practical Byzantine Fault Tolerance), Casper PoS, RPCA(Ripple Protocol Consensus Algorithm) 등으로변형하여합의과정에사용하고있습니다. 하이퍼레저패브릭에서는조금다른관점으로합의알고리즘을정의합니다. 하이퍼레저패브릭의합의과정은 PoW, PoS 혹은 BFT와같이합의과정을특정알고리즘에국한시키지않고아래세가지일련의과정을통틀어합의과정이라고말합니다. 보증정책확인 트랜잭션을정해진순서에맞춰정렬 정렬된트랜잭션의유효성검증후최신블록업데이트 각항목별로자세한합의과정은 2 장에서설명할예정입니다. 1.2 블록체인은어떻게사용될수있을까? 1.2.1 오늘날의비즈니스모델 오늘날대부분의비즈니스모델에서는신뢰성있는거래를위해중개자 (intermediary) 가꼭필요하게됩니다. 현금보유량을증명하려면은행이현금보유량에대한증명을대신해줘야하고, 토지소유에대한증명은부동산이토지에대한증명을대신해줘야만합니다. 이렇게중개자를거치는거래방식은높은수수료를유발함과동시에자산증명에많은시간이소요됩니다. 또한, 각각의중개자마다데이터를기록하는시스템이모두다르기때문에중개자들간에자산을증명하는작업에도상당한시간과비용이소모되고있습니다. 4 CHAPTER 1 블록체인이해하기

3. 토지거래 3. 토지거래 2. 공증응답 2. 공증응답 1. 공증요청 한국토지공사 1. 공증요청 유럽토지공사 서로다른시스템으로인해공증에어려움이있음 오늘날의비즈니스네트워크 예를들어, 한국부동산에등록된토지재산을유럽에서증명해야한다고가정해봅시다. 먼저, 한국에서부동산 ( 복덕방 ) 등을통해토지에대한공증을받은후유럽으로관련서류를보내야겠죠. 한국으로부터토지증명서류를수신한유럽에서는다른언어혹은다른양식으로기록된해당공증에대한확인에큰비용과시간이소요될것입니다. 1.2.2 블록체인비즈니스모델 블록체인비즈니스모델에서는현금보유량이나토지증명등을중개자없이거래참여자들간에수행할수있습니다. 거래당사자들간에직접수행하는합의알고리즘 (Consensus Algorithm) 을통해중개자없이도신뢰성있는거래가가능하게되는것입니다. 또한, 원장에한번기록된정보는수정이나변경이불가능하여거래기록에대한신뢰성이제공됩니다. 이러한블록체인비즈니스모델에서는중개자가없기때문에중개수수료를절감함과동시에하나의일관된시스템에서거래가발생하므로자산증명에대한시간과비용을절약할수있습니다. 1.2 블록체인은어떻게사용될수있을까? 5

토지증명 한국인 미국인 토지증명 토지증명 공동토지원장 영국인 토지증명 블록체인비즈니스네트워크 중국인 1.3 하이퍼레저패브릭소개 1.3.1 하이퍼레저프로젝트소개 2015년, 리눅스재단에서는기업용블록체인개발을위해하이퍼레저 (Hyperledger) 프로젝트를만들었는데, 오픈소스형태의프로젝트로서전세계기업과개발자들이자발적으로기술개발에참여하는프로젝트입니다. IBM, Cisco, American Express, 화웨이등외국계기업뿐만아니라카카오페이, 삼성SDS 등국내기업도함께참여하고있습니다 (2018년기준 ). 하이퍼레저프로젝트는다음과같이크게두가지로나뉩니다. 하이퍼레저프레임워크 (Hyperledger Frameworks) 하이퍼레저툴 (Hyperledger Tools) 6 CHAPTER 1 블록체인이해하기

하이퍼레저프레임워크하이퍼레저프레임워크 (Hyperledger Frameworks) 는분산원장, 스마트컨트랙트, 합의알고리즘등블록체인에대한원천적인기술을개발하는프로젝트입니다. 대표적으로, 다음과같은하이퍼레저프레임워크가있습니다. 하이퍼레저프레임워크프로젝트소개 프로젝트이름 특징 가장활발하게활동중인하이퍼레저프로젝트로서 IBM 이제공한 44,000 줄의코드를기반으로개발되고있습니다. MSP(Membership Service Provider) 기반의접근제어기능을제공하고, 트랜잭션을블록에정렬한후합의하는방법으로는현재 Solo, Kafka, SBFT( 향후개발예정 ) 가있습니다. Intel 의 Intel Distributed Ledger 를바탕으로개발되었으며, SGX(Secure Guard Extension) 를이용해구현한 PoET(Proof of Elapsed Time) 합의알고리즘을사용합니다. 하이퍼레저패브릭과마찬가지로동시처리를지원하고높은확장성과모듈화를추구하는블록체인플랫폼입니다. 블록해시에대한투표로합의를수행하는 YAC(Yet Another Consensus) 합의알고리즘기반의블록체인플랫폼입니다. ios, Android, JavaScript 등모바일과웹을위한인프라를제공하기때문에블록체인참여자들에게간편한거래환경을제공할수있는것이특징입니다. Sovrin foundation 주도로개발되고있는블록체인플랫폼입니다. 인터넷환경에서중개자없이신원을제공하는것을목표로개발중인블록체인플랫폼입니다. BFT(Byzantine Fault Tolerance) 합의알고리즘기반의블록체인플랫폼입니다. 대표적인특징으로는이더리움의 DApp 을 Hyperledger Burrow 플랫폼에서작동시킬수있습니다. 하이퍼레저툴하이퍼레저툴 (Hyperledger tools) 은블록체인시스템의성능측정, 운영, 개발을쉽게할수있도록도와주는툴을개발하는프로젝트입니다. 대표적으로, 다음과같은하이퍼레저툴이있습니다. 1.3 하이퍼레저패브릭소개 7

하이퍼레저툴프로젝트소개 프로젝트이름 특징 블록체인성능측정을위한프로젝트입니다. 현재 Hyperledger Fabric v1.0+, Sawtooth 1.0+ Iroha 플랫폼성능측정을지원하며, TPS(Transaction Per Second), Latency, Resource utilisation 등에대한성능을측정할수있습니다. 블록체인의운영및관리를위한프로젝트로서블록체인플랫폼의생명주기를관리하고대시보드를통한시스템상태확인과자원확장등의기능을제공합니다. 현재는 Hyperledger Fabric v1.0 까지지원합니다. 하이퍼레저패브릭의애플리케이션개발과기존비즈니스시스템, 블록체인시스템의통합에편의성을제공해주는프로젝트입니다. Github 를통해소스코드를다운로드하여사용할수있고, IBM 의 Bluemix 클라우드에서서비스를제공하기도합니다. IBM 과 DTCC 의주도로개발중인블록체인모니터링툴입니다. 현재는하이퍼레저패브릭 v1.0 에대한모니터링을지원하고노드, 채널, 블록, 트랜잭션등에대한모니터링을할수있습니다. 서로다른원장간연동프로토콜을개발하는프로젝트로서 Ripple 과 NTT Data 에서처음프로젝트를시작하였습니다. 현재는분산원장과일반원장사이의지급시스템연동을목표로개발되고있습니다. 1.3.2 하이퍼레저패브릭개요 이번절에서는본격적으로하이퍼레저패브릭의구조를공부하기앞서간략하게몇가지특징을설명하겠습니다. 하이퍼레저패브릭은가장왕성하게활동중인하이퍼레저프로젝트로서, 초기에 IBM 이제공한 44,000여줄의코드를바탕으로현재약 30여개의조직에서개발에참여하고있습니다. 허가형프라이빗블록체인 (Permissioned and Private Blockchain) 형태로개발되었으며, 이더리움, 비트코인등누구나참여할수있는퍼블릭블록체인과는달리 MSP(Membership Service Provider) 라는인증관리시스템에등록된사용자만이하이퍼레저패브릭블록체인에참여할수있습니다. MSP와관련해서는 2.1.9 Identity 절과 2.1.10 MSP 절에서자세히설명하겠습니다. 8 CHAPTER 1 블록체인이해하기

하이퍼레저의패브릭참여자들은비즈니스목적에알맞은형태로블록체인플랫폼을구축할수있습니다. 예를들어금융, 물류, 의료등다양한형태의비즈니스데이터를원장에기록할수있으며, 비즈니스시스템에적합한블록생성알고리즘이나트랜잭션보증정책을선택할수도있습니다. 또한, 채널 (Channel) 이라는개념을도입해서블록체인참여자들간의프라이버시를강화할수있습니다. A 기관 B 기관 공동거래채널 부동산거래채널 금융거래채널 C 기관 D 기관 채널개념예시 모든사용자가동일한원장을가지고모든정보를공유할수있을뿐만아니라, 비즈니스에민감한내용을공유하고싶은참여자들간에만채널을통해서별도의원장을생성하여정보를공유할수도있습니다. 위그림에서보는바와같이모든조직이거래하는공동거래채널이존재할수있고, 또한 A-C 기관과 B-C-D 기관만이거래내용을공유할수있는부동산 / 금융채널도생성할수있습니다. NOTE 위예제에서 C 기관은부동산거래채널과금융거래채널의데이터를모두사용할수있지만, 서로다른채널간의분산원장전달은불가능합니다. 예를들어, A 기관으로부터받은원장을 B 와 D 기관으로전달할수없고반대의경우도마찬가지입니다. 1.3 하이퍼레저패브릭소개 9

하이퍼레저패브릭의원장 (Shared Ledger) 은다음과같이두가지구성요소로이루어져있습니다. 월드스테이트 (World state) 블록체인 (Blockchain) World state block 2( 현재블록 ) 잔액 - 400 원저축 - 1,000 원 block 1 잔액 - 900 원카드대금결제 - 500 원 block 0 잔액 - 1,000 원 A 마트결제 - 100 원 Blockchain Transaction Log 원장구조예시 월드스테이트 (World state) 는원장의현재상태를말합니다. 은행잔고를예로들면, 현재가지고있는금액이바로 World state입니다. 블록체인 (Blockchain) 은원장의전체기록을일컫습니다. 마찬가지로은행을예로들면, 계좌를만든후부터현재까지결제한모든기록이바로블록체인입니다. 은행과블록체인의다른점은은행은본인계좌의현재상태와거래기록밖에확인할수없지만, 블록체인은모든참여자계좌의현재상태와결제기록을확인할수있다는점입니다 ( 블록체인의이러한특성때문에하이퍼레저패브릭은채널개념을도입하여채널에참여한사용자의정보만을확인할수있도록프라이버시를강화하였습니다.) 하이퍼레저패브릭에서스마트컨트랙트는체인코드 (Chaincode) 에쓰여집니다. 체인코드는기존의스마트컨트랙트와같이원장에데이터를읽고쓰기위해사용될수있습니다. 다만, 스마트컨트랙트와의차이점은시스템체인코드 (System chaincode) 라는특수한체인코드를이용하여블록체인시스템설정이가능하다는특징이있습니다. 체인코드에대한내용은 2장에서좀더자세하게다루겠습니다. 참고로, 체인코드는현재 Go와 Node.js 언어를지원하고있습니다. 10 CHAPTER 1 블록체인이해하기

블록체인의합의알고리즘은 IT 관련학계에서활발하게연구가이루어지고있습니다. PBFT(Practical Byzantine Fault Tolerance) 알고리즘은블록체인네트워크의전체노드가 n개라고가정했을때악의적인노드가 (n-1)/3 개이하면정상적인합의를이끌어낼수있는알고리즘입니다. 비트코인과이더리움등은블록체인네트워크의모든노드가동시에암호화된수학퍼즐을푸는작업을수행하여가장빠른시간안에답을찾아낸노드가자신의원장을새로운공동원장이라고전파하여합의를진행하는알고리즘입니다. 하이퍼레저패브릭의합의알고리즘은 PBFT나비트코인의 PoW(Proof of Work) 등의합의방식과는달리, 트랜잭션의생성부터새로운블록생성까지모든과정을통칭해서합의과정이라고말합니다. 하이퍼레저패브릭의합의방식도 2장에서좀더자세히설명하겠습니다. 1.3.3 하이퍼레저패브릭특징 하이퍼레저패브릭의대표적인특징은다음과같습니다. 프라이버시와기밀성 작업구간별병렬처리 체인코드 모듈화된디자인 하이퍼레저패브릭은블록체인참여조직간에채널개념을도입하여프라이버시와기밀성을제공합니다. 예를들어, 블록체인참여기업중특정정보를특정회사에만공유하고싶은경우를가정해봅시다. 해당기업들은정보를공유하고싶은회사와협정을맺은후채널을생성하여정보를공유할수있습니다. 같은블록체인네트워크에있다고하더라도채널에소속되지않은조직은채널의거래내용을확인할수없습니다. Execute Order Validation 하이퍼레저패브릭의 3 단계데이터처리과정 1.3 하이퍼레저패브릭소개 11

하이퍼레저패브릭에서는트랜잭션의생성부터합의하는과정까지단계별로분리하여처리할수있습니다. 첫번째실행 (Execute) 단계에서는트랜잭션을실행하고결괏값을검증하는작업을수행합니다. 두번째단계인정렬 (Order) 단계에서는실행단계에서검증이끝난트랜잭션을취합하여순서에맞게정렬한후블록을생성하는작업을수행합니다. 마지막으로, 검증 (Validation) 과정에서는블록에포함된모든트랜잭션에대한결괏값검증을수행하고, 각종디지털인증서등을확인한후이상이없을시최신블록을업데이트하게됩니다. 이처럼작업을분리하여처리하게되면트랜잭션을실행하고검증하는노드와트랜잭션을정렬하는노드의부하를줄일수있고, 동시에두가지이상의작업을수행하는병렬처리가가능하기때문에시스템의성능또한향상하게됩니다. 체인코드는기존블록체인의스마트컨트랙트와동일한기능을가지고있으며, Go와 Node.js를이용해서다양한형태의응용프로그램으로개발될수있습니다. 또한, 시스템체인코드는트랜잭션의보증, 블록검증, 채널설정등시스템레벨에서의설정이필요할때사용되는체인코드입니다. 마지막으로, 하이퍼레저패브릭은시스템구축시인증, 합의알고리즘, 암호화등의기능을참여자들이원하는형태로선택해서블록체인을운영할수있도록모듈화된디자인을지원합니다. 이와같이모듈화된디자인은하이퍼레저패브릭블록체인을다양한비즈니스모델에맞추어개발할수있는유연성을제공합니다. 12 CHAPTER 1 블록체인이해하기

HAPTER 2C 2.1 하이퍼레저패브릭구성요소 2.1.1 Peer peer는하이퍼레저패브릭블록체인을구성하는네트워크노드중하나입니다. 앞장에서블록체인의가장중요한세가지요소는바로분산원장, 스마트컨트랙트, 합의라고설명했었습니다. 이중에서분산원장과스마트컨트랙트를 peer가관리하는역할을수행합니다. 하이퍼레저패브릭블록체인참여자는 peer에설치된스마트컨트랙트를호출하여분산원장에저장된정보에접근할수있습니다. 이번절에서는 peer의시점에서분산원장과스마트컨트랙트가어떻게동작하는지알아보겠습니다. NOTE 하이퍼레저패브릭에서는스마트컨트랙트라는용어대신체인코드 (Chaincode) 라는용어를사용합니다. 그리하여이책에서도앞으로스마트컨트랙트대신체인코드라는용어를사용하겠습니다. 2.1 하이퍼레저패브릭구성요소 13

체인코드 분산원장 peer peer 노드개념도 위그림과같이분산원장과체인코드는 peer 에저장되고설치되기때문에하이퍼레저 패브릭참여자는 peer 를통해서만분산원장과체인코드에접근할수있습니다. 체인코드 1 체인코드 2 체인코드 3 분산원장 1 분산원장 2 peer 여러개의체인코드와원장을소유한 peer 노드 필요에따라서 peer는복수개의분산원장과체인코드를가질수도있습니다. 위그림에는하나의 peer가 2개의분산원장과 3개의체인코드를각각호스팅하고있습니다. 체인코드1은분산원장1에데이터를저장하고읽어오는데사용되고, 체인코드 3은분산원장2에데이터를저장하고읽어오는데사용됩니다. 또한, 체인코드 2처럼분산원장 1 과분산원장2 모두접근하여데이터를기록하고읽어올수있게개발할수도있습니다. 14 CHAPTER 2 하이퍼레저패브릭핵심분석

체인코드 1 분산원장 1 분산원장 2 peer 분산원장 1 만접속가능한체인코드를소유한 peer 노드 위의그림처럼분산원장에접근가능한체인코드가없는경우도가능합니다만하이퍼레저패브릭공식문서에서는권장하지않는설정입니다. 공식문서에서는하나의 peer 에서최소한개이상의분산원장과체인코드호스팅을권장하고있습니다. 체인코드 1 분산원장 1 peer1 사용자 A 체인코드 1 2 분산원장 1 분산원장 2 peer2 peer 노드네트워크예시 사용자 B 마지막으로, 앞의그림을토대로 peer 네트워크가어떻게작동하는지설명하겠습니다. 2.1 하이퍼레저패브릭구성요소 15

peer1은체인코드 1과분산원장1을호스팅하고있고, peer2는체인코드 2와분산원장1, 분산원장2를호스팅하고있습니다. 또한, 사용자A 는 peer1에연결되어있으며체인코드1을통해분산원장1 에데이터를기록하거나읽어올수있고, 만약데이터를기록하는작업을요청한다면뒷장에서설명할 orderer 노드와함께합의과정을진행하여분산원장1을업데이트하게됩니다. 사용자B는 peer2에연결되어있습니다. 사용자B는체인코드2를통해분산원장1 과분산원장2에모두접근하여데이터를기록하거나읽어올수있으며, 분산원장에데이터를기록하는경우마찬가지로합의과정을통해분산원장을업데이트할수있게됩니다 2.1.2 Chaincode 블록체인의핵심은한번기록된데이터는위 / 변조가불가능한분산원장에있습니다. 하이퍼레저패브릭에서는분산원장에데이터를기록하거나읽기위해서체인코드 (Chaincode) 가필요한데, 주로비즈니스모델에맞는분산애플리케이션 (DApp) 과함께개발되어사용됩니다. 사용자 A 송금트랜잭션생성요청 결괏값반환 DApp R E S T S D K 송금트랜잭션 결괏값반환 peer 체인코드 분산원장 block 10( 현재블록 ) 사용자 A: -1,000 원사용자 A 잔액 : 8,000 원사용자 B: +1,000 원사용자 B 잔액 : 11,000 원 송금트랜잭션생성 block 9 사용자 A 잔액 : 9,000 원사용자 B 잔액 : 10,000 원... 16 CHAPTER 2 하이퍼레저패브릭핵심분석

예를들어, 사용자A 가사용자B에게 1,000원을송금하는트랜잭션을분산애플리케이션을이용하여생성한후체인코드로전달하면체인코드는분산원장에있는사용자A 의계좌잔액기록을 1,000원을뺀금액으로수정하고, 사용자B의계좌잔액기록에서는 1,000원을더한금액으로수정하게됩니다. 잔액확인트랜잭션생성요청 사용자 B 결괏값반환 DApp1 R E S T S D K 잔액확인트랜잭션 결괏값반환 peer 체인코드 분산원장 block 10( 현재블록 ) 사용자 A: -1,000 원사용자 A 잔액 : 8,000 원사용자 B: +1,000 원사용자 B 잔액 : 11,000 원 block 9 사용자 A 잔액 : 9,000 원사용자 B 잔액 : 10,000 원... 잔액확인트랜잭션생성 마찬가지로, 사용자 B 는잔액을확인하는트랜잭션을분산애플리케이션을통해생성 한후체인코드로전달하면체인코드는분산원장에있는사용자 B 의잔액기록을반 환하여사용자 B 에게전달해줍니다. 시스템체인코드퍼블릭블록체인의스마트컨트랙트와는달리하이퍼레저패브릭은시스템체인코드 (System chaincode) 라는특수한체인코드가있습니다. 시스템체인코드는애플리케이션레벨에서원장에접근하는일반적인체인코드와는달리하이퍼레저패브릭의시스템 2.1 하이퍼레저패브릭구성요소 17

HAPTER 3C 이장에서는실습을통해하이퍼레저패브릭이어떻게작동하는지알아보겠습니다. 현재하이퍼레저패브릭에서제공하는하이퍼레저패브릭구동예제는모두하나의호스트 PC에다수의네트워크노드를설치하는도커 (Docker) 환경을바탕으로만들어져있습니다. 개인적인생각으로이러한예제를바탕으로는상용화시스템구축도어려울뿐더러도커환경에익숙하지않다면시스템을이해하는데어려움이클것으로판단됩니다. 따라서이책에서는좀더상용화환경에가깝고시스템을좀더직관적으로이해하기위해, 도커를사용하지않은멀티호스트환경에서의하이퍼레저패브릭네트워크구축실습을제공하겠습니다. 3.1 패브릭설치 3.1.1 사전준비 이번절에서는하이퍼레저패브릭실습에필요한구성요소들을설치해보겠습니다. 하이퍼레저패브릭 v1.3 기준으로다음과같은프로그램들이필요합니다. 3.1 패브릭설치 77

VirtualBox Ubuntu 18.04.1 Go v1.10.4 Docker Compose git GNU libtool openssh-server Docker 17.06.2-ce pip curl tree net-tools 각구성요소를설치하는과정을하나씩알아보겠습니다. 버추얼박스및우분투설치 이책에서는버추얼박스 (VirtualBox) 의가상머신에우분투및필수구성요소들을설치 한후에하이퍼레저패브릭네트워크를구축하겠습니다. 버추얼박스와게스트확장패키지다운로드 우선, 버추얼박스웹사이트에서호스트 PC 운영체제에맞는버추얼박스와게스트확 장패키지 (VirtualBox Extension Pack) 를다운로드합니다 ( 버추얼박스버전이바뀌게되면최신 버전을다운로드합니다 ). 78 CHAPTER 3 하이퍼레저패브릭실습

게스트확장패키지설치 버추얼박스설치부터완료한후좌측상단에파일 환경설정 확장탭으로들어가서다운받은게스트확장패키지를선택하여설치해줍니다. 다음으로, 우분투웹사이트에접속후 18.04.1 데스크탑이미지를다운로드합니다 (18.04.1 이최신버전이아니라면아래사이트에접속해서 18.04.1 버전을다운로드합니다 ). URL http://old-releases.ubuntu.com/releases/bionic/ 사이트접속후 ubuntu-18.04.1-desktop-amd64.iso 를검색해서다운로드합니다 ( 약 1.8GB). 가상머신생성 3.1 패브릭설치 79

다음으로, 왼쪽상단의 새로만들기 버튼을클릭합니다. 그리고앞의그림과같이가 상머신이름과종류, 버전을선택하고 다음 버튼을클릭합니다. 메모리설정 필자가시험한결과, 하이퍼레저패브릭노드를구동할수있는최소메모리사양은 2048MB 였기에가상머신의메모리는 2048MB 로설정해줍니다. 필요하다면가상머 신생성후에도메모리는변경할수있습니다. 하드디스크생성 80 CHAPTER 3 하이퍼레저패브릭실습

지금새가상하드디스크만들기 를선택하고 만들기 를클릭합니다. 하드디스크파일종류선택 하드디스크파일종류를 VDI 로선택합니다. 참고로, VDI 는버추얼박스에서사용하 는가상머신의하드디스크포맷방식입니다. 고정크기선택 빠른실행환경을위해 고정크기 를선택하고 다음 을클릭합니다. 3.1 패브릭설치 81