跳转至

前言

这本书有一个目标:提供区块链技术的理论和实践方面的全面介绍。这本书包含全面理解区块链技术所需的所有材料。阅读本书后,读者将能够深入了解区块链技术的内部工作原理,并能够开发区块链应用程序。这本书涵盖了与区块链技术相关的所有主题,包括密码学、加密货币、比特币、以太坊以及用于区块链开发的各种其他平台和工具。

建议读者对计算机科学有一个基本的了解,并有基本的编程经验,以便从本书中充分受益。然而,如果不是这样,这本书仍然可以很容易地阅读,因为在必要的地方提供了相关的背景材料。

这本书涵盖了什么

第 1 章区块链 101 ,介绍了区块链技术所基于的分布式计算的基本概念。它还涵盖了区块链的历史、定义、特性、类型和优势,以及作为区块链技术核心的共识机制。

第 2 章去中心化,涵盖去中心化的概念及其与区块链技术的关系。还引入了可用于分散过程或系统的各种方法和平台。

第三章密码学与技术基础,介绍了密码学的理论基础,这是全面理解区块链技术所必需的。包括了诸如公钥和私钥加密的概念,以及实际例子。最后,还包括对金融市场的介绍,因为区块链技术在金融领域有许多有趣的使用案例。

第四章比特币,涵盖了比特币,第一个也是最大的区块链。详细介绍了比特币加密货币相关的技术概念。

第五章另类币,介绍比特币发明后推出的另类加密货币。它还介绍了不同的替代硬币的例子,它们的属性,以及它们是如何被开发和实现的。第 6 章智能合约,提供了对智能合约的深入讨论。本章将介绍诸如历史、智能合约的定义、李嘉图合约、神谕以及智能合约的理论方面等主题。

第七章以太坊 101 ,详细介绍了区块链以太坊的设计和建筑。它涵盖了与以太坊区块链相关的各种技术概念,深入解释了该平台的基本原理、功能和组件。

第 8 章以太坊开发,提供了使用以太坊区块链开发分散式应用程序和智能合约的详细实用介绍。本章还介绍了 solidity 和不同的相关工具。

第 9 章Hyperledger ,介绍了一个关于 Linux 基金会 Hyperledger 项目的讨论,其中包括其成员介绍的不同区块链项目。

第十章备选区块链,介绍备选区块链解决方案和平台。它提供了替代区块链的技术细节和功能。

第十一章区块链——货币之外,对区块链技术在加密货币之外的领域的应用提供了实用而详细的介绍,包括物联网、政府、媒体和金融。

第 12 章可扩展性和其他挑战,专门讨论区块链技术所面临的挑战以及如何应对这些挑战。

第 13 章当前形势和下一步,旨在提供与区块链技术相关的当前形势、项目和研究成果的信息。此外,还根据区块链技术的现状进行了一些预测。

这本书你需要什么

本书中的所有例子都是在 LTS 的 Ubuntu 16.04.1 上开发的。因此,建议使用 Ubuntu。然而,任何适当的操作系统,无论是 Windows 还是 Linux,都可以使用,但是示例,尤其是那些与安装相关的示例,可能需要相应地进行更改。

使用 OpenSSL 1.0.2g 1 Mar 2016 命令行工具开发了与加密相关的示例。

以太坊实度的例子是使用浏览器实度开发的,可在 https://ethereum.github.io/browser-solidity/在线获得。以太坊的 homestead release 用于开发以太坊相关的例子。在撰写本文时,这是可用的最新版本,可从 https://www.ethereum.org/下载。

与物联网相关的示例是使用 Vilros 的 Raspberry Pi 套件开发的,但任何最新的模型或套件都可以使用。具体来说,已经用树莓 Pi 3 Model B V 1.2 搭建了一个物联网的硬件实例。Node.js V7.2.1 和 npm V3.10.10 已经用于下载相关包和运行 Node.js 服务器进行物联网示例。

Truffle 框架已经在一些智能合同部署的例子中使用,并且在http://truffleframework.com/提供。通过 npm 获得的任何最新版本都应该是合适的。

这本书是给谁的

