Top

이더리움을 활용한 블록체인 프로젝트 구축 [쉽게 접하는 블록체인 개발]

  • 원서명Building Blockchain Projects: Develop real-time practical DApps using Ethereum and JavaScript (ISBN 9781787122147)
  • 지은이나라얀 프루스티(Narayan Prusty)
  • 옮긴이천민욱
  • ISBN : 9791161750804
  • 30,000원
  • 2017년 11월 24일 펴냄
  • 페이퍼백 | 328쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약

어느새 '블록체인'이라는 용어가 낯설지 않을 정도로 점점 대중화되고 있다. 하지만 실제 블록체인을 활용해 개발 업무를 시작하려면 어디서부터 시작해야 할지 막막할 것이다. 이 책은 블록체인의 전반적인 개념을 설명하고, 그중 이더리움을 활용하여 다양한 프로젝트를 구축할 수 있도록 예시를 들어 쉽게 설명하고 있다. 이더리움을 활용한 개발업무를 고민 중인 독자에게 입문서로 추천한다.

이 책에서 다루는 내용

■ 블록체인 기술의 기본 개요
■ 블록체인 기술 및 기능 구현과 이를 통해 달성 가능한 것들
■ 솔리디티 및 web3.js를 활용한 DApp 구축
■ geth 명령어와 암호화에 대한 이해
■ 이더리움 지갑 생성
■ 컨소시엄 블록체인에 대한 탐색

이 책의 대상 독자

이 책은 블록체인과 이더리움을 사용해 변조 방지 데이터(그리고 트랜잭션) 애플리케이션을 만들고자 하는 자바스크립트 개발자를 대상으로 한다. 암호 화폐 및 이를 가능케 하는 로직과 데이터베이스에 관심 있는 사람에게 매우 유용하다.

이 책의 구성

1장. '탈중앙화 애플리케이션의 이해'에서는 DApp의 개념을 설명하고, 동작 방식에 대한 개요를 제공한다.
2장. '이더리움 동작 방식의 이해'에서는 이더리움 동작 방식을 설명한다.
3장. 스마트 컨트랙트 작성'에서는 스마트 컨트랙트 작성 방법과 geth의 대화형 콘솔에서 web3.js를 활용한 트랜잭션 배포 및 브로드캐스팅 방법을 보여준다.
4장. 'web3.js 시작하기'에서는 web3.js에 대한 소개 및 임포트 방법, geth와 연결하는 방법, Node.js 또는 클라이언트 측 자바스크립트 내에서 사용하는 방법을 설명한다.
5장. '지갑 서비스 구축'에서는 사용자들이 오프라인 상태더라도 이더리움 지갑을 쉽게 생성하고 관리할 수 있는 지갑 서비스 구축 방법을 설명한다. 이를 위해 특별히 LightWallet 라이브러리를 사용할 것이다.
6장. '스마트 컨트랙트 배포 플랫폼 구축'에서는 web3.js를 사용한 스마트 컨트랙트 컴파일, web3.js와 EthereumJS를 사용한 배포 방법을 보여준다.
7장. '베팅 애플리케이션 구축'에서는 이더리움 스마트 컨트랙트로부터 월드 와이드 웹의 데이터에 접근하기 위해 Oraclize를 사용한 HTTP 요청 생성 방법을 설명한다. 또한 IPFS 내에 저장된 파일에 대한 접근 방법, 문자열을 다루기 위한 strings 라이브러리 사용법도 배울 것이다.
8장. '엔터프라이즈 수준의 스마트 컨트랙트 구축'에서는 엔터프라이즈 수준의 DApp 작성을 쉽게 해주는 트러플(Truffle)의 사용법을 설명한다. 알트코인(altcoin)을 구축하면서 트러플에 대해 배워볼 것이다.
9장. '컨소시엄 블록체인 구축'에서는 컨소시엄 블록체인에 대해 논의할 것이다.

지은이의 말

