内容简介
区块链是近十年来颇具颠覆性的新兴信息技术之一,它正以一种全新的方式建立人类交易过程的信任、仲裁和记录基础。本书共9章,首先介绍去中心化应用、DApp等基本概念,并据此展开对比特币、以太坊、超级账本等热门DApp的阐释。其次在解析以太坊工作原理的基础上介绍智能合约的编写方法,并介绍web3.js的应用方法。后利用上述知识进行钱包服务、智能合约部署平台、投注App、企业级智能合约以及联盟区块链等具体应用程序的创建。
目录
Contents 目录
译者序
前言
第1章 去中心化应用1
1.1 什么是DApp1
1.1.1 去中心化应用的优点2
1.1.2 去中心化应用的缺点3
1.2 去中心化自治组织3
1.3 DApp中的用户身份4
1.4 DApp中的用户账户5
1.5 访问中心化应用6
1.6 DApp中的内部货币6
1.7 什么是授权的DApp7
1.8 热门的DApp7
1.8.1 比特币7
1.8.2 以太坊9
1.8.3 超级账本项目9
1.8.4 IPFS10
1.8.5 Namecoin11
1.8.6 达世币12
1.8.7 BigChainDB14
1.8.8 OpenBazaar14
1.8.9 Ripple14
1.9 总结16
第2章 以太坊的工作原理17
2.1 以太坊概览17
2.2 以太坊账户18
2.3 交易18
2.4 共识19
2.5 时间戳20
2.6 随机数21
2.7 区块时间21
2.8 分叉24
2.9 创世区块24
2.10 以太币面值24
2.11 以太坊虚拟机25
2.12 gas25
2.13 发现对等节点26
2.14 Whisper和Swarm27
2.15 geth27
2.15.1 安装geth28
2.15.2 JSON-RPC和JavaScript操作台28
2.15.3 子命令和选项29
2.15.4 创建账户29
2.16 以太坊钱包31
2.17 浏览器钱包31
2.18 以太坊的缺点32
2.19 serenity33
2.20 总结35
第3章 编写智能合约36
3.1 Solidity源文件36
3.2 智能合约的结构37
3.3 数据位置38
3.4 什么是不同的数据类型39
3.4.1 数组类型39
3.4.2 字符串类型40
3.4.3 结构类型41
3.4.4 枚举类型42
3.4.5 mapping类型42
3.4.6 delete操作符43
3.4.7 基本类型之间的转换44
3.4.8 使用var44
3.5 控制结构45
3.6 用new操作符创建合约46
3.7 异常46
3.8 外部函数调用46
3.9 合约功能48
3.9.1 可见性48
3.9.2 函数修改器50
3.9.3 回退函数51
3.9.4 继承52
3.10 库54
3.11 返回多值56
3.12 导入其他Solidity源文件57
3.13 全局可用变量57
3.13.1 区块和交易属性57
3.13.2 地址类型相关58
3.13.3 合约相关58
3.14 以太币单位58
3.15 存在、真实性和所有权合约的证明59
3.16 编译和部署合约60
3.17 总结62
第4章 开始使用web3.js63
4.1 web3.js概述63
4.1.1 导入web3.js64
4.1.2 连接至节点64
4.1.3 API结构65
4.1.4 BigNumber.js66
4.1.5 单位转换66
4.1.6 检索gas价格、余额和交易细节67
4.1.7 发送以太币68
4.1.8 处理合约69
4.1.9 检索和监听合约事件71
4.2 为所有权合约创建客户端73
4.2.1 项目结构74
4.2.2 创建后端74
4.2.3 创建前端76
4.2.4 测试客户端80
4.3 总结82
第5章 创建钱包服务83
5.1 在线钱包和离线钱包的区别83
5.2 Hooked-Web3-Provider和EthereumJS-tx库84
5.3 分层确定性钱包87
5.4 密钥衍生函数87
5.5 LightWallet88
5.6 创建钱包服务89
5.6.1 必要条件89
5.6.2 项目结构90
5.6.3 创建后端90
5.6.4 创建前端91
5.6.5 测试97
5.7 总结101
第6章 创建智能合约部署平台102
6.1 计算一个地址的交易nonce102
6.2 solcjs概述104
6.2.1 安装solcjs104
6.2.2 solcjs API104
6.3 创建合约部署平台107
6.3.1 项目结构108
6.3.2 创建后端108
6.3.3 创建前端113
6.3.4 测试117
6.4 总结118
第7章 创建投注App119
7.1 Oraclize概述119
7.1.1 Oraclize的工作原理120
7.1.2 数据源120
7.1.3 真实性证明121
7.1.4 定价122
7.1.5 开始使用Oraclize API123
7.1.6 加密查询127
7.1.7 Oraclize Web IDE128
7.2 处理字符串128
7.3 创建投注合约130
7.4 为投注合约创建客户端133
7.4.1 项目结构133
7.4.2 创建后端134
7.4.3 创建前端135
7.4.4 测试客户端143
7.5 总结147
第8章 创建企业级智能合约148
8.1 探索ethereumjs-testrpc148
8.1.1 安装和使用149
8.1.2 可用RPC方法151
8.2 什么是事件主题153
8.3 开始使用truffle-contract154
8.3.1 安装和导入truffle-contract155
8.3.2 建立测试环境156
8.3.3 truffle-contract API156
8.4 truffle概述163
8.4.1 安装truffle163
8.4.2 初始化 truffle163
8.4.3 编译合约165
8.4.4 配置文件165
8.4.5 部署合约166
8.4.6 单元测试合约169
8.4.7 包管理175
8.4.8 使用truffle的操作台178
8.4.9 在truffle环境中运行外部脚本179
8.4.10 truffle的创建管线179
8.4.11 truffle的服务器端186
8.5 总结187
第9章 创建联盟区块链188
9.1 什么是联盟区块链189
9.2 什么是权威证明共识189
9.3 parity概述189
9.3.1 Aura的工作原理190
9.3.2 运行parity191
9.3.3 创建私有网络192
9.3.4 许可和隐私197
9.4 总结198
前言/序言
Preface 前 言
区块链是一个防篡改的去中心化账本,其中包含不断增长的数据记录列表。每个用户都可以连接到网络,发送新的交易、验证交易和创建新的区块。
本书将阐释区块链的概念,讲述其如何保证数据真实性,以及如何使用以太坊创建现实世界的区块链项目。通过有趣的现实世界案例,读者将了解如何编写完全按照程序运行、没有欺诈、没有中心机构或者第三方干预的智能合约,并学习如何创建端到端的区块链应用。本书还将介绍加密货币中的密码学、以太币安全、挖矿、智能合约和Solidity等概念。
区块链是比特币中最有创造性的技术,是记录比特币交易的公共账本。
本书内容
第1章阐释DApp的概念,并简述其工作原理。
第2章阐释以太坊的工作原理。
第3章阐释如何编写智能合约和使用geth交互接口来部署合约,以及使用web3.js广播交易。
第4章介绍web.3js的概念及其导入方法、连接到geth的方法,并阐释了如何在node.js或者客户端JavaScript使用它。
第5章阐释如何创建钱包服务,以方便用户创建和管理以太坊钱包,甚至离线创建和管理钱包。我们将专门使用LightWallet库实现。
第6章展示如何使用web3.js编译智能合约,以及使用web3.js和EthereumJS部署智能合约。
第7章阐释如何使用Oraclize从以太坊智能合约发出HTTP请求,以访问万维网中的数据。我们还将学习访问存储在IPFS中的文件、使用字符串库处理字符串等方法。
第8章阐释如何使用truffle。truffle将使创建企业级DApp变得容易。我们将通过创建代币来学习truffle。
第9章阐释创建联盟区块链的方法。
设备环境
Windows 7 SP1+、Windows 8、Windows 10或者Mac OS X 10.8+。
读者对象
本书适合想使用区块链和以太坊创建防篡改数据(和交易)应用的JavaScript开发人员阅读,也适合对密码学及其逻辑以及相关数据库感兴趣的人阅读。
下载实例代码
可以从http://www.packtpub.com下载本书的实例代码文件。如果您在其他地方购买了本书,可以访问http://www.hzbook.com注册并下载。
区块链项目开发指南 电子书 下载 mobi epub pdf txt