文章资料-情感.机器.认知-电子AI 游客
区块链技术
【9931】by1 2019-03-08 最后编辑2019-03-09 18:25:49 浏览632

timg01).jpg


本书全面介绍了区块链技术的理论和实践,涵盖了理解区块链技术的全部内容。在阅读完本书后,读者将能够深入了解区块链技术的内部工作原理,并具备开发区块链应用程序的能力。本书包含了与区块链技术相关的所有主题,涉及密码学、加密货币、比特币、以太坊等,以及用于区块链开发的各种平台和工具。

 

目    录

第1章  区块链 1

1.1  分布式系统 2

1.1.1  CAP定理 3

1.1.2  拜占庭将军问题 4

1.1.3  一致性 4

1.2  区块链发展史 5

1.2.1  电子现金 6

1.2.2  电子现金的概念 6

1.3  区块链简介 8

1.3.1  区块链技术的各种定义 9

1.3.2  区块链中的一般元素 10

1.3.3  区块链特性 11

1.3.4  区块链技术应用 13

1.3.5  区块链发展层次 13

1.4  区块链类型 14

1.4.1  公有区块链 14

1.4.2  私有区块链 14

1.4.3  半私有区块链 15

1.4.4  侧链技术 15

1.4.5  许可账本 15

1.4.6  分布式账本 15

1.4.7  共享账本 15

1.4.8  全私有和专有区块链 15

1.4.9  标记化区块链 16

1.4.10  无代币区块链 16

1.4.11  区块链中的共识 16

1.5  CAP定理和区块链 18

1.6  区块链的优点和局限性 18

1.7  区块链技术的限制和挑战 19

1.8  本章小结 20

第2章  去中心化 21

2.1  基于区块链的去中心化 21

2.2  去中心化方法 23

2.2.1  非中介化 23

2.2.2  竞争 23

2.3  去中心化流程 24

2.4  区块链和完整的生态圈去中心化操作 25

2.4.1  存储 25

2.4.2  通信 26

2.4.3  计算 27

2.5  智能合约 28

2.6  去中心化组织 28

2.7  去中心化自治组织 29

2.8  去中心化自治企业 29

2.9  去中心化自治社会 30

2.10  去中心化应用程序 30

2.10.1  去中心化应用程序的需求条件 30

2.10.2  DAPP操作 31

2.11  去中心化平台 31

2.12  本章小结 32

第3章  密码学和基本技术 33

3.1  简介 33

3.1.1  数学知识 33

3.1.2  密码学 35

3.1.3  保密性 35

3.1.4  完整性 35

3.1.5  认证 35

3.1.6  不可否认性 36

3.1.7  问责制 36

3.2  密码原语 37

3.2.1  对称加密 38

3.2.2  块密码 39

3.2.3  数据加密标准 42

3.2.4  高级加密标准(AES) 42

3.3  非对称加密 45

3.3.1  整数分解 47

3.3.2  离散对数 47

3.3.3  椭圆曲线 47

3.4  公钥和私钥 48

3.4.1  RSA 48

3.4.2  离散对数问题 54

3.4.3  密码原语 62

3.4.4  哈希函数 62

3.4.5  椭圆曲线数字签名算法(ECDSA) 71

3.5  金融市场和交易 76

3.5.1  交易 77

3.5.2  交易所 77

3.5.3  交易的生命周期 78

3.5.4  订单预期者 79

3.5.5  市场操控 79

3.6  本章小结 79

第4章  比特币 81

4.1  比特币概述 82

4.1.1  比特币的概念 83

4.1.2  密钥和地址 83

4.1.3  比特币中的公钥 84

4.1.4  比特币中的私钥 84

4.1.5  比特币货币单位 85

4.1.6  Base58Check编码 85

4.1.7  虚地址 86

4.2  交易/事务 87

4.2.1  交易的生命周期 87

4.2.2  交易的结构 87

4.2.3  交易类型 90

4.3  区块链 94

4.3.1  区块链结构 94

4.3.2  区块头结构 94

4.3.3  创始区块 96

4.3.4  比特币网络 103

4.3.5  钱包 109

4.4  比特币支付 112

4.4.1  比特币投资和比特币交易 113

