精通區塊鏈開發技術, 2/e

[美]伊姆蘭·巴希爾 著 王烈徵 譯

  • 精通區塊鏈開發技術, 2/e-preview-1
  • 精通區塊鏈開發技術, 2/e-preview-2
  • 精通區塊鏈開發技術, 2/e-preview-3
精通區塊鏈開發技術, 2/e-preview-1

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

商品描述

《精通區塊鏈開發技術(第2版)》詳細闡述了與區塊鏈開發技術相關的基本解決方案,主要包括區塊鏈入門、去中心化、對稱密碼學、公鑰密碼學、比特幣詳解、比特幣網絡和支付、比特幣客戶端和API、山寨幣、智能合約、以太坊、開發工具和框架、Web3詳解、超級賬本、替代區塊鏈、區塊鏈—代幣之外的應用、可伸縮性和其他挑戰、當前發展和未來展望等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。

目錄大綱

目    錄

第1章  區塊鏈入門 1

1.1  區塊鏈技術的發展 1

1.2  分佈式系統 5

1.3  區塊鏈和比特幣的歷史 7

1.3.1  電子現金 7

1.3.2  區塊鏈 9

1.4  區塊鏈定義和相關術語 9

1.4.1  點對點 9

1.4.2  分佈式賬本 10

1.4.3  加密安全 10

1.4.4  僅可追加 10

1.4.5  可通過共識更新 11

1.5  區塊鏈的通用元素 14

1.5.1  區塊鏈的工作原理 16

1.5.2  區塊鏈累積區塊的方式 16

1.5.3  區塊鏈技術的優點和局限性 17

1.5.4  區塊鏈技術的層次 18

1.5.5  區塊鏈的特性 20

1.6  區塊鏈的類型 22

1.6.1  分佈式賬本 23

1.6.2  分佈式賬本技術 23

1.6.3  公共區塊鏈 23

1.6.4  私有區塊鏈 24

1.6.5  半私有區塊鏈 24

1.6.6  側鏈 24

1.6.7  許可型賬本 25

1.6.8  共享賬本 25

1.6.9  完全私有和專有區塊鏈 25

1.6.10  代幣化區塊鏈 25

1.6.11  無代幣區塊鏈 26

1.7  共識 26

1.7.1  共識機制 26

1.7.2  共識機制的類型 27

1.7.3  區塊鏈中的共識 27

1.8  CAP定理和區塊鏈 30

1.9  小結 31

第2章  去中心化 33

2.1  去中心化的意義 33

2.2  去中心化的方法 35

2.2.1  去中介 35

2.2.2  競爭驅動的去中心化 36

2.3  去中心化的途徑 38

2.3.1  去中心化的思路 38

2.3.2  去中心化框架示例 39

2.4  生態系統的去中心化 39

2.4.1  存儲 39

2.4.2  通信 40

2.4.3  計算能力和去中心化 41

2.5  智能合約 43

2.6  去中心化組織 43

2.6.1  去中心化自治組織 43

2.6.2  去中心化自治公司 44

2.6.3  去中心化自治社團 44

2.6.4  去中心化應用程序 45

2.7  去中心化應用程序 45

2.7.1  去中心化應用程序的要求 45

2.7.2  去中心化應用程序和移動App的區別 46

2.7.3  KYC鏈 46

2.7.4  OpenBazaar 46

2.7.5  Lazooz 47

2.8  去中心化的平臺 47

2.8.1  以太坊 47

2.8.2  MaidSafe 48

2.8.3  Lisk 48

2.9  小結 48

第3章  對稱密碼學 49

3.1  使用OpenSSL命令行 49

3.2  密碼學簡介 50

3.3  密碼學的數學基礎 51

3.3.1  集合 51

3.3.2  群 51

3.3.3  域 51

3.3.4  有限域 52

3.3.5  階 52

3.3.6  阿貝爾群 52

3.3.7  質數域 52

