| 作者 |
| [摩洛哥] 贝拉·巴德(Bellaj Badr) [英] 理查德·霍洛克(Richard Horrocks) [美] 吴勋(Xun (Brian) Wu)申屠青春邹均[美] 拉杰尼什·古普塔(Rajneesh Gupta) |
| 丛书名 |
| 区块链技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9781912111056 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------区块链开发实战:实用案例分析--------------------------- 本书开始部分对区块链概念进行介绍和高度概括,然后基于以太坊、比特币和超级账本区块链展示不同的使用案例和实际操作。具体内容包括区块链技术的基本概念、创建加密货币、Solidity 智能合约语言、使用Truffle和Drizzle构建Tontine游戏、以区块链为基础的期货系统、商业区块链、分布式存储IPFS和Swarm、超级账本上的供应链、信用证超级账本。 ---------------------------区块链开发指南--------------------------- 本书首先介绍基础密码学、算法、P2P协议、脚本等区块链基础原理与技术,然后以比特币和以太坊两大区块链平台为例,指导读者搭建测试环境,对区块链进行编译,建立私链与测试链等,帮助开发者创建自己的私链,实现智能合约、挖矿等区块链特定编程实例。 ---------------------------区块链技术指南--------------------------- 第1-2章为基础和入门内容,着重是区块链入门介绍,并讲解区块链的一些基础概念。本书详细、全面地介绍了区块链的基础知识与概念,剖析了区块链的架构、底层实现细节以及加密技术,并配合行业应用案例,常见问题等,全面解读大热的区块链技术实现与应用。第3-10章,着重是区块链架构剖析,并讲解区块链的关键技术,包括密码学和共识算法;提供比特币开发指南以及以太坊智能合同开发指南;同时介绍HyperLedger,讨论区块链的常见问题和典型的解决方案。第11章,从架构变革的角度探讨IT发展的原动力,并提供对区块链对未来IT发展的一些展望。 . ---------------------------区块链安全实战--------------------------- 区块链技术是当今富有创新性和影响力的新型技术,对数字世界有着深刻的影响。本书首先介绍常见的安全威胁,包括恶意软件、仿冒攻击、内部威胁、DDOS等;接下来介绍区块链技术的相关工作原理,涉及以太坊和超级账本的架构、安全体系等;最后介绍区块链使用的安全技术,以及如何通过核心的安全技术保障区块链的安全。此外,本书还给出了一些区块链安全的实例,以帮助读者理解区块链安全所面临的挑战及未来发展。 |
| 目录 |
---------------------------区块链开发实战:实用案例分析--------------------------- 推荐序 译者序 前言 审校者简介 第1章 初识区块链 1 1.1 区块链和加密货币的兴起 2 1.1.1 从虚拟货币到加密货币 2 1.1.2 比特币的出现 2 1.1.3 什么是区块链 3 1.2 与区块链交互 5 1.2.1 入门 6 1.2.2 方法1——使用Bitcoin Core创建原始交易 10 1.2.3 方法2——用JavaScript创建原始比特币交易 18 1.3 区块链类型 21 1.4 小结 22 第2章 建立比特币支付系统 23 2.1 什么是比特币 23 2.2 开始使用比特币 24 2.2.1 设置Regtest环境 24 2.2.2 用比特币交易 26 2.3 构建支付网关 31 2.3.1 项目描述 31 2.3.2 准备环境 33 2.3.3 项目设置 33 2.3.4 商家方面 34 2.3.5 客户端 39 2.3.6 预览应用程序 42 2.4 使用BitcoinJ的支付协议 44 2.4.1 准备环境 44 2.4.2 BitcoinJ 客户端 45 2.5 比特币智能合约 51 2.5.1 什么是Rootstock 51 2.5.2 编写你的第一个比特币智能合约 54 2.6 小结 56 第3章 创建加密货币 57 3.1 从源代码处编译比特币 57 3.1.1 准备创建系统 58 3.1.2 创建Bitcoin Core 59 3.2 新加密货币——Readercoin 61 3.2.1 克隆比特币 61 3.2.2 重新包装Readercoin 62 3.2.3 更改端口 63 3.2.4 更改pchMessageStart 63 3.2.5 创世区块 64 3.2.6 删除种子节点 67 3.2.7 检查点 68 3.2.8 ChainTxData 69 3.2.9 奖励 70 3.2.10 减半 70 3.2.11 总供给量 71 3.2.12 POW参数——目标 71 3.2.13 时间成熟度 74 3.2.14 区块大小 75 3.2.15 BIP:比特币改进建议 76 3.2.16 编译和测试 77 3.2.17 设计和图形(Qt钱包) 78 3.2.18 重新设计比特币-Qt钱包 79 3.2.19 建立一个Readercoin 网络 84 3.2.20 Readercoin 挖矿 86 3.2.21 发送交易 89 3.2.22 创建交易和区块浏览器 89 3.2.23 建立交易所 92 3.3 小结 93 第4章 以太坊中的点对点拍卖 94 4.1 以太坊简介 95 4.1.1 以太坊虚拟机和智能合约 95 4.1.2 以太币和gas 96 4.1.3 你的第一个智能合约 96 4.1.4 DApp是什么 97 4.2 创建拍卖DApp 98 4.2.1 拍卖描述 98 4.2.2 使用Solidity语言编写拍卖合约 99 4.2.3 合约代码分析 100 4.2.4 继承 105 4.2.5 Remix IDE 110 4.2.6 web3.js中的投标表格 113 4.2.7 web3.js API简介 116 4.3 部署环境——方法多多 122 4.3.1 选择1:Ganache 122 4.3.2 选择2:测试网 124 4.3.3 选择3:私有网络 126 4.3.4 用solc编译和部署合约 132 4.3.5 POA共识机制和难度调整 132 4.4 运行拍卖DApp 134 4.4.1 合约和交易成本 135 4.4.2 Solidity 的几个实用技巧 138 4.5 小结 138 第5章 使用Truffle和Drizzle构建Tontine游戏 139 5.1 背景情况 140 5.2 快速了解Truffle 140 5.2.1 安装Truffle 141 5.2.2 简单了解Truffle 141 5.2.3 首次运行Truffle 142 5.3 Tontine合约 145 5.4 作为CRUD合约的Cplayer 147 5.4.1 智能合约数据位置 147 5.4.2 CRUD——创建 149 5.4.3 CRUD——读取 149 5.4.4 CRUD——更新 151 5.4.5 CRUD —— 删除 151 5.5 Tontine接口——Itontine 152 5.6 接口实现——Ctontine合约 153 5.6.1 智能合约交互 154 5.6.2 加入游戏 156 5.6.3 ping()方法 159 5.6.4 eliminate()方法 160 5.6.5 share_pension()方法 160 5.6.6 claimReward()方法 161 5.7 Truffle单元测试 162 5.7.1 准备测试环境 162 5.7.2 迁移合约 162 5.7.3 准备测试 163 5.7.4 测试addPlayer() 164 5.7.5 测试findPlayer() 164 5.7.6 测试removePlayer() 165 5.7.7 测试Ctontine 165 5.7.8 测试payable函数 166 5.7.9 测试事件 167 5.7.10 测试claimReward() 167 5.7.11 运行测试 169 5.7.12 使用Solidity进行测试 169 5.7.13 使用Truffle 和Remix进行调试 171 5.8 使用Drizzle的前端 180 5.8.1 准备环境 180 5.8.2 Drizzle box是什么 180 5.8.3 初次了解Drizzle box 181 5.8.4 黑客攻击Drizzle box 183 5.8.5 游戏主页 184 5.9 试用DApp 187 5.9.1 将Ganache连接到MetaMask 188 5.9.2 运行Tontine DApp 189 5.9.3 表演时间——准备好了吗 191 5.9.4 获取帮助 193 5.10 小结 194 第6章 以区块链为基础的期货系统 195 6.1 项目展示 195 6.2 期货智能合约 196 6.3 web3j 199 6.3.1 准备环境 200 6.3.2 设置web3j Maven 项目 200 6.3.3 安装web3j 202 6.3.4 创建钱包 202 6.4 Java客户端 203 6.4.1 封装生成器 205 6.4.2 初始化web3j 205 6.4.3 设置以太坊账户 206 6.4.4 部署合约 206 6.4.5 与智能合约交互 207 6.4.6 调用合约函数 207 6.4.7 调用 view 方法 209 6.4.8 web3j事件 209 6.4.9 性能提升 210 6.5 小结 211 第7章 商业区块链 212 7.1 区块链的公共与私有、许可与无许可 212 7.2 以太坊中的隐私和匿名 213 7.3 为什么隐私和匿名很重要 214 7.4 以太坊企业联盟 214 7.5 区块链即服务 215 7.6 Quorum 215 7.6.1 隐私 215 7.6.2 更高性能和吞吐量 216 7.6.3 许可和治理 216 7.6.4 Quorum 客户端 216 7.6.5 我们的项目 217 7.7 小结 223 第8章 分布式存储IPFS和Swarm 224 8.1 背景 224 8.2 Swarm和IPFS 225 8.2.1 IPFS的安装 226 8.2.2 安装Swarm 228 8.3 托管前端 229 8.3.1 使用IPFS服务前端 229 8.3.2 使用Swarm服务前端 231 8.4 IPFS文件上传器项目 234 8.4.1 创建项目 234 8.4.2 网页 235 8.5 小结 238 第9章 超级账本上的供应链 239 9.1 食品供应链 239 9.2 超级账本概览 240 9.2.1 Hyperledger Fabric 240 9.2.2 Hyperledger Composer 242 9.3 建立开发环境 242 9.3.1 准备环境 243 9.3.2 安装Hyperledger Fabric 243 9.4 Fabric链码 243 9.4.1 编写链码 244 9.4.2 Init函数 245 9.4.3 Invoke函数 247 9.4.4 Query函数 250 9.5 创建商业网络 252 9.5.1 超级账本隐私 253 9.5.2 定义compose文件中的服务 253 9.5.3 资源和概要文件 256 9.5.4 Fabric通道和创世区块 257 9.5.5 生成对等节点和订单方证书 258 9.5.6 启动Docker容器 260 9.5.7 加入通道并安装链码 262 9.6 链码编译和部署 263 9.7 运行项目 264 9.7.1 通过REST API/JSON-RPC交互 266 9.7.2 Hyperledger Composer 272 9.8 小结 278 第10章 信用证超级账本 279 10.1 信用证理念和设计 279 10.2 开发环境 280 10.2.1 设置IDE 280 10.2.2 启动Hyperledger Fabric 281 10.3 创建一个Composer Fabric应用 282 10.4 信用证商业网络 286 10.4.1 初始信用证模型 287 10.4.2 参与者上线 288 10.4.3 初始协议 289 10.4.4 信用证请求 291 10.4.5 信用证批准 292 10.4.6 信用证通知 293 10.4.7 货物运输 293 10.4.8 提交文件 294 10.4.9 文件交付 295 10.4.10 借方付款 296 10.4.11 支付转账 297 10.4.12 给卖方付款 298 10.4.13 信用证闭卷 299 10.5 部署信用证 300 10.5.1 部署商业网络 300 10.5.2 生产一个REST服务器 301 10.5.3 测试信用证项目 302 10.6 IBM云上的Hyperledger Fabric 308 10.7 小结 313 ---------------------------区块链开发指南--------------------------- 推荐序一 区块链的价值实现 推荐序二 区块链,推动金融代际跃升的新力量 推荐序三 区块链技术的现实和未来 前言 第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 filter 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 ---------------------------区块链技术指南--------------------------- 本书作者 序一:什么是区块链 序二:区块链——未来已来,只是尚未流行 序三:区块链——连接虚拟与现实 序四:区块链——转型之擎 前言 第1章 区块链和比特币初体验/1 1.1 区块链简介/1 1.1.1 区块链起源——比特币/1 1.1.2 区块链和区块链技术的涵义/2 1.1.3 区块链分类/2 1.1.4 区块链价值与应用/7 1.2 区块链体验/10 1.2.1 获取比特币的3种途径/11 1.2.2 通过交易所购买比特币/13 1.2.3 比特币钱包和地址/17 1.2.4 从交易平台提取比特币到钱包/20 1.2.5 比特币交易查询/22 1.3 本章小结/22 第2章 区块链基础/24 2.1 区块链技术/24 2.1.1 基本概念/25 2.1.2 框架与特点/32 2.1.3 区块链运作的核心技术/35 2.1.4 区块链交易流程/41 2.2 以太坊/42 2.2.1 什么是以太坊/42 2.2.2 以太坊技术/43 2.2.3 以太坊智能合约/48 2.2.4 以太坊的去中心化应用/50 2.3 基于区块链的电子货币/51 2.3.1 元币平台/51 2.3.2 代币/52 2.3.3 货币的未来/58 2.4 本章小结/58 第3章 区块链架构剖析/59 3.1 基本定义/59 3.2 区块链1.0架构:比特币区块链/61 3.2.1 比特币前端/63 3.2.2 比特币节点后端/66 3.3 区块链2.0架构:以太坊区块链/79 3.4 区块链3.0架构:超越货币、金融范围的区块链应用/87 3.5 互联链架构剖析/90 3.5.1 互联链背景/90 3.5.2 互联账本/91 3.5.3 互联账本协议组/92 3.5.4 互联账本各层协议关系/95 3.6 本章小结/96 第4章 区块链中的密码学技术/97 4.1 哈希算法/97 4.1.1 哈希函数的性质与应用/99 4.1.2 哈希指针链/101 4.2 Merkle树/102 4.3 公钥密码算法/103 4.3.1 椭圆曲线密码算法/104 4.3.2 secp256k1椭圆曲线/105 4.3.3 椭圆曲线签名与验证签名/106 4.4 本章小结/107 第5章 共识算法详解/109 5.1 拜占庭容错技术/109 5.1.1 拜占庭将军问题/110 5.1.2 拜占庭容错系统/112 5.1.3 实用的拜占庭容错系统/112 5.1.4 Raft协议/114 5.2 PoW机制/116 5.3 PoS机制/122 5.4 DPoS机制/123 5.5 Ripple共识算法/124 5.6 小蚁共识机制/126 5.7 本章小结/127 第6章 比特币应用开发指南/129 6.1 以虚拟机方式搭建应用开发环境/129 6.1.1 下载和安装OracleVMVirtualBox/129 6.1.2 以虚拟机方式安装Ubuntu14.04/133 6.1.3 安装Node.js开发环境/138 6.1.4 安装Docker运行环境/138 6.1.5 安装和运行比特币测试网络/139 6.1.6 运行第一个示例程序/141 6.2 把握比特币“交易”数据结构/145 6.2.1 了解比特币的“交易”数据结构/145 6.2.2 交易记录的实例解析/146 6.2.3 运行示例程序/148 6.3 实战:多重签名交易/153 6.3.1 将ODIN标识注册到区块链上的实例解析/153 6.3.2 运行示例程序/156 6.4 本章小结/157 第7章 智能合约/158 7.1 智能合约简介/158 7.1.1 什么是智能合约/158 7.1.2 智能合约的历史/159 7.1.3 智能合约的优点和面临的风险/160 7.2 以太坊智能合约详解/161 7.2.1 以太坊上的账户/161 7.2.2 以太币和Gas/166 7.2.3 合约和交易/167 7.3 以太坊虚拟机/170 7.4 实例:在以太坊上开发实施智能合约/173 7.4.1 通过以太坊钱包部署智能合约/173 7.4.2 通过控制台部署智能合约/179 7.5 本章小结/183 第8章 超级账本项目/184 8.1 超级账本项目简介/184 8.1.1 项目背景/184 8.1.2 项目管理形式/185 8.1.3 项目的生命周期管理/186 8.1.4 项目发展状况/187 8.2 Fabric项目/187 8.2.1 项目概述/187 8.2.2 应用场景/188 8.2.3 项目架构/189 8.2.4 部署方式/191 8.2.5 交易的执行/192 8.3 SawtoothLake项目/193 8.3.1 项目概述/194 8.3.2 项目架构/194 8.4 本章小结/196 第9章 区块链常见问题/197 9.1 钱包的安全性问题/197 9.2 加密货币的交易方式/199 9.3 匿名性和隐私性/201 9.4 矿池算力集中的问题/203 9.551%攻击问题/205 9.6 去中心化的自治组织/207 9.6.1 去中心化的自治组织简介/207 9.6.2 TheDAO项目/208 9.6.3 代码漏洞分析/210 9.6.4 解决方案/213 9.6.5 软分叉和硬分叉的影响/215 9.6.6 重放攻击/216 9.7 本章小结/219 …… 第10章 区块链应用案例分析/220 第11章 从架构变革看IT时代的演进/237 ---------------------------区块链安全实战--------------------------- 译者序 前言 作者简介 审阅者简介 第1章 网络威胁形势与安全挑战1 1.1 当今的安全威胁形势2 1.1.1 勒索软件2 1.1.2 分布式拒绝服务攻击5 1.1.3 内部威胁6 1.1.4 数据泄露7 1.1.5 高级持续性威胁8 1.2 防御者观点9 1.2.1 政府9 1.2.2 企业11 1.3 实时攻击执行12 1.4 新兴的安全挑战16 1.5 本章小结17 1.6 问题17 1.7 延伸阅读18 第2章 安全演化必然性19 2.1 安全生态系统19 2.2 零信任法21 2.3 攻击假设法22 2.4 安全基层演化22 2.5 本章小结23 2.6 问题23 2.7 延伸阅读23 第3章 区块链和以太坊24 3.1 区块链是什么24 3.1.1 简单的历史回顾25 3.1.2 区块链的基本原理26 3.1.3 谁在使用区块链,如何使用26 3.2 因特网与区块链27 3.2.1 IP包与区块28 3.2.2 Web应用和去中心应用28 3.3 区块链的工作原理28 3.4 区块链的区块创建30 3.4.1 区块30 3.4.2 密码学—数字签名和哈希算法33 3.4.3 共识机制—区块链的核心37 3.5 以太坊38 3.5.1 历史39 3.5.2 什么是以太坊39 3.5.3 智能合约39 3.5.4 EVM52 3.5.5 gas52 3.5.6 dApp53 3.6 私有链和公有链53 3.6.1 公有链54 3.6.2 私有链54 3.7 业务适应54 3.8 本章小结56 3.9 问题56 3.10 延伸阅读56 第4章 Hyperledger—商用区块链平台57 4.1 技术要求58 4.2 Hyperledger概述58 4.3 区块链即服务59 4.4 架构与核心组件60 4.5 Hyperledger Fabric模型61 4.5.1 Hyperledeger Fabric核心组件61 4.5.2 Hyperledger的工作与交易处理63 4.6 比特币、以太坊与Hyperledger66 4.7 Hyperledger Fabric功能67 4.8 实验68 4.9 本章小结73 4.10 问题74 第5章 CIA安全三元组模型与区块链75 5.1 CIA安全三元组75 5.1.1 机密性75 5.1.2 完整性76 5.1.3 可用性76 5.2 了解区块链的机密性76 5.2.1 现有模型的机密性76 5.2.2 商业、区块链和机密性77 5.2.3 利用Hyperledger Fabric实现机密性77 5.3 区块链的完整性78 5.3.1 当前区块链网络的完整性78 5.3.2 区块排列和不变性78 5.3.3 使用超级账本实现完整性78 5.3.4 验证区块的完整性79 5.4 了解区块链的可用性79 5.4.1 当前区块链网络的可用性79 5.4.2 零单点失效79 5.4.3 业务可用性80 5.5 本章小结80 5.6 问题80 5.7 延伸阅读80 第6章 区块链上的PKI身份部署81 6.1 PKI81 6.1.1 PKI简析82 6.1.2 PKI的发展84 6.1.3 组成部分85 6.1.4 PKI架构90 6.1.5 证书生命周期92 6.1.6 密钥管理94 6.2 现有PKI模型面临的挑战95 6.3 区块链能做什么96 6.3.1 去中心化设施96 6.3.2 部署方案97 6.3.3 必要条件97 6.4 实验98 6.5 本章小结101 6.6 问题101 6.7 延伸阅读101 第7章 使用区块链进行双因子认证102 7.1 什么是2FA102 7.1.1 用户身份认证的演变103 7.1.2 为何选择2FA104 7.1.3 2FA的工作原理104 7.1.4 挑战105 7.2 用于2FA的区块链106 7.2.1 区块链如何改造2FA106 7.2.2 解决方案架构107 7.3 实验108 7.3.1 组件108 7.3.2 准备109 7.4 本章小结113 7.5 问题113 7.6 延伸阅读113 第8章 基于区块链的DNS安全平台114 8.1 DNS114 8.2 了解DNS组件115 8.2.1 命名空间115 8.2.2 域名服务器116 8.2.3 解析器117 8.3 DNS结构和层次117 8.3.1 根域名服务器117 8.3.2 目前的TLD结构118 8.3.3 注册管理机构、注册商和注册人119 8.3.4 DNS记录120 8.4 大型企业的DNS拓扑121 8.5 当前DNS面临的挑战123 8.6 基于区块链的DNS解决方案124 8.6.1 替换X.509 PKI124 8.6.2 防止MITM攻击的DNS基础设施124 8.7 基于以太坊的安全DNS基础设施实验125 8.7.1 实验准备125 8.7.2 Namecoin区块链安装126 8.7.3 安装PowerDNS129 8.7.4 安装DNSChain131 8.8 本章小结133 8.9 问题133 8.10 延伸阅读133 第9章 基于区块链的DDoS防御部署134 9.1 DDoS攻击134 9.1.1 什么是DDoS攻击135 9.1.2 DDos攻击原理135 9.2 DDoS攻击的类型140 9.2.1 针对网络资源的攻击141 9.2.2 针对服务器资源的攻击142 9.2.3 针对应用程序资源的攻击144 9.3 现有DDoS防御方案面临的挑战145 9.4 区块链如何变革现有的DDoS防御平台145 9.5 实验145 9.6 本章小结152 9.7 问题152 9.8 延伸阅读152 第10章 有关区块链和网络安全的事实153 10.1 区块链的决策路径153 10.1.1 什么时候使用区块链155 10.1.2 什么时候不应该使用区块链156 10.2 领导者备忘录157 10.3 区块链面临的挑战158 10.4 基于区块链技术的网络安全的未来159 10.5 本章小结159 10.6 问题160 10.7 延伸阅读160 习题答案161 |