4.4.2  比特币安装 114

4.4.3  比特币编程和命令行接口 120

4.4.4  比特币改进协议(BIP) 120

4.5  本章小结 121

第5章  替代币 123

5.1  理论基础 125

5.1.1  工作量证明的替代方案 125

5.1.2  难度调整和目标重定位算法 128

5.2  比特币中的限制条件 130

5.2.1  隐私和匿名性 130

5.2.2  比特币上的扩展协议 131

5.2.3  替代币的开发 133

5.3  域名币 135

5.4  莱特币 140

5.5  素数币 142

5.5.1  素数币交易 143

5.5.2  挖掘规则 144

5.6  Zcash 145

5.6.1  Zcash交易 146

5.6.2  挖掘规则 147

5.6.3  GPU挖掘 150

5.7  本章小结 152

第6章  智能合约 153

6.1  发展历史 153

6.2  定义 153

6.3  李嘉图合约 155

6.3.1  智能合约模板 158

6.3.2  Oracle 159

6.3.3  Smart Oracle 160

6.3.4  在区块链上发布智能合约 160

6.3.5  DAO 161

6.4  本章小结 161

第7章  以太坊 163

7.1  简介 163

7.1.1  以太坊客户端和发布 163

7.1.2  以太坊栈 164

7.2  以太坊区块链 164

7.2.1  货币(ETH和ETC) 165

7.2.2  分叉 165

7.2.3  gas 166

7.2.4  共识机制 166

7.2.5  世界状态 167

7.2.6  交易 168

7.2.7  合约生成型交易 170

7.2.8  消息调用型交易 171

7.3  以太坊区块链中的元素 172

7.3.1  以太坊虚拟机 172

7.3.2  执行环境 173

7.3.3  操作码及其含义 176

7.4  预编译合同 182

7.4.1  椭圆曲线公钥恢复函数 182

7.4.2  SHA256位哈希函数 182

7.4.3  RIPEMD160位哈希函数 182

7.4.4  恒等函数 182

7.5  账户 183

7.6  区块 183

7.6.1  区块头 184

7.6.2  创始区块 185

7.6.3  交易收据 186

7.6.4  交易验证和执行 186

7.6.5  区块验证机制 187

7.7  Ether 189

7.7.1  gas 189

7.7.2  费用标准 190

7.8  消息 190

7.9  挖掘 191

7.9.1  Ethash 192

7.9.2  CPU挖掘 192

7.9.3  GPU挖掘 193

7.9.4  挖掘设备 194

7.10  客户端和矿工 196

7.11  贸易与投资 204

7.12  黄皮书 205

7.13  以太坊网络 206

7.13.1  MainNet 206

7.13.2  TestNet 206

7.13.3  专用网络 206

7.14  所支持的协议 207

7.15  以太坊应用程序 208

7.16  可扩展性和安全问题 208

7.17  本章小结 208

第8章  以太坊开发 211

8.1  配置开发环境 211

8.1.1  TestNet(Ropsten) 211

8.1.2  配置PrivateNet 212

8.1.3  启动私有网络 214

8.1.4  在PrivateNet上运行Mist 218

8.1.5  利用Mist部署合约 219

8.2  开发工具和客户端 223

8.2.1  开发语言 224

8.2.2  编译器 224

8.2.3  工具和库 228

8.2.4  EthereumJS 230

8.2.5  合约的开发和部署 231

8.3  Solidity语言 231

8.3.1  值类型 232

8.3.2  字面值 233

8.3.3  枚举值 234

8.3.4  函数类型 234

8.3.5  引用类型 234

8.3.6  映射 235

8.3.7  全局变量 236

8.3.8  控制结构 236

8.4  引入Web3 241

8.4.1  POST请求 247

8.4.2  HTML和JavaScript前端 248

8.4.3  开发框架 255

8.5  本章小结 281

第9章  超级账本 283

9.1  项目 283

9.1.1  Fabric 283

9.1.2  Sawtooth lake 283

9.1.3  Iroha 284

9.1.4  Blockchain explorer 284

9.1.5  Fabric链式工具 284

9.1.6  Fabric SDK Py 284

9.1.7  Corda 285

9.2  超级账本协议 285

