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 주의할 점