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