3.3.8  環 52

3.3.9  循環群 52

3.3.10  模運算 53

3.4  密碼學模型 53

3.5  現代信息安全的基本要求 54

3.5.1  保密性 54

3.5.2  完整性 54

3.5.3  可認證性 54

3.5.4  不可否認性 56

3.5.5  可追責性 56

3.6  密碼學原語 57

3.7  對稱密碼學介紹 58

3.7.1  流密碼 58

3.7.2  分組密碼 59

3.8  分組密碼的加密模式 61

3.8.1  電子密碼本 61

3.8.2  密碼塊鏈接 62

3.8.3  計數器模式 62

3.9  密鑰流生成模式 63

3.9.1  消息認證模式 63

3.9.2  加密哈希模式 64

3.10  數據加密標準 64

3.10.1  高級加密標準 64

3.10.2  AES工作原理 65

3.11  小結 68

第4章  公鑰密碼學 69

4.1  非對稱密碼學 70

4.1.1  整數分解 72

4.1.2  離散對數 72

4.1.3  橢圓曲線 73

4.2  公鑰和私鑰 73

4.3  RSA算法原理 74

4.3.1  RSA算法步驟 74

4.3.2  使用RSA進行加密和解密 75

4.4  橢圓曲線密碼學 75

4.4.1  ECC背後的數學 75

4.4.2  點加法 76

4.4.3  點加倍 78

4.5  ECC中的離散對數問題 80

4.6  在OpenSSL中使用RSA算法 82

4.6.1  RSA公鑰和私鑰對 82

4.6.2  加密與解密 85

4.7  在OpenSSL中使用ECC算法 86

4.7.1  查看ECC標準 86

4.7.2  生成私鑰 87

4.8  哈希函數的屬性 89

4.8.1  將任意消息壓縮為固定長度的摘要 89

4.8.2  易於計算 89

4.8.3  原像抗性 90

4.8.4  次原像抗性 90

4.8.5  抗碰撞性 90

4.9  消息摘要算法 91

4.10  安全哈希算法 91

4.11  安全哈希算法的設計 92

4.11.1  SHA-256的設計 93

4.11.2  SHA-3(Keccak)的設計 94

4.12  哈希函數的OpenSSL示例 95

4.13  消息認證碼 95

4.13.1  使用分組密碼的MAC 95

4.13.2  基於哈希的MAC 96

4.14  默克爾樹 97

4.15  帕特裡夏樹 97

4.16  分佈式哈希表 98

4.17  數字簽名 99

4.17.1  RSA數字簽名算法 99

4.17.2  先簽名後加密 100

4.17.3  先加密後簽名 100

4.17.4  橢圓曲線數字簽名算法 101

4.17.5  使用OpenSSL生成數字簽名 102

4.17.6  使用OpenSSL的ECDSA 103

4.18  同態加密 105

4.19  簽密 106

4.20  零知識證明 106

4.21  盲簽名 107

4.22  編碼方案 107

4.23  金融市場和交易基礎知識 107

4.23.1  金融市場 108

4.23.2  交易 108

4.23.3  交易所 109

4.23.4  訂單和訂單屬性 109

4.23.5  訂單管理和路由系統 109

4.23.6  交易票證 110

4.23.7  基礎工具 110

4.23.8  金融工具的一般屬性 110

4.23.9  經濟特徵 111

4.23.10  銷售 111

4.23.11  交易對手 111

4.23.12  交易生命周期 111

4.23.13  莊家 112

4.23.14  操縱市場 112

4.24  小結 113

第5章  比特幣詳解 115

5.1  比特幣的由來 115

5.1.1  比特幣背後的理論基礎 116

5.1.2  比特幣的出現和監管爭議 118

5.1.3  比特幣的定義 120

5.1.4  從用戶角度觀察比特幣 121

5.1.5  向某人付款 121

5.2  數字密鑰和地址 127

5.2.1  比特幣中的私鑰 127

