编辑推荐

适读人群:《区块链开发实战:以太坊关键技术与案例分析》适用于以下读者:区块链技术人员,区块链技术爱好者,立志进入区块链技术领域的相关人员。

(1)4位作者均为资深区块链技术专家,是区块链领域早期的技术实践者、布道者和创业者,对以太坊(源码级别)技术和HyperledgerFabric有深入的研究和丰富的实践经验,是Hyperledger核心项目代码贡献者。

(2)《区块链开发实战:以太坊关键技术与案例分析》得到了ChinaLedger技术委员会主任白硕、MATRIX首席AI科学家、阿希链CTO钱汉涛、元界CTO陈浩等多位专家的高度评价和联袂推荐。

(3)即便零基础,也能快速掌握以太坊和比特币的基本概念、关键技术、工作原理和DApp开发方法。

内容简介

区块链开发实战:以太坊关键技术与案例分析》是“区块链开发实战”系列的第2本,旨在让零基础的读者也能迅速掌握以太坊的各种基本概念、关键技术、工作原理、Dapp开发方法。作者是国内区块链领域的早期实践者和布道者,在区块链技术开发领域积累了丰富的项目经验,这《区块链开发实战:以太坊关键技术与案例分析》得到了ChinaLedger技术委员会主任白硕、MATRIX区块链首席AI科学家邓仰东、阿希链CTO钱汉涛、元界CEO陈浩等多位专家的鼎力推荐。

区块链开发实战:以太坊关键技术与案例分析》主要内容在逻辑上分为三个部分:

第一部分准备篇(第1~2章)

这部分介绍了从事区块链开发需要具备的预备知识,如区块链的各种概念的了解、开发环境的搭建和开发工具的使用等。

第二部分以太坊篇(第3~11章)

这部分是《区块链开发实战:以太坊关键技术与案例分析》的核心内容,系统、全面地讲解和分析了以太坊的各种基本概念、核心技术、工作原理,以及DApp开发方法。如以太坊的安装、编译、运行、私有链的搭建和运行、编程接口、智能合约语言Solidity的语法及其IDE、Solidity智能合约的编译和部署、Truffle框架的使用、DApp的架构与开发流程等。

第三部分扩展篇(附录)

详细介绍了比特币的工作原理、运行方式、功能模块、编程接口,以及基于比特币的应用开发方法,对于想研究比特币技术原理和从事比特币应用开发的读者来说,是一份难得的资料。

作者简介

吴寿鹤,

资深区块链技术专家,IONChain(离子链)首席架构师,HyperLedger核心项目开发人员,同时对以太坊相关技术有深入研究。是国内区块链技术领域的早期实践者和布道者,一直积极推动区块链技术的传播和应用落地,是国内知名区块链技术社区“区块链兄弟”的联合创始人,目前从事基于物联网的区块链底层基础平台的开发。

冯翔,

资深区块链技术专家,IONChain(离子链)CTO,上海旺链科技区块链研究院负责人,Hyperledger核心项目核心代码开发者。中国区块链技术的早期探索者和传播者,创立了有广泛影响力的区块链技术社区“区块链兄弟”。已经参与过多个基于区块链技术的落地项目,现在阶段主要致力于区块链技术和传统行业的融合,尤其关注区块链技术和物联网技术的结合。


刘涛,

上海旺链信息科技有限公司CEO,IONChain(离子链)创始人,致力于结合中国本土情况的区块链研究开发,现为复旦大学区块链研究生课程讲师。前埃森哲高级总监,在高科技制造、汽车、金融行业有超过15年的业务咨询和技术架构经验,曾担任华为、Alcatel-lucent、上汽通用、平安、中国移动高端外部顾问。


周广益,

上海指旺金科CEO,中国区块链技术的早期探索者,36Kr、未央网、共享财经等媒体特约作家,现为复旦大学软件学院特聘讲师。

精彩书评

以太坊是一个“区块链+智能合约”平台,开启了区块链2.0时代。从区块链1.0到区块链2.0,不是简单的平台升级,而是为只有交换价值的区块链创造了使用价值,在使用价值和交换价值之间进行交门。从此,数字货币不仅可以模仿现实货币进行交易转账,还可以以数字世界中独特的方式在程序代码中“飞一会儿”。这是非常了不起的大事件。