9.2.1  参考架构 285

9.2.2  需求条件 286

9.2.3  隐私和保密性 286

9.2.4  身份 287

9.2.5  可审核性 287

9.2.6  互操作性 287

9.2.7  可移植性 287

9.3  Fabric 287

9.4  Hyperledger Fabric 288

9.4.1  Fabric体系结构 288

9.4.2  Fabric组件 291

9.5  Sawtooth lake 293

9.5.1  PoET 293

9.5.2  交易族 293

9.5.3  Sawtooth中的共识机制 295

9.5.4  开发环境 295

9.6  Corda 298

9.6.1  体系结构 299

9.6.2  组件 300

9.6.3  开发环境 302

9.7  本章小结 303

第10章  替代区块链方案 305

10.1  区块链 305

10.2  平台 318

10.2.1  BlockApps 318

10.2.2  Eris 324

10.3  本章小结 326

第11章  货币之外的区块链技术 327

11.1  物联网 327

11.2  政府机构 344

11.2.1  边境管理 344

11.2.2  选票机制 346

11.2.3  身份证 346

11.2.4  其他领域 347

11.3  保健事业 347

11.4  金融行业 348

11.4.1  保险行业 348

11.4.2  交易后的结算 349

11.4.3  防范金融犯罪 349

11.5  媒体行业 350

11.6  本章小结 350

第12章  可扩展性和其他挑战 351

12.1  可扩展性 351

12.1.1  增加区块链尺寸 352

12.1.2  减少区块间隔时间 352

12.1.3  可逆的Bloom查找表 353

12.1.4  分片技术 353

12.1.5  状态通道 353

12.1.6  私有区块链 354

12.1.7  权益证明 354

12.1.8  侧链 354

12.1.9  子链 354

12.1.10  树形链 354

12.2  隐私性 356

12.2.1  不可区分性混淆技术 356

12.2.2  同态加密 356

12.2.3  零知识证明 356

12.2.4  状态通道 357

12.2.5  安全的多方计算 357

12.2.6  通过硬件提供保密性 357

12.2.7  Coinjoin 357

12.2.8  机密交易 358

12.2.9  MimbleWimble 358

12.3  安全性 358

12.3.1  智能合约安全性 359

12.3.2  Why3形式验证 360

12.3.3  Oyente工具 361

12.4  本章小结 362

第13章  发展现状和未来趋势 365

13.1  新趋势 365

13.1.1  基于应用程序的区块链(ASBC) 365

13.1.2  企业级区块链 365

13.1.3  私有区块链 366

13.1.4  初创公司 366

13.1.5  浓厚的研究兴趣 366

13.1.6  标准化 367

13.1.7  改进措施 367

13.1.8  具体实现 368

13.1.9  企业联合体 368

13.1.10  解决方法 368

13.1.11  技术融合 368

13.1.12  教育发展状况 368

13.1.13  就业前景 369

13.1.14  密码经济学 369

13.1.15  密码学研究 369

13.1.16  新的编程语言 369

13.1.17  硬件研究和开发 370

13.1.18  形式方法和以及安全研究 370

13.1.19  区块链的替代方案 370

13.1.20  互操作性 371

13.1.21  区块链服务 371

13.1.22  减少耗电量 371

13.2  改进协议 371

13.2.1  BIP 372

13.2.2  EIP 373

13.3  其他挑战性问题 374

13.4  负面影响 375

13.5  区块链研究 376

13.5.1  智能合约 376

13.5.2  中心化问题 376

13.5.3  加密功能的局限性 376

13.5.4  共识算法 376

13.5.5  可扩展性 377

13.5.6  代码混淆 377

13.6  重要项目实例 377

13.6.1  以太坊上的Zcash 377

13.6.2  CollCo 377

13.6.3  Cello 378

13.6.4  Qtum 378

13.6.5  Bitcoin-NG 378

13.6.6  Solidus 378

13.6.7  Hawk 378

13.6.8  Town-Crier 378

13.6.9  SETLCoin 379

13.6.10  TEEChan 379

13.6.11  Falcon 379

13.6.12  Bletchley 379

13.6.13  Casper 380

13.6.14  Metropolis 380

