밑바닥부터 시작하는 비트코인

Book description

비트코인은 블록체인 기술의 집약체입니다. 이더리움, 이오스 같은 2, 3세대 블록체인은 비트코인을 바탕으로 확장, 발전한 개념입니다. 디앱 개발에서 머무르지 않고 블록체인 개발자로 성장하기 위해서는 ‘비트코인 코어’를 가장 먼저 배워야 합니다. 무한한 상상력을 블록체인 기술로 실현하려면 비트코인 코어의 구성 요소와 작동 원리를 이해하고 구현할 수 있어야 합니다.

이 책은 비트코인 코어의 구성요소를 파이썬으로 직접 구현하면서 비트코인 핵심을 깊이 이해할 수 있습니다. 유한체 기본부터 암호화폐를 이루는 수학과 암호학, 블록, 트랜잭션을 파헤치고 블록체인 결제 시스템까지 확장합니다. 이 책을 마치면 비트코인 코어에 필요한 핵심 요소를 직접 코딩하면서 암호화폐라는 무대 뒤에서 무엇이 어떻게 돌아가는지 알게 됩니다. 트랜잭션을 생성하고 P2P 네트워크에서 데이터를 가져와 네트워크 프로토콜에 따라 트랜잭션을 전파시킬 수 있습니다. 블록체인으로 응용프로그램이나 서비스를 개발하거나 이 분야에 처음 뛰어든 사람은 반드시 읽어야 하는 책입니다