这是一本介绍如何在以太坊上进行应用开发的工具书。书中从一个程序员的视角,将在以太坊上从事开发工作必备的知识和技能做了系统性的讲解,并附有大量实例。《区块链开发实战:以太坊关键技术与案例分析》基础扎实、内容实用,适合区块链开发者学习参考。

——白硕ChinaLedger技术委员会主任/中科院博士生导师

以太坊是区块链2.0的代表,它提出的“区块链+智能合约”模式,在区块链技术史上具有里程碑意义,使得以太坊技术被迅速普及并构建了庞大的生态体系。这是一本教你如何从零基础开发以太坊DApp的工具书,全方位地讲解了以太坊的基础概念、关键技术、工作原理、开发方法,并有多个综合性的实战案例,能让读者迅速掌握理论知识并具备基本的实操能力,对于初学者而言,是一本难得的好书。

——邓仰东MATRIX链首席人工智能科学家

这两《区块链开发实战:以太坊关键技术与案例分析》理论与实践相结合,首先分别详讲解了HyperledgerFabric和以太坊的架构、原理和核心技术,然后介绍了应用开发的方法,结合多个具体案例展示了如何应用HyperledgerFabric和以太坊技术开发区块链应用系统。内容翔实具体、深入浅出,更令人惊喜的是,读者从这两《区块链开发实战:以太坊关键技术与案例分析》中不仅能学到如何使用进行区块链应用开发,还能品味到作者解决问题的技巧和对区块链的深入思考,是学习区块链应用开发实战的精品。

——钱汉涛阿希链CTO

以太坊已成为公链技术竞争力的开放标准之一,活跃的开发者社区以及相对丰富的DApp类型促成了良好的应用生态,以太坊也极大地推动了区块链的发展。而以超级账本为代表的DLTs(分布式账本技术)则从企业层面补足了公链技术的一些不足,在受限环境中能发挥分布式系统的优势。以太坊和超级账本技术的应用和发展,离不开像《区块链开发实战:以太坊关键技术与案例分析》的4位作者这样的布道者和贡献者,他们无私地将自己在实践中总结出来的经验呈现在了这两《区块链开发实战:以太坊关键技术与案例分析》中,对于区块链开发的初学者而言,具有很重要的学习和参考价值。

——陈浩元界CTO

目录