블록체인은 변조 및 수정을 방지하며, 지속해서 증가하는 데이터 기록의 목록을 유지 및 관리하는 탈중앙화된 원장(ledger)이다. 모든 사용자는 네트워크에 연결할 수 있고 트랜잭션을 보낼 수 있으며 트랜잭션을 검증하거나 새로운 블록을 생성할 수 있다. 이 책은 블록체인이 무엇인지 설명하고 데이터 무결성을 유지하는 방법과 이더리움을 사용해 실제 블록체인 프로젝트를 생성하는 방법을 알려준다. 흥미 있는 실제 프로젝트를 통해 사기, 검열, 타사의 간섭 없이 프로그래밍한 대로 정확히 동작하는 스마트 컨트랙트 작성 방법을 배울 것이며, 블록체인을 위한 종단 간 애플리케이션을 구축할 것이다. 또한 암호 화폐 내의 암호학, 이더 보안, 채굴, 스마트 컨트랙트, 솔리디티(solidity)에 대한 개념도 배울 것이다. 블록체인은 비트코인의 주요한 기술적 혁신이며, 비트코인 트랜잭션의 공용 장부 역할을 한다.

저자/역자 소개

지은이의 말

블록체인은 변조 및 수정을 방지하며, 지속해서 증가하는 데이터 기록의 목록을 유지 및 관리하는 탈중앙화된 원장(ledger)이다. 모든 사용자는 네트워크에 연결할 수 있고 트랜잭션을 보낼 수 있으며 트랜잭션을 검증하거나 새로운 블록을 생성할 수 있다. 이 책은 블록체인이 무엇인지 설명하고 데이터 무결성을 유지하는 방법과 이더리움을 사용해 실제 블록체인 프로젝트를 생성하는 방법을 알려준다. 흥미 있는 실제 프로젝트를 통해 사기, 검열, 타사의 간섭 없이 프로그래밍한 대로 정확히 동작하는 스마트 컨트랙트 작성 방법을 배울 것이며, 블록체인을 위한 종단 간 애플리케이션을 구축할 것이다. 또한 암호 화폐 내의 암호학, 이더 보안, 채굴, 스마트 컨트랙트, 솔리디티(solidity)에 대한 개념도 배울 것이다. 블록체인은 비트코인의 주요한 기술적 혁신이며, 비트코인 트랜잭션의 공용 장부 역할을 한다.

지은이 소개

나라얀 프루스티(Narayan Prusty)

5년 차 풀 스택 개발자다. 블록체인 및 자바스크립트를 전문적으로 다루며, 인도, 싱가포르, 미국, 아랍에미리트의 스타트업, 정부, 기업 대상으로 확장 가능한 제품을 구축하는 데 핵심적인 역할을 했다.
탈중앙화된 애플리케이션을 구축하기 위해 이더리움, 비트코인, Hyperledger, IPFS, 리플 등을 정기적으로 사용한다. 현재 두바이 에미리트 국립 은행의 블록체인 관련 주제별 전문가(SME, Subject-Matter Expert)로 근무하고 있다.
자바스크립트에 관한 『ECMAScript 6 길들이기』(에이콘, 2016)와 『Modern JavaScript Applications』(packt, 2016)를 저술했다.
실제 업무의 문제를 해결해주는 흥미로운 일이라면 즉시 작업을 시작한다. 18세의 나이에 MP3 검색 엔진을 개발했으며, 그 이후에는 전 세계 사람들이 사용하는 다양한 애플리케이션을 개발했다. 확장 가능한 애플리케이션을 상단부터 하단까지 개발할 수 있는 능력이 그를 특별하게 만드는 요인이다.
현재 블록체인 기술을 활용해 작업을 더 쉽고, 더 빠르고, 더 적은 비용으로 수행하는 임무를 맡고 있다. 또한 블록체인 기술을 활용해 부패 방지, 사기 방지, 투명성 확보 등을 실현하는 가능성에 대해서도 검토하고 있다.

옮긴이의 말

