本书前半部分主要从技术的角度讲述什么是区块链,以比特币区块链为例讲述区块链的精妙的设计,以及区块链的应用场景。本书后半部分结合实际案例讲述超级账本Fabric的架构设计,系统安装配置以及编程实践。
FinTech(金融科技)由Financial(金融)和Technology(科技)组合而成,是当下受人们关注的方向之一,而区块链技术与生俱来的去信任化和防篡改等特性,使其受到各大金融科技企业的青睐,国内外金融监管机构、金融和科技巨头都在积极探索这一未来金融底层技术的应用。
中国香港蚂蚁金服AlipayHK上线了区块链跨境汇款服务,从中国香港地区到菲律宾的笔汇款总耗时仅3秒钟。SWIFT启动了SWIFT GPI(Global Payments Innovation),将跨境支付的时间从过去的几天降低到如今的十几分钟。美国的纳斯达克交易所也推出了基于区块链的股权交易平台NASDAQ Linq,专注于服务非上市公司的股权管理和交易。美国金融巨头摩根大通在区块链平台发行JPM Coin,用以提高银行企业客户的结算效率。
比特币、以太坊和超级账本是目前为人们熟知的三大区块链技术。区块链是随着比特币的横空出世诞生的,以太坊在此基础上引入了图灵完备的智能合约机制,而超级账本则由IBM主导,使区块链技术得以在非金融领域落地开花。
由于超级账本初的设计中没有引入数字货币机制,不太适用于金融领域,因此美国的金融巨头摩根大通、微软、英特尔、桑坦德银行和瑞士的瑞信银行等组织建立了区块链联盟EEA(企业以太坊联盟),基于以太坊公链打造了企业级的以太坊区块链平台Quorum。Quorum在以太坊的基础上增加了隐私保护等功能,以满足企业联盟间的隐私交易及高吞吐量的需求,解决区块链技术在金融领域落地的挑战,摩根大通的JPM Coin就是基于Quorum平台开发的。另外,在大宗商品交易领域,Quorum已经被广泛使用,由石油、金融及贸易巨头(如英国石油、壳牌、花旗银行、麦格里和摩科瑞等)组建的大宗贸易平台Vakt和Komgo也是基于Quorum区块链技术的。由此可见,Quorum将发展成金融科技未来重要的底层技术之一。
本书为什么选择以Quorum为主题呢?首先,笔者有Quorum实战经验,也有快速学习区块链的方法,知道从哪里可以找到与Quorum相关的中文资料;其次,目前与比特币、以太坊和超级账本相关的中文书籍在市场上已经很丰富,笔者认为,与其写一本锦上添花的书,倒不如尽自己的绵薄之力补齐区块链中文资料的短缺,为区块链中文社区做一些贡献。
周兵,赫尔辛基理工大学计算机硕士,清华大学MBA,天智星链科技联合创始人,曾就职于阿里巴巴、汤森路透、微软、诺基亚和Symbian等公司,担任高级工程师、产品研发总监等职位。他也是区块链技术布道者,在多个平台担任区块链讲师,有丰富的区块链产品开发经验,热衷于开源项目,是Linux HIPL开源项目的早期贡献者。
前 言
第1章 区块链的前世今生 1
1.1 初识区块链 1
1.2 区块链技术的演进 2
1.3 区块链能否改变世界 4
第2章 区块链中的共识机制 6
2.1 分布式系统的一致性挑战 6
2.1.1 若干基本原理 6
2.1.2 拜占庭将军问题 9
2.2 常见共识算法 9
2.2.1 PBFT算法 9
2.2.2 Raft算法 10
2.2.3 PoW算法 11
2.2.4 PoS算法 12
第3章 密码学探秘 13
3.1 密码学基础知识 13
3.1.1 加解密的一般过程 13
3.1.2 密码学发展历程 14
3.1.3 密码算法的分类 15
3.1.4 基础理论简析 16
3.2 公钥密码体制 19
3.2.1 RSA算法 20
3.2.2 ElGamal算法 21
3.2.3 椭圆曲线算法 23
3.2.4 公钥密码的安全性分析 24
3.3 数字签名 24
3.3.1 哈希函数 25
3.3.2 RSA签名 26
3.3.3 ElGamal签名 26
3.3.4 DSA 27
3.3.5 椭圆曲线DSA 28
3.3.6 数字签名方案的安全性分析 28
3.4 区块链中的密码学算法 29
3.5 密码学新纪元 30
3.5.1 同态加密技术 30
3.5.2 抗量子攻击密码 32
第4章 区块链核心技术实践比特币 34
4.1 比特币要解决的问题 34
4.2 技术解决方案 35
4.3 P2P网络 36
4.4 账本区块链 37
4.4.1 区块结构 37
4.4.2 创世区块 39
4.4.3 区块的验证和链接 42
4.5 比特币地址 44
4.5.1 比特币地址的生成过程 44
4.5.2 比特币公钥格式压缩和非压缩 45
4.5.3 比特币私钥导入的格式WIF 46
4.5.4 生成自己的比特币地址 47
4.6 比特币交易Transaction 48
4.6.1 交易的输入和输出 49
4.6.2 UTXO未花费交易输出 50
4.7 脚本语言 52
4.7.1 脚本操作码 53
4.7.2 交易脚本锁定和解锁 54
4.7.3 锁定脚本P2PKH 55
4.7.4 锁定脚本P2SH 55
4.7.5 解锁脚本 56
4.7.6 交易验证组合验证脚本 56
4.7.7 挖矿PoW 58
4.8 矿场和矿池 60
4.8.1 矿场 60
4.8.2 矿池 60
4.9 SPV轻钱包 61
4.10 区块链安全 62
4.10.1 私钥碰撞 62
4.10.2 哈希破解 62
4.10.3 私钥或钱包App 63
4.10.4 51%攻击 63
4.10.5 双花 64
4.10.6 可塑性攻击 64
4.11 隔离见证 65
4.12 比特币分叉 65
4.12.1 硬分叉和软分叉 66
4.12.2 核心开发团队与中国矿工 67
4.13 侧链闪电网络 68
4.14 支付通道 69
4.14.1 微支付通道 69
4.14.2 RSMC 70
4.14.3 HTLC 71
4.14.4 闪电网络 72
第5章 区块链应用场景及政府监管 74
5.1 跨境支付 74
5.1.1 SWIFT 74
5.1.2 Ripple 75
5.1.3 J.P.摩根JPM Coin 76
5.1.4 蚂蚁金服 76
5.2 数据存证 77
5.2.1 保全网 77
5.2.2 Factom 78
5.2.3 仲裁链 79
5.3 防伪溯源 79
5.4 区块链电子发票 80
5.5 政府监管 80
第6章 Quorum架构 82
6.1 架构概述 82
6.1.1 应用层 83
6.1.2 工具层 83
6.1.3 隐私、性能和许可层 84
6.1.4 核心区块链层 84
6.1.5 网络层 85
6.2 节点结构及启动过程 85
6.2.1 以太坊账户 87
6.2.2 网络通信协议 87
6.2.3 以太坊服务 87
6.2.4 RPC服务 89
6.2.5 节点启动过程 89
6.3 账户管理 91
6.3.1 keystore文件 91
6.3.2 账户管理器 94
6.3.3 签名交易 95
6.4 网络 95
6.4.1 协议管理器 97
6.4.2 p2p.Server对象和启动 98
6.4.3 对等节点发现 100
6.4.4 对等节点连接 103
6.5 交易管理 107
6.5.1 交易池 107
6.5.2 交易提交 109
6.5.3 交易广播 110
6.6 区块和链管理 111
6.6.1 MPT树 111
6.6.2 区块和链结构 113
6.6.3 区块上链 116
6.6.4 世界状态转换 120
6.6.5 StateDB 122
6.6.6 企业以太坊数据存储 126
6.7 IBFT共识 128
6.7.1 IBFT共识概述 129
6.7.2 IBFT实现 134
6.7.3 矿工 136
6.7.4 共识流程 138
6.8 Raft共识 140
6.8.1 RaftService服务 140
6.8.2 Raft协议管理器 141
6.8.3 区块上链 142
6.8.4 链竞争 144
6.9 权限 145
6.9.1 权限管理智能合约 147
6.9.2 权限管理服务 148
6.10 数据隐私 149