首页>参考读物>计算机科学与技术>软件与程序设计

区块链项目开发指南
作者 : [印度]纳拉扬·普鲁斯蒂(Narayan Prusty) 著
译者 : 朱轩彤 闫莺 董宁 译
丛书名 : 区块链技术丛书
出版日期 : 2017-11-28
ISBN : 978-7-111-58400-1
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 208
开本 : 16
原书名 : Building Blockchain Projects:Develop real-time practical DApps using Ethereum and JavaScript
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

区块链是近十年来颇具颠覆性的新兴信息技术之一,它正以一种全新的方式建立人类交易过程的信任、仲裁和记录基础。本书共9章,首先介绍去中心化应用、DApp等基本概念,并据此展开对比特币、以太坊、超级账本等热门DApp的阐释。其次在解析以太坊工作原理的基础上介绍智能合约的编写方法,并介绍web3.js的应用方法。后利用上述知识进行钱包服务、智能合约部署平台、投注App、企业级智能合约以及联盟区块链等具体应用程序的创建。

图书特色

本书作者既有理论研究的高度,又有项目实际落地的经验,在书中给读者提供了一个既广阔又深入的视野,本书必将对区块链的爱好者、实践者有巨大的影响。它从基本概念到工具都做了全面的介绍, 它将改变大家对区块链的传统看法,把中国区块链实战方面的能力提升到一个新的高度。
—— 黎江,微软首席技术官(CTO )
以太坊是和超级账本、R3 Corda齐名的区块链开发社区。作为一本系统地介绍以太坊的教科书式读物,本书内容详实,深入浅出,适合开发者阅读参考或作为培训教材使用。
——马修军,北京大学(天津滨海)新一代信息技术研究院副院长,北京大学智能科学系博士
自2009年以来,随着虚拟货币在全球范围内的兴起,区块链技术愈发受到学术界和工业界的重视和关注,其独有的信任机制切中了多个行业的传统痛点,成为技术集成创新并与垂直行业加速融合的热点方向。本书生动直观地介绍了区块链技术原理,尤其是如何使用以太坊创建一个真实的区块链项目,值得以太坊爱好者、基于以太坊打造应用生态并构建企业级智能合约的IT专业人士重点参考。
 ——卿苏德,中国信息通信研究院技术与标准研究所高级工程师,区块链技术专家


纳拉扬·普鲁斯蒂(Narayan Prusty)
在18岁时就创建了一个MP3搜索引擎,他是一位身兼多职的开发人员,主攻区块链和JavaScript,倾向于使用以太坊、比特币、超级分类、IPFS等构建去中心化的应用程序。其所编写的可扩展应用程序广泛应用于印度、新加坡、美国等国家的初创公司、企业以及政府部门。Narayan Prusty目前供职于迪拜的阿联酋国家银行的区块链企业。他著有《Learning ECMAScript 6》和《Modern JavaScript Applications》。

朱轩彤
清华大学硕士,中国社科院数量经济与技术经济研究所博士生,专注于技术经济及管理研究。在政府及国际组织有丰富的工作经验。

闫莺
复旦大学博士,微软亚洲研究院主管研究员,Coco区块链中国负责人,专注于区块链技术、大数据分析、数据库以及云计算的研究。

董宁
智链ChainNova CEO,北京大学新一代信息技术研究院金融科技研究中心主任,原IBM大中华区IT经济学负责人,IBM区块链社区发起人。

图书前言

区块链是一个防篡改的去中心化账本,其中包含不断增长的数据记录列表。每个用户都可以连接到网络,发送新的交易、验证交易和创建新的区块。
本书将阐释区块链的概念,讲述其如何保证数据真实性,以及如何使用以太坊创建现实世界的区块链项目。通过有趣的现实世界案例,读者将了解如何编写完全按照程序运行、没有欺诈、没有中心机构或者第三方干预的智能合约,并学习如何创建端到端的区块链应用。本书还将介绍加密货币中的密码学、以太币安全、挖矿、智能合约和Solidity等概念。
区块链是比特币中最有创造性的技术,是记录比特币交易的公共账本。
本书内容
第1章阐释DApp的概念,并简述其工作原理。
第2章阐释以太坊的工作原理。
第3章阐释如何编写智能合约和使用geth交互接口来部署合约,以及使用web3.js广播交易。
第4章介绍web.3js的概念及其导入方法、连接到geth的方法,并阐释了如何在node.js或者客户端JavaScript使用它。
第5章阐释如何创建钱包服务,以方便用户创建和管理以太坊钱包,甚至离线创建和管理钱包。我们将专门使用LightWallet库实现。
第6章展示如何使用web3.js编译智能合约,以及使用web3.js和EthereumJS部署智能合约。
第7章阐释如何使用Oraclize从以太坊智能合约发出HTTP请求,以访问万维网中的数据。我们还将学习访问存储在IPFS中的文件、使用字符串库处理字符串等方法。
第8章阐释如何使用truffle。truffle将使创建企业级DApp变得容易。我们将通过创建代币来学习truffle。
第9章阐释创建联盟区块链的方法。
设备环境
Windows 7 SP1+、Windows 8、Windows 10或者Mac OS X 10.8+。
读者对象
本书适合想使用区块链和以太坊创建防篡改数据(和交易)应用的JavaScript开发人员阅读,也适合对密码学及其逻辑以及相关数据库感兴趣的人阅读。
下载实例代码
可以从http://www.packtpub.com下载本书的实例代码文件。如果您在其他地方购买了本书,可以访问http://www.hzbook.com注册并下载。

