GO語言公鏈開發實戰

鄭東旭 楊明珠 潘盈瑜 翟萌 編著

  • 出版商: 機械工業
  • 出版日期: 2019-07-01
  • 定價: $534
  • 售價: 8.5$454
  • 語言: 簡體中文
  • ISBN: 7111629876
  • ISBN-13: 9787111629870
  • 相關分類: Go 程式語言
  • 已絕版

買這商品的人也買了...

相關主題

商品描述

本書系統地介紹區塊鏈設計原理和開發技術,包含公鏈的整體架構和開發細節,主要內容包括:
第1章介紹公鏈設計架構。第2~4章介紹比原鏈的交互工具、核心進程bytomd,以及API Server實現原理和接口設計。第5~6章詳細介紹區塊鏈核心部分,包括區塊、區塊鏈、交易的核心數據結構,以及UTXO模型、隔離見證、交易腳本、驗證等技術概念的實現。第7~8章講解比原鏈智能合約以及智能合約在BVM虛擬機上的運行過程。第9~10章介紹區塊鏈錢包的設計與交易流程,包括密鑰、賬戶、資產管理、交易管理等,還詳解了區塊鏈P2P分佈式網絡實現原理。第11~13章介紹數據存儲、共識算法以及挖礦相關的概念和流程。第14章展望了區塊鏈技術未來的發展趨勢。

區塊鏈是構建人類社會下一個數字大航海時代的基礎設施之一,而公有鏈技術的發展無疑是最受關註的領域。本書以比原鏈為實例,全面、詳盡地剖析了公鏈整個技術棧,涵蓋公鏈設計原理、系統架構、底層模型、數據結構與算法、編程環境、上層應用開發等主題,內容深入淺出。通過學習本書內容,可對公鏈技術有全面瞭解,為親身參與這場變革做好準備。

本書是我見過的為數不多的剖析區塊鏈技術面面俱到,並兼具深度的專業著作,從公鏈的整體架構開始,到接口,再到內核,從外及里一步步揭示公鏈的技術原理。在揭示這些技術原理的過程中,作者不滿足於淺嘗輒止,而是深入參數解析層面,使本書除了適用於知識學習之外,更成為一本頗具實操性的參考書籍。本書雖然以比原鏈為藍本,但實際上所用技術在區塊鏈中也都大致通用。

雖然公鏈技術始終是區塊鏈技術愛好者的一片熱土,但是對新入門的開發人員而言,並無體系成熟、翔實可靠的開發指導,初學者往往淹沒在各種問答式的經驗帖中,這無助於形成完備的技術體系。本書是市面上不多見的體系完備之作,在兼顧將公鏈核心技術講通透的同時,不囿於細節,致力於呈現給讀者全局的脈絡。

作者簡介

鄭東旭,在靠前一線互聯網公司任職,對公鏈底層運行原理及技術實現有深入了解。某公鏈項目技術委員會成員。

目錄大綱

