區塊鏈編程 Blockchain in Action

Bina Ramamurthy 史躍東 譯

  • 區塊鏈編程-preview-1
  • 區塊鏈編程-preview-2
  • 區塊鏈編程-preview-3
區塊鏈編程-preview-1

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

商品描述

"● 區塊鏈與其他分佈式系統的比較 ● Solidity開發 ● 身份、隱私和安全 ● 鏈上、鏈下數據及操作 "

目錄大綱

 

 

目    錄

 

 

 

 

 

第Ⅰ部分  區塊鏈編程入門

第1章  區塊鏈基礎知識 3

1.1  從比特幣到區塊鏈 4

1.2  什麽是區塊鏈 5

1.3  區塊鏈編程 7

1.3.1  去中心化基礎設施 7

1.3.2  分佈式賬本技術 10

1.3.3  去中介化協議 12

1.3.4  信任推動者 13

1.4  激勵場景 14

1.4.1  自動化與一致性數據收集 14

1.4.2  及時共享信息 15

1.4.3  可驗證的合規性 15

1.4.4  可審計的行為出處 15

1.4.5  治理指南 16

1.4.6  行為的歸屬 16

1.4.7  大型流行病管理 16

1.5  回顧 17

1.6  本章小結 17

第2章  智能合約 19

2.1  智能合約的概念 20

2.1.1  比特幣交易與智能合約交易 20

2.1.2  智能合約的功能 21

2.2  智能合約的設計 21

2.2.1  計數器用例圖 22

2.2.2  數據資產、對等參與者、角色、

規則和交易 23

2.2.3  從類圖到合約圖 24

2.3  開發智能合約代碼 25

2.3.1  Solidity語言 25

2.3.2  計數器的智能合約代碼 26

2.4  部署和測試智能合約 27

2.4.1  Remix IDE 27

2.4.2  部署和測試 29

2.4.3  關鍵點 30

2.5  什麽讓區塊鏈合約更智能 30

2.6  去中心化的航空系統用例 32

2.6.1  ASK的定義 32

2.6.2  操作順序 33

2.7  航空公司智能合約 35

2.7.1  對等參與者、數據資產、角色、

規則和交易 36

2.7.2  航空公司智能合約代碼 37

2.7.3  ASK智能合約部署及測試 39

2.8  智能合約設計的重要性 43

2.9  最佳實踐 44

2.10  本章小結 44

第3章  信任與完整性技術 47

3.1  信任和完整性的要素 48

3.1.1  信任 48

3.1.2  完整性 49

3.2  數字民主問題 50

3.2.1  設計解決方案 50

3.2.2  用例圖 50

3.2.3  漸進式代碼開發 51

3.2.4  用戶、資產和交易 52

3.2.5  有限狀態機圖 53

3.2.6  信任中介 56

3.2.7  修飾符的定義及使用 56

3.2.8  包含修飾符的合約圖 57

3.2.9  匯總代碼 58

3.3  測試 60

3.3.1  正面測試 62

3.3.2  負面測試 62

3.4  使用修飾符、require()和revert() 63

3.5  assert()聲明 64

3.6  最佳實踐 66

3.7  回顧 66

3.8  本章小結 67

第4章  從智能合約到Dapp 69

4.1  使用Truffle開發Dapp 71

4.1.1  開發過程 71

4.1.2  安裝Truffle 71

4.1.3  構建Dapp棧 73

4.2  安裝Ganache測試鏈 73

4.3  開發智能合約 74

4.3.1  創建項目文件夾 76

4.3.2  添加智能合約並編譯 77

4.3.3  配置區塊鏈網絡 78

4.3.4  部署智能合約 78

4.4  開發並配置網絡應用 79

4.4.1  開發ballot-app 80

4.4.2  啟動ballot-app 82

4.4.3  安裝MetaMask錢包 83

4.4.4  與Ballot-Dapp交互 85

4.4.5  將網絡客戶端連接到智能合約 86

4.5  回顧 88

4.6  最佳實踐 88

4.7  本章小結 89

第Ⅱ部分  端到端的Dapp開發技術

第5章  安全與隱私 93

5.1  密碼學基礎 94

5.1.1  對稱密鑰加密 95

5.1.2  非對稱密鑰加密 95

5.2  公鑰密碼學與區塊鏈的相關性 96

5.2.1  生成以太坊地址 96

5.2.2  交易簽名 97

5.2.3  在Ropsten上部署智能合約 97

5.2.4  以助記符的形式使用私鑰 98

5.2.5  填充區塊鏈錢包 98

5.2.6  在Ropsten上進行部署和交易 99

5.3  哈希基礎知識 101

5.3.1  文檔的數字簽名 102

5.3.2  分佈式賬本中的哈希數據 102

5.3.3  以太坊區塊頭中的哈希值 102

5.3.4  Solidity哈希函數 103

5.4  哈希的應用 104

5.4.1  盲拍設計 104

5.4.2  盲拍智能合約 105

5.4.3  隱私及安全方面 106

5.4.4  測試BlindAuction合約 108

5.4.5  測試計劃 109

5.5  回顧 111

5.6  最佳實踐 111

5.7  本章小結 111

第6章  鏈上和鏈下數據 113

6.1  鏈上數據 115

6.2  盲拍用例 116

6.2.1  鏈上事件數據 116

6.2.2  帶有事件的盲拍 117

6.2.3  使用Web用戶界面進行測試 121

6.2.4  使用web3 API訪問鏈上數據 125

6.3  鏈下數據:外部數據源 126

6.4  ASK航空公司系統 128

6.4.1  ASK概念 128

6.4.2  Airlines智能合約 130