上架指导

计算机

封底文字

自2009年以来,随着虚拟货币在全球范围内的兴起,区块链技术愈发受到学界和业界的重视和关注,其独有的信任机制切中了多个行业的传统痛点,成为技术集成创新并与垂直行业加速融合的热点方向。本书生动直观地介绍了区块链技术原理,尤其是如何使用以太坊创建一个真实的区块链项目,值得以太坊爱好者、基于以太坊打造应用生态并构建企业级智能合约的IT专业人士重点参考。

——卿苏德,中国信息通信研究院技术与标准研究所高级工程师,区块链技术专家

以太坊是和超级账本、R3 Corda齐名的区块链开发社区。本书作为一本系统地介绍以太坊的教科书式读物,内容详实,深入浅出,适合作为开发者读物或培训教材使用。

——马修军,北京大学(天津滨海)新一代信息技术研究院副院长,北京大学智能科学系博士


本书的作者既有理论研究的高度,又有项目实际落地的经验,在书中给读者提供了一个既广阔又深入的视野,这本书必将对区块链的爱好者、实践者有巨大的影响。它从基本概念,到工具都做了全面的介绍, 它将改变大家对区块链的传统看法,把中国区块链实战方面的能力提高到一个新的高度。

—— 黎江,微软首席技术官(CTO )

译者序

从去年开始,“区块链”成了一个高热度的关键字,受到各行各业的关注。越来越多的人渴望用区块链这一变革性技术来解决商业中的关键问题。自然,有更多的人渴望深入了解和运用区块链技术甚至开发自己的区块链应用。最近一年多,总是有很多朋友和学生问我:“如何学习以太坊?有什么资料推荐吗?”通常我的回答就是:“从以太坊白皮书和黄皮书看起吧。”显然,仅仅精读两篇文章是不够的,要想对区块链有进一步的认识,还需要更多的知识储备。但是目前国内很难找到一本系统介绍区块链技术和开发平台的书籍。作为在区块链领域具有较高知名度和丰富从业经验的专家团队,我们非常希望能给大家提供一套系统的学习资料。
作为这场区块链技术热潮的弄潮儿,以太坊是最先进区块链技术的代表。以太坊的社区和开发工具都相对比较完善和活跃。正因如此,很多企业级区块链解决方案都在积极地拥抱以太坊。但是很遗憾,系统介绍以太坊的中文资料非常匮乏。首次接触到《Building Blockchain Projects》这本英文书后,我们便感觉它是关于以太坊在广度上难得的技术资料,于是想尽快呈现给国内的读者。在翻译过程中,我们在保证表述流畅的同时,对原著的内容进行了验证,并对其中的错误进行了修正。因此,本书应该比英文原版书更加易懂和准确。
在本书中,读者将了解如何编写智能合约、如何用JavaScript开发以太坊程序,以及如何为区块链创建端到端应用。
本书具有如下特点:
“学生导向”,跟着这本书可以由浅及深地学习以太坊技术应用。
给出了多个真实的以太坊智能合约编写示例,可帮助初学者迅速上手编写代码。
通俗易懂,讲解细致,方便自学。
在翻译本书的同时,我们的团队没有停止前进的脚步。我们不断努力,以求在技术深度上更进一步。读者掌握本书的内容后,可以阅读我们即将于近期出版的其他关于以太坊和Hyperledger的书,以加深对区块链的关键技术的认识。详情请见我们的微信公众号“智链ChainNova”。

图书目录

