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