猜你喜欢
区块链开发指南

区块链开发指南

书籍作者:申屠青春 ISBN:9787111571209
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:7564
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
下载地址
内容简介

  本书以比特币、以太坊、Fabric三种区块链的技术原理和实际操作为主要目标,全书具体内容如下。

  第1章介绍比特币区块链,包括交易和交易链、区块和区块链、挖矿、矿池、脚本系统、合约应用案例等内容,向读者们介绍区块链基础知识。

  第2章讲述区块链进阶技术,包括外带数据原理、Counterparty原理、挖矿算法解析、侧链技术,以及*新的IBLT、隔离见证、闪电网络等。

  第3章的主要内容是区块链中使用的密码学基础,包括Hash函数、椭圆曲线密码体系、ECDSA签名、Schnorr数字签名和Bloom f?ilter算法等,向开发者介绍密码学相关算法。

  第4章是比特币区块链的编译、代码剖析、建立私链及API开发等实操内容。

  第5章介绍以太坊的技术原理,包括以太坊简介、账户管理、交易原理、智能合约等,还涉及搭建私有链,智能合约开发、部署和调用等实操过程。

  第6章介绍了IBM开源的区块链底层技术平台Fabric的原理和实操,对Fabric系统架构、节点、验证总账、交易背书的基本流程进行了详尽独到的分析,对Fabric的私有链建立和配置、链上代码的开发过程进行了详细的描述,为开发者使用Fabric提供技术指导。


作者简介

  申屠青春

  金链盟常务副秘书长,银链科技CEO,深圳金融标准委员会会员,深圳大学博士,高级工程师,深圳市高层次人才,深圳市政府采购评审专家。曾获2008年深圳科技创新奖、2009年广东省科技进步三等奖,获得发明专利授权4项,获2012年深圳发明奖。2012年创立银链科技,2013年开始研究区块链,2016年转向金融行业,并发起成立金链盟。


  宋波

  曾在某外企支付公司任职中国区软件开发部经理,负责ATM、EMV IC银行卡、Kiosk等产品,现在币信负责移动IM的开发工作,先后参与了钱包、算法交易、区块链、交易引擎、矿池及APP等产品的开发。


  张鹏

  博士,硕士生导师,现为信息工程学院讲师,中国密码学会会员。研究方向为密码学与信息安全。近年来主持或参与本领域的国家、省、市多项科技计划项目,申请国家发明专利十余项,在本领域核心学术刊物上发表文章20多篇,其中多篇被SCI、EI检索。


  汪晓明

  朝夕网络CEO,10年互联网技术产品经验,在跨境电商、大数据、区块链等领域有丰富的经验。作为区块链技术早期探索者,一直积极推动区块链技术在国内的传播和应用落地,已推出面向金融机构的区块链数字资产和供应链产品。同时发起了有行业影响力的区块链视频节目《明说》,持续影响着更多人参与到区块链技术的研究和推广中。


  季宙栋

  万达网络科技集团先进技术研究中心副总经理,万达区块链负责人,(工信部)中国区块链技术与产业发展论坛副秘书长,超级账本中国技术工作组委员。专注于互联网金融业务的创新及金融科技实践,参与了工信部区块链白皮书及相关标准编制工作,ISO/IEC TC307中国代表团成员,牵头工信部区块链开源社区工作。


  左川民

  先后在多家知名企业担任技术专家和高级架构师。2015年开始从事区块链技术的研究工作,曾负责积分区块链项目区块链架构设计,专注于区块链技术框架Fabric的技术研究,目前为深圳科协、金链盟等机构的Fabric技术框架培训讲师,同时作为中国首批区块链系统功能测试评审专家参与区块链系统的评审。


编辑推荐

区块链底层技术和应用开发的必备用书,中国三大区块链联盟的大伽联袂推荐

《区块链开发指南》电子书免费下载

pdf下载 txt下载 epub下载 mobi下载 azw3下载

前言


前  言 Preface

比特币于2009年诞生,在很长一段时间内,人们只知比特币,不知区块链。从2015年开始,区块链像狂风一样席卷全球,倍受金融界和科技界的关注;2015年年底,区块链技术逐渐得到国内金融界和科技界的了解和认同。

