상세정보
엔지니어를 위한 블록체인 프로그래밍 - 이더리움 기반 신뢰성 높은 스마트 계약 개발하기
- 저자
- 다고모리 데루히로 지음, 심효섭 옮김
- 출판사
- 한빛미디어
- 출판일
- 2018-05-31
- 등록일
- 2018-11-30
- 파일포맷
- PDF
- 파일크기
- 4MB
- 공급사
- 알라딘
- 지원기기
-
PC
PHONE
TABLET
프로그램 수동설치
뷰어프로그램 설치 안내
책소개
이더리움 기반 스마트 계약 개발에 당장 써먹는 블록체인 애플리케이션 실무 지침서
이 책의 대상 독자는 블록체인을 활용하여 새로운 애플리케이션을 개발하려는 엔지니어다. 특히 안심하고 블록체인을 이용할 수 있는 보안 대책을 주로 다룬다.
1~2부에서는 블록체인 기술과 비트코인 네트워크의 전체 구조를 간단히 파악한다. 3~4부에서는 이더리움을 활용한 스마트 계약 개발에 필요한 준비와 솔리디티(Solidity)의 기본 문법, 스마트 계약의 거래 형태별 예제 코드를 살펴본다. 마지막으로 이더리움 네트워크 관련 개발에 필요한 보안상 주의사항과 취약점 공격 사례 연구 등을 설명한다.
블록체인 애플리케이션 개발 실무에 필요한 지식을 빠르게 익히고 싶은 개발자라면 이 책이 분명 큰 도움이 될 것이다.
블록체인의 구조와 신뢰성 높은 스마트 계약 개발, 이더리움 보안 대책까지 한 권에
이 책은 최근 주목받는 기술인 블록체인을 활용하여 새로운 애플리케이션을 처음 개발해보려는 엔지니어를 위한 책이다. 이더리움 네트워크를 기반으로 스마트 계약을 개발할 때 당장 써먹을 수 있는 기본 개념과 활용법부터 보안 대책까지 차근히 짚어주는 실무 지침서다.
이 책은 블록체인의 각 요소기술을 직접 체험해보며 이해할 수 있는 전반부와 본격적인 보안 실무를 다루는 후반부로 구성된다. 특히 후반부는 이더리움 네트워크 기반의 스마트 계약 개발에 필요한 보안상 주의사항이나 취약점 공격 사례 연구, 대책 등 보안 관련 주제를 상당한 분량을 할애해 다룬다. 이 후반부를 통해 블록체인의 가능성을 좇는 엔지니어가 시행착오를 조금이라도 더 줄일 수 있도록 구성했다.
이 책만으로 스마트 계약 개발 실무에 완전히 숙달할 수는 없겠지만, 엔지니어 여러분의 스마트 계약에 관한 이해 기반을 단단히 해줄 것이다. 당장 현장에서 관련 개발 업무를 수행해야 하는 개발자에게 추천한다.
★ 주요 내용
●블록체인 구조와 이론
●비트코인 네트워크의 이해
●이더리움과 스마트 계약 개발
●솔리디티 기본 문법
●거래 형태별 예제 코드
●보안 취약점 공격 사례
저자소개
앱 개발 엔지니어로 시작해 주로 웹앱 개발에 주력했다. 보안 엔지니어로 전직한 이후에는 웹앱, 모바일앱, 스마트 계약 등의 보안 진단 업무를 맡았다. 현재는 블록체인과 보안 관련 분야의앱 개발에 전념하고 있다.
목차
PART 1 블록체인과 관련 기술
CHAPTER 1 블록체인의 큰 그림
1.1 블록체인
__1.1.1 블록체인이란
__1.1.2 비트코인이란
1.2 비트코인 네트워크
1.3 이더리움
1.4 블록체인 네트워크의 구성 요소
__1.4.1 P2P
__1.4.2 참여자
__1.4.3 거래
__1.4.4 블록
__1.4.5 분산장부
__1.4.6 마이닝
CHAPTER 2 블록체인을 이해하는 암호기술
2.1 해시 함수
__2.1.1 SHA-256
__2.1.2 RIPEMD-160
__2.1.3 HASH160
2.2 공개키 암호
2.3 타원곡선 암호
__2.3.1 타원곡선
__2.3.2 덧셈
__2.3.3 곱셈
__2.3.4 비밀키와 공개키 생성 방법
2.4 디지털 서명
__2.4.1 디지털 서명과 검증 과정
PART 2 비트코인 네트워크
CHAPTER 3 화폐로 사용이 가능한 이유
3.1 소유자를 특정하는 열쇠와 자물쇠
3.2 송금 대상은 `어드레스`
__3.2.1 Base58Check 인코딩
__3.2.2 어드레스를 생성하는 과정
3.3 키를 관리하는 `전자 지갑`
3.4 전자 지갑의 종류
__3.4.1 PC에 존재하는 전자 지갑
__3.4.2 모바일 전자 지갑
__3.4.3 거래소 전자 지갑
__3.4.4 페이퍼 월릿
__3.4.5 하드웨어 월릿
CHAPTER 4 거래
4.1 거래의 생애주기
4.2 거래의 개요
__4.2.1 송금이 이루어지는 과정 사례
4.3 거래의 구조
__4.3.1 Locktime 필드
4.4 UTXO와 잔액
4.5 Locking Script와 Unlocking Script
__4.5.1 스크립트의 검증 과정
__4.5.2 거래 일부에 대한 서명
__4.5.3 Pay to Pubkey
__4.5.4 Pay to MultiSig
__4.5.5 Pay to Script Hash
__4.5.6 OP_RETURN
CHAPTER 5 블록과 블록체인
5.1 블록의 구조와 식별자
5.2 블록 안의 거래 검색하기
__5.2.1 머클 트리
CHAPTER 6 마이닝과 합의 알고리즘
6.1 비잔티움 장군 문제와 분산형 합의
6.2 작업증명
__6.2.1 문제 풀기 = 논스 찾기
__6.2.2 무작위 대입으로 논스 찾기
__6.2.3 검증하기
__6.2.4 변조가 불가능한 이유
6.3 누적되는 거래
6.4 코인베이스 거래
6.5 체인 분기
__6.5.1 거래가 동시에 발행된 경우
6.6 51% 공격
PART 3 이더리움과 스마트 계약 개발
CHAPTER 7 이더리움과 비트코인 네트워크의 주된 차이점
7.1 이더리움의 특징
__7.1.1 유통되는 통화
__7.1.2 스마트 계약
__7.1.3 계정
__7.1.4 블록의 데이터 구조
__7.1.5 상태 변화
__7.1.6 계정과 연결된 정보
__7.1.7 거래, 메시지, 콜
__7.1.8 가스
7.2 네트워크의 종류
__7.2.1 퍼블릭 네트워크
__7.2.2 프라이빗 네트워크
__7.2.3 테스트 네트워크
CHAPTER 8 스마트 계약 개발 준비 및 솔리디티의 기본 문법
8.1 개발환경 구축
__8.1.1 게스 설치하기
__8.1.2 Genesis 블록 생성과 게스 실행하기
__8.1.3 계정 만들기
__8.1.4 게스 콘솔에서 많이 사용되는 명령어
8.2 미스트 월릿
__8.2.1 설치 및 실행하기(윈도우)
__8.2.2 설치 및 실행하기(macOS)
__8.2.3 미스트 월릿 애플리케이션
8.3 Remix-Solidity IDE
8.4 솔리디티의 언어 사양
__8.4.1 접근제어자
CHAPTER 9 용도별로 본 스마트 계약 예제
9.1 예제 1 - HelloEthereum
__9.1.1 새로운 계약 배포
__9.1.2 소스 코드 작성하고 생성자 정의하기
__9.1.3 계약 생성하기
__9.1.4 Provide maximum fee와 비밀번호 설정하기
__9.1.5 CONTRACTS 화면에서 다른 화면으로 이동하기
__9.1.6 거래 발행하기
__9.1.7 계약 정보 확인하기
__9.1.8 거래 실행하기
__9.1.9 미스트 월릿을 사용하여 거래 변경 내용 확인하기
9.2 예제 2 - 크라우드펀딩을 위한 계약
__9.2.1 계약 생성하기
__9.2.2 모금이 성공한 경우
__9.2.3 모금이 실패한 경우
9.3 예제 3 - 이름과 어드레스를 관리하는 계약
__9.3.1 동작 여부 확인
9.4 예제 4 - IoT 스위치를 제어하는 계약
__9.4.1 계약을 이용하는 과정
__9.4.2 동작 확인하기
9.5 예제 5 - 전자상거래 사이트를 위한 계약
9.6 예제 6 - 경매 서비스를 위한 계약
9.7 예제 7 - 추첨을 위한 계약
PART 4 스마트 계약의 보안
CHAPTER 10 스마트 계약 개발의 보안 실무
10.1 Condition-Effects-Interaction 패턴
10.2 Withdraw 패턴
__10.2.1 push형 송금 패턴
__10.2.2 pull형 송금 패턴
10.3 Access Restriction 패턴
__10.3.1 사례
10.4 Mortal 패턴
10.5 Circuit Breaker 패턴
CHAPTER 11 스마트 계약의 취약점과 공격 원리
11.1 재진입성 문제
__11.1.1 공격 대상 계약
__11.1.2 공격 계약
__11.1.3 전체 흐름
__11.1.4 각 어드레스의 역할
__11.1.5 재진입성 문제 실습하기
__11.1.6 이벤트 확인하기
__11.1.7 수정 후의 결과
11.2 TOD
11.3 Timestamp Dependence
11.4 중요 정보 취급
11.5 오버플로
CHAPTER 12 사례에서 배우는 블록체인 보안
12.1 솔리디티의 취약점
12.2 클라이언트 애플리케이션의 취약점과 키 관리
__12.2.1 주의할 점