前言
第1章 全面认识区块链1
1.1 区块链技术的起源和解释1
1.2 区块链的核心技术及其特性2
1.2.1 区块链技术的特性3
1.2.2 区块链的分布式存储技术特性3
1.2.3 区块链的密码学技术特性4
1.2.4 区块链中的共识机制8
1.2.5 区块链中的智能合约12
1.3 区块链技术演进过程13
1.4 区块链技术的3个缺点13
1.5 区块链技术常见的4个错误认识14
1.6 区块链技术的应用领域15
1.6.1 区块链在金融行业的应用15
1.6.2 区块链在供应链中的应用16
1.6.3 区块链在公证领域的应用17
1.6.4 区块链在数字版权领域的应用18
1.6.5 区块链在保险行业的应用19
1.6.6 区块链在公益慈善领域的应用21
1.6.7 区块链与智能制造22
1.6.8 区块链在教育就业中的应用23
1.7 区块链的其他常见技术框架24
1.8 本章小结25
第2章 实战准备26
2.1 开发环境准备26
2.1.1 操作系统的配置26
2.1.2 Docker的使用27
2.1.3 Git的使用30
2.2 开发语言30
2.2.1 GO语言30
2.2.2 Node.js32
2.3 常用工具32
2.3.1 Curl32
2.3.2 tree33
2.3.3 Jq33
2.4 本章小结34
第3章 以太坊介绍35
3.1 了解以太坊35
3.2 以太坊发展路线36
3.3 以太坊内置货币37
3.4 以太坊交易吞吐量38
3.5 以太坊账户39
3.6 智能合约40
3.7 Gas与GasPrice41
3.8 工作量证明算法41
3.9 以太坊网络类型42
3.10 以太坊客户端43
3.11 本章小结44
第4章 以太坊的编译、安装与运行45
4.1 在Ubuntu下安装45
4.2 在MacOS下安装46
4.3 在Windows下安装46
4.4 以Docker方式安装47
4.5 运行以太坊47
4.6 本章小结47
第5章 以太坊私有链的搭建与运行48
5.1 搭建一个私有链48
5.2 以太坊JavaScript控制台命令53
5.3 以太坊CLI控制台命令64
5.3.1 账户管理64
5.3.2 区块数据管理65
5.4 以太坊TestRPC测试链搭建69
5.5 本章小结78
第6章 以太坊的编程接口79
6.1 web3.jsAPI79
6.1.1 安装web3.js并创建实例79
6.1.2 账户相关API80
6.1.3 交易相关API80
6.1.4 区块相关API87
6.2 JSON-RPCAPI87
6.2.1 账户相关API88
6.2.2 交易相关API89
6.2.3 区块相关API94
6.3 本章小结95
第7章 SolidityIDE和Solidity快速入门96
7.1 三种SolidityIDE96
7.1.1 browser-solidity96
7.1.2 Atom97
7.1.3 IntelliJIDEA97
7.2 Solidity快速入门:编写一个简单的银行合约案例99
7.3 本章小结101
第8章 Solidity语法详解102
8.1 注释102
8.2 整型和布尔型103
8.2.1 整型103
8.2.2 布尔型104
8.3 地址104
8.4 字节数组105
8.4.1 固定长字节数组105
8.4.2 动态长度字节数组105
8.5 类型转换和类型推断106
8.5.1 类型转换106
8.5.2 类型推断107
8.6 时间单位和货币单位107
8.6.1 时间单位107
8.6.2 货币单位108
8.7 数组和多维数组108
8.7.1 数组108
8.7.2 多维数组109
8.8 映射/字典109
8.9 结构体与枚举111
8.9.1 结构体111
8.9.2 枚举112
8.10 全局变量112
8.11 控制结构113
8.12 函数114
8.13 事件122
8.14 合约124
8.15 继承125
8.16 抽象合约127
8.17 接口128
8.18 库128
8.19 Usingfor128
8.20 引入其他源文件129
8.21 状态变量/局部变量129
8.22 数据位置130
8.22.1 数据位置概述130
8.22.2 数据位置之间相互转换130
8.23 异常处理132
8.24 编写安全solidity智能合约最佳实践133
8.24.1 尽早抛出异常133
8.24.2 结构化函数代码顺序134
8.24.3 在支付时使用pull模式而不是push模式134
8.24.4 整数上溢和下溢136
8.25 本章小结137
第9章 Solidity合约编译、部署138
9.1 编译合约138
9.1.1 安装solc编译工具138
9.1.2 开始编译合约139
9.2 部署合约141
9.2.1 启动以太坊geth节点141
9.2.2 部署智能合约143
9.3 调用合约145
9.4 本章小结146
第10章 Truffle详解147
10.1 什么是Truffle147
10.2 安装Truffle148
10.3 创建并初始化项目149
10.4 创建合约150
10.5 编译合约150
10.6 迁移合约151
10.7 合约交互156
10.7.1 交易156
10.7.2 调用157
10.7.3 合约抽象157
10.7.4 与合约交互158
10.7.5 添加一个新合约到网络159
10.7.6 使用现有合约地址160
10.7.7 向合约发送以太币161
10.8 测试合约163
10.9 JavaScript测试164
10.10 Solidity测试165
10.11 Truffle配置文件167
10.12 依赖管理169
10.13 本章小结171
第11章 以太坊DApps应用开发实战172
11.1 DApps架构与开发流程172
11.1.1 DApps架构VSWeb应用架构172
11.1.

精彩书摘

  《区块链开发实战:以太坊关键技术与案例分析》:
  在教育存证领域,基于区块链的学生信用平台可创建含有基本信息的数字文件,然后使用用户的私钥对证书的内容进行签名,再对证书本身附加签名。依赖于生成的哈希值,可以验证证书内容是否被篡改。最后,再用私钥在区块链上创建一条数字记录,保证用户信息和证书内容的一致性。教育机构利用自己的私钥签署一份具有完整信息记录的数字证书,将其哈希值存储在区块链中,在每一次发放和查询时都会由智能合约触发相应的多重签名校验以确保记录不会被恶意查询,交易输出时将数字证书分配给需求方,如学生或者用人单位。
  应用场景2:产学合作
  产学合作是教育机构与用人单位之间多赢的机制,现在教育存在的问题之一就是封闭办学,即学生的技能信息、知识体系未与用人单位的技能需求、市场趋势保持信息对称。通过引入区块链技术实现学生技能与社会用人需求无缝衔接,可精确评估人才录用、岗位安排的科学性和合理性,有效促进学校和企业之间的合作。
  ……

