파이썬으로 배우는 블록체인 구조와 이론

비트코인, 암호학, 전자지갑, 트랜잭션, 채굴의 원리와 구현

파이썬을 통해서 블록체인의 기반기술을 깊게 이해하고 싶은 독자분들에게 추천합니다!

이 책은 블록체인의 기능에 대한 문제점과 보완 방법 등에 관해 활발히 토론이 이뤄지고 있는 개발자 커뮤니티와 개발 제안 문서(Bitcoin Improvement Proposals, BIP)의 내용을 중심으로 집필이 됐다. 따라서 블록체인의 원천 기술인 비트코인 네트워크의 구조와 원리를 자세히 밝히는 것은 물론 블록체인의 구조를 기능별로 세분화해서 각 기능의 동작 원리와 상호 작용을 분석하고 있다.

이 책을 통해 블록체인의 동작 원리를 설명하고 파이썬 프로그래밍을 통해 이론을 구체화했으므로 블록체인 기술을 더욱 깊이 이해하고 싶은 독자에게 도움이 될 것이다.

★ 이 책에서 다루는 내용 ★

  • 블록체인을 안전하게 구축하는 데 필요한 암호 기술인 대칭키, 공개키 암호, 해시, 전자서명의 이론과 실습
  • 지갑 애플리케이션에서 개인키, 공개키, 주소를 만드는 방법과 트랜잭션을 생성하는 원리, 채굴의 동작 원리에 대한 이론과 실습
  • P2P 프로토콜의 종류와 구조 분석, 노드 간 주고받는 메시지의 모니터링
  • 오픈소스 프로그램을 통한 블록체인 데이터베이스의 구조 및 내용을 분석하는 방법과 실습

  도서 상세 이미지

조성현

가천대학교 물리학과를 졸업하고, KT에 입사해서 KT 통신운용연구단에서 전자교환기 S/W 업무를 수행했으며, 이후 Lucent Technologies(Bell Labs Innovations)에서 수석연구원으로 차세대 통신망 구축 업무를 수행했다. 현재는 인사이트 캠퍼스에서 금융공학과 딥러닝 분야의 강사로 활동하고 있다.

이광성

전자과를 우등 졸업하고 미국 실리콘밸리 SearchForce에서 인턴십을 했다. 사토시의 논문에서 시작된 호기심으로 이 책을 집필하게 되었다. 블록체인 관련 콘퍼런스에 다수 참여하면서 블록체인의 장점을 살려 현실에 적용 가능한 서비스를 창업하고 싶은 꿈이 있다.

박혜리

