编辑推荐

适读人群:《精通以太坊智能合约开发》主要适合以下人员阅读:区块链应用开发者;区块链技术的从业者;对区块链技术感兴趣的人员。

区块链技术,以太坊,智能合约,Dapp开发实践!

不同于现在市面上大多数同类书籍概念、趋势、给社会经济带来的变革等层面介绍区块链技术,《精通以太坊智能合约开发》则完完全全是一本面向开发者的技术书籍。《精通以太坊智能合约开发》一大特点是全面,不但覆盖了以太坊智能合约开发语言Solidity的每一个知识点,而且同样也覆盖了如何基于以太坊进行去中心化应用的开发,包括各个开发工具及框架的使用,建议所有想加入到区块链领域的开发者阅读。

内容简介

《精通以太坊智能合约开发》系统介绍了以太坊智能合约的开发,对智能合约相关知识进行全面梳理,尤其是对智能合约开发语言Solidity进行了详细解读。智能合约的开发者可以从《精通以太坊智能合约开发》中获得一些启发和指导。

《精通以太坊智能合约开发》可以作为一本案头手册,方便开发者在开发智能合约时随时查阅。

作者简介

熊丽兵,北航硕士毕业,先后进入创新工场,猎豹移动从事移动开发。现为区块链技术从业者,目前在做区块链底层协议研究。CSDN博客专家,拥有全网访问量一二的区块链技术博客《深入浅出区块链》,对底层公链技术、区块链技术落地都有深入的研究。

精彩书评

不同于现在市面上大多数书籍从概念、趋势、给社会经济带来的变革等层面介绍区块链技术,《精通以太坊智能合约开发》完完全全是一本面向开发者的技术书籍。《精通以太坊智能合约开发》的一大特点是全面,不但覆盖了以太坊智能合约开发语言Solidity的每一个知识点,而且覆盖了如何基于以太坊进行去中心化应用的开发,包括各个开发工具及框架的使用。建议所有想加入区块链领域的开发者阅读。

——西祠胡同创始人、FIBOS创始人响马

Tiny熊是我所认识的踏实细心的区块链技术布道者。他可以为读者朋友的每一个程序问题反复斟酌、细心回答。他的博客文章《深入浅出区块链》,让很多程序员成功转型为区块链开发人员。《精通以太坊智能合约开发》延续了《深入浅出区块链》的风格,并且对以太坊的智能合约及DApp开发进行了更加系统、全面的介绍。建议想从事区块链相关工作的开发者及想进入区块链领域的从业者阅读《精通以太坊智能合约开发》。

——工信部区块链应用研究院副院长、GEOC(绿色生态)基金会发起人、小牛区块链创始人赖一诚

以太坊已经慢慢变成区块链的事实标准,大多数开发者接触到区块链首先了解的便是比特币、以太坊、超级账本。《精通以太坊智能合约开发》作为一本以太坊的入门书籍,不仅有理论讲解,还有代码案例解析,是开发者学习以太坊的优选书籍。

——HiBlock区块链社区发起人BobJiang

自从以太坊成功上线以来,硅基世界的美好未来如此真实地呈现在我们面前。作为程序员,自然深知一个自带价值转移功能的图灵完备编程环境的巨大价值。在人类从碳基世界向硅基世界跃迁的过程中,这是第一步,也是无比重要的一步。任何一个有志于在区块链领域深入研究的研究者,不掌握以太坊智能合约编程是无法再前进一步的。因此,建议大家从阅读这《精通以太坊智能合约开发》开始,打开进入下一个世代的大门。

——Arena.one创始人曹晓钢

在Tiny熊的身上,可以看到工程师的气质,一双善于发现问题的眼睛,持续思考、定位问题和探索问题的大脑,以及锲而不舍、求真求实的精神。希望这《精通以太坊智能合约开发》可以成为区块链世界的燎原火种,让更多的工程师在探索的道路上并肩同行,披荆斩棘,早日在价值互联网探索的道路上有所成就。

——无退社区创始人、Think技术社区、PHPConChina联合创始人锅巴GG

以太坊是成熟的区块链开发平台,而区块链开发重要的就是智能合约开发。熊丽兵是国内早的区块链开发者之一,他所写的一系列区块链开发相关教程帮助了非常多的开发者。现在他把智能合约开发教程整理成书,可以极大地方便开发者系统地学习智能合约开发。

