区块链架构与实现:Cosmos详解
出版时间:
2021-09
版次:
1
ISBN:
9787115563880
定价:
99.80
装帧:
其他
开本:
其他
纸张:
胶版纸
页数:
337页
字数:
456千字
10人买过
-
由于涉及多个学科领域,构建区块链系统面临的技术挑战不可小觑,而区块链行业早期的野蛮生长带来的链间相互孤立的问题也日益凸显。面对这些挑战,Tendermint 团队给出了系统化解决方案:构建区块链应用开发框架降低区块链系统开发的难度,并设计通用IBC 协议实现跨链互操作。
《区块链架构与实现:Cosmos详解》围绕Cosmos 项目展开,从预备基础理论、开发框架设计、开发框架应用三个层面全面、系统阐述相关机制:在预备基础理论方面,详细介绍区块链项目的理论基础,包括密码学算法、拜占庭容错共识协议的基础知识、Tendermint 共识协议以及权益证明机制原理;在开发框架设计方面,深入介绍Tendermint Core项目架构设计以及该项目提供的ABCI 规范与实现原理,剖析Cosmos-SDK 项目中提供的功能模块的原理与关键实现,包括权益证明机制以及IBC 协议的实现;在开发框架应用方面,展示如何基于Tendermint Core项目构建分布式键值数据库应用,并以Cosmos 网络的客户端Gaia 的实现为例展示构建应用专属区块链系统的具体过程。
《区块链架构与实现:Cosmos详解》内容深入浅出,指导性和实操性强,适合区块链领域开发者和区块链技术爱好者阅读,也可作为高等院校计算机及区块链相关专业的教学用书和培训教材。 温隆 (1)密码学博士,山东大学网络空间安全学院企业合作导师,区块链系统与智能合约架构师。 (2)曾任北京比特大陆科技有限公司资深研发工程师,负责区块链系统的理论研究与工程落地。 (3)曾任北京炼石网络技术有限公司密码研究员,负责商密算法软件优化与可搜索加密等方向的理论研究与工程落地。 贾音 (1)2017年硕士毕业于上海交通大学计算机科学与技术专业,区块链开发工程师。 (2)曾就职于北京比特大陆科技有限公司,负责公有链、智能合约相关研发工作。 (3)曾就职于卫士通商用密码实验室,负责区块链方向的密码学研究。 序1(Peng Zhong,Tendermint CEO)
序2(Alessio Treglia,Tendermint 工程副总裁)
前言
资源与支持
第 1 章 Cosmos 网络介绍 1
1.1 区块链开发的技术挑战 1
1.1.1 开发周期与技术门槛 1
1.1.2 资源消耗与交易体验 2
1.1.3 链上扩容与跨链通信 3
1.2 Cosmos 网络 4
1.2.1 Cosmos 的解决方案 4
1.2.2 Cosmos Hub 5
1.2.3 Tendermint Core 6
1.2.4 Cosmos-SDK 8
1.2.5 IBC 协议 10
1.3 小结 12
第 2 章 密码学算法 13
2.1 散列函数与Merkle 树 13
2.1.1 散列函数简介 13
2.1.2 生日悖论原理 15
2.1.3 Merkle 树构建 17
2.1.4 Merkle 树证明构造 22
2.2 数字签名算法 28
2.2.1 循环群 29
2.2.2 素数域 32
2.2.3 椭圆曲线 32
2.2.4 ECDSA 36
2.2.5 Ed25519 40
2.2.6 公钥与地址 45
2.3 网络流量加密 46
2.4 小结 47
第3 章 共识协议与区块设计 48
3.1 共识协议基础 49
3.1.1 半同步网络模型与BFT 49
3.1.2 拜占庭将军问题与CAP 定理 50
3.2 PBFT 共识协议 54
3.2.1 协议概述 55
3.2.2 视图转换 57
3.3 Tendermint 共识协议 58
3.3.1 协议概述 59
3.3.2 锁定机制 62
3.3.3 解锁机制 64
3.4 共识协议比较 66
3.5 提案者轮换选择算法 68
3.6 区块结构 79
3.7 小结 87
第4 章 Tendermint Core 的架构设计 88
4.1 整体架构概览 88
4.1.1 基本概念 88
4.1.2 反应器简介 90
4.2 核心数据结构Node 结构体 92
4.2.1 作为服务的Node 结构体 94
4.2.2 可配置的Node 结构体 95
4.2.3 作为对等网络节点的Node结构体 96
4.3 反应器(Reactor) 103
4.3.1 mempool.Reactor 105
4.3.2 evidence.Reactor 109
4.3.3 BlockchainReactor 111
4.3.4 consensus.Reactor 114
4.4 小结 115
第5 章 ABCI 116
5.1 交易池连接 117
5.2 共识连接 119
5.3 查询连接 125
5.4 客户端与上层应用交互 128
5.4.1 Application 接口与Client接口 129
5.4.2 进程内交互 132
5.4.3 套接字交互 133
5.5 实战——分布式键值数据库 135
5.5.1 键值对读写实现 137
5.5.2 执行过程展示 138
5.6 小结 141
第6 章 Cosmos-SDK 的架构设计 142
6.1 Cosmos-SDK 的模块化设计 143
6.1.1 AppModule 接口 143
6.1.2 模块管理器 146
6.1.3 模块的源码组织 147
6.2 应用模板BaseApp 148
6.2.1 ABCI 接口方法的实现 151
6.2.2 模块管理 154
6.3 可认证数据结构IAVL 树 157
6.3.1 节点设计 157
6.3.2 读写与遍历 159
6.3.3 证明机制 167
6.3.4 Cosmos-SDK 中的IAVL 树 179
6.3.5 Cosmos-SDK 中的剪枝选项 180
6.4 Cosmos-SDK 的存储器设计 181
6.4.1 多重存储器 MultiStore 184
6.4.2 键值对存储器KVStore 186
6.4.3 存储器装饰器 189
6.4.4 瞬时存储数据库 193
6.5 小结 194
第7 章 Cosmos-SDK 的基本模块 195
7.1 账户与交易: auth 模块 195
7.1.1 账户管理 195
7.1.2 标准交易 197
7.1.3 交易预检查 198
7.2 链上资产转移: bank 模块 200
7.3 创世交易:genutil 模块 202
7.4 链上参数管理: params 模块 202
7.5 链上资产总量追踪:supply 模块 203
7.6 链上状态一致性检查: crisis 模块 204
7.7 链上治理:gov 模块 206
7.7.1 提案创建与投票 206
7.7.2 提案的链上存储 209
7.7.3 提案的链上处理 212
7.8 节点升级:upgrade 模块 216
7.8.1 升级计划与升级提案 216
7.8.2 执行升级计划 218
7.8.3 自动化升级 220
7.9 小结 220
第8 章 Cosmos-SDK 的PoS 实现 221
8.1 PoS 机制概述 221
8.2 Cosmos Hub 的PoS 机制 223
8.3 链上资产抵押:staking 模块 226
8.3.1 验证者与链上资产抵押 227
8.3.2 重新委托与撤回委托 232
8.3.3 验证者状态切换 235
8.3.4 回调函数与模块交互 238
8.4 被动作恶惩罚:slashing 模块 241
8.4.1 区块中的投票信息 242
8.4.2 被动惩罚设计理念 243
8.4.3 被动惩罚实现概览 244
8.5 主动作恶惩罚: evidence 模块 249
8.5.1 双签作恶惩罚 250
8.5.2 惩罚机制小结 252
8.6 链上资产铸造:mint 模块 254
8.7 链上奖励分发: distribution 模块 256
8.7.1 奖励分发概述 256
8.7.2 F1 奖励分发机制 260
8.7.3 F1 奖励分发实现 261
8.8 小结 268
第9 章 Cosmos-SDK 的跨链通信 269
9.1 Tendermint Core 轻客户端 270
9.1.1 轻客户端原理概述 270
9.1.2 故障模型与解决方案 272
9.1.3 轻客户端实现 274
9.1.4 Cosmos-SDK 轻客户端 280
9.2 跨链通信原理与设计 283
9.2.1 跨链通信概述 283
9.2.2 中继者 288
9.2.3 轻客户端 288
9.2.4 连接 293
9.2.5 信道 296
9.2.6 跨链数据包 298
9.3 跨链通信示例 301
9.4 小结 305
第 10 章 Cosmos Hub 的客户端Gaia 306
10.1 核心数据结构GaiaApp 306
10.1.1 编解码器初始化 308
10.1.2 BaseApp 初始化 310
10.1.3 模块存储映射表初始化 310
10.1.4 模块Keeper 初始化 311
10.1.5 模块管理器初始化 314
10.1.6 存储加载 317
10.2 gaiad 与gaiacli 317
10.2.1 安装 317
10.2.2 单节点测试链 318
10.2.3 gaiacli 的使用 321
10.3 区块的生命周期 325
10.3.1 链初始化 325
10.3.2 交易与区块构建 326
10.3.3 区块执行 328
10.4 Gaia 的安全部署 331
10.4.1 远程签名部署 331
10.4.2 哨兵节点部署 331
10.5 小结 332
附录1 Cosmos-SDK 与Cosmos Hub 中的参数配置 333
附录2 Cosmos-SDK 中的键值对 336
附录3 Cosmos-SDK 中的不变量检查 338
-
内容简介:
由于涉及多个学科领域,构建区块链系统面临的技术挑战不可小觑,而区块链行业早期的野蛮生长带来的链间相互孤立的问题也日益凸显。面对这些挑战,Tendermint 团队给出了系统化解决方案:构建区块链应用开发框架降低区块链系统开发的难度,并设计通用IBC 协议实现跨链互操作。
《区块链架构与实现:Cosmos详解》围绕Cosmos 项目展开,从预备基础理论、开发框架设计、开发框架应用三个层面全面、系统阐述相关机制:在预备基础理论方面,详细介绍区块链项目的理论基础,包括密码学算法、拜占庭容错共识协议的基础知识、Tendermint 共识协议以及权益证明机制原理;在开发框架设计方面,深入介绍Tendermint Core项目架构设计以及该项目提供的ABCI 规范与实现原理,剖析Cosmos-SDK 项目中提供的功能模块的原理与关键实现,包括权益证明机制以及IBC 协议的实现;在开发框架应用方面,展示如何基于Tendermint Core项目构建分布式键值数据库应用,并以Cosmos 网络的客户端Gaia 的实现为例展示构建应用专属区块链系统的具体过程。
《区块链架构与实现:Cosmos详解》内容深入浅出,指导性和实操性强,适合区块链领域开发者和区块链技术爱好者阅读,也可作为高等院校计算机及区块链相关专业的教学用书和培训教材。
-
作者简介:
温隆 (1)密码学博士,山东大学网络空间安全学院企业合作导师,区块链系统与智能合约架构师。 (2)曾任北京比特大陆科技有限公司资深研发工程师,负责区块链系统的理论研究与工程落地。 (3)曾任北京炼石网络技术有限公司密码研究员,负责商密算法软件优化与可搜索加密等方向的理论研究与工程落地。 贾音 (1)2017年硕士毕业于上海交通大学计算机科学与技术专业,区块链开发工程师。 (2)曾就职于北京比特大陆科技有限公司,负责公有链、智能合约相关研发工作。 (3)曾就职于卫士通商用密码实验室,负责区块链方向的密码学研究。
-
目录:
序1(Peng Zhong,Tendermint CEO)
序2(Alessio Treglia,Tendermint 工程副总裁)
前言
资源与支持
第 1 章 Cosmos 网络介绍 1
1.1 区块链开发的技术挑战 1
1.1.1 开发周期与技术门槛 1
1.1.2 资源消耗与交易体验 2
1.1.3 链上扩容与跨链通信 3
1.2 Cosmos 网络 4
1.2.1 Cosmos 的解决方案 4
1.2.2 Cosmos Hub 5
1.2.3 Tendermint Core 6
1.2.4 Cosmos-SDK 8
1.2.5 IBC 协议 10
1.3 小结 12
第 2 章 密码学算法 13
2.1 散列函数与Merkle 树 13
2.1.1 散列函数简介 13
2.1.2 生日悖论原理 15
2.1.3 Merkle 树构建 17
2.1.4 Merkle 树证明构造 22
2.2 数字签名算法 28
2.2.1 循环群 29
2.2.2 素数域 32
2.2.3 椭圆曲线 32
2.2.4 ECDSA 36
2.2.5 Ed25519 40
2.2.6 公钥与地址 45
2.3 网络流量加密 46
2.4 小结 47
第3 章 共识协议与区块设计 48
3.1 共识协议基础 49
3.1.1 半同步网络模型与BFT 49
3.1.2 拜占庭将军问题与CAP 定理 50
3.2 PBFT 共识协议 54
3.2.1 协议概述 55
3.2.2 视图转换 57
3.3 Tendermint 共识协议 58
3.3.1 协议概述 59
3.3.2 锁定机制 62
3.3.3 解锁机制 64
3.4 共识协议比较 66
3.5 提案者轮换选择算法 68
3.6 区块结构 79
3.7 小结 87
第4 章 Tendermint Core 的架构设计 88
4.1 整体架构概览 88
4.1.1 基本概念 88
4.1.2 反应器简介 90
4.2 核心数据结构Node 结构体 92
4.2.1 作为服务的Node 结构体 94
4.2.2 可配置的Node 结构体 95
4.2.3 作为对等网络节点的Node结构体 96
4.3 反应器(Reactor) 103
4.3.1 mempool.Reactor 105
4.3.2 evidence.Reactor 109
4.3.3 BlockchainReactor 111
4.3.4 consensus.Reactor 114
4.4 小结 115
第5 章 ABCI 116
5.1 交易池连接 117
5.2 共识连接 119
5.3 查询连接 125
5.4 客户端与上层应用交互 128
5.4.1 Application 接口与Client接口 129
5.4.2 进程内交互 132
5.4.3 套接字交互 133
5.5 实战——分布式键值数据库 135
5.5.1 键值对读写实现 137
5.5.2 执行过程展示 138
5.6 小结 141
第6 章 Cosmos-SDK 的架构设计 142
6.1 Cosmos-SDK 的模块化设计 143
6.1.1 AppModule 接口 143
6.1.2 模块管理器 146
6.1.3 模块的源码组织 147
6.2 应用模板BaseApp 148
6.2.1 ABCI 接口方法的实现 151
6.2.2 模块管理 154
6.3 可认证数据结构IAVL 树 157
6.3.1 节点设计 157
6.3.2 读写与遍历 159
6.3.3 证明机制 167
6.3.4 Cosmos-SDK 中的IAVL 树 179
6.3.5 Cosmos-SDK 中的剪枝选项 180
6.4 Cosmos-SDK 的存储器设计 181
6.4.1 多重存储器 MultiStore 184
6.4.2 键值对存储器KVStore 186
6.4.3 存储器装饰器 189
6.4.4 瞬时存储数据库 193
6.5 小结 194
第7 章 Cosmos-SDK 的基本模块 195
7.1 账户与交易: auth 模块 195
7.1.1 账户管理 195
7.1.2 标准交易 197
7.1.3 交易预检查 198
7.2 链上资产转移: bank 模块 200
7.3 创世交易:genutil 模块 202
7.4 链上参数管理: params 模块 202
7.5 链上资产总量追踪:supply 模块 203
7.6 链上状态一致性检查: crisis 模块 204
7.7 链上治理:gov 模块 206
7.7.1 提案创建与投票 206
7.7.2 提案的链上存储 209
7.7.3 提案的链上处理 212
7.8 节点升级:upgrade 模块 216
7.8.1 升级计划与升级提案 216
7.8.2 执行升级计划 218
7.8.3 自动化升级 220
7.9 小结 220
第8 章 Cosmos-SDK 的PoS 实现 221
8.1 PoS 机制概述 221
8.2 Cosmos Hub 的PoS 机制 223
8.3 链上资产抵押:staking 模块 226
8.3.1 验证者与链上资产抵押 227
8.3.2 重新委托与撤回委托 232
8.3.3 验证者状态切换 235
8.3.4 回调函数与模块交互 238
8.4 被动作恶惩罚:slashing 模块 241
8.4.1 区块中的投票信息 242
8.4.2 被动惩罚设计理念 243
8.4.3 被动惩罚实现概览 244
8.5 主动作恶惩罚: evidence 模块 249
8.5.1 双签作恶惩罚 250
8.5.2 惩罚机制小结 252
8.6 链上资产铸造:mint 模块 254
8.7 链上奖励分发: distribution 模块 256
8.7.1 奖励分发概述 256
8.7.2 F1 奖励分发机制 260
8.7.3 F1 奖励分发实现 261
8.8 小结 268
第9 章 Cosmos-SDK 的跨链通信 269
9.1 Tendermint Core 轻客户端 270
9.1.1 轻客户端原理概述 270
9.1.2 故障模型与解决方案 272
9.1.3 轻客户端实现 274
9.1.4 Cosmos-SDK 轻客户端 280
9.2 跨链通信原理与设计 283
9.2.1 跨链通信概述 283
9.2.2 中继者 288
9.2.3 轻客户端 288
9.2.4 连接 293
9.2.5 信道 296
9.2.6 跨链数据包 298
9.3 跨链通信示例 301
9.4 小结 305
第 10 章 Cosmos Hub 的客户端Gaia 306
10.1 核心数据结构GaiaApp 306
10.1.1 编解码器初始化 308
10.1.2 BaseApp 初始化 310
10.1.3 模块存储映射表初始化 310
10.1.4 模块Keeper 初始化 311
10.1.5 模块管理器初始化 314
10.1.6 存储加载 317
10.2 gaiad 与gaiacli 317
10.2.1 安装 317
10.2.2 单节点测试链 318
10.2.3 gaiacli 的使用 321
10.3 区块的生命周期 325
10.3.1 链初始化 325
10.3.2 交易与区块构建 326
10.3.3 区块执行 328
10.4 Gaia 的安全部署 331
10.4.1 远程签名部署 331
10.4.2 哨兵节点部署 331
10.5 小结 332
附录1 Cosmos-SDK 与Cosmos Hub 中的参数配置 333
附录2 Cosmos-SDK 中的键值对 336
附录3 Cosmos-SDK 中的不变量检查 338
查看详情
-
全新
-
全新
广东省广州市
平均发货20小时
成功完成率86.5%
-
区块链架构与实现:Cosmos详解
网络技术 区块链革命一线实践经验,区块链编程算法实战,深入理解BFT 共识协议、PoS机制以及IBC 协议,帮助开发人员快速构建自己的应用专属区块链! 新华书店全新正版书籍
全新
江苏省无锡市
平均发货8小时
成功完成率95.77%
-
全新
北京市朝阳区
平均发货17小时
成功完成率96.15%
-
全新
河北省保定市
平均发货27小时
成功完成率83.89%
-
全新
北京市丰台区
平均发货23小时
成功完成率88.44%
-
全新
河北省保定市
平均发货20小时
成功完成率73.58%
-
全新
山东省济宁市
平均发货68小时
成功完成率80.73%
-
全新
河北省保定市
平均发货20小时
成功完成率86.89%
-
全新
河北省保定市
平均发货20小时
成功完成率86.89%
-
全新
北京市朝阳区
平均发货18小时
成功完成率94.91%
-
全新
北京市朝阳区
平均发货17小时
成功完成率96.15%
-
全新
北京市丰台区
平均发货45小时
成功完成率83.33%
-
全新
河北省保定市
平均发货17小时
成功完成率82.69%
-
全新
山东省泰安市
平均发货23小时
成功完成率92.58%
-
全新
天津市西青区
平均发货14小时
成功完成率90.41%
-
全新
江苏省苏州市
平均发货9小时
成功完成率95.68%
-
全新
北京市西城区
平均发货29小时
成功完成率90.35%
-
全新
江苏省南京市
平均发货18小时
成功完成率67.66%
-
全新
河北省保定市
平均发货31小时
成功完成率78.17%
-
九品
天津市宝坻区
平均发货14小时
成功完成率95.34%
-
全新
浙江省嘉兴市
平均发货10小时
成功完成率93.88%
-
全新
江苏省无锡市
平均发货25小时
成功完成率87.66%
-
全新
河北省保定市
平均发货25小时
成功完成率90.25%
-
全新
北京市东城区
平均发货29小时
成功完成率83.9%
-
全新
山东省泰安市
平均发货23小时
成功完成率85.48%
-
全新
北京市丰台区
平均发货8小时
成功完成率90.4%
-
全新
上海市黄浦区
平均发货11小时
成功完成率94.48%
-
全新
北京市通州区
平均发货11小时
成功完成率94.15%
-
全新
山东省泰安市
平均发货18小时
成功完成率92.38%
-
全新
天津市津南区
平均发货13小时
成功完成率94.21%
-
全新
北京市西城区
平均发货28小时
成功完成率88.4%
-
全新
广东省广州市
平均发货8小时
成功完成率94.63%
-
全新
河北省保定市
平均发货15小时
成功完成率91.16%
-
全新
江苏省无锡市
平均发货9小时
成功完成率94.38%
-
全新
江苏省无锡市
平均发货18小时
成功完成率94.5%
-
全新
天津市河东区
平均发货28小时
成功完成率90.04%
-
全新
北京市朝阳区
平均发货9小时
成功完成率96.75%
-
全新
江苏省南京市
平均发货7小时
成功完成率97.87%
-
全新
江苏省南京市
平均发货16小时
成功完成率82.78%
-
全新
江苏省南京市
平均发货8小时
成功完成率96.57%
-
全新
山东省泰安市
平均发货8小时
成功完成率92.9%
-
全新
北京市通州区
平均发货9小时
成功完成率88.67%
-
全新
北京市朝阳区
平均发货14小时
成功完成率85.41%
-
全新
山东省泰安市
平均发货9小时
成功完成率87.97%
-
全新
北京市海淀区
平均发货11小时
成功完成率93.16%
-
九品
北京市朝阳区
平均发货7小时
成功完成率96.92%
-
八五品
北京市昌平区
平均发货4小时
成功完成率98.22%
-
八品
湖南省衡阳市
平均发货8小时
成功完成率94.49%
-
八五品
四川省成都市
平均发货9小时
成功完成率97.71%