第一行代码——以太坊 李宁著 PDF下载

转载至:  http://www.torrent.org.cn/t-261782

下载链接: 

下载声明:  本资料仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版!

本书是一本区块链开发技术图书。本书立足实战,深入浅出地从零开始讲解以太坊及相关技术,包括区块链的基础概念和理论、利用以太坊创建私有区块链、编写智能合约、挖矿、Web3.js API、Solidity语言、Truffle框架、Ganache测试节点等技术。本书力求通俗易懂,实例丰富,步骤详细。为了帮助读者巩固基础知识,本书*后还配有两个综合案例分别实现以太坊在金融领域(发布代币)和非金融领域(DApp)的应用。

本书适合于区块链技术的学习者及从业者使用。

d2ceeb10-be05-11e8-9685-db2b1c195748.jpg

前言

第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

打赏 支付宝打赏 微信打赏

如果文章对您有帮助,欢迎移至上方打赏按钮...

随手一点
  • 打酱油

    53人

  • 171人

  • 呵呵

    11人

  • 草泥马

    7人

文章评论 抢沙发