6.4.3  ASK鏈上數據 133

6.4.4  ASK鏈下數據 133

6.4.5  ASK Dapp的開發流程 133

6.4.6  ASK Web用戶界面 134

6.4.7  合並 135

6.4.8  使用ASK Dapp進行交互 136

6.5  回顧 138

6.6  最佳實踐 139

6.7  本章小結 139

第7章  web3和通道Dapp 141

7.1  web3 API 142

7.1.1  Dapp棧中的web3 142

7.1.2  web3包 143

7.2  通道(channel)的概念 144

7.3  微支付通道 145

7.4  微支付通道用例 145

7.4.1  傳統的銀行解決方案 146

7.4.2  用戶和角色 149

7.4.3  鏈上和鏈下操作 149

7.4.4  MPC智能合約(MPC-contract) 151

7.4.5  MPC應用部署(MPC-app) 153

7.4.6  MPC序列圖 156

7.4.7  MPC執行演示 157

7.4.8  訪問web3 provider 160

7.4.9  MPC擴展 162

7.4.10  微支付通道的意義 163

7.4.11  其他web3包 163

7.5  回顧 164

7.6  最佳實踐 164

7.7  本章小結 165

第8章  使用Infura進行公開部署 167

8.1  節點和網絡 167

8.2  Infura區塊鏈基礎設施 168

8.3  使用Infura進行公開部署 169

8.4  公開部署的端到端流程 171

8.4.1  賬號生成及管理 172

8.4.2  選擇網絡並導入賬戶 173

8.4.3  從faucet處收集以太幣 174

8.4.4  在Infura上創建區塊鏈節點 175

8.4.5  安裝HDWalletProvider 176

8.4.6  配置並部署智能合約 176

8.4.7  配置和部署Web應用 177

8.5  在Infura上部署盲拍Dapp 178

8.5.1  設置盲拍環境 178

8.5.2  分散的參與者 180

8.5.3  配置和部署受益人賬戶 180

8.5.4  配置和部署競標者 182

8.5.5  與已部署的盲拍Dapp交互 183

8.6  在Infura上部署MPC Dapp 186

8.6.1  配置MPC環境 186

8.6.2  配置並部署組織者 188

8.6.3  配置並部署工人 191

8.7  回顧 192

8.8  最佳實踐 192

8.9  本章小結 193

第Ⅲ部分  路線圖及未來之路

第9章  資產代幣化 197

9.1  以太坊標準 198

9.1.1  以太坊改進提案 198

9.1.2  ERC20代幣標準 199

9.1.3  可替代和不可替代的代幣 200

9.2  RES4:不可替代的房地產代幣 201

9.2.1  用例圖 202

9.2.2  合約圖 203

9.2.3  RES4 ERC721兼容代幣 203

9.2.4  RES4 Dapp 205

9.2.5  與RES4 Dapp進行交互 207

9.3  回顧 213

9.4  最佳實踐 213

9.5  本章小結 214

第10章  測試智能合約 215

10.1  智能合約測試的重要性 215

10.1.1  測試類型 216

10.1.2  測試程序的語言選擇 216

10.2  測試計數器智能合約 216

10.2.1  編寫計數器測試腳本 217

10.2.2  正面測試和負面測試 220

10.2.3  運行測試腳本 220

10.3  測試投票智能合約 221

10.3.1  編寫投票測試腳本 221

10.3.2  執行投票測試腳本 223

10.3.3  describe()和it()測試函數 224

10.4  回顧測試腳本的編寫 224

10.5  盲拍測試腳本 225

10.5.1  分析describe()和it()的代碼 227

10.5.2  執行盲拍測試腳本 227

10.5.3  完整的拍賣流程 228

10.6  回顧 228

10.7  最佳實踐 229

10.8  本章小結 229

第11章  Dapp開發路線圖 231

11.1  激勵場景:教育證書 231

11.2  路線圖 232

11.3  問題描述 233

11.3.1  DCC應用的背景 233

11.3.2  設計選擇 234

11.4  分析與設計 234

11.4.1  操作流程及有限狀態機 235

11.4.2  合約圖 236

11.5  開發智能合約 237

11.5.1  數據結構 237

11.5.2  事件 237

11.5.3  修飾符 237

11.5.4  函數 237

11.6  本地部署 241

11.7  使用truffle進行自動化測試 242

11.8  開發Web應用 243

11.8.1  用戶界面設計 244

11.8.2  編寫app.js 246

11.9  測試DCC-Dapp 246

11.10  公開部署 247

11.10.1  在Ropsten-Infura上部署 247

11.10.2  創建用於分發的Web

客戶端 249

11.11  回顧 250

11.12  最佳實踐 250

11.13  本章小結 250

第12章  區塊鏈:未來之路 253

12.1  去中心化身份 253

12.2  自我管理身份 254

12.3  共識與完整性 256

12.3.1  POW 257

12.3.2  POS 257

12.3.3  拜占庭容錯共識 257

12.4  可擴展性 258

12.5  可擴展性解決方案 259

12.5.1  旁路通道 259

12.5.2  區塊大小 259

12.5.3  網絡速度 259

12.6  隱私 259

12.7  公共、私有和許可網絡 260

12.8  保密性 261

12.8.1  開放信息 261

12.8.2  解決方案 262

12.9  安全性 262

12.10  使用加密貨幣進行保護 263

12.11  訪問鏈下數據(預言機) 264

12.12  從基礎到實用系統 265

12.13  展望未來 266

12.14  最佳實踐 267

12.15  回顧 267

12.16  本章小結 268

附錄A  UML區塊鏈設計模型 269

附錄B  設計原則 277