主页 详情

《深入以太坊智能合约开发》_杨镇,姜信宝,朱智胜,盖方宇著著_14590866_9787111623724

【书名】:《深入以太坊智能合约开发》
【作者】:杨镇,姜信宝,朱智胜,盖方宇著著
【出版社】:北京:机械工业出版社
【时间】:2019
【页数】:384
【ISBN】:9787111623724
【SS码】:14590866

最新查询

内容简介

第一部分 准备篇

第1章 快速了解以太坊

1.1 以太坊是什么

1.2 以太坊的历史和发展路线图

1.3 以太坊的基本概念

1.3.1 账户(accounts)

1.3.2 合约(contracts)

1.3.3 交易(transaction)和消息(message)

1.3.4 气(gas)

1.4 以太币(ether)

1.4.1 以太币的发行

1.4.2 以太币的单位

1.4.3 以太坊挖矿

1.5 以太坊测试网络

1.6 以太坊客户端

1.7 以太坊生态系统全景扫描

1.7.1 Swarm

1.7.2 ENS

1.7.3 Whisper

1.7.4 其他相关项目

1.8 本章小结

第2章 以太坊基础交互及基础开发工具详解

2.1 以太坊客户端的下载、安装及简介

2.1.1 Geth下载

2.1.2 Geth安装

2.1.3 Geth启动与数据目录结构

2.1.4 网络环境分类

2.2 核心命令和参数解析

2.2.1 如何获得命令及参数

2.2.2 常见基础操作命令

2.2.3 常见web3j交互命令

2.3 Remix详解

2.3.1 Remix简介

2.3.2 Remix实战

2.4 本章小结

第二部分 基础篇

第3章 智能合约开发语言Solidity基础

3.1 智能合约与Solidity简介

3.2 Solidity基础语法

3.2.1 版本杂注

3.2.2 import的用法

3.2.3 代码注释

3.2.4 数据类型

3.2.5 全局变量

3.2.6 表达式和控制结构

3.3 Solidity语言速查表

3.4 Solidity源代码书写风格

3.5 本章小结

第4章 Solidity编译器

4.1 安装Solidity编译器

4.1.1 直接获取可执行程序包

4.1.2 从源代码编译构建

4.1.3 Solidity编译器版本号详解

4.2 使用Solidity编译器

4.2.1 命令行编译器

4.2.2 编译器输入、输出的JSON描述

4.3 合约元数据

4.4 本章小结

第5章 Solidity智能合约编写

5.1 创建智能合约

5.2 可见性控制

5.3 getter函数

5.4 函数修饰器

5.5 状态常量

5.6 函数

5.6.1 view函数

5.6.2 pure函数

5.6.3 fallback函数

5.6.4 函数重载

5.7 事件

5.8 继承

5.8.1 基类构造函数

5.8.2 多重继承

5.8.3 线性化

5.9 抽象智能合约

5.10 接口

5.11 库

5.12 using for的用法

5.13 本章小结

第6章 Solidity集成开发工具简介

6.1 Truffle

6.1.1 Truffle简介

6.1.2 快速体验

6.1.3 用Truffle的开发过程

6.1.4 Truffle高级用法

6.2 Embark

6.2.1 Embark安装

6.2.2 Embark快速开始

6.2.3 Embark常规用法

6.2.4 智能合约的配置与调用

6.2.5 Embark去中心化存储

6.2.6 Embark去中心化通信

6.3 其他工具(Remix)

6.3.1 Solidity编辑与编译

6.3.2 Solidity合约部署

6.4 本章小结

第三部分 进阶篇

第7章 深入理解以太坊虚拟机

7.1 区块链范式

7.2 状态、交易、收据和区块

7.2.1 状态

7.2.2 交易

7.2.3 收据

7.2.4 区块

7.2.5 以太坊基础数据结构汇总

7.2.6 理解gas

7.3 交易执行