区块链行业的蓬勃发展源于区块链有可能给各行业带来巨大的变革。麦肯锡在2016年年初发布报告,指出区块链技术将在未来五年内颠覆众多行业,特别是银行业和保险业;埃森哲预测到2025年,区块链技术每年可帮助全球8大投资银行节省80亿美元至120亿美元的基础设施成本。

全球金融巨头如IBM、高盛、摩根大通、花旗银行、中国平安、瑞银、德勤、毕马威等纷纷布局区块链;区块链初创公司在全球范围内如雨后春笋般崛起,发展速度惊人。从2012年以来,全球区块链创业领域共发生207起融资/并购事件,融资额高达14亿美元。

截至2017年3月,区块链在金融业的落地应用包括跨境支付、清算结算、互助保险、电子票据、商业银行抵押品、贸易金融、数字资产登记、银行间贸易、银行间对账与审计、监管与简化流程、积分、征信、外汇交易市场、证券清算和交割等。

区块链技术还能解决供应链管理、物联网、医疗、军事、政务等领域的很多问题。例如,Warmart试图用区块链保障我国市场的猪肉供应链安全;医疗领域中,生成基于区块链的、不可更改的电子病历、检验报告等用于存证,方便解决医疗纠纷;军事防卫和信息安全化中,区块链技术可实现信息防御平台的现代化;政务中,区块链可以简化文件归档与政府公共档案管理,并且可用来发放政府社保、养老金等社会福利及居民身份存证等。

由此可见,区块链将带来一场巨大的变革。正如德勤的报告中所预言的一样:“区块链是一场改变信任的革命,将重塑金融行业。”而它作为一项伟大的技术,不仅仅对于金融行业有革新性,对于其他行业,也会有深远的影响。

而今实施“区块链+”战略所面临的最大难题是:极度缺乏从业人员。很多金融机构和企事业单位对区块链还停留在概念阶段,其开发人员不懂区块链;大部分对区块链技术感兴趣的人,或者想要从事区块链行业的技术人员,未能系统地了解区块链的原理和发展,缺乏区块链开发者应有的知识和技术储备。

为了让更多的开发人员转变成区块链开发者,让更多现有的区块链开发人员系统地理解区块链技术,在区块链领导媒体巴比特的提议和牵头下,成立了《区块链开发指南》编写小组,开始构思、编写本书。

编写小组成员有:银链科技CEO申屠青春、深圳大学教授张鹏、币信资深程序员宋波、朝夕网络CEO汪晓明、万达网络区块链研发中心总经理季宙栋、华安保险系统架构师左川民、巴比特区块链资深工程师易长军。

本书内容由申屠青春负责组织,共包含六个章节,具体分工如下:申屠青春编写第1章和第2章的大部分内容,易长军对本部分内容亦有贡献,币信的樊渊文贡献了1.4.2节、1.4.3节和1.4.4节,比特大陆的潘志彪贡献了2.5.2节、2.5.3节和2.5.4节;张鹏编写第3章;宋波编写第4章;汪晓明编写第5章;季宙栋编写第6章的实操部分,左川民编写第6章的原理部分。此外,银链科技的林素兰参与第1章和第2章部分内容的编辑,万达网络的丛宏雷、张梦航参与第6章实操部分内容的编写。

本书以比特币、以太坊、Fabric三种区块链的技术原理和实际操作为主要目标,全书具体内容如下。

第1章介绍比特币区块链,包括交易和交易链、区块和区块链、挖矿、矿池、脚本系统、合约应用案例等内容,向读者们介绍区块链基础知识。

第2章讲述区块链进阶技术,包括外带数据原理、Counterparty原理、挖矿算法解析、侧链技术,以及最新的IBLT、隔离见证、闪电网络等。

第3章的主要内容是区块链中使用的密码学基础,包括Hash函数、椭圆曲线密码体系、ECDSA签名、Schnorr数字签名和Bloom f?ilter算法等,向开发者介绍密码学相关算法。

第4章是比特币区块链的编译、代码剖析、建立私链及API开发等实操内容。

