猜你喜欢
精通以太坊智能合约开发

精通以太坊智能合约开发

书籍作者:熊丽兵 ISBN:9787121349515
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:1937
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

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

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

作者简介

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

编辑推荐
适读人群 :本书主要适合以下人员阅读: 区块链应用开发者; 区块链技术的从业者; 对区块链技术感兴趣的人员。

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


前言

本书特色

从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)上,也欢迎大家Pull Request。

致谢

本书得以面世,离不开很多人的帮助,尤其是各位前辈的指导。

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

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

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

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

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

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

最后要特别感谢我的家人,尤其是我的妻子,在写作本书的这段时间里,我的大女儿不到四岁,小女儿不到一岁,感谢她一直以来对我的支持以及对家庭的付出。

要感谢的人还有很多,难以一一列举,只希望这本书能够为区块链技术在中国的推广和发展做出尽可能多的贡献。

目录

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

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

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

第4章 Solidity数据类型
类型概述及分类
布尔类型(Boolean)
整型(Integer)
定长浮点型(Fixed Point Number)
定长字节数组(Fixed-size Byte Array)
有理数和整型常量(Rational and Integer Literal)
字符串常量(String Literal)
十六进制常量(Hexadecimal Literal)
枚举(Enum)
函数类型(Function Type)
地址类型(Address)
地址常量(Address Literal)
数据位置(Data Location)
数组(Array)
数组成员
字符串string及字节数组bytes
结构体(Struct)
映射(Mapping)
类型转换
var类型推导
运算符
本章小结

第5章 Solidity中的单位
货币单位(Ether Unit)
时间单位(Time Unit)
本章小结

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

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

第8章 合约
合约概述
创建合约
可见性
访问函数(Getter Function)
函数修改器(Function Modifier)
状态常量
视图函数(View Function)
纯函数(Pure Function)
回退函数(Fallback Function)
函数重载(Function Overloading)
事件
继承
构造函数(Constructor)
抽象合约(Abstract Contract)
接口(Interface)

Using for 指令
本章小结

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

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

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

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

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

产品特色