高級 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 上提供了 練習題和測試案例 ,可以邊讀邊實作,加深理解。