5.2.2  比特幣中的公鑰 128

5.2.3  比特幣中的地址 129

5.2.4  Base58Check編碼 130

5.2.5  虛榮地址 131

5.2.6  多簽名地址 132

5.3  比特幣交易 132

5.3.1  交易生命周期 132

5.3.2  交易費 133

5.3.3  交易池 133

5.3.4  交易數據結構 133

5.3.5  交易類型 137

5.3.6  幣基交易 140

5.3.7  合約 140

5.3.8  交易驗證 141

5.3.9  交易延展性 141

5.4  區塊鏈的結構 142

5.4.1  區塊的結構 142

5.4.2  區塊標頭的結構 143

5.4.3  創世區塊 145

5.5  挖礦 147

5.5.1  礦工的任務 148

5.5.2  挖礦獎勵 149

5.5.3  工作量證明 149

5.5.4  挖礦算法 149

5.5.5  哈希率 152

5.5.6  挖礦系統 153

5.5.7  礦池 155

5.6  小結 158

第6章  比特幣網絡和支付 159

6.1  比特幣網絡 159

6.1.1  比特幣網絡的節點 159

6.1.2  比特幣網絡常用協議消息 160

6.1.3  Wireshark 164

6.1.4  BIP 37和布隆過濾器 166

6.2  比特幣錢包 167

6.2.1  非確定性錢包 168

6.2.2  確定性錢包 168

6.2.3  分層確定性錢包 168

6.2.4  腦錢包 169

6.2.5  紙錢包 169

6.2.6  硬件錢包 170

6.2.7  在線錢包 170

6.2.8  移動錢包 170

6.3  比特幣支付 171

6.4  比特幣的創新 173

6.4.1  比特幣改進提案 174

6.4.2  高級協議 174

6.4.3  隔離見證 175

6.4.4  Bitcoin Cash 175

6.4.5  Bitcoin Unlimited 176

6.4.6  Bitcoin Gold 176

6.4.7  比特幣投資和買賣比特幣 177

6.5  小結 178

第7章  比特幣客戶端和API 179

7.1  比特幣客戶端的安裝 179

7.2  Bitcoin Core客戶端的類型 180

7.2.1  Bitcoind 180

7.2.2  Bitcoin-cli 180

7.2.3  Bitcoin-qt 181

7.3  設置比特幣網絡節點 181

7.4  設置源代碼 182

7.5  設置bitcoin.conf 183

7.6  在測試網中啟動節點 183

7.7  以regtest模式啟動節點 184

7.8  使用Bitcoin-cli進行實驗 184

7.9  比特幣編程和命令行接口 186

7.10  小結 187

第8章  山寨幣 189

8.1  山寨幣現狀 190

8.1.1  山寨幣的由來 190

8.1.2  吸引用戶的方法 190

8.1.3  山寨幣的交易 191

8.2  工作量證明方案的替代方法 193

8.2.1  存儲證明 195

8.2.2  權益證明 196

8.3  各種權益類型 197

8.3.1  幣齡證明 197

8.3.2  存款證明 197

8.3.3  燃燒證明 197

8.3.4  活動證明 197

8.4  不可外包的難題 198

8.5  難度目標重新調整算法 198

8.5.1  Kimoto重力井 199

8.5.2  黑暗重力波 200

8.5.3  DigiShield 200

8.5.4  多間隔難度調整系統 201

8.6  比特幣的局限性 201

8.6.1  隱私和匿名性 202

8.6.2  比特幣之上的擴展協議 203

8.7  開發山寨幣 206

8.7.1  共識算法 207

8.7.2  哈希算法 207

8.7.3  難度目標重新調整算法 207

8.7.4  塊間時間 207

8.7.5  區塊獎勵 208

8.7.6  獎勵減半率 208

8.7.7  區塊大小和交易大小 208

8.7.8  利率 208

8.7.9  幣齡 208

