目录
- 前言
- 关于区块链开发技术
- 关于《精通区块链开发技术(第2版)》
- 编辑推荐
- 内容简介
- 作者简介
- 图书目录
- 书中前言/序言
- 《精通区块链开发技术(第2版)》全书速览
- 结束语
前言
作为开发者经常在技术圈活动,会接触各种前沿技术,比如区块链技术的崛起引发了全球范围内的关注和热潮,它被认为是一项具有革命性潜力的创新技术,区块链不仅改变着金融行业,还渗透到了供应链、医疗、能源等各个领域,为了能够适应这个充满机遇和挑战的时代,我们需要掌握区块链开发技术。那么本文就来聊聊开发者如何入门及精通区块链开发技术的,仅作技术交流和讨论。
关于区块链开发技术
上文也提到了区块链是近年来备受瞩目的技术,被广泛用于加密货币交易、智能合约以及数据安全等领域,随着区块链技术的日益成熟和普及,精通区块链开发技术变得越来越重要。如果想要精通区块链开发技术首先需要理解区块链的基本概念和原理,因为区块链是一个分布式数据库,数据以块的形式链接在一起形成链条,每个块都包含一些数据以及前一个块的哈希值,确保数据的不可篡改和安全性。精通区块链开发技术需要深入了解区块链的共识算法、加密算法和分布式技术等核心原理。
我觉得精通区块链开发技术需要具备扎实的编程基础和技能,区块链开发通常使用的编程语言包括Solidity、Go、C++等,精通这些编程语言以及相关的工具和框架是必备的,还需要熟悉智能合约开发、分布式应用开发以及数据结构和算法等知识也是必不可少的。
除了技术的基础知识,精通区块链开发技术还需要具备解决问题和创新的能力。区块链技术的发展日新月异,每天都会出现新的挑战和机遇。只有具备对问题进行分析和解决的能力,才能在不断发展的区块链领域立足和取得突破。要精通区块链开发技术,不仅需要充分理解区块链的核心概念和原理,同时也需要不断学习和实践。区块链开发者应该关注行业的最新动态和技术发展,参与到相关的社区和项目中,积累经验和知识。
还有就是精通区块链开发技术也需要具备良好的团队合作和沟通能力。区块链开发通常涉及多个领域的知识和技术,需要与其他开发者、设计师、产品经理等密切合作。良好的团队合作和沟通能力可以提高工作效率和质量,使得区块链项目更加成功。
关于《精通区块链开发技术(第2版)》
接下来给大家推荐一本关于入门区块链开发的书籍,这是一本想要入门区块链开发的开发者离不开的干货图书,一经上市就登上了当当"计算机与互联网"图书排行榜前列。本书从区块链技术概念到技术实践,助你在区块链开发领域取得成功!另外,关注本文博主,点赞+收藏本文,且在本文评论区评论"我要入门区块链开发",将选取三名幸运读者送出纸质版《精通区块链开发技术(第2版)》一本,截止时间:2024.02.24。入手《精通区块链开发技术(第2版)》传送门:《精通区块链开发技术(第2版)》([美]伊姆兰·巴希尔 著 王烈征 译)【简介_书评_在线阅读】 - 当当图书或者《精通区块链开发技术(第2版)》([美]伊姆兰·巴希尔)【摘要 书评 试读】- 京东图书,个人觉得这本书非常的不错,是一本不可多得的好书,值得拥有去学习。
编辑推荐
实施区块链技术可以带来诸多好处,这已引起学术界和行业研究人员的浓厚兴趣,他们正在持续不懈地研究该技术,并且涌现了许多相关的联盟、工作组、项目和专业机构,它们参与了该技术的开发和进一步发展的工作。
内容简介
《精通区块链开发技术(第2版)》详细阐述了与区块链开发技术相关的基本解决方案,主要包括区块链入门、去中心化、对称密码学、公钥密码学、比特币详解、比特币网络和支付、比特币客户端和API、山寨币、智能合约、以太坊、开发工具和框架、Web3详解、超级账本、替代区块链、区块链---代币之外的应用、可伸缩性和其他挑战、当前发展和未来展望等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
作者简介
伊姆兰·巴希尔(Imran Bashir)拥有伦敦大学皇家霍洛威学院信息安全专业的科学 硕士学位,并具有软件开发、解决方案架构、基础设施管理和IT服务管理的背景,他还是电气与电子工程师协会(IEEE)和英国计算机协会(BCS)的成员。
Imran在公共和金融领域拥有16年的工作经验。在进入金融服务行业之前,他曾在公共部门负责大型IT项目。在进入金融服务行业之后,他在欧洲金融之都---伦敦的不同 金融公司担任过各种技术职务。他目前在伦敦的一家投资银行工作,担任技术部副总裁的职务。
图书目录
第1章 区块链入门 1
1.1 区块链技术的发展 1
1.2 分布式系统 5
1.3 区块链和比特币的历史 7
1.3.1 电子现金 7
1.3.2 区块链 9
1.4 区块链定义和相关术语 9
1.4.1 点对点 9
1.4.2 分布式账本 10
1.4.3 加密安全 10
1.4.4 仅可追加 10
1.4.5 可通过共识更新 11
1.5 区块链的通用元素 14
1.5.1 区块链的工作原理 16
1.5.2 区块链累积区块的方式 16
1.5.3 区块链技术的优点和局限性 17
1.5.4 区块链技术的层次 18
1.5.5 区块链的特性 20
1.6 区块链的类型 22
1.6.1 分布式账本 23
1.6.2 分布式账本技术 23
1.6.3 公共区块链 23
1.6.4 私有区块链 24
1.6.5 半私有区块链 24
1.6.6 侧链 24
1.6.7 许可型账本 25
1.6.8 共享账本 25
1.6.9 完全私有和专有区块链 25
1.6.10 代币化区块链 25
1.6.11 无代币区块链 26
1.7 共识 26
1.7.1 共识机制 26
1.7.2 共识机制的类型 27
1.7.3 区块链中的共识 27
1.8 CAP定理和区块链 30
1.9 小结 31
第2章 去中心化 33
2.1 去中心化的意义 33
2.2 去中心化的方法 35
2.2.1 去中介 35
2.2.2 竞争驱动的去中心化 36
2.3 去中心化的途径 38
2.3.1 去中心化的思路 38
2.3.2 去中心化框架示例 39
2.4 生态系统的去中心化 39
2.4.1 存储 39
2.4.2 通信 40
2.4.3 计算能力和去中心化 41
2.5 智能合约 43
2.6 去中心化组织 43
2.6.1 去中心化自治组织 43
2.6.2 去中心化自治公司 44
2.6.3 去中心化自治社团 44
2.6.4 去中心化应用程序 45
2.7 去中心化应用程序 45
2.7.1 去中心化应用程序的要求 45
2.7.2 去中心化应用程序和移动App的区别 46
2.7.3 KYC链 46
2.7.4 OpenBazaar 46
2.7.5 Lazooz 47
2.8 去中心化的平台 47
2.8.1 以太坊 47
2.8.2 MaidSafe 48
2.8.3 Lisk 48
2.9 小结 48
第3章 对称密码学 49
3.1 使用OpenSSL命令行 49
3.2 密码学简介 50
3.3 密码学的数学基础 51
3.3.1 集合 51
3.3.2 群 51
3.3.3 域 51
3.3.4 有限域 52
3.3.5 阶 52
3.3.6 阿贝尔群 52
3.3.7 质数域 52
3.3.8 环 52
3.3.9 循环群 52
3.3.10 模运算 53
3.4 密码学模型 53
3.5 现代信息安全的基本要求 54
3.5.1 保密性 54
3.5.2 完整性 54
3.5.3 可认证性 54
3.5.4 不可否认性 56
3.5.5 可追责性 56
3.6 密码学原语 57
3.7 对称密码学介绍 58
3.7.1 流密码 58
3.7.2 分组密码 59
3.8 分组密码的加密模式 61
3.8.1 电子密码本 61
3.8.2 密码块链接 62
3.8.3 计数器模式 62
3.9 密钥流生成模式 63
3.9.1 消息认证模式 63
3.9.2 加密哈希模式 64
3.10 数据加密标准 64
3.10.1 高级加密标准 64
3.10.2 AES工作原理 65
3.11 小结 68
第4章 公钥密码学 69
4.1 非对称密码学 70
4.1.1 整数分解 72
4.1.2 离散对数 72
4.1.3 椭圆曲线 73
4.2 公钥和私钥 73
4.3 RSA算法原理 74
4.3.1 RSA算法步骤 74
4.3.2 使用RSA进行加密和解密 75
4.4 椭圆曲线密码学 75
4.4.1 ECC背后的数学 75
4.4.2 点加法 76
4.4.3 点加倍 78
4.5 ECC中的离散对数问题 80
4.6 在OpenSSL中使用RSA算法 82
4.6.1 RSA公钥和私钥对 82
4.6.2 加密与解密 85
4.7 在OpenSSL中使用ECC算法 86
4.7.1 查看ECC标准 86
4.7.2 生成私钥 87
4.8 哈希函数的属性 89
4.8.1 将任意消息压缩为固定长度的摘要 89
4.8.2 易于计算 89
4.8.3 原像抗性 90
书中前言/序言
本书的目标是介绍区块链技术的理论和实践两方面的内容。自本书第1版出版以来,区块链技术又出现了很多改变和进步,因此也就有了更新本书的需要。
实施区块链技术可以带来诸多好处,这已引起学术界和行业研究人员的浓厚兴趣,他们正在持续不懈地研究该技术,并且涌现了许多相关的联盟、工作组、项目和专业机构,它们参与了该技术的开发和进一步发展的工作。
本书第2版将对去中心化、智能合约以及以太坊、比特币和Hyperledger Fabric等各种区块链平台进行深入介绍。阅读完本书之后,读者将能够对区块链技术的内部运作有深入的了解,并能够开发区块链应用程序。
本书涵盖与区块链技术相关的所有主题,包括密码学、加密货币、比特币、以太坊以及用于区块链开发的各种其他平台和工具。如果读者对计算机科学有基本的了解,并具有基本的编程经验,那么将从本书中充分受益。
如果读者没有任何编程经验,也不妨碍轻松阅读本书,因为本书在必要时会提供相关的背景资料。
本书读者
本书适用于希望深入了解区块链的任何人,区块链应用程序的开发人员可以将其用作参考书。本书既可以用作与区块链技术和加密货币相关课程的教科书,也可以用作与加密货币和区块链技术相关的各种考试和认证的学习资料。
内容介绍
本书共包含19章,具体内容如下。
第1章"区块链入门"。详细阐释了区块链技术所基于的分布式计算的基本概念,讨论了区块链的历史、定义、相关术语、通用元素和类型等,并介绍了作为区块链技术核心的各种共识机制。
第2章"去中心化"。阐述了去中心化的概念及其与区块链技术的关系,介绍了可用于去中心化过程或系统去中心化的各种方法或平台。
第3章"对称密码学"。介绍了对称密码学的理论基础,这对于理解如何提供各种安全服务(如机密性和完整性)是必不可少的。
第4章"公钥密码学"。通过实际示例介绍了诸如RSA算法和ECC算法、公钥和私钥、数字签名和哈希函数之类的概念,介绍了金融市场和交易基础知识,因为在金融领域存在许多有趣的区块链技术用例。
第5章"比特币详解"。从定义、交易执行、区块链结构和挖矿等多方面介绍了比特币,这是个区块链,也是目前市值和交易活跃的区块链。此外,还详细介绍了与比特币加密货币有关的技术概念。
第6章"比特币网络和支付"。详细介绍了比特币网络、相关协议和各种比特币钱包。此外,还介绍了比特币改进提案、比特币交易和支付等。
第7章"比特币客户端和API"。介绍了可用于构建比特币应用程序的各种比特币客户端和编程API。
第8章"山寨币"。详细解释了山寨币的由来、工作量证明方案的替代方法、各种权益类型和难度目标重新调整算法等,并介绍了山寨币的开发和不同山寨币的示例。
第9章"智能合约"。对智能合约进行了深入的讨论,介绍了诸如智能合约的历史、智能合约的定义、李嘉图合约、Oracle,以及在区块链上部署智能合约等主题。
第10章"以太坊入门"。详细介绍了以太坊区块链的设计和架构,讨论了与以太坊区块链相关的各种技术概念,深入解释了该平台的基本原理、功能和组件。
第11章"深入了解以太坊"。阐述了更多与以太坊相关的内容,包括编程语言和操作码、区块和区块链、节点和矿工、钱包和客户端软件、API和工具、支持协议等。
第12章"以太坊开发环境"。讨论了与以太坊智能合约开发和编程有关的主题,包括建立一个私有网络和启动网络等。
第13章"开发工具和框架"。详细介绍了Solidity编程语言以及用于以太坊开发的各种相关工具和框架。
第14章"Web3详解"。介绍了使用以太坊区块链开发去中心化应用程序和智能合约,并对Web3 API进行了详细介绍,同时列举了多个实际示例。
第15章"超级账本"。讨论了来自Linux基金会的Hyperledger项目,包括Fabric、Sawtooth Lake和Corda等。
第16章"替代区块链"。介绍了各种替代区块链的解决方案和平台,提供了替代区块链和相关平台的技术细节和功能。
第17章"区块链---代币之外的应用"。对区块链技术在除加密货币以外的领域(包括物联网、政府治理、媒体和金融等)的应用进行了实用而详细的介绍。
第18章"可伸缩性和其他挑战"。讨论了区块链技术面临的挑战(主要包括可伸缩性、隐私保护和安全性),以及如何应对这些挑战。
第19章"当前发展和未来展望"。介绍了区块链技术的新兴趋势和挑战、区块链研究和项目、区块链开发工具等。此外,还介绍了对区块链技术未来发展的一些预测。
充分利用本书
? 本书中的所有示例均在Ubuntu 16.04.1 LTS(Xenial)和macOS 10.13.2版本上开发。因此,建议使用Ubuntu或任何其他类似UNIX的系统。当然,也可以使用任何其他操作系统(如Windows或Linux),只不过书中的示例(尤其是与安装相关的示例)就可能需要进行相应的更改。
? 本书使用OpenSSL 1.0.2g命令行工具开发了与加密相关的示例。
? 以太坊Solidity示例是使用Remix IDE开发的,其下载地址如下:
? 本书以太坊示例是使用以太坊拜占庭版本开发的,其下载地址如下:
? Vilros使用Raspberry Pi套件开发了与物联网相关的示例,但它也可以使用任何其他模型或工具套件。具体来说,Raspberry Pi 3 Model B 1.2版本可用于构建物联网的硬件示例。Node.js 8.9.3版本和npm 5.5.1版本已用于下载相关软件包并运行物联网示例的Node.js服务器。
? Truffle框架已用于智能合约部署的一些示例中,其下载地址如下:
通过npm提供的任何版本都应该是合适的。
下载示例代码文件
读者可以从www.packtpub.com下载本书的示例代码文件。具体步骤如下:
(2)在Search(搜索)框中输入本书名称Mastering Blockchain的一部分(不区分大小写,并且不必输入完全),即可看到本书出现在推荐下拉菜单中,如图P-1所示。
图P-1
(3)单击选择Mastering Blockchain-Second Edition(本书英译名称),在其详细信息页面中单击Download code files(下载代码文件)按钮,如图P-2所示。需要说明的是,读者需要登录此网站才能看到该下载按钮(注册账号是免费的)。
下载文件后,请确保使用下列软件的版本解压或析取文件夹中的内容:
? WinRAR/7-Zip(Windows系统)。
? Zipeg/iZip/UnRarX(Mac系统)。
图P-2
? 7-Zip/PeaZip(Linux系统)。
本书的代码包也已经在GitHub上托管,对应网址如下:
在该页面上,单击Code(代码)按钮,然后选择Download ZIP即可下载本书代码包,如图P-3所示。
如果代码有更新,则会在现有GitHub存储库上更新。
图P-3
下载彩色图像
我们还提供了一个PDF文件,其中包含本书中使用的屏幕截图/图表的彩色图像,可以通过以下地址下载:
http://www.packtpub.com/sites/default/files/downloads/MasteringBlockchainSecondEdition_ ColorImages.pdf
本书约定
本书中使用了许多文本约定。
(1)CodeInText:表示文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL和用户输入等。以下段落就是一个示例。
POST是HTTP支持的请求方法。有关POST的更多信息,请访问以下网址。
https://en.wikipedia.org/wiki/POST_(HTTP)
(2)有关代码块的设置如下所示:
pragma solidity ^0.4.0;
contract TestStruct {
struct Trade
{
uint tradeid;
uint quantity;
uint price;
string trader;
}
// 该结构可以按以下方式初始化和使用
Trade tStruct=Trade({tradeid:123,quantity:1,price:1,trader:"equinox"});
}
(3)当要强调代码块的特定部分时,相关行或项目以粗体显示:
pragma solidity ^0.4.0;
contract TestStruct {
struct Trade
{
uint tradeid;
uint quantity;
uint price;
string trader;
}
// 该结构可以按以下方式初始化和使用
Trade tStruct=Trade({tradeid:123,quantity:1,price:1,trader:"equinox"});
}
(4)任何命令行输入或输出都采用如下所示的粗体代码形式:
$ sudo apt-get install solc
(5)术语或重要单词采用中英文对照形式,在括号内保留其英文原文。示例如下:
该文件包含各种元素,重要的是应用程序二进制接口(Application Binary Interface,ABI),可以使用geth来查询它。通过Solidity编译器可生成该文件,也可以直接从Remix IDE合约详细信息中复制它。
(6)对于界面词汇则保留其英文原文,在后面使用括号添加其中文翻译。示例如下:
请注意,在上面的屏幕截图中,有许多字段,例如From(付款人的地址)、To(收款人的地址)、BTC(比特币)、GBP(英镑)和Fee(费用)。这些字段的意思不言而喻,但值得一提的是,Fee是根据交易规模的大小来计算的,而Fee Rate(费率)则是一个取决于网络中交易的数量的值。
(7)本书还使用了以下两个图标。
表示警告或重要的注意事项。
表示提示或小技巧。
《精通区块链开发技术(第2版)》全书速览
结束语
通过本文的分享讲解,想必大家对区块链开发技术有了更深的了解吧,尤其是《精通区块链开发技术》(第2版)是一本权威而实用的指南,适合希望深入了解和掌握区块链开发技术的读者,通过学习本书你将能够成为一名具有丰富经验和深入理解的区块链开发专家,为未来的区块链技术发展做出贡献。无论你是开发人员、研究人员还是企业决策者,本书都将成为你的不可或缺的参考资料。另外,精通区块链开发技术需要理解区块链的基本原理、具备扎实的编程基础和技能,同时还需要具备解决问题和创新的能力。只有通过不断学习和实践,参与到相关的社区和项目中,加强团队合作和沟通能力,才能真正掌握区块链开发技术,为区块链领域的发展做出贡献。