新書推薦:
![爱的重构:让自己成为家庭幸福掌舵人](http://103.6.6.66/upload/mall/productImages/24/30/9787522530901.jpg)
《
爱的重构:让自己成为家庭幸福掌舵人
》
售價:HK$
112.7
![春雨杏花急急落,车马春山慢慢行(生活是美好的,人是有诗意的。汪曾祺、沈从文、梁实秋等17位名家写给现代人的诗意生活美学之书)](http://103.6.6.66/upload/mall/productImages/24/30/9787513946025.jpg)
《
春雨杏花急急落,车马春山慢慢行(生活是美好的,人是有诗意的。汪曾祺、沈从文、梁实秋等17位名家写给现代人的诗意生活美学之书)
》
售價:HK$
59.8
![暗黑历史书系·巴黎伦敦血色历史(伦敦巴黎双城记,城市社会生活的另类书写)](http://103.6.6.66/upload/mall/productImages/24/31/9787218175300.jpg)
《
暗黑历史书系·巴黎伦敦血色历史(伦敦巴黎双城记,城市社会生活的另类书写)
》
售價:HK$
179.4
![国之重器:如何突破关键技术](http://103.6.6.66/upload/mall/productImages/24/31/9787300328218.jpg)
《
国之重器:如何突破关键技术
》
售價:HK$
79.4
![人鱼陷落:完结篇](http://103.6.6.66/upload/mall/productImages/24/29/9787553530130.jpg)
《
人鱼陷落:完结篇
》
售價:HK$
60.7
![中国近代史-大有文库丛书](http://103.6.6.66/upload/mall/productImages/24/29/9787807721727.jpg)
《
中国近代史-大有文库丛书
》
售價:HK$
40.3
![打开孩子世界的100个心理游戏——温暖的艺术互动魔法 [美]艾丽卡·柯蒂斯](http://103.6.6.66/upload/mall/productImages/24/31/9787111755265.jpg)
《
打开孩子世界的100个心理游戏——温暖的艺术互动魔法 [美]艾丽卡·柯蒂斯
》
售價:HK$
135.7
![2024出国留学蓝皮书](http://103.6.6.66/upload/mall/productImages/24/30/9787521767230.jpg)
《
2024出国留学蓝皮书
》
售價:HK$
79.4
|
編輯推薦: |
本书重点介绍了以下内容:
区块链的整体基础知识,包括区块链的基本概念及其组成模块,比如链的分叉与共识算法的实现种类等。
区块链公链之以太坊技术与应用,包括以太坊以及DApp的概念,区块的组成结构、钱包地址的生成、油费的计算方式、叔块的相关规则、交易的生命周期以及应用默克尔树实现账户模型。除了基础知识外,还有进阶学习所涉及的智能合约开发、开发合约工具的介绍、节点链接与测试币的获取以及RPC接口调用等知识。此外,还有一些开发实操中需要注意的特殊知识点,比如余额查询的区块隔离性及零地址的含义等。在以太坊部分的*后章节中,综合所有的知识点,通过编码实现了以太坊DApp技术开发中的核心组件以太坊中继应用。
区块链公链之比特币技术与应用,包括比特币的区块组成结构、PoW共识算法在比特币中的实现、地址和私钥的生成规则与种类、UTXO模型的实现原理、交易的构建方式等基础知识。在进阶部分,介绍了比特币虚拟机的操作码和源码分析、锁定脚本的种类及其各自的特定、重要的RPC接口与使用方式以及比特币的验签原理等知识。在实操部分,结合在本地计算机搭建并操作比特币私有链的学习,综合所有的知识点编码实现了链上交
|
內容簡介: |
本书以Go编程语言为例,从必要的理论知识到编码实践,循序渐进地介绍了当前区块链两大公链应用以太坊和比特币DApp开发的技术要点。全书共分为7章,第1章介绍区块链的重要基础知识;第2章介绍以太坊公链的基础知识,内容包含但不限于以太坊的大量概念与术语;第3章介绍以太坊智能合约的开发与部署实践;第4章和第5章以以太坊DApp中继服务作为范例,介绍以太坊区块链DApp的开发流程;第6章介绍比特币公链的基础技术;*后的第7章介绍基于比特币公链的DApp开发实例,包括钱包和交易所应用中的内存池解析器与去中心化数据存储系统的开发。 本书技术先进,注重实践,代码注释详尽,适合广大IT技术开发者阅读,对于想了解以太坊和比特币DApp开发技术的开发者尤为合适。
|
關於作者: |
林冠宏,网名:指尖下的幽灵。全栈开发者,拥有多年CS双端开发经验,擅长于使用Java语言开发Android应用与Go语言开发后端程序。技术布道者,长期编写技术博文与造轮开源,同时也是多个知名技术社区的签约作家。曾任职中心化交易所高级开发工程师与区块链公司技术经理,现任某国际知名区块链通证打赏工具的核心开发。对区块链技术,特别是基于以太坊与比特币公链的DApp开发拥有较丰富的经验。
|
目錄:
|
第1章 区块链基础知识 1
1.1 认识区块链 1
1.1.1 区块链的概念 1
1.1.2 链的分类 2
1.1.3 区块链能做什么 3
1.2 共识的作用 3
1.3 常见的共识算法 4
1.3.1 PoW算法 5
1.3.2 PoS算法 7
1.3.3 DPoS算法 8
1.3.4 共识算法的编码实现 9
1.4 链的分叉 15
1.4.1 软分叉 16
1.4.2 硬分叉 18
1.4.3 常见的分叉情况 18
1.4.4 PoW共识机制的51%算力攻击 20
1.5 小结 22
第2章 以太坊基础知识 23
2.1 什么是以太坊 23
2.2 以太坊的架构 24
2.3 什么是DApp 26
2.3.1 DApp概述 26
2.3.2 以太坊上的DApp 28
2.4 区块的组成 29
2.4.1 区块的定义 29
2.4.2 以太坊地址(钱包地址) 31
2.4.3 Nonce的作用 33
2.4.4 燃料费 34
2.4.5 GasUsed的计算 35
2.4.6 叔块 38
2.4.7 挖矿奖励 40
2.5 账户模型 42
2.5.1 比特币UTXO模型 43
2.5.2 Trie树 45
2.5.3 Patricia Trie树 46
2.5.4 默克尔树(Merkle Tree) 47
2.5.5 以太坊MPT树 50
2.5.6 MPT树节点存储到数据库 54
2.5.7 组建一棵MPT树 54
2.5.8 MPT树如何体现默克尔树的验证特点 57
2.5.9 以太坊钱包地址存储余额的方式 57
2.5.10 余额查询的区块隔离性 58
2.5.11 余额的查询顺序 59
2.5.12 UTXO模型和Account模型的对比 59
2.6 以太坊的版本演变 60
2.6.1 以太坊与PoW共识机制 60
2.6.2 君士坦丁堡 61
2.7 以太坊Ghost协议 62
2.8 Casper:PoS的变种共识机制 63
2.8.1 如何成为验证人 63
2.8.2 验证人如何获取保证金 64
2.8.3 候选区块的产生 64
2.8.4 胜出区块的判断 64
2.9 智能合约 64
2.9.1 简介与作用 64
2.9.2 合约标准 66
2.10 以太坊交易 75
2.10.1 交易的发起者、类型及发起交易的函数 76
2.10.2 交易和智能合约的关系 76
2.10.3 交易参数的说明 77
2.10.4 交易方法的真实含义 80
2.10.5 交易的状态 80
2.10.6 交易的打包 83
2.11 代币余额 84
2.12 以太坊浏览器 85
2.12.1 区块链浏览器访问合约函数 87
2.12.2 区块链浏览器查看交易记录 89
2.12.3 非ETH交易记录不能作为资产转账成功的依据 91
2.12.4 区块链浏览器查看智能合约的代码 92
2.13 以太坊零地址 94
2.13.1 零地址的交易转出假象 94
2.13.2 零地址的意义 96
2.14 以太坊2.0 97
2.14.1 核心组件 97
2.14.2 共识的流程 98
2.14.3 严谨的随机选择 99
2.15 小结 99
第3章 智能合约的编写、发布和调用 101
3.1 智能合约与以太坊DApp 101
3.2 认识Remix 102
3.3 实现加法程序 104
3.4 实现ERC20代币智能合约 106
3.4.1 定义标准变量 106
3.4.2 事件与构造函数 106
3.4.3 Solidity的常见关键字 107
3.4.4 授权与余额 109
3.4.5 转账函数 109
3.4.6 合约的代码安全 112
3.5 链上的合约 113
3.6 认识Mist 114
3.6.1 节点的切换 116
3.6.2 区块的同步方式 116
3.7 创建以太坊钱包 116
3.8 使用Mist转账代币 119
3.9 使用Mist发布智能合约 122
3.9.1 合约Solidity源码 123
3.9.2 认识ABI 125
3.9.3 提取ABI和Bytecode 127
3.9.4 使用Bytecode发布合约 128
3.9.5 使用合约的函数 131
3.10 Mist的替换品 MyCrypto 133
3.10.1 安装MyCrypto 134
3.10.2 切换节点网络 134
3.10.3 使用MyCrypto创建钱包 136
3.10.4 使用MyCrypto转账代币 137
3.10.5 使用MyCrypto部署智能合约 140
3.11 小结 141
第4章 以太坊中继基础接口 142
4.1 认识以太坊中继 142
4.2 区块遍历 143
4.3 RPC接口 145
4.4 以太坊接口 146
4.4.1 重要接口详解 147
4.4.2 节点链接 152
4.4.3 获取链接 152
4.4.4 进行测试 156
4.4.5 获取测试币 158
4.5 项目准备 159
4.6 创建项目 162
4.7 第一个Go程序 165
4.8 封装RPC客户端 167
4.8.1 下载依赖库 167
4.8.2 编写RPC客户端 169
4.8.3 单元测试 172
4.9 编写访问接口代码 173
4.9.1 认识Call函数 174
4.9.2 查找请求的参数 175
4.9.3 实现获取交易信息 177
4.9.4 认识BatchCall函数 181
4.9.5 批量获取交易信息 182
4.9.6 批量获取代币余额 184
4.9.7 获取最新区块号 191
4.9.8 根据区块号获取区块信息 192
4.9.9 根据区块哈希值获取区块信息 196
4.9.10 使用eth_call访问智能合约函数 197
4.10 小结 201
第5章 中继服务程序的开发 202
5.1 创建以太坊钱包 202
5.1.1 以太坊钱包术语 203
5.1.2 创建钱包 204
5.2 实现以太坊交易 208
5.2.1 以太坊交易的原理 208
5.2.2 以太坊ETH的交易 216
5.3 区块事件监听 233
5.3.1 创建数据库 235
5.3.2 实现数据库的连接器 235
5.3.3 生成数据表 239
5.3.4 区块遍历器 242
5.3.5 理解监听区块事件 256
5.4 小结 257
第6章 比特币技术基础 258
6.1 比特币的架构 258
6.2 奖励机制 260
6.3 再看 PoW 共识 260
6.3.1 比特币区块头 260
6.3.2 比特币PoW的源码实现 261
6.3.3 比特币难度值的计算 263
6.4 地址的格式 264
6.4.1 私钥 264
6.4.2 公钥 270
6.4.3 地址 272
6.5 比特币虚拟机 283
6.5.1 虚拟机的特点 283
6.5.2 数据源 284
6.5.3 常见的操作码 286
6.5.4 虚拟机源码解析 287
6.6 再看UTXO 292
6.6.1 输入转换 292
6.6.2 交易的结构 293
6.6.3 统计余额 297
6.6.4 构建交易 298
6.7 验签过程 308
6.8 比特币锁定脚本 309
6.8.1 P2PKH 310
6.8.2 P2PK 312
6.8.3 P2SH 313
6.8.4 P2WPKH与P2WSH 313
6.9 小结 314
第7章 基于比特币公链的DApp案例 315
7.1 搭建比特币私有链 315
7.1.1 下载节点源码 315
7.1.2 目录结构 318
7.1.3 配置文件 319
7.1.4 启动比特币节点 321
7.1.5 启动终端控制程序 325
7.1.6 创建比特币钱包 327
7.1.7 导出或导入钱包私钥 328
7.1.8 主网的挖矿操作 329
7.1.9 私有网络挖矿 330
7.1.10 获得挖矿奖励 332
7.1.11 发送交易 333
7.2 OP_RETURN与智能合约 338
7.2.1 公链存储数据的需求 338
7.2.2 比特币的存储数据之法 339
7.2.3 智能合约方案OP_RETURN 339
7.2.4 代码实现含有OP_RETURN的交易 340
7.2.5 发送OP_RETURN交易 344
7.2.6 解码默认的OP_RETURN 347
7.2.7 OP_RETURN数据的利用 348
7.3 比特币的常用RPC接口 349
7.3.1 重要接口介绍 349
7.3.2 获取节点连接 358
7.3.3 获取测试币 359
7.3.4 编写访问RPC接口代码 359
7.4 案例:实现获取交易状态的解析器 369
7.4.1 相关程序组件 370
7.4.2 流程设计 371
7.4.3 用链表实现队列功能 372
7.4.4 实现解析器 375
7.4.5 启动解析器 380
7.5 案例:构建去中心化数据存储系统 383
7.5.1 比特币区块遍历器的实现流程 383
7.5.2 创建数据库 384
7.5.3 区块遍历器的代码实现 387
7.5.4 把交易发送到本地节点 404
7.5.5 把数据存储到链上 408
7.5.6 解析所存储的数据 410
7.6 小结 411
|
內容試閱:
|
笔者于5年前就开始接触区块链技术,期间也撰写了大量技术博文,以分享笔者的学习心得与开发经验。
曾经有不少出版社联系笔者出书,但限于对知识的敬畏和对出书的谨慎,都一一婉拒了。正式签约出书是2018年10月,也是笔者处于一个对区块链技术非常热衷的阶段,当时的工作也正好是基于区块链做各种DApp开发,比如具有代表性的钱包、中心化交易所和去中心化交易所应用。对区块链、以太坊、比特币的各个方面构建了一套完整的知识体系,所以在清华大学出版社的编辑联系笔者的时候,市面上关于以太坊与比特币DApp重技术开发的图书很少,大多以理论性或科普类的图书居多,在深思熟虑之后,便决定编写此书。
这几年,区块链技术发展很快,其独特的去中心化应用(DApp)有可能给各行业带来一场颠覆性的变革,是当今业界十分热点的技术,也获得了国家政策的大力扶持,学习区块链技术开发,成为一个区块链产业的参与者,可能是你一生难得的机遇!
本书的主要内容
本书重点介绍了以下内容:
区块链的整体基础知识,包括区块链的基本概念及其组成模块,比如链的分叉与共识算法的实现种类等。
区块链公链之以太坊技术与应用,包括以太坊以及DApp的概念,区块的组成结构、钱包地址的生成、油费的计算方式、叔块的相关规则、交易的生命周期以及应用默克尔树实现账户模型。除了基础知识外,还有进阶学习所涉及的智能合约开发、开发合约工具的介绍、节点链接与测试币的获取以及RPC接口调用等知识。此外,还有一些开发实操中需要注意的特殊知识点,比如余额查询的区块隔离性及零地址的含义等。在以太坊部分的最后章节中,综合所有的知识点,通过编码实现了以太坊DApp技术开发中的核心组件以太坊中继应用。
? 区块链公链之比特币技术与应用,包括比特币的区块组成结构、PoW共识算法在比特币中的实现、地址和私钥的生成规则与种类、UTXO模型的实现原理、交易的构建方式等基础知识。在进阶部分,介绍了比特币虚拟机的操作码和源码分析、锁定脚本的种类及其各自的特定、重要的RPC接口与使用方式以及比特币的验签原理等知识。在实操部分,结合在本地计算机搭建并操作比特币私有链的学习,综合所有的知识点编码实现了链上交易状态解析器和使用OP_RETURN操作码实现去中心化数据存储系统两个应用案例。
本书深入浅出,语言通俗,图文并茂,专注于核心技术的讲解与应用,非必要的理论性知识涉及得较少。全书基础与实践兼备,旨在使读者在系统地掌握基础知识的基础上能够将所学技术应用于开发实践,达到学以致用的效果。
本书引用的资料
写书最怕的是误人子弟,在编写的时候发现,将整个以太坊和比特币的知识体系展开来讲,有很多的细节是自己之前还没有掌握的,比如:区块链浏览器上所看到的非ETH交易记录不能作为资产转移成功的依据。编写此书的过程中,也遇到了一些疑惑点,通过借鉴优秀的博客文章、阅读源码和咨询业界一些技术专家的意见,提升了笔者的理解和认识,丰富并拓展了笔者的区块链知识体系。在这里对这些大佬的贡献表示衷心感谢,以下是引用文献的链接:
https:blog.csdn.netchabuduoxiansheng1articledetails79740018
https:blog.csdn.nets_lishengarticledetails78022645
http:blog.luoyuanhang.com20180502eth-basis-block-concepts
https:blog.csdn.netwo541075754articledetails79042558
https:blog.csdn.netggq89articledetails80072876
https:blog.csdn.netweixin_37504041articledetails80474636
https:ethereum.gitbooks.iofrontier-guide
http:www.nahan.org20181002utxovseth%EF%BC%9F
https:ethfans.orgtoyaarticles588
https:ethfans.orgpostswhat-to-expect-when-eths-expecting
《精通比特币》书籍。
本书的源代码
为方便读者上机演练本书实例,笔者为读者整理了本书的全部源代码,读者可访问以下链接下载:
https:github.comaf913337456eth-relayarchivemaster.zip
https:github.comaf913337456btc_bookarchivemaster.zip
也可扫描下述二维码下载:
如果下载有问题或需要技术支持,请联系booksaga@126.com,邮件主题为区块链DApp开发:基于以太坊和比特币公链。
致 谢
感谢在完成这本书的过程中给予建议或解答问题的朋友:远航,王金柱,陈东伟,陈婷,彭智锦(排名不分先后)。
虽然笔者已尽最大努力避免书中内容出现错误,但限于水平,谬误在所难免,恳请广大读者与业界专家不吝指教。(笔者的GitHub:https:github.comaf913337456)
最后,衷心祝愿每一位阅读此书的朋友都能有所收获。
林冠宏
2020年7月
|
|