前言/序言

Preface前  言
为何写作《区块链开发实战:以太坊关键技术与案例分析》近年来区块链技术逐步占据各大技术类网站的头条,各种基于区块链特性的想法和创新层出不穷。这些繁荣是区块链技术在幕后默默支撑的,可是人们经常忽略区块链的技术而把投资、融资、保值等金融属性和区块链画上了等号。其实区块链本质上还是一门技术。区块链技术源于比特币,经过近几年的发展,已经超越比特币逐步形成一门单独的技术体系。目前区块链技术已经渗透到各行各业中,比如区块链技术同大数据、人工智能等技术产生了让人意想不到的化学反应。我们有理由相信区块链技术在未来一定会成为IT基础技术之一,成为每个IT技术人员必备的基础技能。
同时我们也可以看到区块链技术在国内外的发展非常迅速。在国外,IBM发起了超级账本项目,并把超级账本项目的源码捐献给了Linux基金,借助社区的力量来发展。全球已经有将近200多个公司和组织加入了超级账本,成为超级账本项目的会员。当然其他巨头也随之跟进,微软早就和以太坊达成了战略合作协议。互联网巨头Google、社交媒体行业的龙头Facebook等在区块链领域均有所布局。
但是在繁荣的背后我们也应该看到危机,目前区块链技术在实际项目中的应用还存在不少问题。我们认为出现这种情况是因为目前区块链技术的实用化还存在以下障碍:技术新,学习资料匮乏。区块链技术是最近几年刚刚兴起的一门综合技术,目前资料特别是中文资料还是比较缺乏的。
技术种类多,有一定的学习成本。区块链是一门综合型的技术,如果把每个单项技术列出来学习并不难,但是当把这些技术组合起来之后学习难度就大大增加了。
可借鉴的成功案例少。由于区块链技术是一门比较新的技术,因此目前缺少比较成功的案例。即使诸如IBM等巨头开发了一些成功案例,但是由于各种各样的原因,目前并没有公开,这些都给广大技术人员学习区块链技术特别是把区块链技术应用到具体项目中造成了一定的障碍。
这些问题的存在是我们编写“区块链开发实战”系列图书的目的,第一批有两《区块链开发实战:以太坊关键技术与案例分析》同时面世,分别是基于HyperledgerFabric和以太坊进行区块链开发实战。我们希望读者通过这两《区块链开发实战:以太坊关键技术与案例分析》,在了解区块链的基本概念和核心技术的同时,能够将区块链技术更多应用到具体的项目中,解决现有技术无法解决的一些行业痛点。
读者对象这两《区块链开发实战:以太坊关键技术与案例分析》都非常适合区块链开发工程师、区块链架构师、区块链技术爱好者阅读。
其中:
HyperledgerFabric部分更适合对HyperledgerFabric和比特币技术感兴趣的相关技术人员;以太坊部分更适合以太坊爱好者、以太坊DAPP开发者、比特币开发者等。
主要内容《区块链开发实战:HyperledgerFabric关键技术与案例分析》这《区块链开发实战:以太坊关键技术与案例分析》以HyperledgerFabric和比特币这两个典型区块链技术平台的核心技术、开发方法和相关的项目案例为核心内容,此外,还提供了大量的命令脚本和代码示例供读者参考,力图使读者在最短的时间内掌握这两个平台的使用方法。
区块链开发实战:以太坊关键技术与案例分析》分为三个部分:
第一部分(第1~2章):首先从基本认识的角度对区块链进行了宏观上的介绍,包括区块链技术的起源和演进过程、区块链核心技术及其特性、区块链技术的缺点和常见错误认识,以及区块链技术的应用领域和常见的技术框架;然后介绍了进行区块链开发需要掌握的技术和使用的工具。
第二部分(第3~13章):主要讲解了HyperledgerFabric的核心技术、原理、开发方法,以及多个项目案例。包括Hyperledger的全面介绍、Fabric的技术特性和快速入门、Fabric的核心模块和账号体系、Fabric的智能合约和编程接口、Fabric的系统架构与设计、Fabric项目案例的开发流程和方法,以及几个综合性的案例,如区块链浏览器、供应链金融、食品溯源等。
第三部分(附录):主要讲解了比特币的原理、运行方式、重要模块和编程接口,同时还讲解了一个比特币客户端的案例。
《区块链开发实战:以太坊关键技术与案例分析》《区块链开发实战:以太坊关键技术与案例分析》详细讲解了以太坊和比特币这两个典型的区块链技术平台的技术特性、原理、开发方法,同时也配有多个综合性的项目实例。
区块链开发实战:以太坊关键技术与案例分析》分为三个部分:
第一部分(第1~2章):首先从基本认识的角度对区块链进行了宏观上的介绍,包括区块链技术的起源和演进过程、区块链核心技术及其特性、区块链技术的缺点和常见错误认识,以及区块链技术的应用领域和常见的技术框架;然后介绍了进行区块链开发需要掌握的技术和使用的工具。
第二部分(第3~11章):主要讲解了以太坊的基本使用、技术特性、工作原理、开发方法和项目案例。首先介绍了以太坊的各种核心概念——编译、安装、运行,以及私有链的搭建和运行等基础内容;其次详细讲解了Solidity语法、SolidityIDE、Solidity智能合约的编译部署,以及Solidity的智能合约框架Truffle;最后讲解了DApps开发的方法和流程。
第三部分(附录及后记):主要讲解了比特币的原理、运行方式、重要模块和编程接口,同时还讲解了一个比特币客户端的案例。
为什么两《区块链开发实战:以太坊关键技术与案例分析》有重复内容大家可能注意到,两《区块链开发实战:以太坊关键技术与案例分析》有部分内容是重复的,这么安排并不是为了凑篇幅,而是经过精心考虑的。主要原因如下:
以太坊和HyperledgerFabric是两个不同的技术平台,涉及的技术都非常多,读者一般不会同时学习并在这两个平台上进行开发,于是我们没有将这两个主题的内容放到一《区块链开发实战:以太坊关键技术与案例分析》中,这样便于读者按需选择。
两《区块链开发实战:以太坊关键技术与案例分析》的前两章是相同的,因为这两章的内容对两个平台的用户来说是通用的,而且是都需要了解和学习的。
两《区块链开发实战:以太坊关键技术与案例分析》关于比特币的内容是相同的,因为比特币系统是出现最早、运行最稳定的区块链技术平台,它的很多概念和核心技术对其他区块链平台有非常好的借鉴意义,值得所有区块链开发者学习。
主要特色这两《区块链开发实战:以太坊关键技术与案例分析》是作者在参与众多区块链项目之后提炼而成,具有以下特点:
既没有高深的理论也没有晦涩难懂的公式,力求通过最简单通俗的语言和大量的图表让读者能够了解区块链技术的精髓。
提供大量的命令脚本和相关程序的源代码文件,这些命令脚本和源代码文件都来自实际的项目,我们整理后展现给读者,通过这些命令和源代码读者可以了解到相关区块链技术平台的操作细节。
提供了大量的项目案例,这些项目案例能够帮助读者更好地理解区块链技术和业务场景的结合。
与国内专业的区块链技术社区——“区块链兄弟”深度合作,社区中有两《区块链开发实战:以太坊关键技术与案例分析》的专题页面,读者可以到社区中与作者和其他读者进行深入交流。
区块链开发实战:以太坊关键技术与案例分析》相关源代码下载地址:https://github.com/blockchain-technical-practice。
致谢这《区块链开发实战:以太坊关键技术与案例分析》能够完成首先要感谢机械工业出版社华章公司的杨福川先生为《区块链开发实战:以太坊关键技术与案例分析》的顺利出版付出的努力。同时我们要感谢区块链技术社区的全体“兄弟”,你们对区块链的探索和执着是我们创作的动力,你们对区块链的付出和努力给我们提供了创作的素材。在编写这《区块链开发实战:以太坊关键技术与案例分析》的过程中无论是提问题的“兄弟”,还是回答问题的专家“兄弟”,感谢你们。最后我们还要感谢所有加入的区块链技术讨论组,在和你们的交流中我们发现了《区块链开发实战:以太坊关键技术与案例分析》的价值。
区块链开发实战:以太坊关键技术与案例分析》编写小组2018年2月于上海

其他推荐