8.7.10  硬幣總供應 208

8.8  域名幣 209

8.8.1  Zooko三角形 209

8.8.2  合並挖礦 210

8.8.3  域名幣交易 211

8.8.4  獲取域名幣 211

8.8.5  生成域名幣記錄 214

8.9  萊特幣 216

8.9.1  Scrypt函數 216

8.9.2  萊特幣交易 218

8.9.3  萊特幣挖礦 219

8.9.4  軟件源代碼和錢包 219

8.10  質數幣 220

8.10.1  質數幣交易 220

8.10.2  質數幣挖礦指南 221

8.11  Zcash 223

8.11.1  Zcash交易 225

8.11.2  採礦指南 226

8.11.3  地址生成 228

8.11.4  GPU挖礦 229

8.11.5  下載並編譯nheqminer 230

8.11.6  首次代幣發行 231

8.11.7  ERC20代幣接口 232

8.12  小結 233

第9章  智能合約 235

9.1  智能合約的歷史 235

9.2  智能合約的定義 236

9.3  李嘉圖合約 238

9.4  智能合約模板 241

9.5  Oracle 243

9.6  智能Oracle 245

9.7  在區塊鏈上部署智能合約 245

9.8  DAO黑客入侵事件 247

9.9  小結 247

第10章  以太坊入門 249

10.1  以太坊簡介 249

10.1.1  黃皮書 250

10.1.2  有用的數學符號 251

10.1.3  以太坊區塊鏈 251

10.2  從用戶角度觀察以太坊 252

10.3  以太坊網絡 256

10.3.1  主網 256

10.3.2  測試網絡 256

10.3.3  私有網絡 256

10.4  以太坊生態系統的組成部分 257

10.4.1  密鑰和地址 258

10.4.2  賬戶 259

10.4.3  賬戶類型 259

10.5  交易和消息 260

10.5.1  合約創建交易 263

10.5.2  消息調用交易 264

10.5.3  消息 264

10.5.4  調用 266

10.5.5  交易驗證和執行 266

10.5.6  交易子狀態 266

10.6  以太坊區塊鏈中的狀態存儲 267

10.6.1  世界狀態 267

10.6.2  賬戶狀態 267

10.6.3  交易收據 269

10.7  以太幣 270

10.8  以太坊虛擬機 271

10.8.1  執行環境 273

10.8.2  機器狀態 275

10.8.3  迭代器函數 275

10.9  智能合約 276

10.10  本地合約 276

10.11  小結 278

第11章  深入瞭解以太坊 279

11.1  以太坊編程語言和操作碼 279

11.1.1  運行時字節碼 280

11.1.2  操作碼及其含義 281

11.1.3  算術運算 281

11.1.4  邏輯運算 282

11.1.5  加密運算 282

11.1.6  環境信息 282

11.1.7  區塊信息 283

11.1.8  堆棧、內存、存儲和流操作 284

11.1.9  入棧操作 284

11.1.10  復制操作 285

11.1.11  交換操作 285

11.1.12  日誌操作 285

11.1.13  系統操作 286

11.2  區塊和區塊鏈 287

11.2.1  區塊標頭 287

11.2.2  創世區塊 289

11.2.3  區塊驗證機制 290

11.2.4  區塊的最終確定 290

11.2.5  區塊難度 291

11.2.6  燃料 292

11.2.7  費用計劃 293

11.2.8  區塊鏈中的分叉 293

11.3  節點和礦工 294

11.3.1  共識機制 295

11.3.2  Ethash算法 296

11.3.3  CPU挖礦 297

11.3.4  GPU挖礦 298

11.3.5  基準測試 299

11.3.6  挖礦設備 299

11.3.7  礦池 301

11.4  錢包和客戶端軟件 301

11.4.1  Geth 302

11.4.2  Eth 302

11.4.3  Pyethapp 302

11.4.4  Parity 302

11.4.5  輕客戶端 302

