编辑推荐
Solidity是一种面向合约的语言,其语法受到JavaScript的很大影响,旨在帮助用户编写可运行于以太坊虚拟机上的代码。《Solidity编程:构建以太坊和区块链智能合约的初学者指南》将为你理解Solidity编程语言提供翔实参考,帮助你从头开始构建以太坊和区块链的智能合约。
内容简介
《Solidity编程:构建以太坊和区块链智能合约的初学者指南》首先简要介绍区块链、以太坊及其中*重要的概念或组件。随后介绍如何安装所有必要的工具来编写、测试和调试以太坊上的Solidity合约。然后书中将探索Solidity源文件的布局及如何使用不同的数据类型,介绍构建智能合约时使用的运算符、控制结构和数据结构。*后通过Solidity介绍面向对象编程中的函数调用、返回类型、函数修改器。通过《Solidity编程:构建以太坊和区块链智能合约的初学者指南》你将学会事件记录和异常处理,以及测试和调试智能合约。
作者简介
瑞提什·莫迪(RiteshModi)
是前微软高级技术布道者以及地区负责人。他具有丰富的以太坊和Solidity开发经验,是区块链及Solidity很多相关会议的演讲嘉宾。他是架构师、布道者、演讲者以及著名的领导者,在区块链、数据中心、AzureBots、认知服务、DevOps、人工智能以及自动化领域都做出了贡献。他也是5《Solidity编程:构建以太坊和区块链智能合约的初学者指南》的作者。
目录
Contents目 录
译者序
前言
审校者简介
第1章 区块链、以太坊和智能合约1
1.1 什么是区块链2
1.2 为什么是区块链3
1.3 加密技术4
1.3.1 散列5
1.3.2 数字签名7
1.4 以太币7
1.5 gas8
1.6 区块链和以太坊架构9
1.6.1 区块如何互相连接10
1.6.2 交易和区块如何互相连接11
1.7 以太坊节点12
1.7.1 EVM12
1.7.2 以太坊挖矿节点13
1.7.3 如何挖矿14
1.8 以太坊账户15
1.8.1 外部账户16
1.8.2 合约账户16
1.9 交易16
1.10 区块20
1.11 端到端的交易21
1.12 什么是合约22
1.13 什么是智能合约22
1.14 如何部署合约27
1.15 本章小结27
第2章 安装以太坊和Solidity29
2.1 以太坊网络29
2.1.1 主网30
2.1.2 测试网络30
2.1.3 私有网络31
2.1.4 联盟网络31
2.2 Geth31
2.3 搭建一个私有网络35
2.4 ganache-cli40
2.5 Solidity编译器43
2.6 web3JavaScript库43
2.7 Mist钱包45
2.8 MetaMask47
2.9 本章小结51
第3章 Solidity介绍53
3.1 以太坊虚拟机53
3.2 Solidity和Solidity文件54
3.2.1 预编译指令55
3.2.2 注释56
3.2.3 import语句57
3.2.4 合约58
3.3 合约的结构59
3.3.1 状态变量60
3.3.2 结构62
3.3.3 修改器63
3.3.4 事件64
3.3.5 枚举65
3.3.6 函数66
3.4 Solidity中的数据类型68
3.4.1 值类型68
3.4.2 引用类型69
3.5 存储和内存数据位置71
3.5.1 规则171
3.5.2 规则271
3.5.3 规则372
3.5.4 规则472
3.5.5 规则572
3.5.6 规则674
3.5.7 规则775
3.5.8 规则876
3.6 字面量77
3.7 整型78
3.8 布尔型79
3.9 字节数据类型80
3.10 数组82
3.10.1 固定数组83
3.10.2 动态数组83
3.10.3 特殊数组84
3.10.4 数组属性86
3.11 数组的结构86
3.12 枚举88
3.13 地址89
3.14 映射90
3.15 本章小结94
第4章 全局变量和函数97
4.1 var类型变量97
4.2 变量声明提前99
4.3 变量作用域100
4.4 类型转换101
4.4.1 隐式转换102
4.4.2 显式转换102
4.5 区块和交易全局变量104
4.5.1 交易和消息全局变量105
4.5.2 tx.origin和msg.sender的区别105
4.6 加密全局变量106
4.7 地址全局变量107
4.8 合约全局变量107
4.9 本章小结108
第5章 表达式和控制结构109
5.1 Solidity表达式109
5.2 if决策控制111
5.3 while循环113
5.4 for循环114
5.5 do...while循环115
5.6 break语句116
5.7 continue语句117
5.8 return语句118
5.9 本章小结119
第6章 编写智能合约121
6.1 智能合约121
6.2 编写一个简单的合约122
6.3 创建合约123
6.3.1 使用new关键字123
6.3.2 使用合约地址124
6.4 构造函数125
6.5 合约组合126
6.6 继承127
6.6.1 单继承127
6.6.2 多级继承129
6.6.3 分层继承130
6.6.4 多重继承130
6.7 封装132
6.8 多态性132
6.8.1 函数多态性133
6.8.2 合约多态性133
6.9 方法覆盖135
6.10 抽象合约136
6.11 接口137
6.12 本章小结139
第7章 函数、修改器和fallback函数141
7.1 函数输入和输出141
7.2 修改器143
7.3 view函数、constant函数和pure函数146
7.4 地址相关函数148
7.4.1 send方法149
7.4.2 transfer方法151
7.4.3 call方法151
7.4.4 callcode方法154
7.4.5 delegatecall方法154
7.5 fallback函数154
7.6 本章小结157
第8章 异常、事件与日志159
8.1 错误处理160
8.1.1 require语句160
8.1.2 assert语句162
8.1.3 revert语句163
8.2 事件与日志163
8.3 本章小结167
第9章 Truffle基础与单元测试169
9.1 应用程序开发生命周期管理169
9.2 Truffle170
9.3 使用Truffle进行开发171
9.4 使用Truffle进行测试176
9.5 本章小结178
第10章 合约调试179
10.1 调试179
10.1.1 Remix编辑器180
10.1.2 使用事件183
10.2 使用BlockExplorer183
10.3 本章小结186
前言/序言
前 言
我不太确定上次大量听说关于政府、组织、社区和个人的技术的讨论是什么时候。区块链是一种正在世界各地各种组织中进行详细讨论和辩论的技术。区块链不仅仅是一种有限影响我们生活的技术,而是对我们的生活产生了广泛的影响。不远的将来,区块链将会触及我们生活的方方面面——支付账单,与任何组织进行交易,获得工资,身份认证,教育结果,活动等。这只是开始,我们刚开始了解去中心化的含义及其影响。
我已经在区块链领域工作了很长一段时间,并且一直是加密货币投资者。我是一名技术专家,对比特币非常着迷,因为它架构奇特。我从未遇到过这样优越的思维过程和架构,它不仅解决了经济和社会问题,而且解决了一些技术上未解决的问题,如拜占庭式的一般问题和容错。它在很大程度上解决了分布式计算的问题。
以太坊以几乎相似的方式搭建,当第一次听到并经历智能合约时,我很敬畏。智能合约是在区块链上部署去中心化应用程序并通过自定义逻辑、策略和规则轻松扩展的最大创新之一。
在编写这《Solidity编程:构建以太坊和区块链智能合约的初学者指南》时我心怀愉悦,并真诚地希望你也喜欢阅读和实施Solidity。我介绍了很多我的Solidity经验,并尽我所能阐述清楚,希望这《Solidity编程:构建以太坊和区块链智能合约的初学者指南》能让你成为更好的Solidity开发人员和优秀的程序员。
如果有哪些我可以做的,能够更好地改善你对这《Solidity编程:构建以太坊和区块链智能合约的初学者指南》的体验,我洗耳恭听!
《Solidity编程:构建以太坊和区块链智能合约的初学者指南》目的读者
为了更好地阅读《Solidity编程:构建以太坊和区块链智能合约的初学者指南》的内容,需要计算和编程的基本概念和知识。如果你觉得自己没有这方面的知识,可以通过快速阅读针对初学者的编程书籍来满足基本要求。《Solidity编程:构建以太坊和区块链智能合约的初学者指南》主要面向使用区块链为最终客户和雇主提供高级服务的区块链架构师、开发人员、顾问和IT工程师。如果你想在以太坊上编写智能合约解决方案,那么《Solidity编程:构建以太坊和区块链智能合约的初学者指南》对你来说非常理想。如果你已经拥有一些JavaScript经验,那么可以帮助你加快学习速度。