跳至主要內容
</> 高級 </> Bitcoin 程式設計 Programming Bitcoin Jimmy Song 2019
高級 2019 年出版 · 320 頁

Bitcoin 程式設計

Programming Bitcoin

作者

Jimmy Song

譯者

社群翻譯

關於本書

用 Python 從頭寫一個比特幣。橢圓曲線、交易、Script 都自己實作。

涵蓋主題

Python 橢圓曲線 交易建構 Script

本書特色

  • 從零開始用 Python 實現比特幣的核心功能,不依賴任何比特幣庫
  • 深入理解橢圓曲線密碼學(ECC)和 Schnorr/ECDSA 數位簽名
  • 手動建構、序列化和簽名比特幣交易
  • 完整理解 Script 腳本語言的執行機制
  • 學習區塊驗證、Merkle Tree 和 SPV 輕節點實現

你將學到什麼

密碼學基礎

  • • 有限域數學運算
  • • 橢圓曲線點加法與乘法
  • • secp256k1 曲線參數
  • • 私鑰與公鑰生成

交易結構

  • • 輸入(TxIn)與輸出(TxOut)
  • • 交易序列化格式
  • • 簽名哈希(SIGHASH)類型
  • • ECDSA 簽名與驗證

腳本系統

  • • 堆疊式虛擬機運作
  • • P2PKH 與 P2SH 腳本
  • • OP_CHECKMULTISIG
  • • 自訂贖回腳本

網路與區塊

  • • 區塊頭與難度計算
  • • Merkle Tree 驗證
  • • P2P 網路協議
  • • Bloom Filter 隱私

程式碼範例

書中的每個概念都有對應的 Python 實現。以下是橢圓曲線點加法的簡化範例:

class Point:
    def __init__(self, x, y, a, b):
        self.a = a
        self.b = b
        self.x = x
        self.y = y
        # 驗證點在曲線上: y² = x³ + ax + b
        if self.x is not None and self.y is not None:
            if self.y**2 != self.x**3 + a*x + b:
                raise ValueError(f'({x}, {y}) is not on the curve')

    def __add__(self, other):
        # 點加法實現
        if self.x is None:
            return other
        if other.x is None:
            return self
        # ... 完整實現見書中

章節概覽

1
有限域

模運算與域元素

2
橢圓曲線

點加法與乘法

3
橢圓曲線密碼學

公私鑰與簽名

4
序列化

SEC、DER、Base58

5
交易

輸入輸出結構

6
Script

腳本語言執行

7
交易建立與驗證

完整交易流程

8
P2SH

腳本哈希支付

9
區塊

區塊頭與驗證

10
網路

P2P 協議訊息

11
SPV

簡易支付驗證

12
Bloom Filter

隱私保護

13
SegWit

隔離見證

前置要求

  • 基本的 Python 程式設計能力(類別、函數、列表操作)
  • 高中程度的代數知識
  • 不需要事先具備密碼學背景,書中會詳細解釋
  • 不需要了解比特幣運作原理,從零開始學習

適合讀者

非常適合

  • • 想深入理解比特幣原理的開發者
  • • 對密碼學感興趣的程式設計師
  • • 計劃開發錢包應用的工程師

可能適合

  • • 有其他語言經驗的開發者
  • • 區塊鏈安全研究人員
  • • 計算機科學學生

不太適合

  • • 完全沒有程式設計經驗
  • • 只想了解比特幣投資
  • • 尋找高階應用開發指南

學習建議

建議搭配實際編寫程式碼學習。作者 Jimmy Song 在 GitHub 上提供了 練習題和測試案例 ,可以邊讀邊實作,加深理解。

免費線上閱讀

本書由社群翻譯,完全免費開放閱讀。點擊下方按鈕前往閱讀。

https://programming-bitcoin-zh.doge.tg/#/
已複製到剪貼簿