區塊鏈開發實戰:基於 JavaScript 的公鏈與 DApp 開發
內容描述
本書系統地介紹區塊鏈應用開發技術,從基本概念開始介紹,帶領讀者用300行代碼開發一個區塊鏈系統,使得讀者快速入門。然後由淺入深地講解DApp開發的技術與案例,只要懂得JavaScript就可以開發自己的DApp。
本書共分三大部分。第一部分“區塊鏈開發概述”介紹區塊鏈的基礎概念和主要平臺,還介紹了一個簡單的區塊鏈系統代碼實現,使得讀者直觀地瞭解區塊鏈基本概念。第二部分“Asch 源碼解讀”介紹一個區塊鏈應用開發平臺的實現原理,包括Asch的架構、啟動和配置、賬戶和安全、共識機制、區塊鏈的數據結構、交易流程、跨鏈實現等。第三部分“DApp 開發實戰”介紹如何開發DApp,並對一個完整案例CCTime進行了剖析,包含DApp的設計思路、開發流程與測試方法。
本書從一個只有300行代碼的小型區塊鏈系統實現入手,帶領讀者快速入門區塊鏈開發。然後由淺入深地講解區塊鏈的基本原理,以及DApp開發的技術與案例,只要懂得JavaScript 就可以開發自己的DApp。
主要內容包括:
自己動手實現一個區塊鏈系統。
智能合約的概念及案例。
區塊鏈使用的加密算法,以及共識機制原理。
一個區塊的產生、打包交易、驗證,以及如何添加到鏈上等流程。
區塊鏈中交易的核心流程。
跨鏈實現原理,以及Asch的跨鏈實現方法。
DApp的開發思路,以及合約、接口、前端的實現等。
目錄大綱
序言
前言
第一部分區塊鏈開發概述
第1章自己動手實現一個區塊鏈系統3
1.1從比特幣到區塊鏈3
1.1.1比特幣的誕生和發展3
1.1.2區塊鏈5
1.2用300行代碼開發一個區塊鏈系統13
1.2.1區塊和區塊鏈的創建13
1.2.2工作量證明19
1.2.3提供和區塊鏈進行交互的API22
1.3本章總結30
第2章DApp開發簡介32
2.1智能合約32
2.2 DApp簡介34
2.3區塊鏈應用開發平台簡介37
2.3.1以太坊38
2.3.2 Asch40
2.3.3 Hyperledger41
2.4本章總結42
第二部分Asch源碼解讀
第3章Asch—區塊鏈應用開發平台47
3.1 Asch的誕生和架構47
3.2開發工具50
3.3客戶端的基本使用50
3.4如何基於Asch註冊自己的資產55
3.5 DApp案例簡介57
3.6本章總結58
第4章Asch源碼概覽59
4.1 Asch生態架構59
4.2 asch庫簡要解讀60
4.2.1數據結構61
4.2.2合約62
4.2.3接口63
4.2.4配置文件64
4.3 asch-core庫簡要解讀64
4.4 Asch主鏈的啟動流程66
4.4.1 app.js66
4.4.2 index.js68
4.4.3 runtime.js69
4.4.4 init.js70
4.5本章總結72
第5章賬戶與安全73
5.1區塊鏈裡的密碼學73
5.1.1非對稱加密73
5.1.2 ECDSA算法75
5.2 Asch的賬戶生成流程80
5.2.1 BIP 3980
5.2.2 ED2551982
5.3 Asch的賬戶類型82
5.4本章總結84
第6章共識機制86
6.1拜占庭將軍問題86
6.2區塊鏈的共識算法88
6.3從DPoS到PBFT89
6.3.1 DPoS算法89
6.3.2 PBFT算法91
6.4共識算法源碼解讀93
6.4.1 base/consensus.js94
6.4.2 core/delegates.js96
6.5本章總結102
第7章區塊104
7.1區塊鏈的數據結構104
7.2區塊的源碼解讀105
7.2.1 base/block. js106
7.2.2 core/blocks.js110
7.3本章總結122
第8章交易123
8.1 Asch上的交易類型123
8.2交易的生命週期及其實現124
8.2.1創建交易124
8.2.2廣播交易127
8.2.3驗證交易127
8.2.4寫入區塊鏈129
8.3本章總結130
第9章跨鏈實現132
9.1跨鏈技術的提出與探索132
9.2比特幣多簽名交易的實現135
9.2.1 m-of-n多簽名交易的腳本135
9.2.2多簽名腳本的執行136
9.2.3比特幣裡實現多簽名交易137
9.2.4兌現多簽名交易142
9.3 Asch的跨鏈實現149
9.3.1網關提案的發起與投票150
9.3.2跨鏈賬戶的開通156
9.3.3對跨鍊網關的充值與提現159
9.3.4對跨鍊網關的提現160
9.4本章總結166
第三部分DApp開發實戰
第10章DApp設計與開發環境搭建169
10.1 DApp整體設計169
10.1.1前期準備169
10.1.2業務需求描述170
10.1.3角色171
10.1.4經濟模型172
10.1. 5代碼設計174
10.1.6 DApp的目錄結構176
10.2開發環境搭建184
10.2.1 Asch的網絡類型184
10.2.2配置localnet185
10.2.3 DApp Demo187
10.3本章總結193
第11章DApp合約開發與接口實現194
11.1 DApp合約的開發194
11.1.1創建頻道(createChannel)195
11.1.2更新頻道(updateChannel)198
11.1.3發布文章(postArticle)199
11.1.4打賞文章(voteArticle)202
11.1.5抽獎設計207
11.1 .6發布評論(postComment)208
11.1.7點贊評論(likeComment)209
11.1.8舉報(report)210
11.1.9結算抽獎(calculatePrize)211
11.1.10領取獎勵(getReward)214
11.2 DApp接口的實現215
11.2.1頻道接口217
11.2.2文章接口219
11.2.3投票接口222
11.3 DApp的前端實現224
11.3.1登錄224
11.3.2調用合約225
11.3.3調用接口226
11.4本章總結226
第12章DApp測試227
12.1測試準備227
12.1.1初始化函數227
12.1.2區塊等待229
12.1.3賬戶生成與轉賬229
12.2合約流程測試233
12.3本章總結238