Table of contents

  1. 밑바닥부터 시작하는 비트코인
    1. 지은이·옮긴이 소개
    2. 추천사
    3. 감수자의 말
    4. 머리말
    5. 들어가며 (1/2)
    6. 들어가며 (2/2)
    7. 감사의 말
    8. CONTENTS (1/2)
    9. CONTENTS (2/2)
  2. CHAPTER 1 유한체
    1. 1.1 현대대수 학습
    2. 1.2 유한체 정의
    3. 1.3 유한집합 정의하기
      1. 1.3.1 파이썬으로 유한체 코딩하기
    4. 1.4 나머지연산
      1. 1.4.1 파이썬으로 나머지연산 코딩하기
    5. 1.5 유한체 덧셈과 뺄셈
      1. 1.5.1 파이썬으로 유한체 덧셈과 뺄셈 코딩하기
    6. 1.6 유한체 곱셈과 거듭제곱
      1. 1.6.1 파이썬으로 곱셈 코딩하기
      2. 1.6.2 파이썬으로 거듭제곱 코딩하기
    7. 1.7 유한체 나눗셈
    8. 1.8 거듭제곱 메서드 수정
    9. 1.9 마치며
  3. CHAPTER 2 타원곡선
    1. 2.1 정의
    2. 2.2 파이썬으로 타원곡선 코딩하기
    3. 2.3 두 점의 덧셈
    4. 2.4 점 덧셈 성질
    5. 2.5 점 덧셈 코딩하기
    6. 2.6 x1≠x2인 경우의 점 덧셈
    7. 2.7 x1≠x2인 경우의 점 덧셈 코딩하기
    8. 2.8 P1 = P2인 경우의 점 덧셈
    9. 2.9 P1 = P2인 경우의 점 덧셈 코딩하기
    10. 2.10 마지막 예외 처리 코딩하기
    11. 2.11 마치며
  4. CHAPTER 3 타원곡선 암호
    1. 3.1 실수체에서 정의된 타원곡선
    2. 3.2 유한체에서 정의된 타원곡선
    3. 3.3 유한체에서 정의된 타원곡선 코딩하기
    4. 3.4 유한체에서 정의된 타원곡선 위 두 점의 덧셈
    5. 3.5 유한체에서 정의된 점 덧셈 코딩하기
    6. 3.6 타원곡선 위 점의 스칼라 곱셈
    7. 3.7 스칼라 곱셈 특징
    8. 3.8 스칼라 곱셈으로 생성된 군의 성질
      1. 3.8.1 항등원의 존재
      2. 3.8.2 닫혀 있음
      3. 3.8.3 역원의 존재
      4. 3.8.4 교환법칙
      5. 3.8.5 결합법칙
    9. 3.9 스칼라 곱셈 코딩하기
    10. 3.10 비트코인에서 사용하는 타원곡선
      1. 3.10.1 곡선 secp256k1을 위한 클래스 정의
    11. 3.11 공개키 암호
    12. 3.12 서명 생성과 서명 검증
      1. 3.12.1 디지털 서명 알고리즘
      2. 3.12.2 서명 검증
      3. 3.12.3 서명 검증 실습
      4. 3.12.4 서명 검증 코딩하기
      5. 3.12.5 서명 생성 절차
      6. 3.12.6 서명 생성 실습
      7. 3.12.7 서명 생성 코딩하기
    13. 3.13 마치며
  5. CHAPTER 4 직렬화
    1. 4.1 비압축 SEC 형식
    2. 4.2 압축 SEC 형식
    3. 4.3 DER 서명 형식
    4. 4.4 비트코인 주소 및 WIF 형식
      1. 4.4.1 Base58 부호화
      2. 4.4.2 비트코인 주소 형식
      3. 4.4.3 비밀키의 WIF 형식
    5. 4.5 비트코인에서 빅엔디언/리틀엔디언 변환
    6. 4.6 마치며
  6. CHAPTER 5 트랜잭션
    1. 5.1 트랜잭션 구성요소
    2. 5.2 버전
    3. 5.3 입력 (1/2)
    4. 5.3 입력 (2/2)
      1. 5.3.1 스크립트 파싱
    5. 5.4 출력
    6. 5.5 록타임
    7. 5.6 트랜잭션 직렬화 코딩하기
    8. 5.7 트랜잭션 수수료
      1. 5.7.1 수수료 계산
    9. 5.8 마치며
  7. CHAPTER 6 스크립트
    1. 6.1 스크립트 기법
    2. 6.2 스크립트 실행
    3. 6.3 주요 연산자
      1. 6.3.1 연산자의 구현
    4. 6.4 스크립트 파싱
      1. 6.4.1 파싱 및 직렬화 함수 코딩하기
    5. 6.5 잠금/해제 스크립트의 결합
      1. 6.5.1 결합 스크립트 코딩하기
    6. 6.6 표준 스크립트
    7. 6.7 p2pk 스크립트
      1. 6.7.1 스크립트 실행 메서드 코딩하기
      2. 6.7.2 스택 원소의 저장 형식
    8. 6.8 p2pk 스크립트의 문제점
    9. 6.9 p2pk 스크립트의 문제 해결
      1. 6.9.1 p2pkh 스크립트
    10. 6.10 비표준 스크립트
      1. 6.10.1 연산자의 유용성
      2. 6.10.2 해시충돌 발견 상금 이벤트
    11. 6.11 마치며
  8. CHAPTER 7 트랜잭션 검증과 생성
    1. 7.1 트랜잭션 검증
      1. 7.1.1 입력 비트코인 존재 확인
      2. 7.1.2 입력과 출력 비트코인 합계 확인
      3. 7.1.3 서명 확인
      4. 7.1.4 전체 트랜잭션 검증
    2. 7.2 트랜잭션 생성
      1. 7.2.1 트랜잭션 설계
      2. 7.2.2 트랜잭션 구성
      3. 7.2.3 트랜잭션 해제 스크립트 생성
    3. 7.3 테스트넷 트랜잭션 생성 및 전파
    4. 7.4 마치며
  9. CHAPTER 8 p2sh 스크립트
    1. 8.1 다중서명
    2. 8.2 OP_CHECKMULTISIG 함수
    3. 8.3 다중서명의 문제점
    4. 8.4 p2sh 스크립트 (1/2)
    5. 8.4 p2sh 스크립트 (2/2)
    6. 8.5 p2sh 스크립트 코딩하기
      1. 8.5.1 다중서명 이외의 p2sh
      2. 8.5.2 p2sh 주소
      3. 8.5.3 p2sh 서명 검증
    7. 8.6 마치며
  10. CHAPTER 9 블록
    1. 9.1 코인베이스 트랜잭션
      1. 9.1.1 해제 스크립트
      2. 9.1.2 BIP0034 제안서
    2. 9.2 블록 헤더
      1. 9.2.1 블록 버전
      2. 9.2.2 이전 블록 해시값
      3. 9.2.3 머클루트
      4. 9.2.4 타임스탬프
      5. 9.2.5 비트값
      6. 9.2.6 논스값
    3. 9.3 작업증명
      1. 9.3.1 채굴자의 해시값 생성 방법
      2. 9.3.2 목푯값
      3. 9.3.3 난이도
      4. 9.3.4 작업증명 유효성 확인
      5. 9.3.5 난이도 조정
    4. 9.4 마치며
  11. CHAPTER 10 네트워킹
    1. 10.1 네트워크 메시지
    2. 10.2 페이로드 파싱
    3. 10.3 네트워크 핸드셰이크
    4. 10.4 네트워크 접속
    5. 10.5 블록 헤더 요청
    6. 10.6 블록 헤더 응답
    7. 10.7 마치며
  12. CHAPTER 11 단순 지급 검증
    1. 11.1 단순 지급 검증의 필요성
    2. 11.2 머클트리
    3. 11.3 머클부모
    4. 11.4 머클부모 레벨
    5. 11.5 머클루트
    6. 11.6 블록에서 머클루트 계산하기
    7. 11.7 머클트리 활용하기
    8. 11.8 머클블록
      1. 11.8.1 머클트리 구조
      2. 11.8.2 머클트리 코딩하기 (1/2)
      3. 11.8.2 머클트리 코딩하기 (2/2)
      4. 11.8.3 머클블록 커맨드
      5. 11.8.4 플래그 비트와 해시값 사용
    9. 11.9 마치며
  13. CHAPTER 12 블룸 필터
    1. 12.1 블룸 필터의 정의
      1. 12.1.1 다중 해시함수 사용
    2. 12.2 BIP0037 블룸 필터
    3. 12.3 블룸 필터 설정
    4. 12.4 머클블록의 입수
    5. 12.5 관심 트랜잭션 입수
    6. 12.6 마치며
  14. CHAPTER 13 세그윗
    1. 13.1 p2wpkh 스크립트
      1. 13.1.1 트랜잭션 가변성
      2. 13.1.2 가변성 문제 해결
    2. 13.2 p2wpkh 트랜잭션
    3. 13.3 p2sh-p2wpkh 스크립트
    4. 13.4 p2wpkh와 p2sh-p2wpkh 코딩하기
    5. 13.5 p2wsh 스크립트
    6. 13.6 p2sh-p2wsh 스크립트 (1/2)
    7. 13.6 p2sh-p2wsh 스크립트 (2/2)
    8. 13.7 p2wsh와 p2sh-p2wsh 코딩하기
    9. 13.8 기타 개선 사항
    10. 13.9 마치며
  15. CHAPTER 14 고급 주제 및 다음 단계
    1. 14.1 주제 제안
      1. 14.1.1 비트코인 지갑
      2. 14.1.2 결제 채널과 라이트닝 네트워크
    2. 14.2 오픈소스 기여
    3. 14.3 프로젝트 제안
      1. 14.3.1 테스트넷 지갑
      2. 14.3.2 블록 탐색기
      3. 14.3.3 온라인 쇼핑몰
      4. 14.3.4 유틸리티 라이브러리
      5. 14.3.5 관련 기업 입사
    4. 14.4 마치며
  16. APPENDIX A 연습문제 해답 (1/12)
  17. APPENDIX A 연습문제 해답 (2/12)
  18. APPENDIX A 연습문제 해답 (3/12)
  19. APPENDIX A 연습문제 해답 (4/12)
  20. APPENDIX A 연습문제 해답 (5/12)
  21. APPENDIX A 연습문제 해답 (6/12)
  22. APPENDIX A 연습문제 해답 (7/12)
  23. APPENDIX A 연습문제 해답 (8/12)
  24. APPENDIX A 연습문제 해답 (9/12)
  25. APPENDIX A 연습문제 해답 (10/12)
  26. APPENDIX A 연습문제 해답 (11/12)
  27. APPENDIX A 연습문제 해답 (12/12)

Product information

  • Title: 밑바닥부터 시작하는 비트코인
  • Author(s): 류정필, 송재준
  • Release date: November 2019
  • Publisher(s): Hanbit Media, Inc.
  • ISBN: 9791162242230