| 作者 |
| 嘉文 管健 李万胜 |
| 丛书名 |
| 出版社 |
| 机械工业出版社* |
| ISBN |
| 9787111646426 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书从零开始介绍Solidity程序开发,从Solidity语言中基础的关键字和语句开始介绍,逐步深入到高级应用,包括设计模式、合约可升级的设计、合约的安全性问题及对策等,并结合EVM的实现,讨论Solidity语句的汇编实现;对一些原理的讲解,提供了相对应的实例,以期更易于理解原理的实现机理;同时,对Solidity应用于DApp开发,及使用区块链上的去中心化存储(IPFS)也有详细的介绍。 本书可作为对区块链感兴趣的程序开发人员、高校师生等的参考书,也可作为相关课程的培训教材。 |
| 目录 |
前言 第1章以太坊简介1 11以太坊1 111不对称加密体系2 112密码学哈希函数4 113对称点对点网络4 114区块链4 115以太坊虚拟机5 116节点5 117矿工5 118工作量证明6 119去中心化应用6 1110Solidity6 12智能合约6 13燃料7 131为什么需要燃料?8 132燃料组成8 14ether9 15账户9 16交易10 第2章预备知识11 21简单的例子11 22工具准备12 221编程环境准备12 222编程工具准备16 223区块链浏览器26 23测试环境26 231MetaMask访问测试环境27 232测试环境领取测试用币27 233开发时连接测试环境28 24以太坊源码编译29 第3章Solidity编程基础31 31sol文件结构31 311编译开关31 312引用其他源文件31 313注释31 314合约32 315库32 316接口33 32合约文件结构33 33变量类型33 331值类型34 332引用类型35 333字典/映射37 334特殊情况37 34操作符38 35语句39 351条件语句39 352循环语句40 353其他40 36修饰符40 361标准修饰符40 362自定义修饰符44 37数据位置46 38事件47 381智能合约返回值给用户接口48 382异步的带数据的触发器49 383一种比较便宜的存储49 384事件里的Indexed参数50 39继承51 391单继承51 392多重继承51 310其他52 3101内置52 3102特殊单位54 3103类型转换及推断55 3104异常56 3105汇编56 第4章Solidity编程的高级话题59 41This关键字59 42ERC20标准接口59 421方法61 422事件62 423OpenZepplin框架62 43ERC721标准接口63 431ERC721接口定义63 432元数据扩展75 433可枚举扩展77 434ERC165标准81 44合约间调用82 441函数调用82 442依赖注入84 443消息调用84 444获取合约间调用的返回值88 45基础算法90 46用Go与合约交互93 461创建项目93 462创建一个简单的以太坊合约93 463用Go访问以太坊合约94 464本地测试94 465连接到一个以太坊节点98 466为账户创建加密的JSON钥匙98 467最后验证98 第5章ABI接口102 51内存结构102 52函数选择子102 53类型的定义102 54EVM里的数据表示103 541固定长度数据类型的表示104 542动态长度数据类型的表示105 55编码108 551简单的例子108 552外部调用例子109 553外部方法调用的ABI编码112 56基于ABI的编程116 第6章智能合约运行原理118 61设计模式118 611合约自毁118 612工厂合约模式119 613名字登录120 614映射迭代121 615撤出模式122 62省燃料122 621注意数据类型123 622以字节编码的形式存储值123 623利用SOLC编译器压缩变量123 624使用汇编代码压缩变量124 625合并函数参数125 626使用默克尔树证明减少存储成本125 627无状态的合约127 628在IPFS上存储数据127 629位压缩127 6210批处理128 6211Storage结构类型读写分离129 6212uint256和直接内存存储130 6213汇编代码优化130 63汇编代码130 631栈131 632调用数据131 633内存132 634存储133 64解构智能合约134 641合约创建138 642合约本体通用部分141 643合约本体特定代码145 第7章可升级的合约147 71方法147 711代理合约147 712分离逻辑和数据147 713通过键值对来分离数据和逻辑147 714部分升级148 715比较148 716简单的代理合约例子148 72通用的代理模式150 73Storage154 731继承存储154 732永久存储154 733非结构化存储155 74Augur156 741合约部署156 742存储部署157 75Colony158 751存储部署158 752合约部署159 76总结159 第8章编写安全的合约161 81以太坊已知常见漏洞 161 811上溢和下溢161 812Solidity可见性修饰符的差别165 813重入问题166 814出乎意料的ether操作170 815代理调用174 816默认可见性修饰符178 817熵随机源180 818外部合约引用180 819短地址/参数攻击184 8110未验证的CALL返回值185 8111竞争条件186 8112阻塞攻击188 8113操纵块时间戳190 8114谨慎使用构造函数191 8115未初始化的存储指针192 8116浮点数精度193 8117交易授权194 82以太坊一些奇怪的特性195 821没有Key的ether195 822一次性地址197 823一个交易的空投197 83以太坊智能合约——最佳安全开发指南198 831尽早且明确的暴露问题198 832在支付时使用(pull)模式而不是(push)模式199 833函数代码的顺序:条件,行为,交互200 834留意平台局限性201 835测试用例203 836容错及自动b |