区块链项目开发指南

🌙
手机阅读
本文目录结构

区块链项目开发指南

内容简介

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

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

目前重心已经放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>