——Egretia技术负责人 Dily

目录

第1章初探以太坊智能合约
以太坊诞生
智能合约
Solidity语言
一个货币合约的例子
本章小结

第2章以太坊核心概念
区块链基础概念
共识协议:工作量证明(PoW)
以太坊虚拟机(EVM)
账户
以太坊钱包
交易
消息调用
费用(gas)
以太坊网络
存储、内存和栈
指令集
委托调用和库
日志
自毁
以太坊路线图
本章小结

第3章Solidity合约内容
Solidity文件结构
合约结构
本章小结

第4章Solidity数据类型
类型概述及分类
布尔类型(Boolean)
整型(Integer)
定长浮点型(FixedPointNumber)
定长字节数组(Fixed-sizeByteArray)
有理数和整型常量(RationalandIntegerLiteral)
字符串常量(StringLiteral)
十六进制常量(HexadecimalLiteral)
枚举(Enum)
函数类型(FunctionType)
地址类型(Address)
地址常量(AddressLiteral)
数据位置(DataLocation)
数组(Array)
数组成员
字符串string及字节数组bytes
结构体(Struct)
映射(Mapping)
类型转换
var类型推导
运算符
本章小结

第5章Solidity中的单位
货币单位(EtherUnit)
时间单位(TimeUnit)
本章小结

第6章Solidity全局变量及函数
区块和交易的属性
地址相关属性和函数
合约相关属性和函数
本章小结

第7章Solidity表达式及控制结构
函数参数
控制结构
函数调用表达式
赋值表达式
变量声明与作用范围
错误处理
本章小结

第8章合约
合约概述
创建合约
可见性
访问函数(GetterFunction)
函数修改器(FunctionModifier)
状态常量
视图函数(ViewFunction)
纯函数(PureFunction)
回退函数(FallbackFunction)
函数重载(FunctionOverloading)
事件
继承
构造函数(Constructor)
抽象合约(AbstractContract)
接口(Interface)

Usingfor指令
本章小结

第9章合约编译、部署、交互、调试
Solidity编译器
合约编译
合约部署及调用
使用geth
使用Remix+MetaMask
合约调试
本章小结

第10章应用程序二进制接口(ABI)
简单理解ABI
ABI手册
本章小结

第11章智能合约最佳实践
编码规范
代码格式
函数编写规范
安全性考虑
一些安全陷阱
编写合约的安全建议
本章小结

第12章合约案例
代币
高级功能代币
众筹(ICO)合约
众筹智能合约代码
非同质化代币ERC721
本章小结

第13章去中心化应用开发
JSONRPC
Web3.js
在geth中使用Web3.js
在应用中使用Web3.js
去中心化应用案例
搭建测试环境
创建智能合约
合约加入事件
使用Web3监听事件、刷新UI
Truffle框架
安装Truffle
Truffle使用案例
在浏览器中运行
本章小结

前言/序言

精通以太坊智能合约开发》特色

从2017年开始,我在博客《深入浅出区块链》中发表了30多篇关于区块链的入门文章,广受大家的好评,也因此收到了电子工业出版社编辑的邀请,希望我写一本关于区块链开发的书籍。我对市面上的书籍做了调查,发现介绍比特币和以太坊入门知识的书比较多,但如果想系统全面地学习智能合约开发,却并没有更好的资源。于是,在跟出版社编辑商议后,我决定写一本全面系统介绍智能合约开发的书,《精通以太坊智能合约开发》由此诞生。

