책소개
비트코인 코어를 구현하면서 배우는 비트코인 이론과 실제비트코인은 블록체인 기술의 집약체이다. 이더리움, 이오스 같은 2, 3세대 블록체인은 비트코인을 바탕으로 확장, 발전한 개념이다. 디앱 개발에서 머무르지 않고 블록체인 개발자로 성장하기 위해서는 ‘비트코인 코어’를 가장 먼저 배워야 한다. 무한한 상상력을 블록체인 기술로 실현하려면 비트코인 코어의 구성 요소와 작동 원리를 이해하고 구현할 수 있어야 한다.이 책은 비트코인 코어의 구성요소를 파이썬으로 직접 구현하면서 비트코인 핵심을 깊이 이해할 수 있다. 유한체 기본부터 암호화폐를 이루는 수학과 암호학, 블록, 트랜잭션을 파헤치고 블록체인 결제 시스템까지 확장한다. 이 책을 마치면 비트코인 코어에 필요한 핵심 요소를 직접 코딩하면서 암호화폐라는 무대 뒤에서 무엇이 어떻게 돌아가는지 알게 된다. 트랜잭션을 생성하고 P2P 네트워크에서 데이터를 가져와 네트워크 프로토콜에 따라 트랜잭션을 전파시킬 수 있다. 블록체인으로 응용프로그램이나 서비스를 개발하거나 이 분야에 처음 뛰어든 사람은 반드시 읽어야 하는 책이다.
목차
CHAPTER 1 유한체1.1 현대대수 학습1.2 유한체 정의1.3 유한집합 정의하기1.4 나머지연산1.5 유한체 덧셈과 뺄셈1.6 유한체 곱셈과 거듭제곱1.7 유한체 나눗셈1.8 거듭제곱 메서드 수정1.9 마치며CHAPTER 2 타원곡선2.1 정의2.2 파이썬으로 타원곡선 코딩하기2.3 두 점의 덧셈2.4 점 덧셈 성질2.5 점 덧셈 코딩하기2.6 x1≠x2인 경우의 점 덧셈2.7 x1≠x2인 경우의 점 덧셈 코딩하기2.8 P1 = P2인 경우의 점 덧셈2.9 P1 = P2인 경우의 점 덧셈 코딩하기2.10 마지막 예외 처리 코딩하기2.11 마치며CHAPTER 3 타원곡선 암호3.1 실수체에서 정의된 타원곡선3.2 유한체에서 정의된 타원곡선3.3 유한체에서 정의된 타원곡선 코딩하기3.4 유한체에서 정의된 타원곡선 위 두 점의 덧셈3.5 유한체에서 정의된 점 덧셈 코딩하기3.6. 타원곡선 위 점의 스칼라 곱셈3.7 스칼라 곱셈 특징3.8 스칼라 곱셈으로 생성된 군의 성질3.9 스칼라 곱셈 코딩하기3.10 비트코인에서 사용하는 타원곡선3.11 공개키 암호3.12 서명 생성과 서명 검증3.13 마치며CHAPTER 4 직렬화4.1 비압축 SEC 형식4.2 압축 SEC 형식4.3 DER 서명 형식4.4 비트코인 주소 및 WIF 형식4.5 비트코인에서 빅엔디언/리틀엔디언 변환4.6 마치며CHAPTER 5 트랜잭션5.1 트랜잭션 구성요소5.2 버전5.3 입력5.4 출력5.5 록타임5.6 트랜잭션 직렬화 코딩하기5.7 트랜잭션 수수료5.8 마치며CHAPTER 6 스크립트6.1 스크립트 기법6.2 스크립트 실행6.3 주요 연산자6.4 스크립트 파싱6.5 잠금/해제 스크립트의 결합6.6 표준 스크립트6.7 p2pk 스크립트6.8 p2pk 스크립트의 문제점6.9 p2pk 스크립트의 문제 해결6.10 비표준 스크립트6.11 마치며CHAPTER 7 트랜잭션 검증과 생성7.1 트랜잭션 검증7.2 트랜잭션 생성7.3 테스트넷 트랜잭션 생성과 전파7.4 마치며CHAPTER 8 p2sh 스크립트8.1 다중서명8.2 OP_CHECKMULTISIG 함수8.3 다중서명의 문제점8.4 p2sh 스크립트8.5 p2sh 스크립트 코딩하기8.6 마치며CHAPTER 9 블록9.1 코인베이스 트랜잭션9.2 블록 헤더9.3 작업증명9.4 마치며CHAPTER 10 네트워킹10.1 네트워크 메시지10.2 페이로드 파싱10.3 네트워크 핸드셰이크10.4 네트워크 접속10.5 블록 헤더 요청10.6 블록 헤더 응답10.7 마치며CHAPTER 11 단순 지급 검증11.1 단순 지급 검증의 필요성11.2 머클트리11.3 머클부모11.4 머클부모 레벨11.5 머클루트11.6 블록에서 머클루트 계산11.7 머클트리 활용하기11.8 머클블록11.9 마치며CHAPTER 12 블룸 필터12.1 블룸 필터의 정의12.2 BIP0037 블룸 필터12.3 블룸 필터 설정12.4 머클블록 입수12.5 관심 트랜잭션 입수12.6 마치며CHAPTER 13 세그윗13.1 p2wpkh 스크립트13.2 p2wpkh 트랜잭션13.3 p2sh-p2wpkh 스크립트13.4 p2wpkh와 p2sh-p2wpkh 코딩하기13.5 p2wsh 스크립트13.6 p2sh-p2wsh 스크립트13.7 p2wsh와 p2sh-p2wsh 코딩하기13.8 기타 개선 사항13.9 마치며CHAPTER 14 고급 주제 및 다음 단계14.1 주제 제안14.2 오픈소스 기여14.3 프로젝트 제안14.4 마치며부록연습문제 해답