11.4.6  安裝 303

11.4.7  Eth安裝 303

11.4.8  Mist瀏覽器 303

11.4.9  Geth客戶端應用 306

11.4.10  Geth控制台 306

11.4.11  用比特幣為賬戶註資 307

11.4.12  Parity安裝 308

11.4.13  使用Parity命令行創建賬戶 311

11.5  API、工具和DApp 311

11.5.1  在以太坊上開發的應用程序 311

11.5.2  工具 311

11.6  支持協議 312

11.6.1  Whisper 312

11.6.2  Swarm 312

11.7  可伸縮性、安全性和其他挑戰 314

11.8  交易和投資 314

11.9  小結 315

第12章  以太坊開發環境 317

12.1  測試網絡 318

12.2  建立以太坊私有網絡 319

12.2.1  網絡ID 319

12.2.2  創世文件 319

12.2.3  數據目錄 321

12.2.4  標志及其含義 321

12.2.5  靜態節點 322

12.3  啟動私有網絡 322

12.3.1  在私有網絡上運行Mist 327

12.3.2  使用Mist部署合約 329

12.3.3  私有網絡/本地以太坊的區塊瀏覽器 333

12.4  小結 335

 

第13章  開發工具和框架 337

13.1  以太坊開發生態系統分類 337

13.1.1  語言 339

13.1.2  編譯器 339

13.2  Solidity編譯器 339

13.2.1  在Linux上安裝 339

13.2.2  在macOS上安裝 340

13.3  集成開發環境 342

13.4  工具和庫 344

13.4.1  Node 344

13.4.2  EthereumJS 344

13.4.3  Ganache 346

13.4.4  MetaMask 346

13.4.5  Truffle 348

13.5  合約開發與部署 349

13.5.1  編寫 350

13.5.2  測試 351

13.6  Solidity語言 351

13.6.1  類型 351

13.6.2  值類型 351

13.6.3  布爾類型 352

13.6.4  整型 352

13.6.5 地址 353

13.6.6 常量 354

13.6.7 枚舉 354

13.6.8 函數類型 354

13.6.9 引用類型 355

13.6.10  全局變量 356

13.6.11  控制結構 356

13.6.12  事件 358

13.6.13  繼承 358

13.6.14 庫 359

13.6.15 函數 360

13.6.16 Solidity源代碼文件的組件 363

13.7  小結 364

第14章  Web3詳解 365

14.1  使用Web3庫 365

14.1.1  合約部署 366

14.1.2  POST請求 372

14.1.3  HTML和JavaScript前端 373

14.2  安裝和使用Web3.js 374

14.2.1  示例 375

14.2.2  創建一個Web3對象 377

14.2.3  通過調用任何Web3方法檢查可用性 377

14.2.4  合約函數 378

14.3  開發框架 380

14.4  Truffle應用示例 381

14.4.1  初始化Truffle 381

14.4.2  與合約的交互 387

14.4.3  另一個示例 389

14.4.4  示例項目—思想證明 393

14.5  關於Oracle 404

14.6  去中心化存儲 405

14.6.1  安裝和使用IPFS 406

14.6.2  關於Swarm協議 408

14.6.3  分佈式賬本 409

14.7  小結 409

第15章  超級賬本 411

15.1  Hyperledger項目 411

15.1.1  Fabric 412

15.1.2  Sawtooth Lake 412

15.1.3  Iroha 413

15.1.4  Burrow 413

15.1.5  Indy 413

15.1.6  Explorer 414

15.1.7  Cello 414

15.1.8  Composer 414

15.1.9  Quilt 415

15.2  Hyperledger即協議 415

15.3  參考架構 415

15.4  Hyperledger Fabric的要求和設計目標 418

15.4.1  模塊化方法 418

15.4.2  隱私性和機密性 418

15.4.3  可伸縮性 419

15.4.4  確定性交易 419

15.4.5  身份識別 419

15.4.6  可審核性 419

