- 电子工业出版社
- 9787121439094
- 1-2
- 512207
- 48253643-0
- 平塑
- 16开
- 2023-04
- 608
- 380
- 计算机科学与技术
- 本科 研究生及以上
内容简介
本书详细而深入地介绍了区块链技术和智能合约技术,包括算法、数据结构及相关学科的相关理论。本书介绍了基于以太坊的智能合约编程语言Solidity,结合以太坊虚拟机(EVM)的实现,讨论了Solidity语句的汇编实现,介绍了如何应用Solidity来开发去中心化应用(DApp)、如何使用区块链的去中心化存储(IPFS)。同时,出于全面性和前瞻性的考虑,本书详细介绍了智能合约的重要分支:基于超级账本的链码编程和智能合约编程的明日之星Web Assembly(WASM)编程技术。 本书可以作为高等学校区块链工程与技术、计算机科学与技术、金融科技、商务智能等相关专业的教学参考书,也可作为区块链从业人员和相关企事业单位技术人员的参考书。
目录
目 录__eol__第1章 区块链概述 1__eol__1.1 什么是区块链 1__eol__1.2 区块链历史 2__eol__1.3 区块链的分类 5__eol__1.4 区块链解决的问题 6__eol__1.5 区块链技术概述 9__eol__1.6 区块链面临的挑战 10__eol__1.6.1 安全性挑战 10__eol__1.6.2 效率挑战 14__eol__1.6.3 落地应用的有效性 15__eol__1.6.4 区块链发展的政策法规监管 15__eol__习题1 15__eol__第2章 区块链技术 17__eol__2.1 区块链的架构 17__eol__2.2 哈希函数 18__eol__2.3 密码学算法 19__eol__2.3.1 对称加密算法 19__eol__2.3.2 不对称加密算法 21__eol__2.3.3 国密 22__eol__2.3.4 RSA 23__eol__2.3.5 椭圆曲线算法家族 24__eol__2.4 共识算法 26__eol__2.4.1 拜占庭将军问题 27__eol__2.4.2 共识算法的两个定理 27__eol__2.4.2 共识算法的目的 28__eol__2.4.3 工作量证明 29__eol__2.4.4 权益证明 30__eol__2.4.5 委托权益证明 31__eol__2.5 博弈论 31__eol__2.5.1 博弈论原理 32__eol__2.5.2 博弈论在区块链的应用 33__eol__2.6 P2P算法 34__eol__2.6.1 Gossip 35__eol__2.6.2 Kademlia 37__eol__2.7 数据结构及其算法 42__eol__2.7.1 默克尔树 42__eol__2.7.2 布隆过滤器 44__eol__习题2 46__eol__第3章 以太坊与智能合约 47__eol__3.1 以太坊介绍 47__eol__3.1.1 燃料 48__eol__3.1.2 以太坊虚拟机 50__eol__3.1.3 账户 50__eol__3.2 以太坊关键数据结构及其算法 51__eol__3.2.1 递归长度前缀编码 51__eol__3.2.2 梅克尔–帕特里夏树 52__eol__3.3 智能合约介绍 57__eol__3.3.1 智能合约的实现机制:虚拟机 57__eol__3.3.2 智能合约的实现机制:容器 58__eol__3.4 现有智能合约框架介绍 58__eol__习题3 59__eol__第4章 Solidity编程 61__eol__4.1 SOL文件结构 61__eol__4.2 合约结构 64__eol__4.3 变量类型 64__eol__4.3.1 值类型 64__eol__4.3.2 引用类型 66__eol__4.3.3 字典 67__eol__4.3.4 特殊情况 67__eol__4.4 操作符 68__eol__4.5 语句 69__eol__4.5.1 条件语句 69__eol__4.5.2 循环语句 70__eol__4.5.3 其他 70__eol__4.6 修饰符 70__eol__4.6.1 修饰符说明 71__eol__4.6.2 修饰符的区别 72__eol__4.6.3 自定义修饰符 74__eol__4.7 数据位置 75__eol__4.8 事件 77__eol__4.9 继承 80__eol__4.10 其他 81__eol__4.10.1 类型转换及推断 81__eol__4.10.2 异常 82__eol__4.10.3 汇编 82__eol__4.10.4 This关键字 84__eol__习题4 84__eol__第5章 智能合约开发 86__eol__5.1 智能合约开发的特点 86__eol__5.2 智能合约的生命周期和开发周期 88__eol__5.2.1 智能合约的生命周期 88__eol__5.2.2 智能合约的开发周期 88__eol__5.3 设计模式 89__eol__5.3.1 工厂合约模式 90__eol__5.3.2 映射迭代 90__eol__5.3.3 名字登录 91__eol__5.3.4 回退模式 92__eol__5.3.5 合约自毁 92__eol__5.3.6 访问限制 93__eol__5.3.7 断路器 94__eol__5.3.8 状态机 95__eol__5.4 基础算法 97__eol__5.5 智能合约的安全 99__eol__5.5.1 编程语言相关的攻击 99__eol__5.5.2 平台相关的攻击 107__eol__5.5.3 重入攻击 115__eol__5.5.4 阻塞攻击 116__eol__5.6 智能合约最佳安全开发指南 118__eol__5.7 代码审计 126__eol__小结 126__eol__习题5 126__eol__第6章 Solidity智能合约应用 127__eol__6.1 可升级 127__eol__6.1.1 升级智能合约要考虑的问题 127__eol__6.1.2 智能合约升级方法 128__eol__6.1.3 通用的代理模式 131__eol__6.1.4 存储升级 133__eol__6.2 节省燃料 140__eol__6.3 汇编代码 147__eol__6.3.1 栈 147__eol__6.3.2 调用数据 148__eol__6.3.3 内存 149__eol__6.3.4 存储 149__eol__6.4 合约间调用 151__eol__6.4.1 函数调用 151__eol__6.4.2 依赖注入 152__eol__6.4.3 消息调用 153__eol__6.4.4 获取合约间调用的返回值 156__eol__6.5 ABI编程 158__eol__6.5.1 内存结构 159__eol__6.5.2 函数选择子 159__eol__6.5.3 类型定义 159__eol__6.5.4 数据表示 160__eol__6.5.5 编码 165__eol__6.6 运行原理 173__eol__习题6 178__eol__第7章 去中心化应用 180__eol__7.1 DApp概述 180__eol__7.2 DApp架构 183__eol__7.2.1 客户端 183__eol__7.2.2 服务器端 184__eol__7.2.3 流程详解 186__eol__7.3 去中心化数据存储 188__eol__7.3.1 Swarm 189__eol__7.3.2 IPFS/FileCoin 191__eol__7.4 消息通信 193__eol__7.5 名字解析 194__eol__习题7 194__eol__第8章 超级账本 195__eol__8.1 Fabric概述 195__eol__8.1.1 Fabric结构 196__eol__8.1.2 Fabric组件 197__eol__8.1.3 Fabric技术架构 202__eol__8.1.4 Fabric网络架构 204__eol__8.2 链码 204__eol__8.2.1 链码的分类 204__eol__8.2.2 链码的生命周期 205__eol__8.3 链码交互 206__eol__习题8 207__eol__第9章 Web Assembly 209__eol__9.1 为什么需要WASM 209__eol__9.1.1 EVM的缺陷 209__eol__9.1.2 WASM的优越性 213__eol__9.2 WASM特色 213__eol__9.2.1 WASM特点 214__eol__9.2.2 WASM动态运行库 215__eol__9.3 eWASM前后端交互 216__eol__9.4 从Solidity迁移到WASM 218__eol__习题9 218__eol__第10章 开发环境和工具安装 220__eol__10.1 实验1:区块链开发基本语言工具包安装配置 220__eol__10.1.1 编程语言包的安装 220__eol__10.1.2 Node.js环境的安装 221__eol__10.1.3 Git包的安装 222__eol__10.2 实验2:以太坊开发环境安装 222__eol__10.2.1 web3安装 222__eol__10.2.2 Ganache安装 222__eol__10.2.3 Truffle安装 223__eol__10.2.4 区块链浏览器 225__eol__10.2.5 测试环境 225__eol__10.3 实验3:以太坊开发工具 227__eol__10.3.1 Remix的使用 227__eol__10.3.2 Infura的使用 230__eol__10.3.3 MetaMask的使用 231__eol__10.3.4 Mist的使用 233__eol__10.3.5 以太坊源码编译 234__eol__10.3.6 其他 235__eol__动手实验 235__eol__