7.4 执行模型——以太坊虚拟机

7.4.1 EVM概述

7.4.2 EVM基础操作码

7.4.3 EVM代码的执行

7.5 合约创建

7.6 消息调用

7.7 区块定稿

7.8 本章小结

第8章 应用二进制接口

8.1 函数选择器

8.2 参数编码

8.2.1 类型的规范表达

8.2.2 编码的形式化说明

8.2.3 编码实例

8.3 动态类型的使用

8.4 事件

8.5 合约接口的JSON描述

8.6 处理元组类型

8.7 非标准打包模式

8.8 本章小结

第9章 OpenZeppelin源代码详解

9.1 通用基础合约

9.1.1 地址工具(AddressUtils.sol)

9.1.2 椭圆曲线签名操作(ECRecovery.sol)

9.1.3 限制子合约的余额(LimitBalance.sol)

9.1.4 Merkle证明(Merkle-Proof.sol)

9.1.5 拒绝重入(Reentrancy-Guard.sol)

9.2 算术运算

9.2.1 基本算术(Math.sol)

9.2.2 安全算术(SafeMath.sol)

9.3 自省(introspection)

9.3.1 ERC165(ERC165.sol)

9.3.2 接口查找基础合约(Supports-InterfaceWithLookup.sol)

9.4 归属权(用户权限)

9.4.1 归属权(Ownable.sol)

9.4.2 用户角色(Roles.sol)

9.4.3 基于角色的访问控制(RBAC.sol)

9.4.4 超级用户(Superuser.sol)

9.4.5 联系方式(Contactable.sol)

9.4.6 归属权转移请求(Claimable.sol)

9.4.7 有时限的归属权转移请求(DelayedClaimable.sol)

9.4.8 归属权继承(Heritable.sol)

9.4.9 合约不归属于合约(HasNoContracts.sol)

9.4.10 合约不持有以太币(HasNoEther.sol)

9.4.11 合约可找回token(Can-ClaimToken.sol)

9.4.12 合约不持有token(HasNo-Tokens.sol)

9.4.13 合约什么都不持有(NoOwner.sol)

9.5 访问控制

9.5.1 签名保镖(Signature-Bouncer.sol)

9.5.2 白名单(Whitelist.sol)

9.6 生命周期

9.6.1 可自毁(Destructible.sol)

9.6.2 可暂停运作(Pausable.sol)

9.6.3 token可自毁(Token-Destructible.sol)

9.7 支付和悬赏

9.7.1 托管(Escrow.sol)

9.7.2 条件托管(Conditional-Escrow.sol)

9.7.3 退还托管(Refund-Escrow.sol)

9.7.4 费用支付(PullPayment.sol)

9.7.5 分割付款(SplitPayment.sol)

9.7.6 悬赏(Bounty.sol)

9.8 ERC20

9.8.1 ERC20Basic(ERC20Basic.sol)

9.8.2 BasicToken(BasicToken.sol)

9.8.3 ERC20(ERC20.sol)

9.8.4 SafeERC20(SafeERC20.sol)

9.8.5 ERC20详情(Detailed-ERC20.sol)

9.8.6 标准token(Standard-Token.sol)

9.8.7 可销毁的token(BurnableToken.sol)

9.8.8 可销毁的标准token(StandardBurnableToken.sol)

9.8.9 可暂停的标准token(PauseableToken.sol)

9.8.10 可增发的标准token(MintableToken.sol)

9.8.11 有增发上限的标准token(CappedToken.sol)

9.8.12 可授权增发的标准token(RBACMintableToken.sol)

9.8.13 锁定token的提取(TokenTimelock.sol)

9.8.14 定期发放token(Token-Vesting.sol)

9.9 Crowdsale

9.9.1 Crowdsale(Crowdsale.sol)

9.9.2 有上限的Crowdsale(CappedCrowdsale.sol)

