코어 이더리움 프로그래밍
도서명:코어 이더리움 프로그래밍
저자/출판사:박재현,오재훈,박혜영/제이펍
쪽수:352쪽
출판일:2018-04-19
ISBN:9791188621200
목차
1장 블록체인 컴퓨팅 1
1.1 비트코인 1
돌로 만든 스톤머니에서 암호화폐까지 1
새로운 암호화폐, 비트코인의 출현 3
알트코인 4
1.2 블록체인 기술의 탄생 6
블록체인 기술의 탄생 6
중앙집중 원장과 분산 공유 원장 8
1.3 블록체인 P2P 컴퓨팅 9
1.3.1 컴퓨팅 플랫폼의 발전 과정 9
1.3.2 블록체인 P2P 컴퓨팅 11
P2P 컴퓨팅 11
P2P 네트워크 연결 방식 11
1.4 블록체인 기반 플랫폼 분류 13
공개형 블록체인 13
프라이빗 블록체인 15
클라우드 블록체인 18
1.5 블록체인 운영 모델에 대한 이해 22
중앙집중식 플랫폼 비즈니스 모델 22
블록체인 기반 탈중앙형 플랫폼 비즈니스 23
독립형 생태계를 꿈꾸는 블록체인 24
2장 이더리움 플랫폼의 작동 원리 25
2.1 이더리움 플랫폼 살펴보기 25
2.1.1 이더리움 작동 과정 25
이더리움 지갑 설치와 사용 26
모든 거래 기록의 공유 및 블록체인 구성 27
다양한 응용 앱 개발 28
2.1.2 미스트로 이더리움 이해하기 29
미스트 설치 29
이더리움 월릿으로 돈 주고받기 33
이더리움 월릿으로 스마트 컨트랙트 배포하기 37
2.2 이더리움 단일 상태 모델 42
2.2.1 이더리움 상태 전이 모델 42
현실 세계에서의 거래 42
이더리움에서의 거래, 상태 전이 43
참고: 비트코인 상태 정보 모델 44
2.2.2 이더리움 플랫폼 참조 모델 45
2.3 이더리움 플랫폼 구성 49
2.3.1 데이터 계층 49
어카운트 49
어카운트 생성 51
어카운트 상태 54
트랜잭션과 리시트 55
core 패키지: 트랜잭션 생성 및 전자 서명 56
블록체인 59
2.3.2 합의 계층 89
합의 알고리즘 89
이더리움 합의 엔진 94
2.3.3 실행 계층 107
스마트 컨트랙트 107
이더리움 가상 머신 111
2.3.4 공통 계층 114
이더리움 P2P 네트워크 115
이더리움 데이터 저장 124
RLP 인코딩 127
2.3.5 응용 계층 129
DApp 130
P2P 메시징 시스템, 휘스퍼 132
P2P 파일 시스템, 스웜 136
3장 이더리움 실습 141
3.1 이더리움 시작 141
3.1.1 Geth 설치 141
이더리움 프로그래밍 환경 셋업 141
Geth에서 사용하는 데이터 디렉터리 구조 144
3.1.2 Geth 구동 145
3.1.3 Geth 커맨드라인 실습 146
3.2 이더리움 네트워크 접속 151
3.2.1 메인 네트워크 접속 151
3.2.2 테스트 네트워크 접속 152
3.2.3 프라이빗 네트워크 접속 152
솔로 네트워크 접속하기 152
프라이빗 네트워크 구축하기 152
3.2.4 프라이빗 네트워크에 멀티 노드 구성 실습 156
4장 스마트 컨트랙트 프로그래밍 161
4.1 스마트 컨트랙트에 대한 이해 161
4.1.1 이더리움 가상 머신 162
EVM의 구조 162
튜링-컴플리트 머신 164
스택 기반 가상 머신 165
4.1.2 솔리디티 개발 언어 166
4.1.3 컨트랙트 개발 환경 구축 166
맥 운영체제 167
미스트 실행 방법 168
윈도우 운영체제 169
4.2 Greeter 스마트 컨트랙트 171
4.2.1 첫 번째 스마트 컨트랙트 개발 171
컨트랙트 함수의 가시성 173
4.2.2 두 번째 스마트 컨트랙트 개발 177
상태 변수의 가시성 178
스마트 컨트랙트 함수의 상태 변경성 178
4.2.3 세 번째 스마트 컨트랙트 개발 180
4.2.4 네 번째 스마트컨트랙트 개발: 기본 자료구조 181
이넘 타입 182
매핑 사용 184
4.2.5 다섯 번째 스마트 컨트랙트 개발 186
스트럭트 타입 사용 187
4.2.6 컴파일 오류로 솔리디티 소스 파일의 구조 학습하기 189
버전 프래그마 190
컨트랙트 함수 192
4.3 솔리디티 타입 194
4.3.1 값 타입 194
불리언 타입 194
정수 타입 194
고정 소수점 수 195
어드레스 195
고정 크기 배열 196
4.3.2 레퍼런스 타입 197
컴플렉스 타입 197
변수의 데이터 로케이션 197
데이터 위치에 따른 할당 연산 198
바이트 배열 200
문자열 201
배열 202
동적 메모리 배열 203
4.3 토큰 컨트랙트 만들기 204
4.3.1 최소 요건을 갖춘 토큰 205
4.3.2 Wallet 호환 Token 만들기 215
4.3.3 안전한 토큰 만들기 222
GeneralWalletCompatibleToken 토큰 생성 222
트랜잭션과 오류 처리 226
4.3.4 ERC20 표준 토큰 229
4.4 크라우드 펀드 컨트랙트 231
4.4.1 보상 토큰 생성하기 232
4.4.2 CrowdFund 컨트랙트 생성 233
추상 컨트랙트 235
인터페이스 235
라이브러리 236
상수와 특수 변수 236
폴백 함수 237
함수 모디파이어 238
4.4.3 CrowdFund 청약하기 240
4.5 DAO 해킹 재현 242
4.6 솔리디티 언어 기본 250
4.6.1 함수 매개변수 250
네임드 매개변수 250
출력 매개변수 250
4.6.2 변수 선언과 스코프 251
4.6.3 제어 252
4.6.4 함수 호출 253
함수의 가시성 253
외부 함수 호출 시 이더 전송 255
4.6.5 상속 255
4.6.6 라이브러리 259
using A for B 260
라이브러리 배포 261
ABI 생성 방법 264
4.6.7 Import 265
임포트 265
파일의 경로 267
4.6.8 컨트랙트 제거하기 267
4.7 리믹스 IDE 267
4.7.1 파일 탐색기 269
4.7.2 편집기 269
4.7.3 터미널 270
4.7.4 실행 패널 270
새로운 컨트랙트 생성하기 271
기존 컨트랙트 불러오기 272
4.7.5 디버그하기 273
디버그 시작하기 274
중단점 사용하기 276
5장 이더리움 응용 277
5.1 이더리움 활용 방법 277
5.1.1 Json RPC 활용 278
RPC를 위한 Geth 클라이언트 구동 278
Json RPC API를 이용한 예제 279
5.1.2 Web3.js 활용 281
Web3.js를 이용한 예제 282
5.2 DApp으로 크라우드 펀드 개발하기 283
5.2.1 크라우드 펀드 시나리오 및 설계 283
5.2.2 개발 환경 설정 285
5.2.3 크라우드 펀드 DApp 구현 286
크라우드 펀드 웹 서비스 폴더 구조 286
노드 접속하기 287
스마트 컨트랙트 연동 288
Get 함수 구현 292
Set 함수 구현 293
Event Watch 295
Event Filter 296
POST /users/join 라우팅 구현 296
6장 이더리움의 현재와 미래 299
6.1 이더리움의****점과 해결을 위한 노력 299
6.1.1 이더리움의 문제점 299
처리 성능과 용량 299
작업 증명 방식의 합의 엔진 300
블록체인 데이터 크기 증가 302
스마트 컨트랙트와 EVM 302
ICO 버블 302
6.1.2 문제 해결을 위한 노력 303
이더리움 영지식 증명, ZK-Snark 303
이더리움 지분 증명 방식, 캐스퍼 306
샤딩 308
상태 채널과 라이덴 네트워크 311
6.2 이더리움의 현재와 미래 313
6.2.1 이더리움 도입 시 검토 사항 313
6.2.2 이더리움 ICO 315
암호화폐 선판매란? 315
ICO에 성공한 회사와 프로젝트들 316
ICO의 성공 여부, 어떻게 검증할 것인가? 316
건강한 ICO의 필요성 318
6.2.3 이더리움의 미래 319
찾아보기 324