跳转至

前言

区块链技术是一种分布式账本,在金融、政府和媒体等行业都有应用。这条学习路径是你使用以太坊、JavaScript 和 Solidity 构建区块链网络的指南。您将从了解区块链技术的技术基础开始,包括分布式系统、密码术以及这种数字账本如何保持数据安全。在本章的后面,您将深入了解如何使用以太坊和 Hyperledger 开发应用程序。随着您在以太安全、采矿、智能合同和可靠性方面知识的积累,您将学习如何创建健壮、安全的应用程序,这些应用程序完全按照编程运行,不受欺诈、审查或第三方干扰的影响。在最后几章中,除了在货币中的应用,您还将探索如何在物联网应用等应用中实施区块链解决方案。这本书还将强调如何提高区块链的可伸缩性,甚至讨论这种迷人而强大的技术的未来范围。学习结束时,您将具备解决区块链生命周期中遇到的棘手问题所需的技能,并自信地设计和部署分散式应用程序。

此学习路径包括以下 Packt 产品的内容:

  • 掌握区块链-第二版
  • Narayan Prusty 构建区块链项目

这本书是给谁的

此学习路径是为那些希望使用 Hyperledger 从头开始构建分散式应用程序和智能合同的区块链开发人员设计的。对任何编程语言的基本熟悉将有助于开始学习本课程

这本书涵盖的内容

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

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

第三章,了解以太坊的工作原理,解释以太坊的工作原理。

第 4 章“智能合约”对智能合约进行了深入的讨论。本章将介绍诸如历史、智能合约的定义、李嘉图合约、神谕以及智能合约的理论方面等主题。

第五章,对称密码学,介绍对称密码学的理论基础,对于理解机密性、完整性等各种安全服务是如何提供的是必要的。

第六章,公钥密码学,结合实际例子介绍公私钥、数字签名、哈希函数等概念。最后,还包括对金融市场的介绍,因为区块链技术在金融领域有许多有趣的使用案例。

第 7 章《web 3 . js 入门》介绍 web3js 以及如何导入连接 geth。它还解释了如何在 Node.js 或客户端 JavaScript 中使用它。

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

第 9 章,构建钱包服务,解释了如何构建一个钱包服务,用户可以使用它轻松地创建和管理以太坊钱包,即使是离线。我们将专门使用 LightWallet 库来实现这一点。

第十章另类币,介绍比特币发明后推出的另类加密货币。它还介绍了不同的替代硬币的例子,它们的属性,以及它们是如何被开发和实现的。

第 11 章,开发工具和框架,提供了 Solidity 编程语言和用于以太坊开发的不同相关工具和框架的详细实用介绍。

第 12 章,构建一个博彩 App,解释了如何使用 Oraclize 从以太坊智能合约发出 HTTP 请求,以访问来自万维网的数据。我们还将学习如何访问存储在 IPFS 的文件,使用字符串库处理字符串,等等。

第 13 章“Hyperledger”讨论了 Linux 基金会的 Hyperledger 项目,包括其成员介绍的不同的区块链项目。

第 14 章“另类区块链”介绍了另类区块链解决方案和平台。它提供了替代区块链和相关平台的技术细节和功能。

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

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

第十七章,构建区块链财团,将讨论区块链财团。

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

从这本书中获得最大收益

您需要 Windows 7 SP1+,8,10 或 Mac OS X 10.8+,本书中的示例是在 Ubuntu 16.04.1 LTS (Xenial) 和 Mac OS 版本 10.13.2 上开发的。因此,建议使用 Ubuntu 或任何其他类似 Unix 的系统。然而,任何适当的操作系统,无论是 Windows 还是 Linux,都可以使用,但是示例,尤其是那些与安装相关的示例,可能需要相应地进行更改。

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

Ethereum Solidity 示例是使用 Remix IDE 开发的,可在 https:/ / remix 上在线获得。以太坊。(同 organic)有机

以太坊拜占庭发布是用来开发以太坊相关的例子。在撰写本文时,这是可用的最新版本,可以从 https:/ / www。以太坊。org/。

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

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

下载示例代码文件

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

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

  1. www.packt.com登录或注册。
  2. 选择支持选项卡。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入图书名称,然后按照屏幕指示进行操作。

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

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

该书的代码包也托管在 GitHub 的 https://GitHub . com/TrainingByPackt/Advanced-block chain-Development 上。如果代码有更新,它将在现有的 GitHub 库中更新。

我们在也有丰富的书籍和视频目录中的其他代码包。看看他们!

下载这本书的彩色图片

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

使用的惯例

本书通篇使用了许多文本约定。

CodeInText:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、伪 URL、用户输入和 Twitter 句柄。下面是一个例子:“input()方法用于从用户那里获取输入。”

代码块设置如下:

pragma solidity ^0.4.0;
contract TestStruct {
  struct Trade
  {
    uint tradeid;
    uint quantity;
    uint price;
    string trader;
  }
  //This struct can be initialized and used as below
  Trade tStruct = Trade({tradeid:123, quantity:1, price:1,
trader:"equinox"});
}

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

$ sudo apt-get install solc

Bold :表示一个新术语、一个重要单词或您在屏幕上看到的单词。例如,菜单或对话框中的单词出现在文本中,如下所示。下面是一个例子:“如果你需要一些不同的东西,点击标题中的下载链接,所有可能的下载:”

警告或重要提示如下所示。

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

取得联系

我们随时欢迎读者的反馈。

总体反馈:如果您对这本书的任何方面有疑问,请在邮件主题中提及书名,并在customercare@packtpub.com发送电子邮件给我们。

勘误表:虽然我们已经尽力确保内容的准确性,但错误还是会发生。如果你在这本书里发现了一个错误,请告诉我们,我们将不胜感激。请访问 www.packt.com/submit-errata,选择您的图书,点击勘误表提交表格链接,并输入详细信息。

盗版:如果您在互联网上遇到我们作品的任何形式的非法拷贝,如果您能提供我们的地址或网站名称,我们将不胜感激。请通过copyright@packt.com联系我们,并提供材料链接。

如果你有兴趣成为一名作家:如果有你擅长的主题,并且你有兴趣写书或投稿,请访问 authors.packtpub.com。

复习

请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?潜在的读者可以看到并使用您不带偏见的意见来做出购买决定,我们 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们的书的反馈。谢谢大家!

更多关于 Packt 的信息,请访问packt.com


我们一直在努力

apachecn/AiLearning

【布客】中文翻译组