第5章介绍以太坊的技术原理,包括以太坊简介、账户管理、交易原理、智能合约等,还涉及搭建私有链,智能合约开发、部署和调用等实操过程。

第6章介绍了IBM开源的区块链底层技术平台Fabric的原理和实操,对Fabric系统架构、节点、验证总账、交易背书的基本流程进行了详尽独到的分析,对Fabric的私有链建立和配置、链上代码的开发过程进行了详细的描述,为开发者使用Fabric提供技术指导。

最后,感谢编写小组各成员的配合和支持,使本书最终得以完本。感谢巴比特的李涛,时时督促此书的编写;感谢机械工业出版社华章公司的编辑杨绣国为本书顺利出版付出的努力。编写小组期待本书能够在区块链应用开发中给开发者以参考和启发。由于成书仓促,错误之处在所难免,恳请广大读者朋友批评指正。


申屠青春

2017年4月于深圳


目录

推荐序一 区块链的价值实现

推荐序二 区块链,推动金融代际跃升的新力量

推荐序三 区块链技术的现实和未来

前言

第1章 区块链基础 1

1.1 交易和交易链 2

1.1.1 比特币地址 3

1.1.2 交易的本质 3

1.1.3 输入和输出 5

1.1.4 交易类型 5

1.1.5 找零地址 6

1.2 区块和区块链 8

1.2.1 区块结构 8

1.2.2 创世块 10

1.2.3 区块链原理 13

1.3 挖矿、矿池 14

1.3.1 挖矿原理与区块的产生 14

1.3.2 挖矿难度 16

1.3.3 矿池原理与商业模式 18

1.4 脚本系统 19

1.4.1 脚本特点 20

1.4.2 脚本运行过程 24

1.4.3 脚本操作码解读 25

1.4.4 脚本执行过程 26

1.5 合约应用案例 27

1.5.1 合约应用原理 28

1.5.2 示例1:提供押金证明 29

1.5.3 示例2:担保和争端调解 30

1.5.4 示例3:保证合约 30

1.5.5 示例4:使用外部状态 32

1.5.6 示例5:跨链交易 34

1.5.7 示例6:支付证明合约 35

1.5.8 示例7:特定对象的快速调整(微)支付 36

1.5.9 示例8:多方去中心化彩票 37

参考资料 37

第2章 区块链进阶 39

2.1 外带数据 39

2.1.1 OP_RETURN外带数据 39

2.1.2 Multi-Signatures外带数据 40

2.2 Counterparty 40

2.2.1 Counterparty附生链的实现机制详解 41

2.2.2 发送 41

2.2.3 订单 42

2.2.4 发行 42

2.2.5 广播 43

2.2.6 赌约 43

2.3 挖矿算法解析 43

2.3.1 PoW挖矿算法及分析 43

2.3.2 PoS股权证明算法及分析 44

2.3.3 DPoS股份授权证明算法及分析 45

2.4 Sidechains 45

2.4.1 侧链背景 45

2.4.2 技术原理 46

2.5 最新比特币技术 49

2.5.1 IBLT 49

2.5.2 隔离见证 50

2.5.3 闪电网络 51

2.5.4 RSMC 51

2.5.5 HTLC 52

参考资料 53

第3章 密码学基础 54

3.1 Hash函数 54

3.1.1 技术原理 54

3.1.2 SHA-1算法 55

3.1.3 SHA-2算法 57

3.1.4 SHA-3算法 64

3.1.5 RIPEMD160算法 65

3.2 椭圆曲线密码 66

3.2.1 椭圆曲线方程 67

3.2.2 公钥和私钥的产生算法 68

3.3 ECDSA数字签名 69

3.4 Schnorr数字签名 70

3.4.1 技术思想 70

3.4.2 Schnorr与ECDSA的异同 70

3.5 Bloom f?ilter 71

3.5.1 技术原理 71

3.5.2 应用案例 72

第4章 比特币区块链开发 74

4.1 Bitcoin的编译过程 74

4.1.1 Ubuntu下的编译 74

4.1.2 Mac下的编译 75

4.1.3 Windows下的编译 76

4.2 代码剖析 77

4.2.1 主要模块 77

4.2.2 初始化和启动 79

4.2.3 P2P网络 80

