区块链项目开发指南
🌙
手机阅读
本文目录结构

区块链项目开发指南
内容简介
区块链是近十年来颇具颠覆性的新兴信息技术之一,它正以一种全新的方式建立人类交易过程的信任、仲裁和记录基础。本书共 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