译者序
前言
第1章 去中心化应用1
1.1 什么是DApp1
1.1.1 去中心化应用的优点2
1.1.2 去中心化应用的缺点3
1.2 去中心化自治组织3
1.3 DApp中的用户身份4
1.4 DApp中的用户账户5
1.5 访问中心化应用6
1.6 DApp中的内部货币6
1.7 什么是授权的DApp7
1.8 热门的DApp7
1.8.1 比特币7
1.8.2 以太坊9
1.8.3 超级账本项目9
1.8.4 IPFS10
1.8.5 Namecoin11
1.8.6 达世币12
1.8.7 BigChainDB14
1.8.8 OpenBazaar14
1.8.9 Ripple14
1.9 总结16
第2章 以太坊的工作原理17
2.1 以太坊概览17
2.2 以太坊账户18
2.3 交易18
2.4 共识19
2.5 时间戳20
2.6 随机数21
2.7 区块时间21
2.8 分叉24
2.9 创世区块24
2.10 以太币面值24
2.11 以太坊虚拟机25
2.12 gas25
2.13 发现对等节点26
2.14 Whisper和Swarm27
2.15 geth27
2.15.1 安装geth28
2.15.2 JSON-RPC和JavaScript操作台28
2.15.3 子命令和选项29
2.15.4 创建账户29
2.16 以太坊钱包31
2.17 浏览器钱包31
2.18 以太坊的缺点32
2.19 serenity33
2.20 总结35
第3章 编写智能合约36
3.1 Solidity源文件36
3.2 智能合约的结构37
3.3 数据位置38
3.4 什么是不同的数据类型39
3.4.1 数组类型39
3.4.2 字符串类型40
3.4.3 结构类型41
3.4.4 枚举类型42
3.4.5 mapping类型42
3.4.6 delete操作符43
3.4.7 基本类型之间的转换44
3.4.8 使用var44
3.5 控制结构45
3.6 用new操作符创建合约46
3.7 异常46
3.8 外部函数调用46
3.9 合约功能48
3.9.1 可见性48
3.9.2 函数修改器50
3.9.3 回退函数51
3.9.4 继承52
3.10 库54
3.11 返回多值56
3.12 导入其他Solidity源文件57
3.13 全局可用变量57
3.13.1 区块和交易属性57
3.13.2 地址类型相关58
3.13.3 合约相关58
3.14 以太币单位58
3.15 存在、真实性和所有权合约的证明59
3.16 编译和部署合约60
3.17 总结62
第4章 开始使用web3.js63
4.1 web3.js概述63
4.1.1 导入web3.js64
4.1.2 连接至节点64
4.1.3 API结构65
4.1.4 BigNumber.js66
4.1.5 单位转换66
4.1.6 检索gas价格、余额和交易细节67
4.1.7 发送以太币68
4.1.8 处理合约69
4.1.9 检索和监听合约事件71
4.2 为所有权合约创建客户端73
4.2.1 项目结构74
4.2.2 创建后端74
4.2.3 创建前端76
4.2.4 测试客户端80
4.3 总结82
第5章 创建钱包服务83
5.1 在线钱包和离线钱包的区别83
5.2 Hooked-Web3-Provider和EthereumJS-tx库84
5.3 分层确定性钱包87
5.4 密钥衍生函数87
5.5 LightWallet88
5.6 创建钱包服务89
5.6.1 必要条件89
5.6.2 项目结构90
5.6.3 创建后端90
5.6.4 创建前端91
5.6.5 测试97
5.7 总结101
第6章 创建智能合约部署平台102
6.1 计算一个地址的交易nonce102
6.2 solcjs概述104
6.2.1 安装solcjs104
6.2.2 solcjs API104
6.3 创建合约部署平台107
6.3.1 项目结构108
6.3.2 创建后端108
6.3.3 创建前端113
6.3.4 测试117
6.4 总结118
第7章 创建投注App119
7.1 Oraclize概述119
7.1.1 Oraclize的工作原理120
7.1.2 数据源120
7.1.3 真实性证明121
7.1.4 定价122
7.1.5 开始使用Oraclize API123
7.1.6 加密查询127
7.1.7 Oraclize Web IDE128
7.2 处理字符串128
7.3 创建投注合约130
7.4 为投注合约创建客户端133
7.4.1 项目结构133
7.4.2 创建后端134
7.4.3 创建前端135
7.4.4 测试客户端143
7.5 总结147
第8章 创建企业级智能合约148
8.1 探索ethereumjs-testrpc148
8.1.1 安装和使用149
8.1.2 可用RPC方法151
8.2 什么是事件主题153
8.3 开始使用truffle-contract154
8.3.1 安装和导入truffle-contract155
8.3.2 建立测试环境156
8.3.3 truffle-contract API156
8.4 truffle概述163
8.4.1 安装truffle163
8.4.2 初始化 truffle163
8.4.3 编译合约165
8.4.4 配置文件165
8.4.5 部署合约166
8.4.6 单元测试合约169
8.4.7 包管理175
8.4.8 使用truffle的操作台178
8.4.9 在truffle环境中运行外部脚本179
8.4.10 truffle的创建管线179
8.4.11 truffle的服务器端186
8.5 总结187
第9章 创建联盟区块链188
9.1 什么是联盟区块链189
9.2 什么是权威证明共识189
9.3 parity概述189
9.3.1 Aura的工作原理190
9.3.2 运行parity191
9.3.3 创建私有网络192
9.3.4 许可和隐私197
9.4 总结198

教学资源推荐
作者: 吴黎兵 周畅 宋麟
作者: Al Kelley, Ira Pohl
作者: (美)Martin Kalin
参考读物推荐
作者: 杨开元 著
作者: (美)David Sawyer McFarland 著
作者: 沈顺天 编著