精通以太坊智能合约开发》并没有对比特币或区块链的基础概念进行过多的介绍,因为市面上已经有很多这方面的文章了,大家也可以参考我的博文《区块链技术学习指引》(https://learnblockchain.cn/2018/01/11/guide/)。《精通以太坊智能合约开发》系统介绍以太坊智能合约的开发,并尽量覆盖智能合约的方方面面,尤其是对智能合约开发语言Solidity进行了详细解读。因此《精通以太坊智能合约开发》可以作为一本案头手册,方便开发者在开发智能合约时随时查阅。

精通以太坊智能合约开发》涉及的Solidity内容是以官方文档0.4.24版本(https://solidity.readthedocs.io/en/v0.4.24/)为标准的,同时加入了很多我自己的理解以及大量的实例。

另外,《精通以太坊智能合约开发》有时将智能合约简称为“合约”。

读者对象

精通以太坊智能合约开发》适合那些对区块链有过基本了解,并想进一步学习智能合约或者去中心化应用的开发人员阅读。

精通以太坊智能合约开发》的读者最好应了解一门语言。例如了解C、JavaScript、Python语言会对学习Solidity有帮助,因为Solidity中的很多思想都参考了这些语言。

精通以太坊智能合约开发》主要适合以下人员阅读:

?区块链应用开发者;

?区块链技术的从业者;

?对区块链技术感兴趣的人员。

精通以太坊智能合约开发》内容

第1章初探以太坊智能合约,初步认识以太坊、智能合约、Solidity,以及如何使用Solidity编写一个简单的智能合约。

第2章介绍以太坊核心概念,例如交易、区块、费用gas、以太坊虚拟机、以太坊账户等概念。

第3章介绍一个使用Solidity编写的智能合约的组成部分。

第4章介绍Solidity的类型系统,详细介绍Solidity的各种类型,例如整型、布尔类型、地址类型、函数类型、数组类型及结构体类型等。

第5章介绍Solidity中的单位,包括货币单位和时间单位,通过代码讲解单位如何换算。

第6章介绍Solidity的全局变量及函数,它们其实就是Solidity语言提供的API,例如获取区块和交易的属性、有关数学及加密功能的函数等。

第7章介绍Solidity中的表达式、控制结构、变量作用范围、错误处理等。

第8章介绍合约,包括如何创建合约、合约函数的可见性、合约函数修饰符等。

第9章介绍合约编译、部署、交互、调试,包括对编译器的选择、不同工具的合约部署方法。

第10章介绍合约ABI的作用,以及如何生成ABI。

第11章介绍编写合约的最佳实践,一是从编码规范来考量;二是从安全性来考量。

第12章介绍一些合约案例,如最常见的ERC20标准代币合约,介绍如何实现代币增发、资产冻结,以及如何实现一个众筹(ICO)合约,并详细介绍ERC721合约的实现方法。

第13章介绍去中心化应用的开发,重点介绍如何使用web3以合约进行交互,以及Truffle框架的使用。

勘误和支持

由于区块链是一种新兴的技术,以太坊平台也处在不断更新发展的过程中,加上作者水平有限,书中难免出现疏漏或错误。如果大家发现问题,请及时反馈给我(可添加我的微信:xlbxiong),我将在图书再版时进行修正,以提供最准确的内容。

以太坊智能合约及Solidity最初的内容都是以英文发表的,有个别术语还没有准确的中文翻译,因此我会在括号里注明英文原文。

为了更好地理解,《精通以太坊智能合约开发》部分内容我录制了视频课程,大家可以关注登链学院微信公众号观看学习。

精通以太坊智能合约开发》的所有代码都被上传到了我的GitHub(https://github.com/xilibi2003)上,也欢迎大家PullRequest。

致谢

精通以太坊智能合约开发》得以面世,离不开很多人的帮助,尤其是各位前辈的指导。

感谢比特币的开创者中本聪,是他带我们进入了数字货币与区块链的世界。

感谢以太坊创始人V神(VitalikButerin),是他打造了这个开放的智能合约平台,没有这个平台,就不可能有此书。

感谢电子工业出版社的编辑,他们对书稿做了专业、细致、认真的编校工作。

感谢登链科技及登链学院的同事,在我写书的时候他们帮我分担了很多工作。

感谢那些在我学习区块链技术时阅读的博客文章及书籍的作者,虽然我与他们未曾谋面,但我从他们输出的技术内容里获益颇多。

感谢小专栏平台及创始人寂小桦,在我写作博客的时候,在小专栏平台上得到了很多付费用户的认可,这也是我不断写作的动力。

最后要特别感谢我的家人,尤其是我的妻子,在写作《精通以太坊智能合约开发》的这段时间里,我的大女儿不到四岁,小女儿不到一岁,感谢她一直以来对我的支持以及对家庭的付出。

要感谢的人还有很多,难以一一列举,只希望这《精通以太坊智能合约开发》能够为区块链技术在中国的推广和发展做出尽可能多的贡献。


其他推荐