이더리움 쿡북 [실전 예제와 함께 배우는 이더리움 기반 토큰, 게임, 스마트 계약, 댑 구현 방법]
- 원서명Ethereum Cookbook: Over 100 recipes covering Ethereum-based tokens, games, wallets, smart contracts, protocols, and Dapps (ISBN : 9781789133998)
- 지은이마노지 P R(Manoj P R)
- 옮긴이남기혁, 최현영
- ISBN : 9791161752846
- 35,000원
- 2019년 03월 28일 펴냄
- 페이퍼백 | 488쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 프로그래밍 언어
책 소개
요약
이더리움 개발 환경 설정 방법, 스마트 컨트랙트 작성 방법, 토큰 생성 방법을 비롯한 기본 개념을 소개하고, 보안 취약점, 이더리움 관련 프로토콜도 소개하는 책이다. 이를 바탕으로 애플리케이션의 확장성과 보안을 높이기 위한 설계 고려 사항과 구현 기법을 소개한다. 트러플(Truffle), 웹3(Web3), 가나슈(Ganache)와 같은 이더리움 관련 패키지를 사용하는 방법도 소개한다.
이 책에서 다루는 내용
█ 이더리움에서 스마트 컨트랙트를 효율적으로 작성하는 방법
■ 확장성 있는 분산 애플리케이션을 개발, 배치하는 방법
■ 애플리케이션 개발, 배치, 테스트와 관련된 여러 가지 도구와 프레임워크 사용법
■ Etherscan을 비롯한 블록 탐색기로 트랜잭션을 검색하는 방법
■ 토큰, ICO, 게임 제작 방법
■ 스마트 컨트랙트에서 발생할 수 있는 보안 허점과 대응 방법
이 책의 대상 독자
이더리움 블록체인 네트워크를 구축하고, 스마트 컨트랙트를 개발해서 배치하고, 탈중앙화 애플리케이션, 댑(DApp)을 만들거나 P2P 트랜잭션을 수행하는 방법을 알고 싶은 이들을 대상으로 하는 책이다. 이 책을 제대로 이해하기 위해서는 블록체인의 기본 개념과 자바스크립트 및 노드JS의 기초 지식이 도움이 된다.
이 책의 구성
1장, ‘이더리움 시작하기’에서는 이더리움의 기초와 관련 도구를 소개한다. 이더리움 설치하고 설정하는 방법과 네트워크에 연결해서 실행하는 방법을 알아볼 수 있는 예제를 실습해본다.
2장, ‘스마트 컨트랙트 작성하기’에서는 스마트 컨트랙트를 작성하는 요령을 소개하는 다양한 예제를 제공한다. 또한 작성한 컨트랙트를 컴파일, 배치, 테스트하는 방법도 소개한다.
3장, ‘스마트 컨트랙트 다루기’에서는 블록체인과 스마트 컨트랙트와 상호작용하는 탈중앙화 애플리케이션(댑) 개발에 관련된 핵심 주제를 소개한다.
4장, ‘트러플’에서는 이더리움 생태계에서 인기 있는 도구인 트러플 프레임워크를 소개한다. 워크플로우와 댑의 품질을 향상시키기 위한 몇 가지 활용 사례도 소개한다.
5장, ‘토큰과 ICO’에서는 이더리움 기반 토큰을 직접 만들고 ICO를 통해 배포하는 데 필요한 핵심 사항을 소개한다.
6장, ‘게임과 DAO’에서는 탈중앙화 게임이나 조직(DAO)을 구축하는 방법을 소개하고 직접 따라해볼 수 있는 예제를 제공한다.
7장, ‘솔리디티의 고급 기능’에서는 블록체인에서 좀 더 복잡한 작업을 효율적으로 처리하는 데 도움이 되는 솔리디티의 고급 기능을 소개한다.
8장, ‘스마트 컨트랙트 보안’에서는 널리 알려진 보안 취약점에 대응하는 기법을 소개한다. 또한 코드를 분석하는 데 활용할 수 있는 다양한 도구도 알아본다.
9장, ‘설계 고려 사항’에서는 풍부한 기능을 갖춘 댑을 개발하는 과정에서 흔히 고민하는 주제를 여러 가지 예제와 함께 살펴본다.
10장, ‘다양한 프로토콜과 애플리케이션’에서는 댑 개발에 도움될 만한 이더리움 관련 프로토콜과 애플리케이션을 소개한다.
11장, ‘스마트 컨트랙트 개발 관련 기법’에서는 더 높은 수준의 댑을 개발하는 데 필요한 여러 가지 주제를 소개한다.
목차
목차
- 1장. 이더리움 시작하기
- 들어가며
- 이더리움 클라이언트 고르기
- 노드 설정하고 네트워크에 참여하기
- 자바스크립트 콘솔에서 작업하기
- 인퓨라로 시간과 비용 절약하기
- 사설 이더리움 네트워크 직접 만들기
- 개발용 블록체인 네트워크 생성하기
- 애저 이더리움 서비스 사용하기
- 메타마스크를 비롯한 다양한 지갑 사용하기
- 블록 탐색기 사용하기
- 계정에 대해 완벽히 이해하기
- 솔리디티 컴파일러 설치하기
- 2장. 스마트 계약 작성법
- 들어가며
- IDE 잘 고르는 방법
- 스마트 계약 직접 작성해보기
- 리믹스로 계약 테스트하기
- 솔리디티의 정적 및 동적 타입
- 생성자와 폴백 함수
- 구조체와 열거형 사용법
- 솔리디티에서 제공하는 제어 구문
- 솔리디티에서 함수 작성하는 방법
- 배열과 매핑
- 함수 제한자 사용법
- 접근 제한자를 효율적으로 활용하는 방법
- 핵심 이벤트 - EVM 로거
- 스토리지와 메모리의 효율적인 사용법
- solc 컴파일러로 계약 컴파일하기
- geth로 계약 배치하기
- 3장. 계약 다루기
- 들어가며
- web3.js 설치하고 설정하기
- 메타마스크를 인젝티드 프로바이더로 사용하기
- 계정을 관리하고 트랜잭션을 보내는 방법
- 작성한 스마트 계약을 컴파일해서 배치하기
- 스마트 계약에서 데이터 읽기
- 스마트 계약에 데이터 쓰기
- DApp에서 발생하는 이벤트 감시하기
- 로 트랜잭션 보내기
- web3.js로 배치 요청하기
- JSON-RPC로 이더리움 다루기
- 계약을 다루는 다른 방법
- 4장. 트러플 스위트
- 들어가며
- 트러플 프레임워크 설치 및 설정하기
- 트러플 박스 활용하기
- 스마트 계약 컴파일하기
- 트러플 고급 설정 방법
- 트러플에서 마이그레이션과 배치하기
- 계약 다루기
- 트러플로 스마트 컨트랙트 디버깅하기
- 스마트 계약에 대한 테스트 작성하기
- 트러플로 DApp과 API 작성하기
- 트러플에서 패키지 관리하기
- 드리즐 소개
- 트러플에서 HD 지갑 사용하기
- 5장. 토큰과 ICO
- 들어가며
- 이더리움에서 기본 ERC20 토큰 생성하기
- 계정끼리 토큰 주고받기
- 다른 계정에 위임해서 토큰 사용하기
- 발행 가능한 토큰 생성하기
- 폐기 가능한 토큰 생성하기
- ERC223 토큰 생성하기
- 직접 ICO 추진하기
- ICO 계약에 기능 추가하기
- 투자자에게 보너스 토큰 제공하기
- 크라우드세일 사용자에 대한 화이트리스트 작성하기
- 크라우드세일에 암호화페 지불 허용하기
- ERC20 토큰을 모두 지원하는 지갑 생성하기
- 6장. 게임과 DAO
- 들어가며
- 대체 불가능 토큰 생성 방법
- 자산 추적 및 이전
- 이더리움에서 간단한 게임 만들기
- 이더리움에서 탈중앙화 복권 만들기
- 티켓 번호로 당첨자 선정하기
- 투자자에게 배당금 나누기
- 더 많은 사용자를 끌어들이기 위한 제휴 프로그램 운영하기
- 7장. 솔리디티의 고급 기능
- 들어가며
- 솔리디티에서 에러 잘 처리하는 방법
- 추상 계약과 인터페이스 계약
- 다른 계약에서 계약 관리하기
- 솔리디티의 계약 상속 기능
- 솔리디티에서 라이브러리 만드는 방법
- 솔리디티에서 제공하는 수학 및 암호화 함수
- 업그레이드 가능한 스마트 계약 작성법
- 솔리디티에서 API로 데이터 가져오기
- 솔리디티에서 함수를 타입으로 사용하는 방법
- 솔리디티 어셈블리
- 솔리디티에서 멀티시그 지갑 구현하기
- 8장. 스마트 계약 보안
- 들어가며
- 정수 오버플로우와 언더플로우
- 재진입 공격
- 패리티 해킹
- 계약에 강제로 이더 전달하기
- 사설 변수 사용하기
- TOD
- 모르는 대상 호출하기
- 루프를 이용한 DoS
- 솔리디티용 보안 분석 도구
- 솔리디티에서 초기화하지 않은 스토리지 포인터
- 솔리디티 코드의 올바른 작성 방법
- 9장. 설계 고려사항
- 들어가며
- 댑을 위한 서버리스 아키텍처
- 애플리케이션에 특화된 지갑 구현하기
- 배치 후 발견된 버그에 대처하는 방법
- 솔리디티로 무작위수 생성하기
- 계약을 간결하고, 모듈화된 형태로, 최신 상태로 유지하기
- 이더리움에 사용자 인증 구현하기
- 10장. 다양한 프로토콜과 애플리케이션
- 들어가며
- 이더리움 네임 서비스에 등록하기
- 댑용 통신 프로토콜, 위스퍼
- 분산 스토리지 플랫폼, 스웜
- BTCRelay로 비트코인 트랜잭션 모니터링하기
- 알람 클록으로 이더리움 트랜잭션 스케줄링하기
- 오픈제플린 라이브러리 사용하기
- 11장. 스마트 계약 작성 관련 기법
- 들어가며
- 바이퍼로 스마트 계약 작성하기
- 리믹스로 스마트 계약 디버깅하기
- 리믹스로 계약 배치하기
- 솔리디티 코드에 대한 문서 생성하기
- 린터를 이용해 코드 향상시키기
- 다른 이와 솔리디티 코드 공유하기