以太坊智能合约开发实战
全新正版 极速发货
¥
68.57
5.8折
¥
119
全新
库存6件
作者唐盛彬
出版社机械工业出版社
ISBN9787111623717
出版时间2019-04
装帧平装
开本16开
定价119元
货号1201866369
上书时间2024-05-30
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
唐盛彬,就职于靠前靠前的手机游戏平台当乐网(d.cn),主要负责当乐游戏中心App平台的SDK及区块链游戏众筹平台DOGI.IO的智能合约开发工作。熟悉以太坊,对以太坊底层原理和相关协议有较为深入的研究;熟悉以太坊智能合约开发的核心技术与常用工具,如Solidity语言、web3.js、Truffle和Geth等;对使用Solidity语言进行以太坊智能合约开发有丰富的实战经验,特别是在众筹和代币开发等相关领域。
目录
目录前言篇 基础理论与原理章 与区块链的次亲密接触21.1 什么是区块链21.1.1 区块链简介21.1.2 区块链的链式结构31.1.3 区块链上的区块常见数据41.2 工作量证明机制(PoW)61.2.1 区块链遭遇的问题61.2.2 PoW模型81.2.3 PoW为什么能防止篡改91.3 权益证明机制(PoS)111.3.1 什么是PoS121.3.2 PoS的优势与劣势121.4 委托权益证明(DPoS)121.5 权威证明(PoA)131.6 区块链的应用131.7 本章小结13第2章 去中心化应用——DApp152.1 DApp简介152.1.1 什么是DApp152.1.2 DApp网络组建过程162.1.3 DApp的优点162.1.4 DApp存在的问题162.2 中心化与去中心化172.2.1 身份验证172.2.2 通信172.2.3 数据交互172.2.4 系统维护182.3 DApp网络与通信182.3.1 P2P网络与WWW192.3.2 P2P网络拓扑结构类型202.3.3 小结212.4 DApp货币与中心化数据交互222.4.1 DApp货币222.4.2 中心化应用获取去中心化数据222.4.3 去中心化应用获取中心化数据222.5 常见的DApp232.5.1 比特币232.5.2 以太坊232.5.3 IPFS存储系统23第3章 比特币那些事253.1 比特币简介253.1.1 比特币公钥与私钥253.1.2 数字签名263.2 椭圆曲线算法263.2.1 群263.2.2 椭圆曲线算法定义283.2.3 椭圆曲线几何运算293.2.4 椭圆曲线算法的代码实现303.2.5 椭圆曲线加密与签名原理373.3 比特币私钥、公钥与地址393.3.1 从私钥到地址393.3.2 公钥压缩403.3.3 私钥格式413.3.4 私钥与安全413.4 比特币交易443.4.1 交易简介443.4.2 交易输出443.4.3 交易输入443.4.4 交易费453.4.5 付款至公钥哈希(P2PKH)453.4.6 多重签名与P2SH463.5 比特币钱包463.5.1 钱包简介463.5.2 生成助记词473.5.3 从助记词生成种子483.5.4 从种子生成HD钱包483.5.5 HD钱包密钥路径503.6 比特币相关资源51第4章 以太坊524.1 以太坊简介524.1.1 什么是以太坊524.1.2 以太坊虚拟机(EVM)534.1.3 以太坊智能合约与不错语言534.1.4 以太币单位544.1.5 以太坊发行版本与提案544.2 以太坊账户554.2.1 外部账户554.2.2 合约账户564.2.3 外部账户与合约账户的异同564.3 以太坊交易574.3.1 gas、gasPrice与gasLimit574.3.2 gasUsed与交易花费584.3.3 什么是以太坊交易与消息584.4 以太坊网络594.4.1 以太坊网络简介594.4.2 以太坊与Kademlia594.4.3 以太坊客户端614.5 挖矿624.5.1 什么是挖矿624.5.2 挖矿奖励624.5.3 以太坊区块634.6 GHOST协议644.6.1 区块时间644.6.2 区块分叉654.6.3 普通分叉带来的问题664.6.4 GHOST协议的具体内容674.7 Ethash算法之DAG684.7.1 什么是DAG684.7.2 DAG生成过程694.7.3 为什么要使用DAG694.8 Ethash算法704.8.1 Ethash算法简介704.8.2 Ethash算法流程704.9 本章小结71第2篇 开发工具第5章 智能合约开发常用工具745.1 Git简介745.1.1 Git安装745.1.2 Git常用命令755.1.3 Git资源推荐765.2 Node.js简介765.2.1 什么是Node.js765.2.2 Node.js安装775.3 NPM简介785.3.1 npm config命令785.3.2 NPM与语义化版本805.3.3 npm install命令825.3.4 NPM镜像835.3.5 NPM的其他常用命令845.4 webpack简介855.4.1 认识webpack855.4.2 webpack首秀855.4.3 webpack 与webpack-dev-server875.4.4 webpack常用功能与配置905.4.5 webpack总结925.5 Postman简介925.5.1 认识Postman935.5.2 Postman的简单用法945.5.3 Postman脚本955.6 LevelDB简介965.6.1 认识LevelDB965.6.2 LevelDB文件975.6.3 SST结构与数据查找99第6章 以太坊私链神器——Ganache1026.1 Ganache简介1026.1.1 什么是Ganache1026.1.2 ganache-cli命令安装1036.1.3 Ganache图形界面1046.2 Ganache常见命令参数1066.2.1 挖矿时间1066.2.2 主机端口与网络1066.2.3 gas相关参数1066.2.4 其他参数1066.3 Ganache账户1076.3.1 能多给我点钱吗1076.3.2 能多给我几个账户吗1086.3.3 助记词相关参数1086.3.4 指定账户1086.3.5 锁定账户与解锁1096.4 Ganache与JavaScript1096.4.1 在工程中引用Ganache的Provider1096.4.2 在工程中启动Ganache的Server1106.4.3 配置工程中依赖的Ganache1116.5 Ganache交易相关RPC方法1126.5.1 eth_sendTransaction方法1136.5.2 eth_getTransactionCount方法1156.5.3 eth_getTransactionReceipt方法1166.5.4 eth_getTransactionByHash方法1166.5.5 交易相关的其他方法1176.6 Ganache账户相关RPC方法1176.6.1 eth_accounts方法1186.6.2 eth_getBalance方法1186.6.3 eth_coinbase方法1196.7 Ganache区块相关RPC方法1196.7.1 eth_getBlockByHash方法1196.7.2 eth_getBlockByNumber方法1226.7.3 其他相关方法1226.8 Ganache日志相关RPC方法1236.8.1 eth_newFilter方法1236.8.2 eth_getFilterLogs方法1246.8.3 eth_getLogs方法1256.8.4 其他关联方法1266.9 Ganache的其他RPC方法1276.9.1 web3_clientVersion方法1276.9.2 net_version方法1276.9.3 eth_getCode方法1286.9.4 eth_sign方法129第7章 以太坊官方客户端——Geth1307.1 Geth简介1307.1.1 Geth是什么1307.1.2 Geth安装1307.1.3 Geth相关目录1327.1.4 Geth相关工具1347.2 Geth子命令1347.2.1 Geth子命令概述1357.2.2 Geth子命令之account1367.2.3 Geth子命令之console与attach1377.2.4 Geth子命令之copydb与removedb1377.3 Geth启动参数1387.3.1 Geth数据同步模式1387.3.2 Geth网络相关参数1387.3.3 Geth以太坊相关参数1397.3.4 Geth RPC相关参数1407.3.5 Geth挖矿相关参数1417.3.6 Geth ethash算法参数1427.3.7 Geth交易池配置1427.3.8 Geth日志参数1457.3.9 Geth的其他参数1467.4 Geth启动实例1467.4.1 Geth启动单个节点1467.4.2 Geth启动多节点组网1487.5 Geth控制台与管理接口1497.5.1 admin模块1497.5.2 debug模块1507.5.3 miner模块1517.5.4 personal模块1527.5.5 txpool模块1537.6 keystore文件1537.6.1 keystore文件简介1537.6.2 从密钥到密钥文件1547.6.3 从密钥到密钥文件流程验证155第8章 以太坊钱包与浏览器1588.1 MetaMask插件1588.1.1 MetaMask简介1588.1.2 MetaMask安装1598.1.3 次使用MetaMask1608.1.4 MetaMask的连接配置1618.1.5 MetaMask的其他配置1628.1.6 MetaMask账户管理1638.1.7 MetaMask交易1648.1.8 小结1658.2 Ethereum Wallet钱包1668.2.1 Ethereum Wallet简介1668.2.2 安装Ethereum Wallet与Mist1668.2.3 使用Ethereum Wallet1698.3 Mist与Ethereum Wallet1708.3.1 Ethereum Wallet与Mist的区别1718.3.2 Mist的配置与使用1718.3.3 小结1728.4 MyEtherWallet网页钱包1728.4.1 MyEtherWallet简介1738.4.2 MyEtherWallet合约交互1748.4.3 MyEtherWallet离线交易1758.4.4 MyEtherWallet的其他功能177第3篇 Solidity与智能合约开发第9章 Solidity初遇1809.1 Solidity简介1809.1.1 什么是Solidity1809.1.2 智能合约示例1819.1.3 Solidity编译版本1829.2 Solidity编辑器1829.2.1 Sublime编辑器1829.2.2 Atom编辑器1859.2.3 IDEA编辑器1879.3 Remix编辑器1889.3.1 Remix简介1889.3.2 Remix文件管理1899.3.3 Remix编辑面板与控制台1909.3.4 Remix编译与运行面板1919.3.5 Remix基本配置面板1939.3.6 Remix分析配置面板1949.4 Solidity常见概念1969.4.1 状态变量1969.4.2 局部变量1969.4.3 Solidity函数1979.4.4 返回多值1979.4.5 构造函数1989.4.6 异常2009.4.7 Solidity注释与文档2019.5 Solidity运算符2039.5.1 Solidity运算符简介2039.5.2 Solidity运算符注意事项2049.6 Solidity控制结构2059.6.1 控制结构简介2059.6.2 判断语句2059.6.3 for循环2069.6.4 while与do…while循环2069.6.5 continue与break2079.6.6 三目运算符2089.7 可见性修饰符2099.7.1 public修饰符2099.7.2 internal修饰符2109.7.3 private修饰符2139.7.4 external修饰符2149.8 函数其他修饰符2169.8.1 constant修饰符2169.8.2 view修饰符2179.8.3 pure修饰符2170章 Solidity数据类型21910.1 数据类型简介21910.1.1 值类型21910.1.2 引用类型22010.1.3 小结22110.2 Booleans类型22110.2.1 Booleans类型简介22110.2.2 Booleans类型支持的运算符22110.3 Integers类型22310.3.1 Integers类型简介22310.3.2 Integers类型支持的运算符22410.3.3 Integers整除问题22510.4 定点数类型22610.4.1 定点数类型简介22610.4.2 定点数类型支持的运算符22710.5 字面量22710.5.1 字符串字面量22710.5.2 十六进制字面量22910.5.3 有理数字面量23010.6 Enum类型23110.6.1 枚举类型简介23110.6.2 枚举类型实例23110.7 mapping类型23210.7.1 mapping类型简介23210.7.2 mapping类型实例23210.8 struct类型2331章 Solidity数据类型进阶23511.1 Solidity固定大小字节数组23511.1.1 固定大小字节数组类型23511.1.2 固定大小字节数组支持的运算符23611.1.3 固定大小字节数组的成员23611.1.4 固定大小字节数组与字符串23711.1.5 固定大小字节数组之间的转换24011.1.6 小结24111.2 Solidity动态大小字节数组24211.2.1 动态大小字节数组简介24211.2.2 创建动态大小字节数组24211.2.3 动态大小字节数组成员24311.2.4 字节数组间的转换2
内容摘要
本书从区块链的概念、原理、核心技术和应用四个方面,系统地介绍了以太坊区块链开发的相关知识。其中,重点介绍了以太坊的相关概念和原理、以太坊客户端Geth、以太坊常用智能合约开发工具、Solidity语言和智能合约开发等内容,并介绍了众筹合约和代币合约两个项目实战案例,可以让读者对智能合约开发的整体流程有一个全面的了解。另外,书中结合示例对web3.js的相关知识也做了详细介绍,以帮助读者更好地理解和利用以太坊的相关数据。 本书共17章,分为4篇,涵盖的主要内容有区块链的概念、原理与底层技术;以太坊的相关概念与原理;以太坊相关协议;以太坊客户端Geth;以太坊智能合约的其他常用工具与客户端;Solidity语言的基本概念与数据类型;使用Solidity进行以太坊智能合约开发;通过web3.js与以太坊区块链数据进行交互;众筹智能合约与代币智能合约项目实战案例。 本书内容丰富,讲解通俗易懂,案例典型,实用性强,特别适合区块链技术爱好者和智能合约开发的相关从业人员阅读,也适合区块链底层研究人员阅读。另外,本书还适合区块链培训机构作为相关课程的培训教材。
精彩内容
前言 区块链技术是当下炙手可热的应用技术。甚至与区块链相关的一些名词,比如数字货币、去中心化应用、比特币和以太坊等也是开发人员经常提及的热门话题,即便不是计算机相关行业的人也可能有所耳闻。而智能合约的出现让人们意识到,区块链技术除了数字货币之外还有更广阔的应用空间。就现阶段而言,要实现智能合约的落地应用,最普及的方式就是通过以太坊智能合约而实现,它有不断完善的生态,也有一些具体的落地项目。可以预见,以太坊智能合约开发技术在未来会有更多的落地应用开花结果。 当前,以太坊区块链的开发还处在一个起步阶段,很多生态还不是很完善,相关工具、库,甚至开发语言本身都还处在不断地迭代之中,而且相关学习资料也比较少。这种情形和当年Android开发在国内刚起步时一样。笔者作为一个区块链技术的探索者正行走在这条道路上,觉得有必要把自己的一些经验和心得体会进行总结并集结成册,以帮助那些对区块链技术感兴趣的人,让他们少走一些弯路。这便是笔者写作本书的初衷。 本书主要介绍了利用Solidity语言开发以太坊智能合约的相关知识。书中涵盖了区块链与以太坊智能合约的基本原理;智能合约开发环境的搭建;各种开发、集成与测试工具的介绍,以及Solidity语言的详细介绍等。相信通过阅读本书,读者能较为系统地掌握以太坊智能合约开发的核心技术与要点。本书特色 1.内容全面、系统 本书从区块链的概念、原理、核心技术和应用四个方面展开讲解,涵盖以太坊智能合约开发的方方面面知识,如以太坊客户端、智能合约开发工具、Solidity语言等,读者通过一本书即可较为系统地掌握以太坊智能合约开发。 2.讲解由浅入深,循序渐进 本书讲解时从概念和原理入手,然后剖析核心技术,再辅以典型实例,尽量让前文的讲解作为后文的铺垫,一步步带领读者循序渐进地学习。这样的章节安排符合读者的学习和认知规律,学习梯度比较平滑,学习效果更好。 3.原理与实践相结合 笔者深信,只有通过动手实践,才能加深对知识的理解,所以书中不仅介绍了区块链和以太坊智能合约的相关概念和原理,而且还给出了实现方法和步骤,这样可以让读者真正学以致用,适应职场的要求。 4.一图胜千言,配合大量图示讲解 本书涉及的概念和基本原理比较多,这些概念和原理比较抽象。为了便于读者直观地理解这些知识,笔者绘制了大量的流程图和原理图帮助读者学习。真可谓一图胜千言,用文字不容易讲解清楚的内容,一幅图就可以直观地展现出来。 5.案例典型,步骤详细,代码翔实 本书注重内容的实用性,重要的知识点都配合实例进行讲解,而且在最后两章介绍了众筹和代币智能合约开发两个项目案例。书中在讲解这些实例和案例时都给出了详细的操作步骤和实现代码,并对关键代码做了详细的注释,便于读者理解。本书内容 本书共17章,分为4篇。 篇 基础理论与原理篇(~4章) 章与区块链的次亲密接触,主要介绍了区块链的概念和原理,并介绍了区块链中的工作量证明机制、权益证明机制和委托权益证明等内容。 第2章去中心化应用——DApp,主要介绍了DApp的概念及其优缺点,还介绍了DApp如何和中心化应用进行通信。 第3章比特币那些事,主要介绍了比特币的公钥格式、私钥格式、私钥的生成和从私钥获取公钥的方法,并介绍了如何从公钥获取地址,以及测试比特币账户碰撞等。 第4章以太坊,主要介绍了以太坊涉及的基本概念和原理,如以太坊账户、以太坊交易、挖矿、GHOST协议、DAG算法和Ethash算法等。 第2篇 开发工具(第5~8章) 第5章智能合约开发常用工具,主要介绍了在以太坊智能合约开发过程中会用到的一些工具,如Git版本管理工具、Node.js和NPM等。 第6章以太坊私链神器——Ganache,主要介绍了在以太坊智能合约开发中需要使用的Ganache工具。其中,重点介绍了Ganache的图形界面、命令行工具、常用命令和参数,以及如何在项目中使用Ganache。 第7章以太坊官方客户端——Geth,主要介绍了Geth的启动命令和参数,借此认识以太坊的各个协议内容。 第8章以太坊钱包与浏览器,主要介绍了MetaMask浏览器插件的用法。MetaMask也可以看做是一个轻钱包,可以在开发者构建Web应用和以太坊区块链交互时提供帮助。 第3篇 Solidity与智能合约开发(第9~14章) 第9章Solidity初遇,主要介绍了Solidity语言常用开发工具的安装与配置,并对Solidity语言的基本概念,如状态变量和局部变量做了详细介绍,另外还对Solidity中的运算符、控制结构和函数的常见修饰符(如payable、view、pure等)做了必要讲解。 0章Solidity数据类型,主要介绍了Solidity的数据类型及其应用,如整型中包含的具体类型、各种字面量类型、枚举类型、结构体类型及mapping类型等。 1章Solidity数据类型进阶,主要介绍了Solidity的一些更加复杂的数据类型,如固定大小字节数组、动态大小字节数组、地址类型、函数类型等,另外还介绍了不同数据类型之间隐式转换与显式转换的方法,以及delete操作应用于各个数据类型等。 2章Solidity开发智能合约,主要介绍了使用Solidity开发以太坊智能合约的相关内容,涵盖EVM结构和数据、事件与日志、全局以太币和时间单位后缀、区块与交易的全局属性、错误处理函数、数学与Hash函数、ABI编码和特殊类型函数等。 3章Solidity开发智能合约进阶,介绍了Solidity和智能合约开发的进阶知识,涵盖Solidity数据位置与赋值、函数修改器、合约继承,以及Solidity的库、编译与编码风格等。 4章通过web3.js与以太坊进行交互,主要介绍了如何使用web3.js与以太坊智能合约进行交互,给出了web3.js和账户、合约、ABI及IBAN交互的多个实例。 第4篇 项目案例实战(5~17章) 5章工程化项目开发利器——Truffle,主要介绍了如何使
— 没有更多了 —
以下为对购买帮助不大的评价