스마트 컨트랙트에서 투표 디앱까지 실습하며 배우는 이더리움 디앱
설계, 테스트, 배포, 보안까지 예제로 익히는 디앱의 모든 것
이 책은 이더리움 플랫폼에서 디앱을 개발하는 과정을 다룹니다. 탈중앙화 앱의 개념부터 블록체인, 이더리움, 스마트 컨트랙트를 소개하며 디앱 작동 방식을 설명합니다. 솔리디티 핵심 문법을 살펴보고 예제 디앱을 구축하면서 스마트 컨트랙트 설계, 구현, 테스트, 배포 방법을 알려줍니다. 실제 이더리움 네트워크를 다루면서 ENS, IPFS, 스웜과 같은 탈중앙화 생태계를 살펴보고 모카, 트러플 프레임워크를 사용하여 효과적으로 디앱을 개발하는 방법도 배웁니다. 실용적인 예제로 실습하며 이더리움 디앱 개발을 처음부터 끝까지 경험해보세요.
출판사 리뷰
이더리움 디앱 개발의 깊이와 폭을 모두 갖춘 책!
블록체인을 처음 접한 독자는 프로그래밍 언어나 개발 프레임워크를 배우는 것보다 디앱 개발이 낯설 수 있습니다. 이전과는 완전히 다른 새로운 기술이기 때문입니다. 이 책은 여러분이 새로운 패러다임으로 쉽게 전환할 수 있도록 도와줍니다. 신기술을 배우는 마법 같은 지름길은 없지만, 단계별로 실습하며 디앱을 개발하는 데 필요한 모든 개념과 도구, 프로그래밍 언어, 프레임워크를 그림과 코드로 알려줍니다. 예제 애플리케이션을 차근차근 개발하다 보면 이더리움 디앱 개발의 원리를 자연스레 익힐 수 있습니다.
주요 내용
파트별 요약
_1부에서는 탈중앙화 앱을 소개하고 블록체인과 스마트 컨트랙트, Go 이더리움, 이더리움 지갑 등 이더리움 플랫폼을 다룹니다. 간단한 디앱을 구현하고 퍼블릭 테스트넷에 배포합니다.
_2부에서는 스마트 컨트랙트에 중점을 둡니다. 솔리디티 언어를 소개하고 앱을 만들어보며 컨트랙트 구조와 주요 요소를 알아봅니다. 코드를 유지보수하기 쉽게 도와주는 라이브러리와 가나슈(Ganache) 같은 모의 네트워크 클라이언트를 사용하는 방법도 설명합니다.
_3부는 이 책의 핵심으로 실제 이더리움 네트워크를 배웁니다. 이더리움 네임 서비스, IPFS, 스웜과 같은 탈중앙화 스토리지 네트워크를 배우고 모카(Mocha) 프레임워크로 스마트 컨트랙트를 테스트하는 방법을 알아봅니다. 트러플(Truffle) 프레임워크로 개발 절차를 개선하면서 이 과정을 종합한 엔드 투 엔드 투표 디앱을 만들어봅니다.
_4부는 이벤트 로깅과 컨트랙트 업그레이드 기능 등 운영할 때 고려할 점을 소개합니다. 더불어 자주 발견되는 취약점과 일반적인 스마트 컨트랙트 공격 등 보안에 대해서도 알아봅니다.
추천사
'”블록체인의 상호운용성을 잘 이해하는 저자가 여러분을 전문가로 무장시켜줄 것입니다.”
_토머스 베르타니, 오라클라이즈 CEO
“블록체인 개발을 배우기에 훌륭하고 뛰어난 책! “
_제임스 니카, 보캔터
“놀라운 책입니다! 어려운 개념을 직관적이고 단순하며 재미있게 설명합니다.”
_타냐 페센코, 모션
“블록체인 입문자를 위한 흥미진진한 안내서입니다. 이 책으로 시작하면 디앱 개발이 어렵지 않을 것입니다.”
_라훌 라이, 텔스트라
[Part 1 탈중앙화 앱과 관련 기술]
CHAPTER 1 처음 만나는 탈중앙화 앱
1.1 디앱이란 무엇인가
1.2 디앱 적용 사례
1.3 5분 만에 디앱 구현하기
1.4 요약
CHAPTER 2 블록체인 이해하기
2.1 디앱 자세히 살펴보기
2.2 디앱에 사용되는 기술
2.3 이더리움 역사와 거버넌스
2.4 요약
CHAPTER 3 이더리움 플랫폼
3.1 이더리움 지갑으로 이더리움 플랫폼에 접속하기
3.2 디앱의 핵심 기능: 스마트 컨트랙트
3.3 geth로 이더리움 네트워크에 접속
3.4 geth 계정 관리
3.5 심플코인 컨트랙트 다시 보기
3.6 요약
CHAPTER 4 스마트 컨트랙트 배포하기
4.1 네트워크에 컨트랙트 배포하기
4.2 컨트랙트 활용하기
4.3 메타마스크를 통해 노드 없이 배포하기
4.4 요약
[Part 2 스마트 컨트랙트]
CHAPTER 5 솔리디티로 스마트 컨트랙트 프로그래밍하기
5.1 EVM 컨트랙트 언어
5.2 고급 컨트랙트 구조
5.3 솔리디티의 주요 요소
5.4 SimpleCoin 개선하고 리팩터링하기
5.5 요약
CHAPTER 6 복잡한 스마트 컨트랙트 작성하기
6.1 크라우드세일 컨트랙트 SimpleCrowdsale 소개
6.2 상속으로 기능 확장하기
6.3 요약
CHAPTER 7 추상 컨트랙트와 인터페이스
7.1 추상 컨트랙트 만들기
7.2 인터페이스로 다중 컨트랙트 구현하기
7.3 실제 크라우드세일 컨트랙트
7.4 솔리디티 객체 지향 기능 요약
7.5 라이브러리
7.6 ERC20을 지원하는 SimpleCoin 만들기
7.7 요약
CHAPTER 8 Web3.js로 스마트 컨트랙트 활용하기
8.1 geth 대화형 콘솔을 통한 배포 복습
8.2 geth 콘솔로 SimpleCoin 활용하기
8.3 Node.js로 명령어 기반 배포 단순화
8.4 프라이빗 네트워크에 배포하기
8.5 모의 네트워크에 배포하여 개발 효율성 향상
8.6 웹 UI로 원활하게 SimpleCoin 활용하기
8.7 요약
[Part 3 다양한 이더리움 생태계]
CHAPTER 9 이더리움 생태계
9.1 핵심 구성 요소
9.2 전체 생태계의 조감도
9.3 탈중앙화 주소 체계 ENS
9.4 탈중앙화 콘텐츠 스토리지
9.5 오라클로 외부 데이터 접근하기
9.6 디앱 프레임워크와 IDE
9.7 요약
CHAPTER 10 모카로 컨트랙트 단위 테스트하기
10.1 모카 설치
10.2 모카에 SimpleCoin 설정
10.3 SimpleCoin 유닛 테스트 작성
10.4 요약
CHAPTER 11 트러플로 개발주기 단축하기
11.1 트러플 설치하기
11.2 트러플 환경으로 SimpleCoin 옮기기
11.3 요약
CHAPTER 12 투표 디앱 개발하기: 총정리
12.1 투표 디앱 요구 사항 정의
12.2 개발 계획
12.3 트러플 프로젝트 시작하기
12.4 투표 컨트랙트 구현
12.5 SimpleVoting 컴파일 및 배포
12.6 단위 테스트 작성하기
12.7 웹 UI 생성하기
12.8 생각할 거리
12.9 요약
[Part 4 디앱 배포]
CHAPTER 13 디앱 운영 준비하기
13.1 이벤트 로깅
13.2 업그레이드 가능한 라이브러리 디자인
13.3 업그레이드 가능한 컨트랙트 설계
13.4 요약
CHAPTER 14 보안 고려 사항
14.1 일반적인 보안 취약점 이해
14.2 외부 호출과 관련된 위험
14.3 외부 호출을 더욱 안전하게 수행하는 방법
14.4 알려진 보안 공격 회피하기
14.5 일반 보안 지침
14.6 요약
CHAPTER 15 결론
15.1 이더리움 진화
15.2 이더리움 대체 플랫폼
15.3 이더리움 블록체인을 넘어서
15.4 요약
부록
A Ownable를 상속받아 리팩터링한 SimpleCoin
B 전체 SimpleCrowdsale 애플리케이션
C SimpleCoin 모카 단위 테스트 스위트
D Ownable를 상속받는 SimpleCoin