생물학 학사, 경영학 석사(MBA)를 취득하고 IT 컨설팅 회사에서 비즈니스 컨설턴트로 활동했다. 현재는 금융 데이터 사이언스 분야에서 AI 기반 인텔리전스 서비스를 제공하는 핀테크 기업인 (주)핀인사이트에서 운영이사로 재직하면서 KAIST 문술미래전략대학원에서 수학 중이다.

  • ▣ 1장: 비트코인 네트워크의 개요
    • 1.1. 비트코인의 탄생
    • 1.2. 암호화폐의 역사
      • 암호화폐의 주요 이슈
      • 비트코인은 기존 암호화폐 아이디어의 종합체
    • 1.3. 블록체인 기술의 의의
      • 중재자 없는 자유로운 거래 실현
      • 화폐, 계약서, 증명서 등 디지털 대상의 다양화
      • 사용자 증가에 따른 새로운 가치 창출
    • 1.4. 블록체인이 가지고 올 비즈니스 혁신
      • 블록체인의 비즈니스 활용
      • 스마트 컨트랙트와 비즈니스의 결합
    • 1.5. P2P 네트워크
      • 서버-클라이언트 네트워크
      • P2P 네트워크
    • 1.6. 비트코인 네트워크의 구성원
    • 1.7. 각 노드의 기능
      • 풀 블록체인 노드(풀 노드)
      • Lightweight 노드(SPV 노드)
      • 채굴자 노드
      • 서드파티 API 클라이언트
    • 1.8. 참여자 노드 현황 관찰
    • 1.9. 블록체인의 구조
    • 1.10. 블록체인 데이터 확인
    • 1.11. 블록의 크기 제한과 비트코인의 확장성
      • 비트코인의 확장성 문제
      • 세그윗과 비트코인 캐시의 탄생
    • 1.12. 비트코인 지갑과 지갑 주소
      • 일반 사용자의 지갑
      • 개발자, 전문가 측면의 지갑
    • 1.13. 트랜잭션(Transaction) 생성
      • 트랜잭션 생성
      • 블록체인과 트랜잭션 체인
    • 1.14. 트랜잭션 전송
      • 나영이가 풀 노드일 때
      • 나영이가 SPV 노드일 때
      • 나영이가 서드파티 API 클라이언트일 때
      • 실제 트랜잭션 사례
    • 1.15. 채굴
      • 블록 데이터 구조
      • 채굴 과정
    •  
  • ▣ 2장: 암호 기술
    • 2.1. 암호의 역사
      • 고대 암호
      • 근대 암호
    • 2.2. 암호문의 요건
      • 혼돈(Confusion) 과정
      • 확산(Diffusion) 과정
    • 2.3. 대칭키 기반 암호기술
      • 동작 방식
      • 블록 암호 방식(Block Cipher)
      • 스트림 암호 방식(Stream Cipher)
      • Data Encryption Standard(DES) 알고리즘
      • Advanced Encryption Standard(AES) 알고리즘
    • 2.4. 대칭키 암호 절차 실습(AES)
      • 대칭키 기반 암호 방식의 문제점
    • 2.5. 공개키 기반 암호기술
      • 동작 방식
      • RSA 알고리즘
      • Diffie-Hellman Key 교환 알고리즘(DHKE)
      • Elgamal 알고리즘
      • Square-and-Multiply 알고리즘(공개키 계산)
      • 타원곡선암호 알고리즘(Elliptic Curve Cryptography: ECC)
      • 덧셈 연산자(Addition operator)
      • 덧셈 연산자 연습
      • 개인키, 공개키 생성
      • Double-and-Add 알고리즘
    • 2.6. 해시(Hash) 알고리즘
      • 해시 함수의 조건
      • 해시 알고리즘의 종류
      • 비트코인에 적용된 해시 함수
    • 2.7. 전자서명(Digital Signature)
      • 타원곡선 전자서명 알고리즘(ECDSA)
    •  
  • ▣ 3장: 지갑(Wallet)
    • 3.1. 비트코인 지갑 주소
      • 키와 지갑 주소
    • 3.2. 개인키(Private Key)
      • 타원곡선암호의 표준 문서
      • 랜덤 넘버 생성기(Random Number Generator: RNG)
      • Base58Check 인코딩
      • Wallet Import Format(WIF)
    • 3.3. 공개키(Public Key)
      • 공개키 생성
      • 공개키 유형
      • 공개키 포맷 변환
    • 3.4. 지갑 주소(Address)
      • 지갑 주소 생성과정
      • 메인넷(Mainnet)과 테스트넷(Testnet)
      • 버전 프리픽스(Version prefix)
    • 3.5. 지갑 주소 관리
    • 3.6. 지갑의 백업 관리
      • 백업 방식
      • 개인키 유실
      • 브레인 월렛(Brain Wallet)
      • 베니티 월렛(Vanity Wallet)
    • 3.7. 지갑의 유형과 키 관리
      • 비결정적 방식의 지갑(Non-deterministic Wallet)
      • 결정적 방식의 지갑(Deterministic Wallet)
    • 3.8. 계층 구조의 결정적 방식(Hierarchical Deterministic Wallets: HD Wallets, BIP-32)
      • HD 지갑의 구조
      • 활용 케이스
    • 3.9. 니모닉 코드(Mnemonic Code: BIP-39)
    •  
  • ▣ 4장: 트랜잭션(Transaction)
    • 4.1. 트랜잭션의 구조
      • 이중 지급 문제
      • 트랜잭션 데이터 구조
      • 필드 크기(Bytes)
      • 입력부의 Script Sig 구조
      • 바이트 오더(Byte order)
      • 직렬화(Serialization)
      • 트랜잭션 ID
    • 4.2. 전자서명 생성
      • 전자서명 생성 절차
      • 해시타입(Hash Type)
      • 크라우드 펀딩
      • 백지수표
      • 더스트 콜렉터(Dust collector)
    • 4.3. 전자서명 검증
      • 검증 스크립트 생성
      • 스크립트 검증 절차
      • 원시 데이터와 검증 스크립트
    • 4.4. UTXO 조회 실습
    • 4.5. 트랜잭션 생성 및 송금
      • 테스트용 지갑 주소 생성
      • 초기 잔액 확보
      • 코드 실행
      • 송금 결과 확인
    • 4.6. 적정 거래 수수료
    • 4.7. 트랜잭션 가변성(Transaction Malleability)
      • 트랜잭션 가변성 사례 분석
      • 가능한 공격 시나리오
    • 4.8. 다중 서명(MultiSig)
      • 스크립트 구조
      • 스크립트 검증
    • 4.9. Pay-to-Script Hash(P2SH)
    • 4.10. P2SH 지갑 주소 생성
      • 다중 서명용 지갑 주소 생성 절차
      • P2SH와 P2PKH의 거래 예시
      • 리딤 스크립트 디코딩
      • 스크립트 검증
    • 4.11. P2SH 지갑 생성 및 트랜잭션 생성 실습
      • 코드 실행
      • 송금 결과 확인
    • 4.12. 세그윗(Segregated Witness: SegWit)
      • 세그윗 개요
      • 세그윗 트랜잭션 사용량
    • 4.13. 세그윗과 위트니스 머클 트리
      • 위트니스용 머클 트리
      • 코인베이스 트랜잭션의 출력부
    • 4.14. 세그윗 트랜잭션
      • 세그윗 트랜잭션의 구조
      • 서명 검증
    • 4.15. Bech32 주소
      • 트랜잭션 사례
      • 오류 검출
      • Bech32 주소 형식
    •  
  • ▣ 5장: 채굴(Mining)
    • 5.1. 블록 헤더의 구조
    • 5.2. 버전(version)
    • 5.3. 해시 난이도
      • 타깃 비츠(Target Bits)
      • 채굴 난이도 지표(Difficulty)
      • 블록 해시 확인
    • 5.4. 해시 난이도 조절(Retarget)
      • 타깃 값 설정 규칙
    • 5.5. 머클 트리(Merkle Tree)와 머클 루트(Merkle Root)
    • 5.6. 엑스트라 논스(Extra Nonce)
    • 5.7. 채굴 절차 흐름도
    • 5.8. 해시 파워(Hash power)
      • 해시 파워와 채굴 난이도
    • 5.9. 비트코인 발행량
      • 디플레이션 화폐
      • 미국 달러 발행량과 비트코인 발행량 비교
    • 5.10. 수수료와 최적 블록 사이즈
      • 채굴자 입장
      • 일반 사용자 입장
      • 시장의 균형
    • 5.11. 솔로 마이닝(Solo Mining)과 풀 마이닝(Pool Mining)
      • 솔로 마이닝
      • 풀 마이닝
      • 보상 분배 방식
    • 5.12. 블록체인의 분기
      • 블록체인의 일시적 분기
      • 트랜잭션의 최종 승인(Confirmation)
      • 하드포크(Hard Fork)와 소프트포크(Soft Fork)
      • 네트워크 분리와 새로운 코인의 탄생
    •  
  • ▣ 6장: 비트코인 P2P 프로토콜
    • 6.1. 패킷 분석기 소개 - 와이어샤크(WireShark)
    • 6.2. 노드 관리 메시지
      • version, verack 메시지
      • getaddr, addr 메시지
      • ping, pong 메시지
    • 6.3. 블록 데이터 동기화
      • 블록 우선(Block-first) 동기화 방식
      • 블록 우선 방식의 문제점
      • 헤더 우선(Headers-first) 동기화 방식
    • 6.4. 신규 블록 데이터 릴레이
      • 이전 방식의 블록 전송
      • 현재 방식의 블록 전송
      • 저대역폭 릴레이(Low Bandwidth Relaying)
      • 고대역폭 릴레이(High Bandwidth Relaying)
    • 6.5. 트랜잭션 릴레이
    • 6.6. 기타 메시지
      • Reject 메시지
      • Feefilter 메시지
      • Mempool 메시지
      • Notfound 메시지
      • 패널티 부여 및 노드 차단
    • 6.7. SPV 노드 - Simplified Payment Verification
      • 블룸 필터(Bloom Filter)
      • 비주얼 스튜디오 내려받기
      • SPV와 블룸 필터
      • 필터로드(filterload) 메시지
      • 머클 블록과 트랜잭션 검증
    •  
  • ▣ 7장: 비트코인 코어(Bitcoin Core)
    • 7.1. 비트코인 코어 설치
      • 프로그램 내려받기 및 설치
      • 환경 설정
    • 7.2. 비트코인 코어 실행
    • 7.3. 블록체인 데이터 파일 구성
      • 블록체인 데이터
      • UTXO set 데이터
      • 지갑 데이터
    • 7.4. 키와 주소 확인
    • 7.5. 비트코인 코어 클라이언트
      • 비트코인 코어 클라이언트
      • 블록 데이터 조회
      • 트랜잭션 데이터 조회
    • 7.6. 비트코인 코어 원격 프로시저 호출(RPC)
      • 블록 데이터 조회
    • 7.7. RPC 기능을 활용한 블록체인 분석 예시
      • 분석 예시-1: 블록 생성 시간의 분포 분석
      • 분석 예시-2: 블록당 트랜잭션 개수의 분포 분석
      • 분석 예시-3: 기간에 따른 난이도의 변화 관찰
      • 분석 예시-4: 메모리 풀(MemPool)에 저장된 트랜잭션 조회
      • 분석 예시-5: 인근 피어(peer) 정보 확인
      • 분석 예시-6: 채굴자의 트랜잭션 선택 전략 확인
    • 7.8 RPC 메서드 목록
      • 블록체인 관련 RPCs
      • 컨트롤 RPCs
      • 마이닝 RPCs
      • 네트워크 RPCs
      • 트랜잭션 RPCs
      • 유틸리티 RPCs
      • 지갑 RPCs

예제는 인사이트 캠퍼스 사이트(https://insightcampus.co.kr/book/)에서 제공하고 있습니다.