블록체인에 관심을 두고 자료를 확인하는 시기에 우연히 이 책을 접하게 됐다. 이 책은 딱딱한 이론만 다루기보다는 전반적인 이해를 돕는 필수적인 내용과 함께 실행 가능한 예제로 구성돼 있어 어디부터 시작해야 할지 막막한 상황에서 기초를 다지는 데 도움이 됐다. 그래서 이 책의 번역을 진행하는 데 조금의 망설임도 없었다.
한 가지 짚고 넘어가야 할 점은 나 역시도 아직 블록체인 전문가는 아니라는 것이다. 그렇기 때문에 오히려 처음 블록체인 개발을 접하는 초심자 입장에서 내용을 이해하고 번역하기 위해 노력했다는 점이 독자들에게 충분히 전해졌으면 좋겠다.
이 책의 내용만으로 블록체인을 숙달하기는 어려울 것이다. 또한 너무나 빠르게 변화하므로 일부 내용이 금세 달라질 수도 있을 것이다. 그렇다고 하더라도 이 책은 앞으로 나아갈 수 있는 기반을 다지게 해줄 뿐 아니라 방향성도 제시해줄 수 있다고 생각한다.
어서 빨리 개발자들의 기발한 아이디어가 접목된 DApp이 활성화되길 기대해본다.

옮긴이 소개

천민욱

소프트웨어 개발 업무에서 축적한 경험을 바탕으로 현재 엔터프라이즈 고객들을 대상으로 프리미엄 기술 지원 및 컨설팅 업무를 수행하고 있다. 리눅스, 웹, 파이썬을 좋아하며, 매일 점심으로 무엇을 먹을지 고민하는 평범한 엔지니어다.

목차