15.4.7  互通性 419

15.4.8  可移植性 420

15.4.9  豐富的數據查詢 420

15.5  關於Fabric 420

15.5.1  Hyperledger Fabric 421

15.5.2  成員資格服務 421

15.5.3  區塊鏈服務 422

15.5.4  共識服務 422

15.6  分佈式賬本 423

15.6.1  點對點協議 424

15.6.2  賬本存儲 425

15.6.3  鏈碼服務 425

15.6.4  事件 426

15.6.5  API和CLI 426

15.7  Fabric組件 426

15.7.1  對等者 426

15.7.2  排序者節點 427

15.7.3  客戶端 427

15.7.4  通道 427

15.7.5  世界狀態數據庫 427

15.7.6  交易 427

15.7.7  成員資格服務提供商 427

15.7.8  智能合約 428

15.7.9  加密服務提供商 428

15.8  區塊鏈上的應用 428

15.8.1  鏈碼實現 428

15.8.2  應用模式 430

15.8.3  Hyperledger Fabric中的共識 431

15.8.4  Hyperledger Fabric中的交易生命周期 431

15.9  Sawtooth Lake 434

15.9.1  消逝時間量證明 434

15.9.2  交易族 435

15.9.3  Sawtooth Lake中的共識 437

15.9.4  設置Sawtooth Lake開發環境 437

15.10  Corda 440

15.10.1  狀態對象 441

15.10.2  交易 442

15.10.3  共識 442

15.10.4  流 443

15.11  Corda組件 443

15.11.1  節點 443

15.11.2  許可服務 444

15.11.3  網絡映射服務 444

15.11.4  公證人服務 444

15.11.5  Oracle服務 445

15.11.6  交易 445

15.11.7  保管庫 446

15.11.8  CorDapp 446

15.11.9  設置Corda開發環境 446

15.12  小結 448

 

第16章  替代區塊鏈 449

16.1  Kadena 450

16.1.1  可伸縮性和機密性 450

16.1.2  Kadena的共識機制 450

16.1.3  Pact語言 451

16.1.4  Kadena區塊鏈 454

16.2  Ripple 454

16.2.1  節點 455

16.2.2  共識 456

16.2.3  組件 457

16.2.4  交易 457

16.2.5  Interledger 459

16.3 Stellar 460

16.4  Rootstock 461

16.4.1  側鏈 462

16.4.2  驅動鏈 462

16.5  Quorum 463

16.5.1  Transaction Manager 463

16.5.2  Crypto Enclave 463

16.5.3  QuorumChain 463

16.5.4  Network Manager 463

16.6  Tezos 464

16.7  Storj 465

16.8  MaidSafe 466

16.9  BigchainDB 467

16.10  MultiChain 467

16.11  Tendermint 467

16.11.1  Tendermint Core 468

16.11.2  Tendermint套接字協議 468

16.12  平臺和框架 469

16.12.1  Eris平臺 469

16.12.2  eris:db許可區塊鏈客戶端 470

16.13  小結 471

第17章  區塊鏈—代幣之外的應用 473

17.1  物聯網 473

17.1.1  物理對象層 475

17.1.2  設備層 475

17.1.3  網絡層 476

17.1.4  管理層 476

17.1.5  應用層 476

17.2  物聯網區塊鏈實驗 480

17.2.1  下載和安裝Raspbian操作系統 481

17.2.2  下載和安裝Geth客戶端 481

17.2.3  創建創世區塊 482

17.2.4  第一個節點的設置 484

17.2.5  Raspberry Pi節點設置 484

17.2.6  安裝庫和依賴項 486

17.2.7  硬件組件介紹 488

17.2.8  電路 489

17.2.9  開發智能合約 489

17.2.10  部署智能合約 493

17.2.11  使用JavaScript代碼交互 494

17.3  政府治理 496

17.3.1  邊境管制 496

17.3.2  投票 498