9.9.3 有独立上限的Crowdsale(IndividuallyCapped-Crowdsale.sol)

9.9.4 有时限的Crowdsale(TimedCrowdsale.sol)

9.9.5 有白名单的Crowdsale(WhitedlistedCrowdsale.sol)

9.9.6 自动涨价的Crowdsale(IncreasingPriceCrowdsale.sol)

9.9.7 可增发的Crowdsale(MintedCrowdsale.sol)

9.9.8 有额度的Crowdsale(AllowanceCrowdsale.sol)

9.9.9 有完结处理的Crowdsale(FinalizableCrowdsale.sol)

9.9.10 后发送token的Crowdsale(PostDeliveryCrowdsale.sol)

9.9.11 退款库(RefundVault.sol)

9.9.12 可退款的Crowdsale(RefundableCrowdsale.sol)

9.10 ERC721

9.10.1 ERC721Basic(ERC721Basic.sol)

9.10.2 ERC721(ERC721.sol)

9.10.3 ERC721Receiver(ERC721Receiver.sol)

9.10.4 ERC721Holder(ERC721Holder.sol)

9.10.5 ERC721BasicToken(ERC721BasicToken.sol)

9.10.6 ERC721Token(ERC721Token.sol)

9.11 本章小结

第10章 智能合约安全编码指南

10.1 已知的攻击

10.1.1 重入

10.1.2 算术溢出

10.1.3 意外之财

10.1.4 delegatecall

10.1.5 默认的可见性

10.1.6 随机错觉

10.1.7 外部智能合约引用

10.1.8 短地址/参数攻击

10.1.9 未检查的返回值

10.1.10 竞争条件/预先交易

10.1.11 拒绝服务

10.1.12 时间戳操纵

10.1.13 未初始化的存储指针

10.1.14 浮点和数据精度

10.1.15 tx.origin判定

10.2 智能合约开发最佳实践

10.2.1 智能合约安全开发的基本理念

10.2.2 智能合约设计开发中的基本权衡

10.2.3 使用Solidity进行智能合约开发的部分最佳实践

10.2.4 软件工程上的考量

10.3 智能合约安全开发辅助工具

10.4 安全信息/安全通知渠道

10.5 本章小结

第四部分 实战篇

第11章 Java版本DApp完整示例

11.1 DApp智能合约的编写及发布

11.1.1 DApp智能合约

11.1.2 智能合约发布

11.2 环境配置

11.2.1 逆向生成代码

11.2.2 创建Java项目与功能验证

11.3 本章小结

第12章 DApp示例——宠物店

12.1 环境准备

12.2 创建项目

12.3 编写智能合约

12.3.1 创建智能合约文件

12.3.2 定义变量

12.3.3 领养方法

12.3.4 查询领养者的方法

12.4 编译部署合约

12.4.1 编译合约

12.4.2 部署合约

12.5 智能合约测试

12.5.1 测试adopt()方法

12.5.2 测试获取单个宠物的领养者

12.5.3 测试获取所有宠物的领养者

12.5.4 运行测试

12.6 前端代码编号

12.6.1 初始化Web3

12.6.2 初始化合约

12.6.3 获取领养的宠物并更新界面

12.6.4 处理adopt()方法

12.7 浏览器中与DApp交互

12.7.1 安装配置MetaMask

12.7.2 DApp交互

12.8 本章小结

附录A Merkle Patricia Tree

A.1 MPT中的节点类型

A.2 十六进制前缀编码

A.3 树的示例

附录B 递归长度前缀编码

附录C EVM中的费用设计和操作码设计

附录D Solidity汇编语言

D.1 内联汇编库合约实例

D.2 内联汇编语言特性

D.3 独立汇编

D.4 汇编语法


书查询(www.shuchaxun.com)本网页唯一编码:
c2890c08f00ba5d80f37e780c1671f39#67e4bbfc8b578bf57c8014bdfd7da96d#51475263#a_14590866.zip