이더리움을 활용한 블록체인 프로젝트 구축 [쉽게 접하는 블록체인 개발]
- 원서명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)에 대한 개념도 배울 것이다. 블록체인은 비트코인의 주요한 기술적 혁신이며, 비트코인 트랜잭션의 공용 장부 역할을 한다.
목차
목차
- 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
- 단위 변환
- 가스 가격, 잔액, 트랜잭션 상세 정보 검색
- 이더 송금
- 컨트랙트 작업
- 컨트랙트 이벤트 검색 및 리스닝
- 소유권 컨트랙트를 위한 클라이언트 구축
- 프로젝트 구조
- 백엔드 구축
- 프론트엔드 구축
- 클라이언트 테스트
- 요약
- web3.js 소개
- 5장. 지갑 서비스 구축
- 온라인 지갑과 오프라인 지갑의 차이
- hooked-web3-provider 및 ethereumjs-tx 라이브러리
- 계층적인 결정적 지갑은 무엇인가?
- 키 유도 함수 소개
- LightWallet 소개
- HD 유도 경로
- 지갑 서비스 구축
- 사전 필요조건
- 프로젝트 구조
- 백엔드 구축
- 프론트엔드 구축
- 테스트
- 요약
- 6장. 스마트 컨트랙트 배포 플랫폼 구축
- 트랜잭션 논스 계산
- solcjs 소개
- solcjs 설치
- solcjs API
- 컨트랙트 배포 플랫폼 구축
- 프로젝트 구조
- 백엔드 구축
- 프론트엔드 구축
- 테스트
- 요약
- 7장. 베팅 애플리케이션 구축
- Oraclize 소개
- 어떻게 동작하는가?
- 데이터 원본
- 진위 증명
- 가격
- Oraclize API 시작하기
- 쿼리 암호화
- Oraclize 웹 통합 개발 환경
- 문자열 작업
- 베팅 컨트랙트 구축
- 베팅 컨트랙트 클라이언트 구축
- 프로젝트 구조
- 백엔드 구축
- 프론트엔드 구축
- 클라이언트 테스트
- 요약
- Oraclize 소개
- 8장. 엔터프라이즈 수준의 스마트 컨트랙트 구축
- ethereumjs-testrpc 탐색
- 설치 및 사용법
- 사용 가능한 RPC 메소드
- 이벤트 토픽은 무엇인가?
- trufflecontract 시작하기
- truffle-contract 설치 및 임포트
- 테스트 환경 설정
- tffltt API
- 트러플 소개
- 트러플 설치
- 트러플 초기화
- 컨트랙트 컴파일
- 설정 파일
- 컨트랙트 배포
- 단위 테스트 컨트랙트
- 패키지 관리
- 트러플 콘솔 사용
- 트러플 컨텍스트 내에서 외부 스크립트 실행
- 트러플 빌드 파이프라인
- 트러플 서버
- 요약
- ethereumjs-testrpc 탐색
- 9장. 컨소시엄 블록체인 구축
- 컨소시엄 블록체인은 무엇인가?
- 진위 증명 합의 프로토콜은 무엇인가?
- 패리티 소개
- Aura 동작 방식에 대한 이해
- 패리티 실행
- 프라이빗 네트워크 생성
- 권한 및 개인정보 보호
- 요약
도서 오류 신고
정오표
정오표
[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번째 행의 실행이 시작된다.