本書是一本區(qū)塊鏈底層開發(fā)入門圖書,全書圍繞作者開發(fā)的區(qū)塊鏈模擬器,從原理和程序?qū)崿F(xiàn)兩個方面介紹了區(qū)塊鏈開發(fā)技術(shù)。書中首先通過一個數(shù)字貨幣發(fā)行的故事,介紹了區(qū)塊鏈的專業(yè)術(shù)語和工作原理;然后結(jié)合區(qū)塊鏈模擬器的程序?qū)崿F(xiàn)過程,介紹了區(qū)塊鏈的關(guān)鍵技術(shù)細節(jié)。
裴堯堯 博士,有限元開源框架Feon的開發(fā)者。目前任教于湖北工業(yè)大學,從事算法研究與教學工作。擅長Python語言,熱愛區(qū)塊鏈技術(shù),是區(qū)塊鏈技術(shù)的推崇者。對區(qū)塊鏈的底層實現(xiàn)有較為深入的研究,希望能為區(qū)塊鏈的發(fā)展盡綿薄之力。著有《Python與有限元》一書,廣受讀者好評。
第1章 區(qū)塊鏈原理簡介 1
1.1 區(qū)塊鏈簡要發(fā)展史 2
1.1.1 什么是比特幣 2
1.1.2 比特幣與區(qū)塊鏈的關(guān)系 2
1.2 什么是中心化 3
1.2.1 交易 3
1.2.2 數(shù)字貨幣 3
1.2.3 復式記賬法 4
1.2.4 未消費交易輸出 6
1.2.5 中心化 7
1.2.6 區(qū)塊與區(qū)塊鏈 8
1.2.7 創(chuàng)世區(qū)塊 9
1.3 去中心化原理 11
1.3.1 分布式存儲 12
1.3.2 對等網(wǎng)絡 12
1.3.3 交易池 14
1.3.4 “挖礦” 16
1.3.5 創(chuàng)幣交易 17
1.3.6 工作量證明 18
1.3.7 共識與共識算法 19
1.3.8 確認 20
1.3.9 誠實節(jié)點和惡意節(jié)點 20
1.3.10 區(qū)塊鏈分叉 21
1.3.11 雙重支付 24
1.3.12 虛擬機 25
1.3.13 礦機和礦池 26
1.4 遺留的問題 26
第2章 區(qū)塊鏈模擬器及Python入門 29
2.1 區(qū)塊鏈模擬器GUI簡介 30
2.1.1 為什么寫區(qū)塊鏈模擬器 30
2.1.2 區(qū)塊鏈模擬器GUI簡介 30
2.2 Python入門 36
2.2.1 為什么是Python 37
2.2.2 Python基礎知識 37
2.3 Simchain簡介 59
2.3.1 什么是Simchain 59
2.3.2 Simchain設計 61
2.3.3 Simchain使用 67
2.4 區(qū)塊鏈四要素 72
第3章 區(qū)塊鏈中的加密 73
3.1 為什么需要加密 74
3.2 如何實現(xiàn)加密 74
3.2.1 哈希算法 74
3.2.2 私鑰、公鑰和地址 82
3.2.3 實數(shù)域上的橢圓曲線 88
3.2.4 有限域上的橢圓曲線 90
3.2.5 橢圓曲線加密 97
3.2.6 錢包 105
3.3 可能的破解算法 111
3.3.1 枚舉法 111
3.3.2 BSGS算法 112
3.3.3 Pollard's rho算法 114
3.3.4 隨機數(shù)攻擊 115
3.3.5 如何保護私鑰安全 117
3.4 格密碼初探 118
3.4.1 抗量子計算密碼 118
3.4.2 格基礎知識 119
3.4.3 格問題 126
3.4.4 *短向量問題 128
3.4.5 *近向量問題 130
3.4.6 GGH數(shù)字簽名 133
3.4.7 Lyubashevshy數(shù)字簽名 135
第4章 交易 141
4.1 創(chuàng)建交易 142
4.1.1 交易的格式 142
4.1.2 交易的數(shù)據(jù)結(jié)構(gòu) 143
4.1.3 UTXO與UTXO集 151
4.1.4 一般交易的創(chuàng)建 157
4.1.5 創(chuàng)幣交易的創(chuàng)建 164
4.2 廣播交易 165
4.3 驗證交易 166
4.3.1 一般交易的驗證 166
4.3.2 創(chuàng)幣交易的驗證 174
4.4 交易傳播中的安全 174
4.4.1 簽名明文攻擊 174
4.4.2 創(chuàng)幣交易的安全 176
4.5 可編程的交易 177
4.5.1 比特幣腳本 177
4.5.2 腳本引擎的工作原理 177
4.5.3 堆棧機LittleMachine 183
4.5.4 多重簽名 191
4.6 交易的“一生” 193
第5章 區(qū)塊與區(qū)塊鏈 195
5.1 區(qū)塊 196
5.1.1 什么是區(qū)塊 196
5.1.2 區(qū)塊的數(shù)據(jù)結(jié)構(gòu) 196
5.1.3 區(qū)塊頭 200
5.1.4 梅克爾樹的構(gòu)建 201
5.1.5 簡易支付驗證與SPV節(jié)點 205
5.2 區(qū)塊鏈 211
5.2.1 區(qū)塊鏈的構(gòu)成 211
5.2.2 創(chuàng)世區(qū)塊 213
5.2.3 區(qū)塊鏈分類 217
第6章 去中心化共識 219
6.1 常見的共識算法 220
6.1.1 區(qū)塊鏈中的共識 220
6.1.2 工作量證明POW 221
6.1.3 Raft協(xié)議 228
6.2 創(chuàng)建候選區(qū)塊 233
6.2.1 交易選擇策略 234
6.2.2 消失的交易 234
6.2.3 創(chuàng)建創(chuàng)幣交易 234
6.2.4 創(chuàng)建候選區(qū)塊 237
6.3 挖礦、打包、廣播區(qū)塊 239
6.3.1 “挖礦” 239
6.3.2 打包候選區(qū)塊 239
6.3.3 廣播區(qū)塊 240
6.4 驗證區(qū)塊 241
6.5 區(qū)塊鏈分叉 244
6.5.1 偶然分叉 244
6.5.2 硬分叉和軟分叉 247
6.6 添加到區(qū)塊鏈 248
6.6.1 比特幣中的區(qū)塊添加原則 248
6.6.2 51%攻擊 252
6.6.3 Simchain中的區(qū)塊添加原則 253
6.7 區(qū)塊的“一生” 262
6.8 知識總結(jié) 263
第7章 雜談 265
7.1 關(guān)于區(qū)塊鏈常見問題的討論 266
7.2 關(guān)于真假區(qū)塊鏈項目的辨別 268
7.3 關(guān)于區(qū)塊鏈技術(shù)的發(fā)展趨勢 269
7.3.1 抗量子密碼學 269
7.3.2 零知識證明 269
7.3.3 代碼漏洞檢測 271
7.4 關(guān)于以太坊與智能合約 271
7.5 關(guān)于區(qū)塊鏈應用的愿想 272