4.2.4 交易和区块 89

4.2.5 脚本系统 89

4.2.6 挖矿 91

4.2.7 私钥 92

4.3 性能实战 93

4.3.1 建立私链 93

4.3.2 优化改进 96

4.4 API开发 97

4.4.1 命令行调用 97

4.4.2 RPC API调用接口 100

4.4.3 如何调用API进行开发 103

4.4.4 通过命令实现区块链的查询实例 103

第5章 以太坊智能合约开发 109

5.1 以太坊 109

5.1.1 以太坊的定义 109

5.1.2 下一代区块链 109

5.1.3 以太坊虚拟机 110

5.1.4 以太坊的工作原理 110

5.2 以太坊账户管理 111

5.2.1 账户 111

5.2.2 钥匙文件 112

5.2.3 创建账号 112

5.3 更新、备份、恢复账号 115

5.3.1 更新账号 115

5.3.2 账号备份和恢复 116

5.4 公有链、联盟链、私有链及网络配置 117

5.4.1 以太坊网络 117

5.4.2 公有链、私有链和联盟链 117

5.4.3 如何连接 118

5.4.4 更快地下载区块链 119

5.4.5 静态节点、信任节点和启动节点 120

5.5 搭建测试网络和私有链 121

5.5.1 Modern测试网 121

5.5.2 设置本地私有测试网 121

5.6 账户、交易核心概念及投注合约解析 125

5.6.1 外有账户与合约账户 125

5.6.2 什么是交易 126

5.6.3 什么是消息 126

5.6.4 什么是gas 126

5.6.5 估算交易成本 127

5.6.6 账户交互示例:投注合约 128

5.7 深入浅出智能合约 131

5.7.1 合约的定义 131

5.7.2 以太坊高级语言 131

5.7.3 写合约 131

5.7.4 编译合约 132

5.7.5 创建和部署合约 134

5.7.6 与合约互动 135

5.7.7 合约元数据 136

5.7.8 测试合约和交易 137

5.8 如何部署、调用智能合约 138

5.8.1 RPC 138

5.8.2 惯例 138

5.8.3 部署合约 139

5.8.4 和智能合约互动 141

5.8.5 Web3.js 142

5.8.6 控制台 143

5.8.7 查看合约与交易 143

5.9 智能合约案例实战 143

参考资料 146

第6章 Fabric原理和实操 147

6.1 超级账本项目背景 147

6.2 Fabric简介 149

6.3 系统架构 150

6.3.1 交易 150

6.3.2 区块链数据结构 150

6.3.3 节点 151

6.4 交易背书的基本流程 155

6.4.1 客户端创建交易后发送到它所选择的背书节点 156

6.4.2 背书节点模拟交易,然后生成背书签名 157

6.4.3 提交客户端获取交易的背书,通过排序服务广播 158

6.4.4 排序服务向所有节点投递交易消息 158

6.5 背书策略 159

6.5.1 背书策略规范 159

6.5.2 交易评估与背书策略 159

6.5.3 背书策略示例 160

6.6 验证总账(1.0版本之后的功能)和原始总账检查点(精简) 160

6.6.1 验证总账 160

6.6.2 原始总账检查点 161

6.7 Fabric V1.0开发者快速入门 163

6.7.1 前置条件和系统配置 163

6.7.2 下载源代码,创建Fabric网络 164

6.7.3 生成配置文件 164

6.7.4 使用Docker创建Fabric网络&创建/加入通道(账本) 165

6.7.5 示例合约执行过程解析 165

6.7.6 查看智能合约执行日志 166

6.7.7 手工创建和加入通道 166

6.7.8 使用命令行工具部署、调用、查询智能合约 167

6.7.9 开发环境故障排除 168

6.7.10 Fabric常用的Docker命令 168

6.8 智能合约开发 169

6.8.1 智能合约的定义 169

6.8.2 GO语言智能合约的开发和部署 169

6.8.3 Java智能合约的编写与部署 174

6.8.4 开发和提交代码 180

相关术语 182

附录A 国内区块链联盟介绍 184

附录B 《ChinaLedger面向中国资本市场应用的分布式总账白皮书》全文 201


标签
计算机科学,计算机,区块链