목차
  • 1장. 탈중앙화 애플리케이션의 이해
    • 탈중앙화 애플리케이션이란 무엇인가?
      • 탈중앙화 애플리케이션의 장점
      • 탈중앙화 애플리케이션의 단점
    • 탈중앙화 자율 조직
    • DApp 내에서 사용자 ID
    • DApp의 사용자 계정
    • 중앙 집중화 애플리케이션에 대한 접근
    • DApp 내에서의 내부 화폐
      • DApp 내부 화폐의 단점
    • 승인이 필요한 DApp은 무엇인가?
    • 대중적인 DApp
      • 비트코인
      • 이더리움
      • Hyperledger 프로젝트
      • IPFS
      • 네임코인
      • 대시
      • BigChainDB
      • OpenBazaar
      • 리플
    • 요약

  • 2장. 이더리움 동작 방식의 이해
    • 이더리움의 개요
    • 이더리움 계정
    • 트랜잭션
    • 합의
    • 타임스탬프
    • 논스
    • 블록 시간
    • 포크
    • 창조 블록
    • 이더 액면가
    • 이더리움 가상 머신
    • 가스
    • 피어 검색
    • 위스퍼와 스웜
    • geth
      • geth 설치
      • JSON-RPC 및 자바스크립트 콘솔
      • 하위 명령어 및 옵션
      • 계정 생성
    • 이더리움 지갑
    • 미스트
    • 약점
      • 시빌 공격
      • 51% 공격
    • 세레니티
      • 지불 및 상태 채널
      • 지분 증명 및 캐스퍼
      • 샤딩
    • 요약

  • 3장. 스마트 컨트랙트 작성
    • 솔리디티 소스 파일
    • 스마트 컨트랙트 구조
    • 데이터 위치
    • 다른 데이터 유형은 무엇인가?
      • 배열
      • 문자열
      • 구조체
      • 열거형
      • 매핑
      • delete 연산자
      • 기본 유형 간의 변환
      • var 사용
    • 제어 구조
    • new 연산자를 사용해 컨트랙트 생성
    • 예외
    • 외부 함수 호출
    • 컨트랙트의 특징
      • 가시성
      • 함수 변경자
      • 폴백 함수
      • 상속
    • 라이브러리
      • for 사용
    • 다수의 값 리턴
    • 다른 솔리디티 소스 파일 가져오기
    • 전역적으로 사용 가능한 변수
      • 블록 및 트랜잭션 속성
      • 주소 유형 관련
      • 컨트랙트 관련
    • 이더 단위
    • 존재, 무결성, 소유권 증명
    • 컨트랙트 컴파일 및 배포
    • 요약

  • 4장. web3.js 시작하기
    • web3.js 소개
      • web3.js 불러오기
      • 노드에 연결
      • API 구조
      • BigNumber.js
      • 단위 변환
      • 가스 가격, 잔액, 트랜잭션 상세 정보 검색
      • 이더 송금
      • 컨트랙트 작업
      • 컨트랙트 이벤트 검색 및 리스닝
    • 소유권 컨트랙트를 위한 클라이언트 구축
      • 프로젝트 구조
      • 백엔드 구축
      • 프론트엔드 구축
      • 클라이언트 테스트
    • 요약

  • 5장. 지갑 서비스 구축
    • 온라인 지갑과 오프라인 지갑의 차이
    • hooked-web3-provider 및 ethereumjs-tx 라이브러리
    • 계층적인 결정적 지갑은 무엇인가?
    • 키 유도 함수 소개
    • LightWallet 소개
      • HD 유도 경로
    • 지갑 서비스 구축
      • 사전 필요조건
      • 프로젝트 구조
      • 백엔드 구축
      • 프론트엔드 구축
      • 테스트
    • 요약

  • 6장. 스마트 컨트랙트 배포 플랫폼 구축
    • 트랜잭션 논스 계산
    • solcjs 소개
      • solcjs 설치
      • solcjs API
    • 컨트랙트 배포 플랫폼 구축
      • 프로젝트 구조
      • 백엔드 구축
      • 프론트엔드 구축
      • 테스트
    • 요약

  • 7장. 베팅 애플리케이션 구축
    • Oraclize 소개
      • 어떻게 동작하는가?
      • 데이터 원본
      • 진위 증명
      • 가격
      • Oraclize API 시작하기
      • 쿼리 암호화
      • Oraclize 웹 통합 개발 환경
    • 문자열 작업
    • 베팅 컨트랙트 구축
    • 베팅 컨트랙트 클라이언트 구축
      • 프로젝트 구조
      • 백엔드 구축
      • 프론트엔드 구축
      • 클라이언트 테스트
    • 요약

  • 8장. 엔터프라이즈 수준의 스마트 컨트랙트 구축
    • ethereumjs-testrpc 탐색
      • 설치 및 사용법
      • 사용 가능한 RPC 메소드
    • 이벤트 토픽은 무엇인가?
    • trufflecontract 시작하기
      • truffle-contract 설치 및 임포트
      • 테스트 환경 설정
      • tffltt API
    • 트러플 소개
      • 트러플 설치
      • 트러플 초기화
      • 컨트랙트 컴파일
      • 설정 파일
      • 컨트랙트 배포
      • 단위 테스트 컨트랙트
      • 패키지 관리
      • 트러플 콘솔 사용
      • 트러플 컨텍스트 내에서 외부 스크립트 실행
      • 트러플 빌드 파이프라인
      • 트러플 서버
    • 요약

  • 9장. 컨소시엄 블록체인 구축
    • 컨소시엄 블록체인은 무엇인가?
    • 진위 증명 합의 프로토콜은 무엇인가?
    • 패리티 소개
      • Aura 동작 방식에 대한 이해
      • 패리티 실행
      • 프라이빗 네트워크 생성
      • 권한 및 개인정보 보호
    • 요약

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.100]
function myFunction() myModifier1(a) myModifier2 myModifier3 returns
->
function myFunction() myModifier1(a) myModifier2 myModifier3 myModifier4 returns

[p.101 : 아래에서 3행]
앞의 예시에서 5~7번째 행은 절대로 실행되지 않는다. 네 번째 행 이후 8~10번째 행의 실행이 시작된다.
->
앞의 예시에서 5~8번째 행은 절대로 실행되지 않는다. 네 번째 행 이후 9~10번째 행의 실행이 시작된다.