13.7  其他工具 380

13.7.1  Microsoft Visual Studio的Solidity扩展 380

13.7.2  MetaMask 380

13.7.3  Stratis 381

13.7.4  Embark 381

13.7.5  DAPPLE 381

13.7.6  Meteor 381

13.7.7  uPort 381

13.7.8  INFURA 382

13.8  与其他行业的结合 382

13.9  未来发展 383

13.10  本章小结 384


 



 

前    言

本书将全面介绍区块链技术的理论和实践,涵盖了充分理解区块链技术的全部内容。在阅读完本书后,读者将能够深入了解区块链技术的内部工作原理,并具备开发区块链应用程序的能力。本书包含了与区块链技术相关的所有主题,涉及密码学、加密货币、比特币、以太坊,以及用于区块链开发的各种平台和工具。

在阅读本书之前,建议读者具备一定的计算机科学知识和基本的编程经验,但若无经验也并不妨碍读者的学习进程,相关背景知识在书中均有所介绍。

本书内容

第1章介绍了基于区块链技术的分布式计算的基本概念,包括区块链的历史、定义、特性、类型和优点,以及区块链技术的核心内容—共识机制。

第2章介绍了去中心化的概念及其与区块链技术的关系。除此之外,还讨论了相关方法和平台,进而可对处理过程或系统执行去中心化操作。

第3章介绍了密码学的理论基础,这也是全面了解区块链技术的必要条件,其中包括公钥和私钥加密等概念及其应用实例。最后,本章还对金融市场进行了简要介绍,在金融领域,许多有趣的用例均可实现于区块链技术中。

第4章主要讨论比特币,这也是第一个最大的区块链。本章详细介绍了与比特币加密有关的技术概念。

第5章讨论了比特币出现之后的其他替代加密货币,包括各种代币示例、属性以及开发和实现方式。

第6章深入讨论了智能合约,介绍了智能合约的历史、定义、李嘉图合约、Oracle定义,以及智能合约的理论知识。

第7章详细介绍了以太坊区块链的设计和架构,包括与以太坊区块链相关的各种技术概念,并深入分析了该平台的基本原理、特性和组件。

第8章考查了一个详细的示例,并使用以太坊区块链开发去中心化的应用程序和智能合约。除此之外,本章还讨论了Solidity语言和各种相关工具。

第9章介绍了Linux的超级账本项目,其中包含了不同的区块链项目。

第10章介绍了可替代的区块链解决方案和平台,同时还阐述了可替代区块链的技术细节和特性。

第11章探讨了区块链技术在其他领域的应用,包括物联网、政府部门、媒体和金融等行业。

第12章考查了区块链技术所面临的一些挑战性问题及其解决方案。

第13章讨论与区块链技术的现状、项目和研究工作相关的信息。此外,还提出了一些针对区块链技术现状的预测观点。

准备工作

本书中的所有示例都是在Ubuntu16.04.1 LTS(Xenial)上进行开发的。因此,建议读者使用Ubuntu系统。但这并不意味着排除了其他操作系统,例如Windows或Linux,但相关示例,尤其是与安装相关的操作步骤,可能需要进行相应的更改。

与密码学相关的示例使用OpenSSL 1.0.2g 1 Mar 2016命令行工具进行开发。

以太坊的Solidity示例则通过Browser Solidity予以实现,读者可访问https://ethereum. github.io/browser-solidity/获取在线资源。

以太坊的homestead版本可用于开发相关应用示例,在本书编写时,这也是以太坊的最新版本,读者可访问https://www.ethereum.org/进行下载。

与物联网相关的示例可通过Raspberry Pi工具包进行开发。特别地,可采用Raspberry Pi 3 Model B V 1.2创建物联网硬件示例。Node.js V7.2.1和npm V3.10.10则用于下载相关的数据包,并针对物联网示例运行Node.js服务器。

Truffle框架用于智能合约的部署操作,读者可访问http://truffleframework.com/进行下载。

适用读者

本书适用于希望深入了解区块链技术的读者。另外,本书也可用作区块链应用程序开发人员的参考工具书,同时也可作为区块链技术和加密货币相关课程的教学参考书,以及各种考试和认证的学习资源。