新書推薦:
《
股票大作手回忆录
》
售價:HK$
55.8
《
秩序四千年:人类如何运用法律缔造文明(世界重归混乱,文明岌岌可危,法律与秩序是我们仅有的武器。穿越时间,鸟瞰全球,一部波澜壮阔的人类文明史)
》
售價:HK$
154.6
《
民法典1000问
》
售價:HK$
99.7
《
国术健身 易筋经
》
售價:HK$
33.4
《
古罗马800年
》
售價:HK$
188.2
《
写出心灵深处的故事:踏上疗愈之旅(修订版)(创意写作书系)
》
售價:HK$
66.1
《
控制权视角下的家族企业管理与传承
》
售價:HK$
87.4
《
冯友兰和青年谈心系列
》
售價:HK$
167.3
編輯推薦:
●骨灰级大牛: 51CTO学院金牌讲师、CSDN、51CTO博客专家、宁哥教育创始人、著名码农李宁亲著
●超级学习资源:实打实赠送价值698元JavaScript视频课程 本书视频课 全套实验软件 全书案例源码 一对一解答 不定期惊喜
●全栈知识一站搞定:区块链、以太坊、智能合约、DApp,从概念到实战,一站搞定。
●成就感十足:从入门到精通,从理论到实战,一点一例,轻松上手,学习惊喜不断。
內容簡介:
本书是一本区块链开发技术图书。本书立足实战,深入浅出地从零开始讲解以太坊及相关技术,包括区块链的基础概念和理论、利用以太坊创建私有区块链、编写智能合约、挖矿、Web3.js API、Solidity语言、Truffle框架、Ganache测试节点等技术。本书力求通俗易懂,实例丰富,步骤详细。为了帮助读者巩固基础知识,本书*后还配有两个综合案例分别实现以太坊在金融领域(发布代币)和非金融领域(DApp)的应用。
本书适合于区块链技术的学习者及从业者使用。
關於作者:
●欧瑞科技创始人&CEO,宁哥教育创始人&教学总监
●51CTO学院金牌讲师(已录制超过1000小时的视频课程),
●51CTO、CSDN、CNBLOG博客专家。
●超过15年的企业内训经验和开发实战经验,曾任国内著名软件公司项目经理,●目前主要从事区块链、比特币、人工智能、大数据、Python、JavaScript、Java、C、编译器等技术的研究和开发,现在正在带领团队开发支持区块链的跨平台开发系统。
●曾出版超过30多本开发技术畅销书。
●深厚的一线项目开发功力加上多年的培训讲师经历,成店堂了李宁老师风趣幽默,条理清晰、通俗易懂、深入浅出、实战性强的授课特点。他的课程,经常能够让学生举一反三,发散学生的思维,并指引学生发掘适合自己的学习方法。
目錄 :
前言
第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 geth
JavaScript控制台 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 安装testrpc
28
3.2.3 使用testrpc测试智能合约 29
3.2.4 Intellij
IDEA Solidity插件 33
3.2.5 将Solidity编译工具与Intellij IDEA集成 36
3.3 其他智能合约IDE 38
3.3.1 Visual
Studio扩展 38
3.3.2 Visual
Studio Code扩展 40
3.3.3 Sublime
Text插件 42
3.4 Solidity工具 42
3.4.1 Solidity
REPL 42
3.4.2 solgraph
43
3.5 小结 45
第4章 以太坊节点与挖矿
4.1 什么是Web3.js
46
4.2 安装Web3.js
47
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.js
API发布智能合约 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.js
REPL 66
5.1.2 执行JavaScript脚本文件 66
5.1.3 Node.js
IDE(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 设置和获取Provider
93
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 使用BigNumber
99
6.2.9 单位转换
101
6.2.10 核对账户地址是否有效 103
6.3 Web3.eth
API 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.js
API发布多个智能合约 136
7.2.4 用Web3.js
API编译多个智能合约 140
7.2.5 注释
142
7.3 值类型
142
7.3.1 布尔类型(bool) 143
7.3.2 整数类型(intuint) 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 安装Truffle
215
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 安装Ganache
221
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-contract
API调用
合约函数 231
9.3.5 写Truffle扩展脚本 232
9.4 小结
234
第10章 项目实战:在以太坊上发行数字资产
10.1 数字资产原理 236
10.2 代币合约
239
10.2.1 ERC20
Token接口 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.js
API完成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
內容試閱 :
当今最火的技术是什么?区块链、区块链、区块链,重要的事情说3遍。现在区块链的火爆程度已经全面超过了人工智能。在硅谷,一个区块链工程师有16家公司在盯着。国内某区块链创业公司给出的待遇是80万年薪 可观原始股(注意不是期权,是原始股),就算这样也难以找到合适的区块链工程师。想当年人工智能工程师也没这样吧!由此可见,区块链的技术职位是多么抢手。造成这种情况的主要原因是区块链的理念刚刚诞生没几年,而且涉及到的技术过于庞杂,例如需要熟悉相关的编程语言、底层通信协议、操作系统原理、加密技术等,培训领域很难在短时间内培养出合格的人才,而市场上的人才积累又不多,所以造成了区块链人才过于稀缺。
随着区块链的升温和人才的高度稀缺,不管是想找工作的还是想升职加薪的,都在跃跃欲试,想要分区块链的一杯羹。不过话有说回来,光想是没用的。如果你不会区块链技术,就只能看着别人挣钱了,或者幻想着美好的未来,不过一觉醒来发现只是梦一场。与其光做梦,不如从现在开始学习区块链技术。技术搞定了,钱不是问题,梦想也会变成现实。
作者在博客和公众号(搜索区块链技术栈既可关注)上发布了很多与区块链、以太坊相关的文章,经常收到一些读者的E-mail或微信信息,咨询到底如何学习区块链技术,因为区块链技术过于庞杂,里面涉及到的技术非常多,所以让很多想进入区块链领域的程序员感到迷茫。其实区块链技术主要分为应用层(以DApp、智能合约为主)和底层(主要是通信协议、加密算法等)两部分。大多数程序员会从事应用层的开发,少部分程序员会从事区块链的底层开发。这两个层级用到的技术差别很大。例如,应用层会用到JavaScript、Python等编程语言以及Solidity等智能合约语言,而底层会用到C、Go语言以及通信协议、加密算法等。所以读者在进入区块链领域之前,先要想好要进入哪一个层级。
为了解决程序员对区块链技术感到迷茫这一问题,我决定编写一本探索区块链和以太坊技术、指导开发的书。这本书属于应用级别,如果读者选择了区块链应用开发,那么本书正好可以满足这部分读者的需求。
为什么要选择以太坊作为区块链的学习载体呢?因为以太坊代表了区块链2.0,而比特币代表了区块链1.0。区块链2.0和区块链1.0的主要区别就是扩展性。由于以太坊支持用Solidity语言开发智能合约(一种运行在以太坊网络上的程序),这也让以太坊拥有了无限扩展性,同时也降低了使用以太坊的难度。
本书讲解了区块链和以太坊的核心理论和基本概念,并深入讲解几个与以太坊相关的技术,包括geth、Web3.js、Solidity语言等。同时提供了两个真实的实战案例,以便让读者更好地理解如何编写基于以太坊的应用。相信读者通过本书的学习可以轻松快速地学会以太坊和DApp开发。
本书是我将多年软件开发和培训授课经验应用于以太坊技术课程方面的最新实践。本书旨在以通俗易懂、随学随练、分秒有进的方式,使读者真正进入区块链技术的殿堂。
本书的很多知识点及案例都配备了专门录制的微视频,以期能够让读者更方便快捷地理解与掌握相关的知识和开发操作。本书配备了全面的学习及技术支持资源。扫描图书中的相关二维码,可获得相关学习视频资源、习题或练习资源、代码资源、相关实验软件资源、技术支持资源,所有资源均会根据情况及时更新。当然,对于本书读者,等待您的,还有更多惊喜。
超级赠送资源:
本书配备了超级的学习资源。除本书的视频课程外,李宁老师还把与本书紧密相关的价值698元的JavaSctipt完整视频课程免费开放给本书读者,并且享有与李宁老师一对一交流的机会,还有不定期的免费惊喜。本书资源清单如下:
l 本书的视频课程
l 价值698元的JavaScript视频课程(绝非让人看半截就要付费的那种)
l 本书相关实验软件
l 作者一对一问答
l 本书案例代码
扫描下面的二维码,可通过指导获取以上资源。