基本信息
作者: 吴寿鹤 冯翔 刘涛 周广益
丛书名: 区块链技术丛书
出版社:机械工业出版社
ISBN:9787111599562
上架时间:2018-6-1
出版日期:2018 年6月
开本:16开
版次:1-1
所属分类:计算机
目录
前言
1章 全面认识区块链 1
1.1 区块链技术的起源和解释 1
1.2 区块链的核心技术及其特性 2
1.2.1 区块链技术的特性 3
1.2.2 区块链的分布式存储技术特性 3
1.2.3 区块链的密码学技术特性 4
1.2.4 区块链中的共识机制 8
1.2.5 区块链中的智能合约 12
1.3 区块链技术演进过程 13
1.4 区块链技术的3个缺点 13
1.5 区块链技术常见的4个认识 14
1.6 区块链技术的应用领域 15
1.6.1 区块链在金融行业的应用 15
1.6.2 区块链在供应链中的应用 16
1.6.3 区块链在公证领域的应用 17
1.6.4 区块链在数字版权领域的应用 18
1.6.5 区块链在保险行业的应用 19
1.6.6 区块链在公益慈善领域的应用 21
1.6.7 区块链与智能制造 22
1.6.8 区块链在教育就业中的应用 23
1.7 区块链的其他常见技术框架 24
1.8 本章小结 25
2章 实战准备 26
2.1 开发环境准备 26
2.1.1 操作的配置 26
2.1.2 Docker的使用 27
2.1.3 Git的使用 30
2.2 开发语言 30
2.2.1 GO语言 30
2.2.2 Node.js 32
2.3 常用工具 32
2.3.1 Curl 32
2.3.2 tree 33
2.3.3 Jq 33
2.4 本章小结 34
3章 以太坊介绍 35
3.1 了解以太坊 35
3.2 以太坊发展路线 36
3.3 以太坊内置货币 37
3.4 以太坊交易吞吐量 38
3.5 以太坊账户 39
3.6 智能合约 40
3.7 Gas与GasPrice 41
3.8 工作量证明算法 41
3.9 以太坊网络类型 42
3.10 以太坊客户端 43
3.11 本章小结 44
4章 以太坊的编译、安装与运行 45
4.1 在Ubuntu下安装 45
4.2 在MacOS下安装 46
4.3 在Windows下安装 46
4.4 以Docker方式安装 47
4.5 运行以太坊 47
4.6 本章小结 47
5章 以太坊私有链的搭建与运行 48
5.1 搭建一个私有链 48
5.2 以太坊控制台命令 53
5.3 以太坊CLI控制台命令 64
5.3.1 账户管理 64
5.3.2 区块数据管理 65
5.4 以太坊TestRPC测试链搭建 69
5.5 本章小结 78
6章 以太坊的编程接口 79
6.1 web3.js API 79
6.1.1 安装web3.js并创建实例 79
6.1.2 账户相关API 80
6.1.3 交易相关API 80
6.1.4 区块相关API 87
6.2 JSON-RPC API 87
6.2.1 账户相关API 88
6.2.2 交易相关API 89
6.2.3 区块相关API 94
6.3 本章小结 95
7章 Solidity IDE和Solidity快速入门 96
7.1 三种Solidity IDE 96
7.1.1 browser-solidity 96
7.1.2 Atom 97
7.1.3 IntelliJ IDEA 97
7.2 Solidity快速入门:编写一个简单的银行合约案例 99
7.3 本章小结 101
8章 Solidity语法详解 102
8.1 注释 102
8.2 整型和布尔型 103
8.2.1 整型 103
8.2.2 布尔型 104
8.3 地址 104
8.4 字节数组 105
8.4.1 固定长字节数组 105
8.4.2 动态长度字节数组 105
8.5 类型转换和类型推断 106
8.5.1 类型转换 106
8.5.2 类型推断 107
8.6 时间单位和货币单位 107
8.6.1 时间单位 107
8.6.2 货币单位 108
8.7 数组和多维数组 108
8.7.1 数组 108
8.7.2 多维数组 109
8.8 映射/字典 109
8.9 结构体与枚举 111
8.9.1 结构体 111
8.9.2 枚举 112
8.10 全局变量 112
8.11 控制结构 113
8.12 函数 114
8.13 事件 122
8.14 合约 124
8.15 继承 125
8.16 抽象合约 127
8.17 接口 128
8.18 库 128
8.19 Using for 128
8.20 引入其他源文件 129
8.21 状态变量/局部变量 129
8.22 数据位置 130
8.22.1 数据位置概述 130
8.22.2 数据位置之间相互转换 130
8.23 异常处理 132
8.24 编写安全solidity智能合约佳实践 133
8.24.1 尽早抛出异常 133
8.24.2 结构化函数代码顺序 134
8.24.3 在支付时使用pull模式而不是push模式 134
8.24.4 整数上溢和下溢 136
8.25 本章小结 137
9章 Solidity 合约编译、部署 138
9.1 编译合约 138
9.1.1 安装solc编译工具 138
9.1.2 开始编译合约 139
9.2 部署合约 141
9.2.1 启动以太坊geth节点 141
9.2.2 部署智能合约 143
9.3 调用合约 145
9.4 本章小结 146
10章 Truffle详解 147
10.1 什么是Truffle 147
10.2 安装Truffle 148
10.3 创建并初始化项目 149
10.4 创建合约 150
10.5 编译合约 150
10.6 迁移合约 151
10.7 合约交互 156
10.7.1 交易 156
10.7.2 调用 157
10.7.3 合约抽象 157
10.7.4 与合约交互 158
10.7.5 添加一个新合约到网络 159
10.7.6 使用现有合约地址 160
10.7.7 向合约发送以太币 161
10.8 测试合约 163
10.9 测试 164
10.10 Solidity测试 165
10.11 Truffle 配置文件 167
10.12 依赖管理 169
10.13 本章小结 171
11章 以太坊DApps应用开发实战 172
11.1 DApps架构与开发流程 172
11.1.1 DApps架构 VS Web应用架构 172
11.1.2 DApps开发流程 173
11.2 案例:去中心化微博 174
11.2.1 创建项目 175
11.2.2 合约 176
11.2.3 前端应用 181
11.3 本章小结 192
附录A 比特币的原理和运行方式 193
附录B 比特币的bitcoin-cli模块详解 203
附录C 比特币的编程接口 213
附录D 比特币客户端项目实战 218
附录E 区块链相关术语 225
后记 228
本店所售图书均为正版书籍
《精通智能合约: Solidity 语言实战指南》 内容简介: 本书是一本面向开发者、区块链爱好者以及希望深入理解以太坊智能合约开发的权威性实战指南。它旨在帮助读者系统地掌握 Solidity 编程语言的核心概念、开发技巧以及实际应用,从零基础到精通,逐步构建安全、高效的去中心化应用程序(DApps)。不同于仅介绍区块链概念或以太坊基础架构的书籍,《精通智能合约: Solidity 语言实战指南》将目光聚焦于以太坊生态系统中最为核心的驱动力——智能合约。书中将深入剖析智能合约的生命周期,从设计理念、编写规范,到部署测试、安全审计,再到升级维护,提供一套完整的开发流程和最佳实践。 第一部分:Solidity 基础精讲与入门 本部分将带领读者走进 Solidity 的世界。我们将从其起源和设计哲学出发,解释为何 Solidity 成为以太坊智能合约开发的首选语言。 Solidity 语言概览: 详细介绍 Solidity 的基本语法,包括变量类型(整型、布尔型、字符串、地址类型等)、运算符、控制流语句(if-else、for、while)、函数定义与调用。我们将用清晰易懂的示例代码,帮助读者快速建立对语言结构的认知。 数据类型与存储: 深入讲解 Solidity 中特有的数据类型,如 `bytes32`、`mapping`、`enum`、`struct`,以及它们在不同上下文中的应用。重点阐述 `storage`、`memory` 和 `calldata` 之间的区别与联系,以及它们对 Gas 消耗和合约行为的影响。 函数可见性与修饰符: 详尽讲解 `public`、`private`、`internal`、`external` 等函数可见性关键字,以及 `view`、`pure`、`payable`、`virtual`、`override` 等修饰符的作用。通过具体案例,展示如何利用它们来控制函数访问权限、优化 Gas 效率和实现函数重写。 事件(Events)与日志(Logs): 学习如何使用事件来记录合约的重要状态变化,以及如何在链下监听和处理这些事件。理解事件在 DApp 前后端交互中的关键作用。 错误处理与断言: 介绍 Solidity 中的错误处理机制,包括 `require`、`assert` 和 `revert` 的使用场景与区别。学习如何编写健壮的智能合约,有效应对异常情况。 第二部分:智能合约进阶开发与模式 在掌握了 Solidity 的基础之后,本部分将引导读者进入更高级的开发领域,学习智能合约设计的常见模式和安全考量。 ERC 标准详解与应用: 深入讲解以太坊中最常用的代币标准,如 ERC-20(同质化代币)、ERC-721(非同质化代币 NFT)和 ERC-1155(多代币标准)。通过实例代码,演示如何实现这些标准,并讨论其在去中心化金融(DeFi)和数字收藏品领域的广泛应用。 访问控制与权限管理: 介绍多种实用的访问控制模式,例如 Ownable(所有者模式)、Role-Based Access Control(RBAC,基于角色的访问控制)。学习如何构建安全的权限系统,确保敏感操作只能由授权用户执行。 合约继承与抽象合约: 讲解 Solidity 的继承机制,如何通过继承复用代码,提高开发效率。深入理解抽象合约的概念,以及它在定义通用接口和强制实现方面的作用。 函数重入(Reentrancy)漏洞与防御: 这是智能合约安全中最常见也最危险的漏洞之一。本部分将详细剖析重入攻击的原理,并提供多种有效的防御策略,如 Checks-Effects-Interactions 模式、使用 ReentrancyGuard 等库。 其他常见安全漏洞分析与防范: 除了重入漏洞,还将深入探讨整数溢出/下溢、Gas 限制、时间戳依赖、随机数不确定性等其他常见的安全隐患,并提供相应的防范措施。 状态变量与 Gas 优化: 学习如何合理设计合约的状态变量,最小化存储空间以降低 Gas 消耗。掌握优化函数逻辑、减少不必要计算的技巧,编写更具经济性的智能合约。 第三部分:智能合约开发实践与工具链 本部分将聚焦于实际的开发流程和常用的工具,让读者能够快速上手,搭建完整的开发环境,并进行高效的开发与测试。 开发环境搭建: 指导读者安装和配置常用的 Solidity 开发环境,包括 Node.js、npm/yarn,以及 Truffle Suite、Hardhat 等流行的开发框架。 Truffle Suite 实战: 详细介绍 Truffle Suite 的各个组件,包括 Truffle 命令行工具、Ganache 个人区块链、Truffle 迁移脚本、测试框架等。通过构建一个简单的去中心化应用(DApp)项目,带领读者完成智能合约的编写、编译、部署和测试的全过程。 Hardhat 开发框架: 介绍 Hardhat 作为另一个强大的智能合约开发框架的特点和优势。讲解其灵活的插件系统、丰富的任务脚本以及高效的测试能力,并提供与 Truffle 类似的实战案例,让读者了解不同框架的开发风格。 智能合约测试: 强调测试在智能合约开发中的极端重要性。讲解如何使用 Mocha、Chai 等测试库编写单元测试、集成测试,覆盖各种边界情况和异常场景,确保合约的正确性和安全性。 部署到测试网络与主网: 演示如何将开发好的智能合约部署到 Ropsten、Rinkeby、Kovan 等以太坊测试网络,进行实际验证。并讲解部署到以太坊主网的注意事项和流程。 与前端交互: 介绍如何使用 Web3.js 或 Ethers.js 等 JavaScript 库,让 DApp 的前端界面能够与部署在链上的智能合约进行交互,实现用户的功能操作。 高级主题探索(可选): 简要介绍一些更高级的智能合约开发主题,例如: DeFi 基础: 了解 Uniswap、Aave 等 DeFi 协议中的核心智能合约设计。 ERC-4626(代币化库) 升级模式: Proxy Pattern(代理模式)的原理和实现,用于智能合约的无缝升级。 跨链合约交互: 简单介绍跨链通信的技术挑战与解决方案。 本书特色: 高度实战导向: 全书围绕大量的代码示例和实战项目展开,让读者在动手实践中学习。 循序渐进的难度: 从 Solidity 基础语法到复杂的安全模式和开发工具,由浅入深,适合不同程度的读者。 注重安全: 将智能合约安全置于极其重要的位置,系统地讲解各类安全漏洞及防御措施。 前沿技术覆盖: 介绍当前以太坊生态中最流行和最实用的智能合约开发技术和工具。 清晰易懂的语言: 避免晦涩难懂的术语,力求用最简洁明了的语言解释复杂概念。 目标读者: 有一定编程基础,希望学习区块链智能合约开发的开发者。 对以太坊技术感兴趣,想深入理解其核心机制的区块链技术爱好者。 希望构建去中心化应用程序(DApps)的初创公司技术团队。 对去中心化金融(DeFi)、NFT 等领域有探索需求的读者。 已经了解区块链基本概念,但缺乏实际智能合约开发经验的工程师。 《精通智能合约: Solidity 语言实战指南》 将成为您进入以太坊智能合约开发领域的坚实基石,助您成为一名合格的 DApp 开发者,驾驭区块链技术的无限可能。
这本书的封面设计着实吸引人,那种深沉的蓝与科技感的线条交织在一起,让人一看就知道是干货满满的硬核技术读物。我本来对区块链这个领域抱有很高的期待,希望找到一本能真正带我深入底层、理解其运行机制的指南,而不是泛泛而谈的理论概述。翻开前几页,我就感受到作者的专业度和严谨性。他们似乎毫不保留地将自己多年的实践经验倾注其中,从最基础的共识机制到复杂的智能合约部署,逻辑清晰得仿佛为你绘制了一张详尽的地图。特别是在介绍某些核心算法时,配以大量的图表和伪代码,使得原本晦涩难懂的概念变得触手可及。我花了整整一个周末的时间沉浸其中,每读完一个章节,都会忍不住动手去尝试书中所述的案例,那种“原来如此”的顿悟感,是其他一些入门书籍无法给予的。这本书的价值,不在于它能告诉你“什么是”区块链,而在于它能手把手教你“如何构建”一个真正可用的系统。对于那些渴望从“使用者”蜕变为“开发者”的读者来说,这绝对是一笔值得的投资。