基本信息
- 作者: 杨镇 姜信宝 朱智胜 盖方宇
- 丛书名: 区块链技术丛书
- 出版社:机械工业出版社
- ISBN:9787111623724
- 上架时间:2019-7-26
- 出版日期:2019 年4月
- 开本:16开
- 页码:397
- 版次:1-1
- 所属分类:计算机 > 电子商务与计算机文化 > 综合

编辑推荐
HiBlock社区官方出品,4位区块链技术专家联合撰写
从开发工具与生态、编程语言(Solidity)、编写方法、优秀实践、以太坊虚拟机、合约安全、软件工程、DApp开发等维度全景呈现以太坊智能合约开发
内容简介
计算机书籍
这是一部能指导读者从入门到进阶的以太坊智能合约开发指南。HiBlock区块链技术社区官方出品,4位资深区块链技术专家联合撰写。
从开发工具与生态、编程语言(Solidity)、编写方法、优秀实践、以太坊虚拟机、合约安全、软件工程等维度全景呈现以太坊智能合约开发的各个方面。更重要的是,以实战为导向,包含若干个翔实、完整的DApp案例讲解。
全书共12章,分为4个部分:
准备篇(第1~2章) 介绍了以太坊的必备常识、基础交互和开发工具套件。
基础篇(第3~6章) 详细讲解了智能合约开发语言 Solidity 的所有语法和编写合约的基本方法,同时也介绍了编译器和 Solidity 集成开发工具的使用。
进阶篇(第7~10章) 首先详细讲解了以太坊协议的细节和以太坊虚拟机的实现原理和架构设计;然后讲解了用于以太坊虚拟机函数调用的应用二进制编码的细节,以及公共基础合约库 openzeppelin-solidity 的源码实现;最后为智能合约的安全开发提供了经验性的指导,有极高的参考价值。
实战篇(第11~12章) 结合若干 DApp 实例讲解了如何基于智能合约来构造可用的去中性化应用程序。这部分内容可以帮助开发者快速上手构建基于以太坊的新一代互联网应用程序。
本书的附录中还包含了对以太坊协议中涉及的部分基础算法、以太坊虚拟机的费用设计和指令设计、 Solidity 内联汇编等的简单介绍。
作译者
国内区块链与智能合约领域的知名技术专家,有15年的一线软件研发和工程项目经验。对以太坊相关技术有非常深入的研究,活跃于各个中文区块链技术社区,致力于区块链、智能合约技术的推广以及企业级区块链应用落地的探索。
资深软件工程师、架构师,区块链和智能合约技术布道师、独立讲师。
2018 年初对以太坊黄皮书的中译版做了独立校订和增补更新,并作为管理员和主要校订人参与了 Solidity 文档的中译项目。2018 年 8 月独立开发了国内为数不多的以太坊智能合约高级开发课程(在线视频课程)。2018 年底作为译者参加了《精通以太坊》(Mastering Ethereum)中文版(即将出版)的制作工作。截止到 2018 年底,已进行了数十次线上、线下的区块链或智能合约技术分享交流,是区块链和智能合约领域颇受欢迎的技术布道师。
姜信宝
HiBlock区块链社区(HiBlock.One)创始人,专注于区块链技术的研究、培训和推广。HiBlock区块链社区成立于2018年,曾组织Solidity(0.4.22)中文版翻译项目,线下区块链技术沙龙活动60余次,黑客马拉松3次。
Scrum联盟认证讲师(Certified Scrum Trainer),敏捷变革中心合伙人,从事敏捷Scrum推广与宣传等工作十余年,曾担任京东敏捷顾问。
朱智胜
资深软件工程师、架构师,有近10年的一线软件开发与架构经验,长期从事第三方支付及金融相关领域的研发工作。
曾参与火币钱包及交易所开发,后参与多家交易所和DAPP项目的开发,对以太坊技术有深入的研究。
热衷于技术分享,是CSDN知名博客专家和讲师。独立完成两套Drools规则引擎视频教程和规则引擎官方技术文档的翻译。
盖方宇
区块链技术专家,一直积极钻研区块链底层技术,对比特币、以太坊等主流公链以及底层的共识算法具有比较深刻的理解。同时热衷于DApp开发,精通Solidity语言,是Solidity官方文档中译项目的主要贡献者之一。目前主要关注区块链二层扩容技术,对状态通道(State Channel)、侧链(Sidechain)颇有研究,是“深入理解Plasma”系列的原创作者。
研究方向包括分布式系统、计算机网络、信息安全以及区块链系统,多次在国际学术会议和期刊上发表论文。
目录
赞誉
前言
第一部分 准备篇
第1章 快速了解以太坊2
1.1 以太坊是什么2
1.2 以太坊的历史和发展路线图5
1.3 以太坊的基本概念8
1.3.1 账户(accounts)8
1.3.2 合约(contracts)9
1.3.3 交易(transaction)和消息(message)9
1.3.4 气(gas)10
1.4 以太币(ether)12
1.4.1 以太币的发行12
1.4.2 以太币的单位13
1.4.3 以太坊挖矿13
1.5 以太坊测试网络13
1.6 以太坊客户端14
1.7 以太坊生态系统全景扫描15
1.7.1 Swarm15
前言
笔者其实并不是开源软件的早期拥趸,而是一名在企业IT服务领域工作了16年的老程序员。大概在2016年下半年,因为工作需要,笔者开始研究区块链,开始考虑在企业业务中使用这种所谓的“新技术”。不过因为当时的企业级区块链方面还没有可用的技术平台(Fabric还不成熟),所以最终没有在具体业务中使用区块链。但也是由于这次对区块链技术的学习,笔者发现了区块链技术的潜力,尤其是发现了以太坊这个项目的潜力,这使笔者受到了很大的触动,笔者感觉自己有可能基于对技术的理解和钻研精神,在这个新领域中获得超出过往十余年所取得的成绩。
笔者在2017年用业余时间翻译了以太坊官网的Homestead文档,没有用任何翻译软件,完全是自己读原文来将其译为中文的;而后参与了HiBlock社区组织的Solidity官方文档的中译项目,并很快成为项目的管理员,对中译版做了很多的校订工作,这也是以太坊社区官方的中文版本(以太坊官网上的Solidity文档中有对应的链接)。之后就是《以太坊黄皮书》(Ethereum Yellow Paper)。《以太坊黄皮书》就是以太坊协议的技术说明文档,里边记载了以太坊协议的几乎全部细节,包括以太坊虚拟机的具体设计。这是一份难得的、经过实践检验的高质量技术文档,对学习以太坊,乃至其他区块链技术都有很高的参考价值。同时《以太坊黄皮书》也是所有以太坊客户端的理论和实现基础。目前业内几乎所有智能合约平台都或多或少地“借鉴”了《以太坊黄皮书》中的设计。
笔者从2018年4月下旬开始对《以太坊黄皮书》的中文版(最初由猿哥和高天露译)的全文进行独立的校订和增补更新(结合英文拜占庭版本的更新,也没有用翻译软件),到 5 月初最终完成。至此,结合Solidity文档中的相关细节,可以说笔者已经掌握了与以太坊协议以及Solidity智能合约开发相关的方方面面的知识。在开始写作本书的时候,笔者已经对以太坊协议和智能合约技术有了很深的理解。
本书主要内容
本书分为四大部分。
第一部分为准备篇,简单地介绍了以太坊及其相关基本概念,并讲解了以太坊的基本交互和基础工具的使用。
第二部分为基础篇,详细讲解了智能合约开发语言Solidity的所有语法和编写合约的基本方法,同时也介绍了对编译器的使用以及Solidity集成开发工具的使用。
第三部分为进阶篇,详细讲解了以太坊协议的细节和以太坊协议的核心—以太坊虚拟机的实现原理和相关设计;讲解了用于以太坊虚拟机函数调用的应用二进制编码的细节;对目前最有价值的公共基础合约库OpenZeppelin-Solidity的所有源码进行了详细解读;为智能合约安全开发提供了经验性的详细指南。
第四部分为实战篇,结合若干DApp实例,讲解了如何基于智能合约来构造可用的去中心化应用程序。
附录中则包含了对以太坊协议中涉及的部分基础算法、以太坊虚拟机的费用设计和指令设计的介绍,以及对Solidity内联汇编的简单介绍,可以作为我们进行智能合约开发的参考资料。
如果你是一名了解以太坊基础知识和相关工具使用方法的开发者,那么可以直接从第二或第三部分开始学习。但如果你是一名初学者,或者对以太坊的基本概念和工具还没有了解,请按照本书编排的顺序从第1章开始学习。
本书尝试实现的目标
本书将尝试引导智能合约开发者深入理解下面的一些问题。
(1)认识到Solidity并不简单
Solidity是一种结合了C++、Python和JavaScript语言创造出来的为智能合约开发而定制的语言,它在事实上简化了智能合约的开发,是一种上手很容易、对初学者“很友好的”开发语言。只要用户稍有编程经验,就可以很快写出一些简单的智能合约。
不过,这种看起来“很简单的”语言,其实并不简单,因为有太多不那么直观的因素会影响Solidity程序的运行;而大部分开发者也许并不那么理解智能合约的运行环境—以太坊虚拟机(EVM)—其中存在各种各样的技术细节和各种各样的“大坑小坑”。比如,private函数和public函数在调用时到底有什么不同?仅仅是可见性吗?比如,数据在内存和存储中的结构有什么区别?为什么可以对存储中的动态数组使用push和pop,而对内存中的就不行?比如,fallback函数是如何运作的?它真的不能接收参数,也不能有返回值吗?比如,transfer、send和带value的call有什么区别?又比如,EVM中复杂的费用设计(尤其是存储的使用费)和gas返还机制是如何影响合约的gas消耗(也就是运行费用)的?
显然,这些问题并不是我们学习传统的编程语言就可以了解到的,所以对于大多数初学者来讲,这些细节很可能会妨碍他们真正掌握合约开发或者影响他们处理一些相对复杂的逻辑的能力。所以让智能合约开发者真正搞懂Solidity与其他开发语言的区别是首要工作。
(2)不要重复造轮子
与我们在其他所谓传统软件开发中看到的工程特性一样,在智能合约开发中同样存在“重复造轮子”的问题。同样的基础功能或者非常接近的基础功能,被程序员反复编写,犯各种各样的小错误,这种情况在智能合约开发的初学者中同样普遍存在。那么有没有已经被证明是很好用的、很安全的“轮子”呢?这也是笔者希望给智能合约开发者讲解和普及的一个重要内容。因为笔者从刚刚入行时就非常重视可复用的代码和设计模式,所以学会使用那些经过反复审计的、反复优化的可复用代码,在笔者看来也是非常重要的。
媒体评论
——岳利鹏Polkadot社区组织者
以太坊技术是公链技术的标杆,是区块链公有链技术的事实标准。本书作者在区块链基础理论方面功底扎实,项目实战经验丰富。在本书中,作者通过理论联系实践的方式,用深入浅出的笔法,通过通俗易懂的语言介绍了以太坊的核心概念和基本技术特性。
更加难得的是,本书作者将自己在项目实践中的体会提炼成大量案例并放于本书中,通过这些案例,读者在理解以太坊基本概念的基础上,能够更好地理解以太坊的应用场景和大量实战技巧。因此本书是学习以太坊技术的精品。
——冯翔 区块链兄弟技术社区创始人/旺链首席架构师
以太坊的诞生,标志着一个全新的、开放的科技金融时代的到来。人们可以通过以太坊的智能合约来进行复杂的资产操作,比如股票、债券、期货、权证、预测、清算等。自2015年诞生以来,以太坊迅速成为区块链行业内的主流平台,运行着数十万的智能合约与分布式应用。本书从技术的角度出发,介绍了以太坊底层运行原理、智能合约开发,尤其是安全开发的全景图,让读者可以切实理解以太坊、智能合约、DApp的运作机制。相信本书一定会成为相关领域广大极客以及爱好者们学习和研究的好助手。
——鲍帅 好码安全科技联合创始人