프로그래밍 비트코인

해시넷
이동: 둘러보기, 검색
지미 송(Jimmy Song, 송재준) 블록체인 프로그래밍 강사

프로그래밍 비트코인(Programming Bitcoin)은 비트코인 코어의 핵심 요소를 파이썬(Python)으로 직접 구현하면서 블록체인 구현 원리를 알 수 있는 책이다. 저자는 지미 송(Jimmy Song, 송재준)이다.

개요

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

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

프로그래밍비트코인의 주요 내용은 비트코인 트랜잭션의 파싱·검증·생성, 비트코인 스마트 계약 언어인 스크립트 학습, 비트코인 라이브러리 구축 실습, 작업증명을 이용한 블록체인 보안 메커니즘 이해, 비트코인 지갑의 단순 지급 검증 이해, 공개키 암호화 기본 암호 알고리즘 활용 등으로 구성되어 있다.[1]

저자

  • 지미 송(Jimmy Song) : 20년 경력 프로그래머로 지난 5년간 비트코인 프로그래머로 지냈다. 한국 이름은 '송재준'으로, 7살 때 미국으로 이민을 갔다. 비트코인 테크토크(Bitcoin tech talk)의 편집자이며 《비트코인 매거진》에 기고하고 있다. 블록체인캐피탈(Blockchain Capital)의 벤처 파트너이면서 텍사스 대학교(University of Texas System)에서 프로그래밍비트코인 책을 주제로 강의하고 있다. 비트코인코어를 포함한 여러 비트코인 프로젝트에 기여했으며 비트코인 지갑으로 유명한 아모리(Armory) 사 기술담당 부사장을 역임했다.
  • 류정필 : 한양대학교 학사, 카이스트 석사(신경망 및 기계지능 연구실)를 마치고 프랑스의 텔레콤 파리에서 공학박사를 받았다. 이후 프랑스 CNES 우주센터에서 인공위성 통신 알고리즘을 연구했다. 귀국 후 삼성전자에서 방송/통신 알고리즘을 제품에 구현하는 업무를 수행했다. 2016년 말 연구 아이템을 검토하다가 비트코인을 알게 되었고 해당 기술에 매료됐다. 최근 1년 간 사내 자유 연구 제도 C랩을 통해 사물인터넷용 경량 블록체인 코어를 개발했다.

목차

  • 챕터1 유한체
  1. 현대대수 학습
  2. 유한체 정의
  3. 유한집합 정의하기
  4. 나머지연산
  5. 유한체 덧셈과 뺄셈
  6. 유한체 곱셈과 거듭제곱
  7. 유한체 나눗셈
  8. 거듭제곱 메소드 수정
  9. 마치며
  • 챕터2 타원곡선
  1. 정의
  2. 파이썬으로 타원곡선 코딩하기
  3. 두 점의 덧셈
  4. 점 덧셈 성질
  5. 점 덧셈 코딩하기
  6. x1≠x2인 경우의 점 덧셈
  7. x1≠x2인 경우의 점 덧셈 코딩하기
  8. P1 = P2인 경우의 점 덧셈
  9. P1 = P2인 경우의 점 덧셈 코딩하기
  10. 마지막 예외 처리 코딩하기
  11. 마치며
  • 챕터3 타원곡선 암호
  1. 실수체에서 정의된 타원곡선
  2. 유한체에서 정의된 타원곡선
  3. 유한체에서 정의된 타원곡선 코딩하기
  4. 유한체에서 정의된 타원곡선 위 두 점의 덧셈
  5. 유한체에서 정의된 점 덧셈 코딩하기
  6. 타원곡선 위 점의 스칼라 곱셈
  7. 스칼라 곱셈 특징
  8. 스칼라 곱셈으로 생성된 군의 성질
  9. 스칼라 곱셈 코딩하기
  10. 비트코인에서 사용하는 타원곡선
  11. 공개키 암호
  12. 서명 생성과 서명 검증
  13. 마치며
  • 챕터4 직렬화
  1. 비압축 SEC 형식
  2. 압축 SEC 형식
  3. DER 서명 형식
  4. 비트코인 주소 및 WIF 형식
  5. 비트코인에서 빅엔디언/리틀엔디언 변환
  6. 마치며
  • 챕터5 트랜잭션
  1. 트랜잭션 구성요소
  2. 버전
  3. 입력
  4. 출력
  5. 록타임
  6. 트랜잭션 직렬화 코딩하기
  7. 트랜잭션 수수료
  8. 마치며
  • 챕터6 스크립트
  1. 스크립트 기법
  2. 스크립트 실행
  3. 주요 연산자
  4. 스크립트 파싱
  5. 잠금/해제 스크립트의 결합
  6. 표준 스크립트
  7. p2pk 스크립트
  8. p2pk 스크립트의 문제점
  9. p2pk 스크립트의 문제 해결
  10. 비표준 스크립트
  11. 마치며
  • 챕터7 트랜잭션 검증과 생성
  1. 트랜잭션 검증
  2. 트랜잭션 생성
  3. 테스트넷 트랜잭션 생성과 전파
  4. 마치며
  • 챕터8 p2sh 스크립트
  1. 다중서명
  2. OP_CHECKMULTISIG 함수
  3. 다중서명의 문제점
  4. p2sh 스크립트
  5. p2sh 스크립트 코딩하기
  6. 마치며
  • 챕터9 블록
  1. 코인베이스 트랜잭션
  2. 블록 헤더
  3. 작업증명
  4. 마치며
  • 챕터10 네트워킹
  1. 네트워크 메시지
  2. 페이로드 파싱
  3. 네트워크 핸드셰이크
  4. 네트워크 접속
  5. 블록 헤더 요청
  6. 블록 헤더 응답
  7. 마치며
  • 챕터11 단순 지급 검증
  1. 단순 지급 검증의 필요성
  2. 머클트리
  3. 머클부모
  4. 머클부모 레벨
  5. 머클루트
  6. 블록에서 머클루트 계산
  7. 머클트리 활용하기
  8. 머클블록
  9. 마치며
  • 챕터12 블룸 필터
  1. 블룸 필터의 정의
  2. BIP0037 블룸 필터
  3. 블룸 필터 설정
  4. 머클블록 입수
  5. 관심 트랜잭션 입수
  6. 마치며
  • 챕터13 세그윗
  1. p2wpkh 스크립트
  2. p2wpkh 트랜잭션
  3. p2sh-p2wpkh 스크립트
  4. p2wpkh와 p2sh-p2wpkh 코딩하기
  5. p2wsh 스크립트
  6. p2sh-p2wsh 스크립트
  7. p2wsh와 p2sh-p2wsh 코딩하기
  8. 기타 개선 사항
  9. 마치며
  • 챕터14 고급 주제 및 다음 단계
  1. 주제 제안
  2. 오픈소스 기여
  3. 프로젝트 제안
  4. 마치며[2]

각주

  1. 밑바닥부터 시작하는 비트코인〉, 《한빛출판네트워크》
  2. 블록체인 코어 개념 이해 및 구현〉, 《뉴테크프라임》

참고자료

같이 보기