推薦序一
推薦序二
前言
章公鏈設計架構1 
1.1概述1 
1.2公鏈總體架構2 
1.3比原鏈各模塊功能2 
1.3.1用戶交互層2 
1.3.2接口層4 
1.3.3內核層4 
1.3. 4錢包層6 
1.3.5共識層6 
1.3.6數據存儲層7 
1.3.7P2P分佈式網絡8 
1.4編譯部署及應用9 
1.5本章小結12 
第2章交互工具13 
2.1概述13 
2.2bytomcli交互工具13 
2.2. 1bytomcli命令flag參數13 
2.2.2使用bytomcli查看節點信息15 
2.2.3bytomcli運行案例16 
2.3dashboard交互工具21 
2.3.1使用dashboard發送一筆交易22 
2.3.2使用dashboard開啟挖礦模式22 
2.4本章小結24 
第3章守護進程的初始化與運行25 
3.1概述25 
3.2bytomd守護進程初始化流程及命令參數25 
3.3bytomd守護進程的初始化實現27 
3.3.1Node對象28 
3.3.2配置初始化29 
3.3.3創建文件鎖32
3.3.4初始化網絡類型33 
3.3.5初始化數據庫(持久化存儲)35 
3.3.6初始化交易池35 
3.5.7創建一條本地區塊鏈36 
3.3.8初始化本地錢包37 
3.3.9初始化網絡同步管理37 
3.3.10初始化Pprof性能分析工具38 
3.3.11初始化CPU挖礦功能38 
3.4bytomd守護進程的啟動方式和停止方式39 
3.5本章小結40 
第4章接口層41 
4.1概述41 
4.2實現一個簡易HTTPServer41 
4.3APIServer創建HTTP服務42 
4.3.1創建API對象42 
4.3.2創建路由項43 
4.3.3實例化http.Server44 
4.3.4啟動APIServer45 
4.3.5接收並響應請求45 
4.4HTTP請求的完整生命週期47 
4.5比原鏈API接口描述48 
4.6API接口調用工具50 
4.6.1使用curl命令行調用API接口50 
4.6.2使用Postman調用API接口50 
4.7比原鏈HTTP錯誤碼一覽51 
4.8本章小結52 
第5章內核層:區塊與區塊鏈53 
5.1概述53 
5.2區塊53 
5.2.1區塊的數據結構53
5.2.2區塊頭的數據結構54 
5.2.3區塊標識符55 
5.2.4創世區塊56 
5.2.5生成創世區塊57 
5.2.6區塊驗證58 
5.2.7計算下一個區塊的難度目標60 
5.2.8孤塊管理60 
5.3區塊鏈63 
5.3.1區塊鏈的數據結構63 
5.3.2區塊上鍊64 
5.3.3區塊連接65 
5.3.4鏈重組66 
5.3.5主鏈的69 
5.4本章小結70 
第6章內核層:交易71 
6.1概述71 
6.2交易的概念71 
6.2.1現實生活中的交易71 
6.2.2虛擬世界中的交易72 
6.3核心數據結構72 
6.3.1普通交易核心數據結構73 
6.3.2Coinbase交易核心數據結構78 
6.3.3交易Action數據結構81 
6.3.4MUX交易類型85 
6.4BUTXO模型86 
6.4.1BUTXO模型原理87 
6.4.2MUX結構88 
6.5交易的流程89 
6.5.1構建交易89 
6.5.2簽名交易93 
6.5.3提交交易95 
6.6隔離見證97 
6.7交易腳本97
6.7.1支付到公鑰98 
6.7.2支付到腳本99 
6.7.3資產上鍊100 
6.7.4資產銷毀102 
6.7.5見證腳本102 
6.7.6棧語言103 
6.8交易驗證105 
6.8.1標準交易105 
6.8.2交易驗證流程106 
6.9交易費108 
6.9.1估算交易手續費108 
6.9.2計算交易手續費110 
6.10交易池111 
6.11樹112 
6.12本章小結115 
第7章內核層:智能合約116 
7.1概述116 
7.2基礎知識116 
7.2.1智能合約116 
7.2.2圖靈完備的智能合約117 
7.2.3UTXO模型和Account模型117 
7.3合約層設計118 
7.4智能合約語言119 
7.4.1Equity語言119 
7.4.2Equity合約組成119 
7.5基於UTXO模型合約開發實戰122 
7.5.1編寫合約123 
7.5.2編譯合約123 
7.5.3部署合約125 
7.5.4解鎖合約129 
7.6本章小結132 
第8章內核層:虛擬機133 
8.1概述133
8.2BVM介紹134 
8.2.1虛擬機的棧134 
8.2.2具有圖靈完備性的BVM135 
8.2.3equity&;vm代碼結構135 
8.3virtualMachine對象136 
8.4棧實現137 
8.5BVM操作指令集139 
8.6智能合約在BVM上的運行過程141 
8.6.1智能合約數據結構141 
8.6.2合約編譯流程與原理142 
8.6.3合約程序字節碼示例156 
8.6.4合約程序字節碼的執行157 
8.6.5合約程序字節碼的執行示例159 
8.7BVM指令集160 
8.8本章小結165 
第9章錢包層166 
9.1概述166 
9.2錢包對象167 
9.3密鑰管理167 
9.3.1密鑰對生成169 
9.3.2密鑰對生成算法170 
9.3. 3密鑰加密存儲172 
9.4賬戶管理174 
9.4.1賬戶創建175 
9.4.2賬戶地址176 
9.4.3賬戶餘額178 
9.5資產管理179 
9.5.1初始默認資產179 
9.5.2發行資產180 
9.6交易管理182 
9.6 .1篩選交易182 
9.6.2篩選UTXO183
9.6.3UTXO花費選擇算法184 
9.7錢包管理186 
9.7.1數據更新186 
9.7.2備份187 
9.7.3恢復188 
9.8本章小結188 
0章P2P分佈式網絡189 
10.1概述189 
10.2P2P的四種網絡模型189 
10.3網絡節點初始化191 
10.3.1SyncManager初始化191 
10.3.2P2PSwitch初始化194 
10.4節點發現機制196 
10.4.1種子節點196 
10.4.2Kademlia算法197 
10.4.3UPnP協議203 
10.4.4RLPX網絡協議205 
10.5節點發現代碼實現206 
10.5.1節點發現初始化206 
10.5.2路由表實現207 
10.5.3Kademlia通信協議212 
10.5.4鄰居節點發現實現212 
10.6節點機219 
10.7區塊同步223 
10.7.1區塊同步流程223 
10.7.2快速同步算法225 
10.7 .3普通同步算法230 
10.7.4區塊數據請求與發送231 
10.8交易同步233 
10.9快速廣播235 
10.9.1新交易快速廣播236
10.9.2新區塊快速廣播238 
10.10節點管理239 
10.10.1TCP連接數管理240 
10.10.2Outbound連接數管理240 
10.10.3動態節點評分機制DynamicBanScore241 
10.11本章小結245 
1章數據存儲246 
11.1概述246 
11.2為什麼使用鍵值數據庫246 
11.3LevelDB常用操作247 
11.3.1增刪改查操作247 
11.3.2迭代查詢248 
11.3.3按前綴查詢249 
11.3.4批量操作249 
11.4存儲層緩存250 
11.4.1緩存淘汰算法250 
11.4.2比原鏈緩存實現252 
11.5存儲層持久化254 
11.5.1比原鏈數據庫254 
11.5.2持久化存儲接口255 
11.5.3持久化key數據前綴255 
11.5.4持久化存儲區塊過程256 
11.6Varint變長編碼257 
11.7本章小結258 
2章共識算法259 
12.1概述259 
12.2PoW和PoS259 
12.3實現一個簡易PoW共識算法261 
12.4比原鏈PoW共識算法266 
12.4.1PoWhash值266
12.4.2難度動態調整267 
12.4.3Tensority算法268 
12.5本章小結278 
3章礦池及挖礦流程279 
13.1概述279 
13.2與礦池相關的基本概念279 
13.3礦池總架構280 
13.4挖礦流程解析(礦池視角)282 
13.5挖礦流程解析(礦機視角)283 
13.6拒絕數與拒絕率286 
13.7礦池的收益分配模式286 
13.8交易打包至區塊287 
13.8.1Coinbase交易獎勵288 
13.8.2交易手續費Gas289 
13.9礦池優化建議290 
13.10本章小結291 
4章展望292 
14.1概述292 
14.2跨鏈293 
14.2.1打通鏈與鏈的連接293 
14.2.2BTC、ETH與BTM的跨鏈資產交換293 
14.3閃電網絡294 
14.4子鏈295 
14.5本章小結296