发烧级大神: 51CTO学校金牌讲师、CSDN、51CTO搏客权威专家、宁哥文化教育创办人、知名程序员安踏亲著
超級教学资源:重实效赠予使用价值698元JavaScript在线课程 这书视頻课 整套试验手机软件 本书实例源代码 1对1解释 经常性意外惊喜
全栈专业知识站台拿下:区块链技术、以太币、区块链智能合约、DApp,从定义到实战演练,站台拿下。
满足感满满:从入门到精通,从基础理论到实战演练,一点儿一个,轻轻松松入门,学习培训意外惊喜持续。
这书是1本区块链技术开发设计书籍。这书立足于实战演练,从入门到精通地重零开始解读以太币及有关技术性,包含区块链技术的基本定义和基础理论、运用以太币建立独享区块链技术、撰写区块链智能合约、挖币、Web3.js API、Solidity語言、Truffle架构、Ganache检测连接点等技术性。这书务求浅显易懂,案例丰富多彩,流程详尽。以便协助用户推进基本知识,这书*后还装有2个综合性实例各自保持以太币在金融行业(公布代币)和非银行行业(DApp)的运用。
这书合适于区块链应用的学生及从业人员应用。
目录
- 第1章 区块链的基本概念与应用场景
- 1.1 基本概念1
- 1.1.1 去中心化应用(DApp) 1
- 1.1.2 DApp的内部货币2
- 1.1.3 比特币 2
- 1.1.4 工作量证明(PoW) 3
- 1.1.5 股权证明(PoS) 4
- 1.1.6 51%攻击 4
- 1.1.7 以太坊 4
- 1.1.8 超级账本项目 5
- 1.2 区块链的应用场景 5
- 1.2.1 金融领域6
- 1.2.2 征信管理7
- 1.2.3 资源共享7
- 1.2.4 物联网 8
- 1.2.5 其他领域8
- 1.3 小结 9
- 第2章 创建第一个区块链
- 2.1 以太坊(Ethereum)开发环境搭建 10
- 2.2 使用geth命令创建以太坊账户 13
- 2.3 删除以太坊账户 15
- 2.4 gethJavaScript控制台 16
- 2.5 建立私有区块链与挖矿 18
- 2.6 小结 21
- 第3章 智能合约基础
- 3.1 基础知识22
- 3.1.1 Solidity语言概述23
- 3.1.2 用Solidity语言开发智能合约 23
- 3.1.3 使用Remix运行智能合约 24
- 3.2 编写和测试智能合约 27
- 3.2.1 安装本地Remix环境(Windows、Mac OS X和Linux) 27
- 3.2.2 安装testrpc28
- 3.2.3 使用testrpc测试智能合约 29
- 3.2.4 IntellijIDEA Solidity插件 33
- 3.2.5 将Solidity编译工具与Intellij IDEA集成 36
- 3.3 其他智能合约IDE 38
- 3.3.1 VisualStudio扩展 38
- 3.3.2 VisualStudio Code扩展 40
- 3.3.3 SublimeText插件 42
- 3.4 Solidity工具 42
- 3.4.1 SolidityREPL 42
- 3.4.2 solgraph43
- 3.5 小结 45
- 第4章 以太坊节点与挖矿
- 4.1 什么是Web3.js46
- 4.2 安装Web3.js47
- 4.3 连接testrpc节点 48
- 4.4 连接geth节点 49
- 4.5 HttpProvider与IPCProvider 51
- 4.6 发布与调用智能合约 53
- 4.6.1 编译智能合约 53
- 4.6.2 创建以太坊账户 54
- 4.6.3 用Web3.jsAPI发布智能合约 54
- 4.6.4 挖矿与挣钱56
- 4.6.5 重新发布智能合约 57
- 4.7 自动编译智能合约 60
- 4.8 小结 64
- 第5章 以太坊中的Web技术
- 5.1 Node.js入门 65
- 5.1.1 使用Node.jsREPL 66
- 5.1.2 执行JavaScript脚本文件 66
- 5.1.3 Node.jsIDE(WebStorm) 67
- 5.1.4 在WebStorm中编写Node.js程序 68
- 5.2 Express入门 70
- 5.2.1 安装express模块 70
- 5.2.2 使用express模块 72
- 5.2.3 用WebStorm创建Express工程 74
- 5.2.4 为Express工程添加路由 76
- 5.2.5 使用Handlebars模板 78
- 5.3 通过Web方式调用智能合约 78
- 5.3.1 在Web页面中调用智能合约 79
- 5.3.2 在服务端(Node.js)调用智能合约 84
- 5.3.3 通过AJAX方式异步调用智能合约 88
- 5.4 小结 90
- 第6章 Web3.js API详解
- 6.1 基础知识91
- 6.1.1 Web3.js简介 91
- 6.1.2 Web3.js开发环境搭建 92
- 6.2 Web3 API 93
- 6.2.1 设置和获取Provider93
- 6.2.2 重置状态94
- 6.2.3 获取字符串的SHA3哈希码 94
- 6.2.4 将值转换为十六进制字符串 95
- 6.2.5 十六进制与ASCII互相转换 97
- 6.2.6 十六进制与十进制互相转换 98
- 6.2.7 将数值或十六进制字符串转换为BigNumber 98
- 6.2.8 使用BigNumber99
- 6.2.9 单位转换101
- 6.2.10 核对账户地址是否有效 103
- 6.3 Web3.ethAPI 104
- 6.3.1 获取和设置默认账户 104
- 6.3.2 获取和设置默认区块 104
- 6.3.3 获取区块的同步状态 105
- 6.3.4 捕捉区块同步状态 106
- 6.3.5 获取矿工地址 107
- 6.3.6 检测当前节点是否在挖矿 108
- 6.3.7 获取以太坊燃料(gas)的平均价格 109
- 6.3.8 获取以太坊节点中的账号地址 109
- 6.3.9 获取区块编号 110
- 6.3.10 获取账户的余额 112
- 6.3.11 获取地址某一个位置存储的值 113
- 6.3.12 获取指定地址中的代码 113
- 6.3.13 获取区块信息 114
- 6.3.14 获取区块中包含的交易数 116
- 6.3.15 获取交易数据 117
- 6.3.16 获取交易凭证 118
- 6.3.17 获取账户发送的交易数 120
- 6.3.18 向以太坊网络发送交易 120
- 6.3.19 发送签名交易 122
- 6.3.20 用账户对数据进行签名 123
- 6.3.21 执行以太坊虚拟机中的代码 124
- 6.3.22 预估交易消耗的gas数 124
- 6.3.23 如何设置gas、gasLimit和gasPrice 125
- 6.4 小结128
- 第7章 Solidity语言详解(一)
- 7.1 Solidity语言简介129
- 7.2 Solidity语言基础130
- 7.2.1 编译器版本指令(pragma) 130
- 7.2.2 导入其他Solidity源代码
- 文件(import) 132
- 7.2.3 用Web3.jsAPI发布多个智能合约 136
- 7.2.4 用Web3.jsAPI编译多个智能合约 140
- 7.2.5 注释142
- 7.3 值类型142
- 7.3.1 布尔类型(bool) 143
- 7.3.2 整数类型(int/uint) 144
- 7.3.3 浮点数(fixed) 145
- 7.3.4 地址类型(address) 145
- 7.3.5 获取余额(balance)与转账(transfer) 146
- 7.3.6 另一种转账的方式(send) 149
- 7.3.7 固定长度的字节序列 150
- 7.4 引用类型152
- 7.4.1 数据存储位置 152
- 7.4.2 可变长度的字节序列(bytes) 153
- 7.4.3 字符串(string)类型 154
- 7.4.4 使用bytes连接字符串 156
- 7.4.5 使用第三方库连接字符串 158
- 7.4.6 枚举类型(enum) 159
- 7.4.7 函数类型(function) 161
- 7.4.8 数组164
- 7.4.9 结构体(struct) 168
- 7.5 映射(mapping) 170
- 7.6 小结172
- 第8章 Solidity语言详解(二)
- 8.1 表达式与控制结构 173
- 8.1.1 函数参数与函数返回值 173
- 8.1.2 控制结构176
- 8.1.3 调用其他合约中的函数 179
- 8.1.4 函数的命名参数 181
- 8.1.5 通过new关键字创建合约对象 182
- 8.1.6 函数多返回值解构和元组赋值 184
- 8.1.7 变量声明和作用域 185
- 8.1.8 错误处理186
- 8.2 计量单位与全局变量 187
- 8.2.1 以太计量单位 187
- 8.2.2 时间计量单位 189
- 8.2.3 block变量190
- 8.2.4 msg变量191
- 8.2.5 其他全局变量和函数 193
- 8.3 智能合约194
- 8.3.1 函数和状态变量访问权限 194
- 8.3.2 getter函数195
- 8.3.3 自定义修饰符(modifier) 197
- 8.3.4 常量201
- 8.3.5 view函数202
- 8.3.6 pure函数204
- 8.3.7 fallback函数205
- 8.3.8 函数重载206
- 8.3.9 事件207
- 8.3.10 合约继承210
- 8.3.11 合约构造函数 211
- 8.3.12 抽象合约211
- 8.3.13 接口213
- 8.4 小结214
- 第9章 Truffle与Ganache实战
- 9.1 Truffle基础215
- 9.1.1 安装Truffle215
- 9.1.2 创建Truffle工程 216
- 9.1.3 Truffle工程的结构216
- 9.1.4 在Truffle工程中创建自己的合约 217
- 9.1.5 编译合约218
- 9.1.6 部署合约219
- 9.1.7 测试合约219
- 9.2 以太坊客户端 220
- 9.2.1 Truffle内置以太坊客户端 220
- 9.2.2 Ganache概述221
- 9.2.3 安装Ganache221
- 9.2.4 用Truffle在Ganache上发布合约 222
- 9.3 Truffle高级应用224
- 9.3.1 用Solidity编写测试代码 224
- 9.3.2 用JavaScript编写测试代码 227
- 9.3.3 捕捉事件和异常 228
- 9.3.4 使用truffle-contractAPI调用
- 合约函数 231
- 9.3.5 写Truffle扩展脚本 232
- 9.4 小结234
- 第10章 项目实战:在以太坊上发行数字资产
- 10.1 数字资产原理 236
- 10.2 代币合约239
- 10.2.1 ERC20Token接口 239
- 10.2.2 编写代币合约 242
- 10.2.3 测试代币合约中的函数 245
- 10.2.4 测试代币合约中的事件 247
- 10.3 在以太坊上发布和使用代币 248
- 10.3.1 如何将代币合约部署在以太坊上 249
- 10.3.2 安装MetaMask扩展 250
- 10.3.3 创建以太坊账户 251
- 10.3.4 免费申请无限量的以太(ether) 254
- 10.3.5 在以太坊上部署代币合约 257
- 10.3.6 代币交易260
- 10.4 用Web3.jsAPI完成Titans币的转账 265
- 10.5 以太币和以太坊代币的区别 269
- 10.6 互联网的未来:DApp 270
- 10.7 小结271
- 第11章 项目实战:支持以太坊的小程序版云笔记
- 11.1 项目功能概述 272
- 11.2 微信小程序基础 273
- 11.2.1 搭建小程序开发环境 273
- 11.2.2 创建小程序项目 275
- 11.3 云笔记智能合约 277
- 11.3.1 编写和测试云笔记智能合约 277
- 11.3.2 将CloudNoteService合约部署到以太坊网络上 279
- 11.4 用Note.js和Express开发小程序服务端程序 281
- 11.4.1 编写调用CloudNoteService合约函数的Database类 281
- 11.4.2 测试Database类 289
- 11.4.3 为服务添加集中式存储功能 291
- 11.4.4 添加为小程序服务端路由 294
- 11.5 开发云笔记客户端 296
- 11.5.1 设计云笔记主页面 296
- 11.5.2 实现云笔记主页面的逻辑代码 298
- 11.5.3 设计添加云笔记页面 300
- 11.5.4 实现添加云笔记页面的逻辑代码 302
- 11.5.5 设计云笔记列表页面 304
- 11.5.6 实现云笔记列表页面的逻辑代码 305
- 11.5.7 设计云笔记编辑页面 307
- 11.5.8 实现云笔记编辑页面的逻辑代码 309
- 11.6 小结310