17.3.3  公民身份證明(身份證) 499

17.3.4  其他事項 500

17.4  醫療衛生 500

17.5  金融 501

17.5.1  保險 501

17.5.2  交易後結算 502

17.5.3  預防金融犯罪 503

17.6  數字媒體 503

17.7  小結 504

 

第18章  可伸縮性和其他挑戰 505

18.1  可伸縮性 505

18.1.1  網絡平面 506

18.1.2  共識平面 506

18.1.3  存儲平面 506

18.1.4  視圖平面 507

18.1.5  區塊大小增加 507

18.1.6  減少區塊間隔 508

18.1.7  可逆布隆查找表 508

18.1.8  分片 508

18.1.9  狀態通道 509

18.1.10  私有區塊鏈 510

18.1.11  權益證明 510

18.2  側鏈 510

18.2.1  子鏈 511

18.2.2  樹鏈 511

18.2.3  加快傳播時間 511

18.2.4  Bitcoin-NG 512

18.2.5  Plasma 513

18.3  隱私保護 513

18.3.1  不可區分混淆 514

18.3.2  同態加密 514

18.3.3  零知識證明 515

18.3.4  狀態頻道 515

18.3.5  安全多方計算 516

18.3.6  使用硬件提供機密性 516

18.3.7  CoinJoin 516

18.3.8  保密交易 517

18.3.9  MimbleWimble 517

18.4  安全性 518

18.4.1  智能合約安全性 518

18.4.2  形式驗證和分析 520

18.4.3  Oyente工具 522

18.5  小結 524

第19章  當前發展和未來展望 527

19.1  區塊鏈技術發展的新興趨勢 527

19.1.1  專用區塊鏈 527

19.1.2  企業級區塊鏈 528

19.1.3  私有區塊鏈 528

19.1.4  初創企業 528

19.1.5  濃厚的研究興趣 529

19.1.6  標準化 530

19.1.7  增強功能 530

19.1.8  現實世界中的實現 531

19.1.9  聯盟 532

19.1.10  應對技術挑戰 532

19.1.11  融合發展 532

19.1.12  區塊鏈技術教育 533

19.1.13  就業機會 533

19.1.14  加密經濟學 533

19.1.15  密碼學研究 534

19.1.16  新的編程語言 534

19.1.17  硬件研發 534

19.1.18  形式驗證方法和安全性研究 535

19.1.19  區塊鏈的替代品 535

19.1.20  互操作性的實現 535

19.1.21  區塊鏈即服務 536

19.1.22  減少耗電的努力 536

19.2  區塊鏈技術發展面臨的其他挑戰 536

19.2.1  法規監管 536

19.2.2  負面影響 537

19.3  區塊鏈研究主題 539

19.3.1  智能合約 539

19.3.2  集中化問題 539

19.3.3  加密功能的局限性 539

19.3.4  共識算法 540

19.3.5  可伸縮性 540

19.3.6  代碼混淆 540

19.4  區塊鏈項目簡介 540

19.4.1  以太坊上的Zcash 540

19.4.2  CollCo 541

19.4.3  Cello 541

19.4.4  Qtum 541

19.4.5  Bitcoin-NG 541

19.4.6  Solidus 542

19.4.7  Hawk 542

19.4.8  Town-Crier 542

19.4.9  SETLCoin 542

19.4.10  TEEChan 542

19.4.11  Falcon 543

19.4.12  Bletchley 543

19.4.13  Casper 544

19.5  區塊鏈開發工具簡介 544

19.5.1  Microsoft Visual Studio的Solidity擴展 544

19.5.2  MetaMask 544

19.5.3  Stratis 545

19.5.4  Embark 545

19.5.5  DAPPLE 545

19.5.6  Meteor 546

19.5.7  uPort 546

19.5.8  INFURA 546

19.6  與其他行業的融合發展 546

19.7  對區塊鏈技術未來發展的預測 547

19.8  小結 549