具体描述
区块链是近十年来颇具颠覆性的新兴信息技术之一,它正以一种全新的方式建立人类交易过程的信任、仲裁和记录基础。本书共9章,首先介绍去中心化应用、DApp等基本概念,并据此展开对比特币、以太坊、超级账本等热门DApp的阐释。其次在解析以太坊工作原理的基础上介绍智能合约的编写方法,并介绍web3.js的应用方法。后利用上述知识进行钱包服务、智能合约部署平台、投注App、企业级智能合约以及联盟区块链等具体应用程序的创建。
作者简介
作者:(印度)纳拉扬·普鲁斯蒂 译者:朱轩彤 译者:闫莺 译者:董宁
纳拉扬·普鲁斯蒂,在18岁时就创建了一个MP3搜索引擎,他是一位身兼多职的开发人员,主攻区块链和JavaScript,倾向于使用以太坊、比特币、超级分类、IPFS等构建去中心化的应用程序。其所编写的可扩展应用程序广泛应用于印度、新加坡、美国等国家的初创公司、企业以及政府部门。Narayan Prusty目前供职于迪拜的阿联酋国家银行的区块链企业。他著有《Learning ECMAScript 6》和《Modern JavaScript Applications》。朱轩彤,清华大学硕士,中国社科院数量经济与技术经济研究所博士生,专注于技术经济及管理研究。在政府及国际组织有丰富的工作经验。闫莺,复旦大学博士,微软亚洲研究院主管研究员,Coco区块链中国负责人,专注于区块链技术、大数据分析、数据库以及云计算的研究。董宁,智链ChainNova CEO,北京大学新一代信息技术研究院金融科技研究中心主任,原IBM大中华区lT经济学负责人,IBM区块链社区发起人。
目录信息
译者序
前言
第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
· · · · · · (收起)
读后感
本书介绍搭建实际的区块链项目的代码细节。代码部分我都略过了,不过仍然感觉一些区块链的细节说的比其他的媒体或书更清楚。 总体评价4星,比较有参考价值。 一个缺陷是代码都是图片而不是文字。 以下是书中一些内容的摘抄,#号后面是kindle电子书中的页码: 1:DApp是一种...
本书介绍搭建实际的区块链项目的代码细节。代码部分我都略过了,不过仍然感觉一些区块链的细节说的比其他的媒体或书更清楚。 总体评价4星,比较有参考价值。 一个缺陷是代码都是图片而不是文字。 以下是书中一些内容的摘抄,#号后面是kindle电子书中的页码: 1:DApp是一种...
虽然不是很喜欢这个地方的人,但这本书写得还蛮值得一看,最初是caoz在公号推荐的。 看书本的结构,主要围绕着去中心化应用开发来展开,并不会很偏底层,讲解原理也是点到即止。跟着过一遍,大概知道开发DApp是怎么一回事,比听一个小时的live课要收获大得多。 暂时还没看完,...
虽然不是很喜欢这个地方的人,但这本书写得还蛮值得一看,最初是caoz在公号推荐的。 看书本的结构,主要围绕着去中心化应用开发来展开,并不会很偏底层,讲解原理也是点到即止。跟着过一遍,大概知道开发DApp是怎么一回事,比听一个小时的live课要收获大得多。 暂时还没看完,...
本书介绍搭建实际的区块链项目的代码细节。代码部分我都略过了,不过仍然感觉一些区块链的细节说的比其他的媒体或书更清楚。 总体评价4星,比较有参考价值。 一个缺陷是代码都是图片而不是文字。 以下是书中一些内容的摘抄,#号后面是kindle电子书中的页码: 1:DApp是一种...
用户评价
这本书的封面设计很吸引人,采用了深邃的蓝色调,搭配简洁的白色字体,给人一种专业且前沿的感觉。拿到手里,纸张的质感也相当不错,装订牢固,翻阅起来很舒服。我原本以为这会是一本晦涩难懂的技术手册,但前几页的导读部分就让我放下了戒心。作者似乎非常懂得如何引导一个完全的初学者进入这个复杂的世界。开篇没有直接深入到复杂的加密算法或者共识机制,而是从一个宏观的视角,讲述了“去中心化”这个概念诞生的时代背景和社会需求,这非常巧妙,让我立刻理解了这项技术存在的根本意义,而不是仅仅停留在“我知道有这么个东西”的层面。后续的章节对于基础设施的搭建和环境配置描述得极为细致,即便是对于我这种代码经验尚浅的人来说,跟着步骤一步步操作,也算是有条不紊。它没有过多地灌输那些华而不实的理论口号,而是专注于“如何动手做起来”,这对我来说价值巨大。我特别欣赏作者在描述工具链时所展现出的那种务实态度,推荐的开源库和框架都是目前社区内经过充分验证的成熟方案,确保了读者在学习过程中走的是一条相对平坦且高效的道路。这本书更像是一位资深工程师坐在你旁边,手把手教你如何将一个概念落地为实际可运行的原型,而不是一个高高在上的学术讲座。
说实话,这本书的阅读门槛并不低,它对读者的数学和计算机科学背景有一定的隐性要求。我身边一些纯粹对金融应用感兴趣的朋友,在读到关于哈希函数特性和椭圆曲线加密原理的那几章时,明显感到了吃力,即便作者尽力用通俗的比喻来解释,那些底层的数学逻辑依然构成了不小的障碍。这并非是书的缺点,而是其定位决定的——它明确面向的是希望深入理解底层机制的开发者和架构师,而非仅仅想学会调用API的业务人员。我个人的体验是,每读完一个技术难点,我都需要暂停下来,去查阅一些补充的离散数学或密码学知识,才能真正将概念吸收消化。这种“深度”带来的阅读阻力,反而成了一种筛选机制,确保了真正能坚持读完的人,都将获得扎实的理论根基。这本书没有试图取悦所有人,它选择了艰难但正确的方向——追求技术上的纯粹和深度。因此,如果你期望的是一本能让你快速入门、立马就能做出炫酷Demo的读物,你可能会失望;但如果你渴望的是能够构建未来系统的知识体系,那么这种需要反复咀嚼的“硬菜”正是你所需要的。
坦白说,我抱着相当高的期望买下这本厚厚的书,希望它能成为我职业转型路上的“圣经”,但阅读体验却呈现出一种奇特的张力。在系统架构和智能合约设计模式这一块,作者展现了其深厚的行业洞察力,特别是关于状态管理和跨链通信的章节,简直是教科书级别的范例。他不仅罗列了已有的解决方案,更深入剖析了每种方案在不同业务场景下的性能瓶颈和安全权衡,这种辩证的思维模式极大地拓宽了我的视野。然而,对于一些基础安全性的讨论,比如常见的重放攻击、溢出漏洞在不同虚拟机环境下的变体,似乎略显单薄,似乎期待读者已经具备了扎实的传统软件安全基础。我更希望看到更多贴近实战的“陷阱”案例,而不是仅仅停留在理论上的“要小心”。不过,话又说回来,这本书的价值更多体现在其“框架性”和“前瞻性”上。它教会我的不是某个特定代币的实现细节,而是构建任何去中心化应用时需要遵循的底层逻辑和设计范式。整体来看,它更像是一份高级工程师的“设计哲学”指南,而非面向初级开发者的“编码速成班”。
这本书的排版和图示部分给我留下了极其深刻的印象,这绝对是市面上同类书籍中做得最好的之一。许多技术书籍的流程图往往复杂到让人眼花缭乱,但这里的插图设计得极其清晰,每一个数据包的流向、每一个节点的交互,都被扁平化、模块化地呈现出来。我记得有一章专门讲解了默克尔树的构建过程,通过层层递进的动画式图解,原本抽象的哈希链接结构瞬间变得直观易懂,我甚至不需要反复回溯前面的文字描述,单看图就能理解其精髓。这种对视觉化学习的重视,对于理解分布式系统这种本质上就是关于“连接”和“流动”的概念来说,是至关重要的加分项。另外,书中的代码示例也极为考究,它们并非简单的“Hello World”式的演示,而是包含了完善的错误处理和注释,可以直接作为项目结构的参考模板。我甚至将其中关于测试用例的编写部分单独打印出来,作为未来项目启动的质量基线。这种对细节的打磨,足以看出作者团队在内容制作上的巨大投入和匠人精神。
这本书最让我惊喜的一点,是它对于“治理”和“经济模型”这部分内容的平衡处理。很多技术书籍在谈及分布式系统时,往往会将焦点过度集中在技术实现本身,而忽略了决定一个项目长期生命力的非技术因素。但在这本书中,作者花费了相当大的篇幅来讨论去中心化自治组织(DAO)的投票机制设计、激励层的代币分配策略,以及如何利用博弈论原理来设计抗女巫攻击的共识环境。我尤其欣赏他提出的几个“反主流”观点,例如,在某些特定场景下,引入有限度的中心化决策节点反而能提高系统的韧性和响应速度,这颠覆了我之前一味追求“完全去中心化”的刻板印象。他引导我们思考的不是“技术上能不能实现”,而是“从社会和经济角度看,什么才是最优解”。这使得整本书的格局一下子打开了,它不再仅仅是一本关于如何编写智能合约的指南,而更像是一部关于如何在数字世界中构建可持续、有活力的数字社会契约的蓝图。这种跨学科的融合视角,是目前市面上许多同类书籍所欠缺的宝贵财富。
以太坊项目可以看下,翻译太糙了。读这本书前最好自己看下solidity的文档,试玩一下,不然会不知所云。读完还是能学到一点东西,新技术就是要靠这边探索一点,那边探索一点再加实践。
是也乎,( ̄▽ ̄) 译者 一多, 就两个结果: 极好, 或是极烂...这本是后一种...
是也乎,( ̄▽ ̄) 译者 一多, 就两个结果: 极好, 或是极烂...这本是后一种...
有点粗糙了
以太坊项目可以看下,翻译太糙了。读这本书前最好自己看下solidity的文档,试玩一下,不然会不知所云。读完还是能学到一点东西,新技术就是要靠这边探索一点,那边探索一点再加实践。