本書提出和論述了智能合約工程的概念、主要內(nèi)容和技術體系,在介紹相關思想、理念,以及現(xiàn)有主要智能合約系統(tǒng)基本原理的基礎上,主要論述了智能合約的工程化開發(fā)方法、智能合約法律化、智能合約形式化設計與驗證方法、智能合約即服務、智能合約并行化等新理論和方法。本書適合從事區(qū)塊鏈和智能合約研究開發(fā)的科研人員參考,以及大學相關專業(yè)的本科生和研究生使用。
胡凱,男,工學博士,教授,博士生導師。研究內(nèi)容包括:分布式系統(tǒng)、機群和網(wǎng)格計算、計算機仿真技術、區(qū)塊鏈等。先后主持國家自然基金4項,核高基課題,多項863基金項目,航空科學基金以及航空航天領域科研項目。近年來在國內(nèi)外期刊和學術會議上發(fā)表SCI/EI論文50余篇,編寫教材和著作共3部。
第1章 智能合約技術革命 1
1.1 區(qū)塊鏈帶來的技術革命 1
1.1.1 區(qū)塊鏈帶火了智能合約 1
1.1.2 數(shù)字社會發(fā)展趨勢 3
1.1.3 合約的意義 4
1.2 智能合約的價值 5
1.2.1 智能合約的起源 5
1.2.2 智能合約的定義 6
1.2.3 智能合約與區(qū)塊鏈結合的意義 8
1.3 智能合約的發(fā)展 10
1.3.1 智能合約的特點 10
1.3.2 智能合約的應用 12
1.3.3 智能合約存在的問題 14
本章小結 15
第2章 區(qū)塊鏈基礎 16
2.1 區(qū)塊鏈的基本思想 16
2.2 區(qū)塊鏈系統(tǒng)結構 18
2.2.1 區(qū)塊鏈系統(tǒng)分層架構 18
2.2.2 區(qū)塊鏈的分類與典型結構 21
2.2.3 區(qū)塊鏈結構的特點 23
2.3 區(qū)塊鏈的數(shù)據(jù)結構 25
2.3.1 區(qū)塊及鏈式結構 25
2.3.2 哈希算法 26
2.3.3 Merkle樹 28
2.4 區(qū)塊鏈共識算法 32
2.4.1 PoW算法 33
2.4.2 PoS算法 33
2.4.3 DPoS算法 34
2.4.4 拜占庭將軍問題 34
2.4.5 PBFT算法 37
2.5 區(qū)塊鏈可擴展技術 38
2.5.1 側鏈技術 39
2.5.2 分叉技術 40
2.5.3 中間轉發(fā) 41
2.5.4 未來區(qū)塊鏈架構 42
2.6 區(qū)塊鏈設計案例 44
本章小結 47
第3章 智能合約設計原理 48
3.1 智能合約模型與設計 48
3.1.1 智能合約基本模型 48
3.1.2 模型應用 49
3.1.3 智能合約存儲模型 53
3.1.4 智能合約執(zhí)行模型 54
3.1.5 智能合約系統(tǒng)設計 56
3.2 眾籌智能合約設計 59
3.2.1 眾籌區(qū)塊鏈架構 59
3.2.2 眾籌智能合約的業(yè)務設計 61
3.2.3 眾籌智能合約的系統(tǒng)設計 62
3.2.4 眾籌智能合約的詳細設計 65
3.2.5 智能行業(yè)執(zhí)行機制設計 67
3.3 養(yǎng)老保險智能合約設計 69
3.3.1 原生智能合約 70
3.3.2 用戶智能合約 74
3.3.3 智能合約自動觸發(fā)機制 75
本章小結 76
第4章 以太坊智能合約 77
4.1 以太坊基本原理 77
4.1.1 以太坊介紹 77
4.1.2 以太坊基本概念 78
4.1.3 以太坊系統(tǒng)架構 81
4.2 以太坊智能合約原理 82
4.2.1 智能合約模型 82
4.2.2 智能合約運行原理 83
4.3 以太坊智能合約編程方法 84
4.3.1 搭建本地鏈 84
4.3.2 合約編寫 86
4.3.3 合約發(fā)布 87
4.3.4 合約執(zhí)行 87
4.4 以太坊智能合約編程示例 87
4.4.1 場景介紹 87
4.4.2 偽代碼 88
4.4.3 合約代碼 89
4.4.4 合約測試 90
4.5 案例:基于以太坊的多簽錢包 90
本章小結 93
第5章 Fabric智能合約 94
5.1 Fabric原理 94
5.1.1 Fabric簡介 94
5.1.2 服務模塊 95
5.1.3 基本術語 96
5.2 Fabric智能合約原理 99
5.2.1 智能合約模型 99
5.2.2 智能合約實現(xiàn) 100
5.3 Fabric智能合約編程方法 103
5.3.1 構建Fabric智能合約開發(fā)環(huán)境 103
5.3.2 鏈碼生成 105
5.3.3 鏈碼部署 107
5.3.4 鏈碼執(zhí)行 108
5.4 Fabric智能合約編程示例 108
5.4.1 場景介紹 108
5.4.2 偽代碼 110
5.4.3 合約代碼 111
5.4.4 合約測試 117
本章小結 118
第6章 其他典型智能合約 119
6.1 EOS智能合約 119
6.1.1 什么是EOS 119
6.1.2 架構與原理 119
6.1.3 基本術語 120
6.1.4 EOS合約虛擬機 122
6.1.5 EOS智能合約簡介 124
6.1.6 深入理解EOS智能合約 127
6.2 Diem智能合約 130
6.2.1 什么是Diem 130
6.2.2 架構與原理 130
6.2.3 基本術語 132
6.2.4 Diem合約虛擬機 133
6.2.5 Diem智能合約簡介 134
6.2.6 深入理解Diem智能合約 136
6.3 FISCO BCOS智能合約 137
6.3.1 什么是FISCO BCOS 137
6.3.2 架構與原理 137
6.3.3 基本術語 139
6.3.4 FISCO BCOS合約虛擬機 140
6.3.5 FISCO BCOS智能合約簡介 141
6.3.6 深入理解FISCO BCOS智能合約 144
6.4 智能合約綜合分析對比 145
6.4.1 典型區(qū)塊鏈平臺特征對比 145
6.4.2 合約虛擬機對比 146
6.4.3 合約語言對比 147
本章小結 147
第7章 智能合約工程 149
7.1 智能合約工程的提出 149
7.1.1 智能合約工程思想的起源 149
7.1.2 智能合約工程定義 151
7.1.3 智能合約工程體系 152
7.2 智能合約法律化 155
7.2.1 計算法律學的啟示 155
7.2.2 法律代碼科技 157
7.3 形式化設計與驗證方法 158
7.3.1 形式化方法 158
7.3.2 形式化驗證 159
7.3.3 形式化描述語言與建模驗證工具 162
7.3.4 自動代碼生成技術 164
7.4 其他關鍵技術 166
7.4.1 智能合約開發(fā)方法 166
7.4.2 智能合約即服務 167
7.4.3 智能合約并行化 169
7.4.4 一致性測試 170
本章小結 171
第8章 智能合約開發(fā)過程方法 173
8.1 智能合約開發(fā) 173
8.1.1 智能合約的生命周期 173
8.1.2 智能合約開發(fā)中面臨的問題 174
8.1.3 智能合約設計的基本原則 174
8.2 智能合約過程模型 175
8.2.1 形式審計瀑布模型 176
8.2.2 模組化螺旋開發(fā)模型 177
8.2.3 基于構件的領域開發(fā)模型 177
8.2.4 多源需求演繹開發(fā)模型 178
8.3 智能合約的柔性模組化設計模式 179
8.3.1 面向條件的智能合約編程模式 180
8.3.2 智能合約生命周期控制合約 185
8.3.3 鏈上鏈下協(xié)同合約模式 186
8.4 智能合約與運行環(huán)境的一致性測試 190
8.4.1 測試序列生成算法 191
8.4.2 基于SDL的TTCN一致性測試 191
8.4.3 測試用例和測試工具 192
本章小結 194
第9章 法律代碼科技 195
9.1 智能合約的法律問題 195
9.1.1 代碼即法律的趨勢 195
9.1.2 代碼的力量 197
9.1.3 法律和技術的融合 200
9.1.4 法律化的問題 202
9.2 基于合同模板的合約法律化 204
9.2.1 合約法律化探索 204
9.2.2 智能合約模板管理系統(tǒng) 205
9.2.3 基于模板的智能合約案例 207
9.3 法律代碼化的路徑探索 210
9.3.1 從計算法律學到法律代碼科技 210
9.3.2 CommonAccord項目的啟示 211
9.3.3 法律代碼社區(qū) 215
本章小結 221
第10章 智能合約形式化設計與驗證方法 222
10.1 智能合約形式化設計與驗證方法概述 222
10.1.1 形式化設計與驗證方法 222
10.1.2 智能合約形式化方法應用 226
10.2 基于Promela的智能合約形式化設計與驗證方法 230
10.2.1 模型檢測技術 230
10.2.2 Promela語言與SPIN模型工具 231
10.2.3 基于Promela的智能合約建模 233
10.2.4 遠程購物場景案例 237
10.3 基于Event-B的智能合約形式化設計與驗證方法 240
10.3.1 基于Event-B的智能合約形式化設計與驗證方法概述 241
10.3.2 Event-B建模方法 242
10.3.3 智能合約蜜罐問題驗證 244
本章小結 249
第11章 智能合約即服務 251
11.1 智能合約即服務原理 251
11.1.1 區(qū)塊鏈即服務技術 251
11.1.2 智能合約即服務的架構 255
11.2 智能合約微服務化 257
11.2.1 智能合約微服務化的意義 257
11.2.2 智能合約微服務架構 259
11.2.3 智能合約微服務的封裝 260
11.3 驗證即服務 262
11.3.1 VaaS的重要意義 262
11.3.2 VaaS體系結構 264
11.3.3 VaaS驗證服務 265
11.4 智能合約即服務的應用——霧計算 268
11.4.1 智能合約的霧計算架構 268
11.4.2 霧計算合約服務執(zhí)行機制 270
11.4.3 云霧端智能合約交互策略 271
11.4.4 狀態(tài)鎖定上鏈協(xié)議 272
本章小結 274
第12章 智能合約并行化 275
12.1 智能合約并行化概述 275
12.1.1 并行化技術 275
12.1.2 智能合約的執(zhí)行流程 276
12.1.3 智能合約并行化思想 278
12.2 智能合約并行化技術 280
12.2.1 數(shù)據(jù)庫事務隔離技術 281
12.2.2 基于交易預分類的并行策略 282
12.2.3 基于STM的并行策略 283
12.3 智能合約并行化設計 284
12.3.1 智能合約并行化設計目標 284
12.3.2 支持回滾的虛擬機TVM設計 286
12.3.3 并行調(diào)度算法 288
本章小結 291
參考文獻 292