这本书是为任何想深入了解区块链技术的人准备的。它也可以作为为区块链开发应用程序的开发人员的参考。此外,本书还可以作为区块链技术和加密货币相关课程的教材。它还可以用作与加密货币和区块链技术相关的各种考试和认证的学习资源。

习俗

在这本书里,你会发现许多区分不同种类信息的文本样式。下面是这些风格的一些例子和它们的含义的解释。

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、伪 URL、用户输入和 Twitter 句柄如下所示:

"这行代码简单地使用 console.log 通过调用web3.eth.coinbase方法来打印 coinbase . "

代码块设置如下:

function difference(uint x) returns (uint y)
{ 
    z=x-5;
    y=z;
}

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

function difference(uint x) returns (uint y) 
{  
    z=x-5;
    y=z;
}

任何命令行输入或输出都按如下方式编写:

``` $ geth --datadir .ethereum/PrivateNet/ --networkid 786 --rpc --rpccorsdomain 'http://192.168.0.17:9900'

```新术语重要词汇以粗体显示。你在屏幕上看到的单词,例如在菜单或对话框中看到的,会出现在文本中,如下所示:“点击下一个**按钮,进入下一个屏幕。”

注意

警告或重要提示出现在这样的框中。

Tip

提示和技巧是这样出现的。

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢什么。读者的反馈对我们来说很重要,因为它有助于我们开发出真正让你受益匪浅的图书。要给我们发送总体反馈,只需发送电子邮件feedback@packtpub.com,并在邮件主题中提及书名。如果有一个你擅长的主题,并且你有兴趣写一本书或者为一本书投稿,请在www.packtpub.com/authors查看我们的作者指南。

客户支持

既然您已经是 Packt book 的骄傲拥有者,我们有许多东西可以帮助您从购买中获得最大收益。

下载示例代码

你可以从你在http://www.packtpub.com的账户下载本书的示例代码文件。如果你在其他地方购买了这本书,你可以访问 http://www.packtpub.com/support 的并注册,让文件直接通过电子邮件发送给你。

您可以按照以下步骤下载代码文件:

  1. 使用您的电子邮件地址和密码登录或注册我们的网站。
  2. 将鼠标指针悬停在顶部的支持选项卡上。
  3. 点击代码下载&勘误表
  4. 搜索框中输入书名。
  5. 选择您要下载代码文件的书。
  6. 从下拉菜单中选择您购买这本书的地方。
  7. 点击代码下载

下载文件后,请确保使用最新版本的解压缩或解压文件夹:

  • WinRAR / 7-Zip for Windows
  • zipeg/izp/un ARX for MAC
  • 用于 Linux 的 7-Zip / PeaZip

这本书的代码包也在 https://github.com/PacktPublishing/Mastering-Blockchain 的 GitHub 上。我们在 https://github.com/PacktPublishing/.也有丰富的书籍和视频目录中的其他代码包,请查看!

下载这本书的彩色图片

我们还为您提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。彩色图像将帮助您更好地理解输出中的变化。你可以从https://www . packtpub . com/sites/default/files/downloads/mastering block chain _ color images . pdf下载这个文件。

勘误表

尽管我们已尽一切努力确保内容的准确性,但错误还是会发生。如果您在我们的某本书中发现了一个错误——可能是文本或代码中的错误——如果您能向我们报告,我们将不胜感激。这样做,你可以让其他读者免受挫折,并帮助我们改进本书的后续版本。如果您发现任何勘误表,请通过访问http://www.packtpub.com/submit-errata,选择您的图书,点击勘误表提交表链接,并输入您的勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,该勘误表将被上传到我们的网站或添加到该标题的勘误表部分下的任何现有勘误表列表中。

要查看之前提交的勘误表,请前往https://www.packtpub.com/books/content/support并在搜索栏中输入图书名称。所需信息将出现在勘误表部分。

盗版

互联网上版权材料的盗版是所有媒体都存在的问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上发现我们作品的任何形式的非法拷贝,请立即向我们提供地址或网站名称,以便我们采取补救措施。

请通过copyright@packtpub.com联系我们,并提供可疑盗版材料的链接。

我们感谢您帮助保护我们的作者,以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有问题,可以通过questions@packtpub.com联系我们,我们将尽最大努力解决问题。


我们一直在努力

apachecn/AiLearning

【布客】中文翻译组