WPS 首页 > 未分类

最新的中文wps下载地方在哪里

2025年03月11日

  原文:

  译者:飞龙

  协议:CC BY-NC-SA 4.0

  以太坊是构建区块链应用程序最常用的平台之一。它是一个去中心化的应用平台,可以完全按照程序设计运行,而不受欺诈、审查或第三方干扰的影响。

  这本书将帮助您深入了解区块链的工作原理,以便您可以发现整个生态系统、核心组件和实现。您将首先学习如何配置和使用各种以太坊协议来开发 dApps。接下来,您将学习如何使用 Solidity 和 Vyper 编写并创建可扩展的强大智能合约。然后,您将探索 dApps 架构的构建块,并通过多个现实世界的例子了解创建自己的 dApp 的见解。本书甚至将解释如何按照所需的最佳实践和技术在多个以太坊实例上部署您的应用程序。接下来的几章将深入探讨构建高级智能合约和使用以太坊构建多页面前端的高级主题。您还将学习如何实现机器学习技术来构建去中心化自治应用程序,以及跨各种领域(如社交媒体和电子商务)的多种用例。

  在本书结束时,您将拥有足够的专业知识,可以自信地构建去中心化自治应用程序。

  这本书适用于任何想要构建快速、高度安全和可交易的去中心化应用程序的人。如果您是一名以太坊开发者,希望完善您在构建强大的区块链应用程序方面的现有技能,那么这本书适合您。了解以太坊和区块链的基本知识是理解本书涵盖概念的必要条件。

  第一章,区块链架构,涵盖了在开始之前必须了解的基本区块链知识,以确保我们理解本书中将要使用的要求。我们将从一开始就涵盖以太坊的历史,最终涉及更复杂的开发主题。

  第二章,以太坊生态系统,向我们展示了区块链的基础设施和设置。我们将深入分析区块链的工作原理,以便了解整个生态系统。我们还将学习有关以太坊组件及其各种实现的信息。

  第三章,以太坊资产,向我们展示了在开发其中的应用程序之前如何配置和使用以太坊协议的各种实现。有几种不同的版本,可以在开发、测试和部署中互换使用。稍后,我们将研究修改后的 Ghost 实现、计算和图灵完备性,以更好地理解以太坊的工作流程。了解并使用以太坊生态系统中的工具和服务也非常重要。

  第四章,精通智能合约,教导我们超越普通用例的高级智能合约。它是有用的,因为它将帮助我们理解改进我们的 Solidity 和 Vyper 编码技能的高级技术、方法和工具,从而创建可扩展的强大智能合约。

  第五章,精通 dApps,向你介绍了去中心化应用程序(dApp)架构及其构建模块。然后,我们将逐步从头开始创建一个 dApp,从空白应用程序到编写智能合约、创建加密钱包并对其进行单元测试。我们将向您展示如何为这些应用程序创建专门的 UI。我们还将向您展示如何使用其他测试服务,例如 Truffle,来构建无缝的 dApps。然后,我们将向您展示如何在多个以太坊实例上部署您的应用程序,例如 testrpc、私有链、测试链和主网络。

  第六章,工具、框架、组件和服务,向我们介绍了几种重要的工具,供以太坊开发人员创建功能强大的 dApps 和智能合约,这些智能合约能够扩展并且足够安全,能够为数百万潜在用户提供服务。

  第七章,在测试网络上部署,向我们展示了如何在测试网络上部署我们的区块链应用。以太坊区块链应用可以部署在 Rinkeby-testnet 上。测试网络提供了测试汇集,开发人员可以在其中测试所有智能合约和 dApps 的行为。Gas 计算和其他因素可以在测试网络上进行测试。

  第八章,各种 dApps 集成,向前迈进,并向您展示如何使用工作流创建更高效的 dApps,这将帮助我们更快速、更安全地开发代码。我们将了解与去中心化 web 应用程序开发相关的所有方面,包括使用 React 进行 web 客户端代码编写;使用 Node.js、Solidity 或 Vyper 进行后端代码编写;以及使用 web3.js 进行 dApp 通信。

  第九章,去中心化交易所工作流,向你展示了如何通过轻松易懂的语言理解这些复杂系统的复杂性,从而创建复杂的去中心化交易所(DAXs)的章节,详细涵盖了每个部分。

  第十章,以太坊区块链上的机器学习,利用区块链中的智能合约自动验证解决方案,因此不会有关于解决方案是否正确的争论。提交解决方案的用户不会有对手方风险,即他们不会因为工作而没有得到报酬。合约可以由任何具有数据集的人轻松创建,甚至可以通过软件代理程序以编程方式创建。

  第十一章,创建基于区块链的社交媒体平台,详细介绍了创建一个坚实的去中心化社交媒体平台所需的步骤,该平台使用 Swarm 进行资源的分布式存储,比如视频,并利用区块链的无信任特性来保证每个个体的隐私。

  第十二章,创建基于区块链的电子商务市场,介绍了搭建一个用于购买、出售、租赁和交换商品的去中心化市场所需的步骤,类似于 OpenBazaar。我们将构建一个以可扩展性为重点的独特市场。

  第十三章,创建去中心化银行和借贷平台,创建了一个使用以太坊管理和存储加密货币的去中心化银行。我们将使用冷存储以增加安全性,并设置具有抵押违约保护的借贷系统。这是一个在线章节,可以在以下链接找到:。

  您需要对区块链和以太坊有基本了解。

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

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

  登录或注册www.packt.com。

  选择“支持”标签。

  点击“代码下载和勘误”。

  在搜索框中输入书名,并按照屏幕上的指示操作。

  下载文件后,请务必使用最新版本的软件解压或提取文件夹:

  Windows 可使用 WinRAR/7-Zip

  Mac 可使用 Zipeg/iZip/UnRarX

  Linux 可使用 7-Zip/PeaZip

  本书的代码包也托管在 GitHub 上,链接为****。如果代码有更新,将在现有的 GitHub 存储库上进行更新。

  我们还有其他代码包,来自我们丰富的图书和视频目录,可在****上找到。去看看吧!

  我们还提供一本 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图片。您可以在这里下载:。

  本书中使用了许多文本约定。

  :表示文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟网址、用户输入和 Twitter 用户名。以下是一个示例:“他们使用一个名为的库,它允许您使用高级、清晰的界面与转发器进行交互,使用起来非常棒。”

  代码块设置如下:

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

  任何命令行输入或输出都以以下形式编写:

  粗体:表示一个新术语、一个重要词或屏幕上看到的词。例如,菜单中的字词或对话框中的字词会在文本中显示为这样。以下是一个示例:“转到 Droplets 部分,然后单击创建 Droplet。”

  警告或重要说明会显示为这样。

  贴士和技巧显示为这样。

  在本节中,您将深入了解如何更好地编写智能合约和 dApp,并审查假设以改善代码背后的心理。

  以下章节包括在本节中:

  第一章,区块链架构

  第二章,以太坊生态系统

  第三章,以太坊资产

  当wps的电脑版的下载入口在哪里涉及理解区块链的内部工作时,区块链架构涵盖了基本原理。能够在使用不同领域的以太坊的不同项目上工作是至关重要的,因为一旦你对一切是如何协同工作有了扎实的了解,你的思维就会开始以不同的方式看待事物。当你使用区块链并为其编程时,你将会对区块链中发生的事情有一个高层次的概览。一旦你阅读了本章,这个复杂生态系统的移动部分将变得非常清晰,因为你将会对智能合约的工作原理和它们与底层结构的关系有一个高层次的概览。

  在本章中,我们将涵盖以下主题:

  超越以太坊

  EEA

  理解以太坊区块链

  智能合约工作原理的高层概览

  重要的智能合约编程

  你可能已经了解了以太坊是什么,但为了确保我们在同一个页面上,重要的是你对以太坊的真实本质有一些背景知识,以便在进一步学习时不会分散太多注意力。

  以太坊首先是一个区块链。以太坊是一项在许多计算机上运行的技术,它向其消费者提供了一个保证,即他们信任的是一个可靠的系统,该系统将按预期工作。

  “以太坊是世界计算机。”

  -维塔利克·布特林

  要了解更多关于核心以太坊理念的内容,请查看他们的官方网站:。

  连接在世界各地的数千台计算机形成的网络被称为节点,它们允许其他人获取他们所需的信息,同时信任代码以实现去中心化的互联网。

  为什么去中心化对互联网如此重要?因为我们已经到了一个时候,少数几家大公司控制着你和我可以生产或消费的信息。

  政府有太多的权力,以至于他们正在失控地制定他们的规则。他们偏向于有利于他们和他们的统治者的事物。这是可以理解的——每当某个实体处于食物链的顶端时,迟早他们会控制位于它下面的整个系统。

  以太坊的目标是创建一个抗审查和开放的平台,使人们能够信任智能合约,这些合约强制执行的规则不能被第三方实体控制。

  当你发布一个智能合约时,你有 100%的保证,即代码将在任何时候运行,除非它的规则规定了其他情况。

  以太坊在 Vitalik Buterin 的 2013 年白皮书中进行了描述,可以在此处找到:。他谈到了需要一种脚本语言,可以在比特币之上运行,因为他参与了比特币杂志,并且他了解比特币区块链的限制。

  他看到了创造一个运行在去中心化技术上的平台的机会,以创建新类型的应用程序。

  不多的人相信他的愿景,所以他决定自己和一个小团队创建一个全新的区块链,他们看到了 Vitalik 的想法的潜力。他成立了以太坊瑞士集团,并决定在 2014 年 7 月举行一次首次代币发行(ICO),在那里他以以太币换取比特币,共筹集了约 1800 万美元。

  他创建了智能合约技术,基本上是无需信任实体执行的程序。它们始终可用,并且无故障运行。

  以太坊提供了一个允许人们在区块链上创建自己应用程序的系统,这是它成功的原因。在以太坊之前,没有一种简单的方法在去中心化平台上创建去中心化应用程序(dApps)。比特币有一个使用操作码的协议,使用一种名为 Script 的编程语言创建简单的应用程序,但它的能力有限,因为它是非常低级的,并且受到区块大小的限制。

  以太坊的发展计划分为四个不同阶段,每个阶段都有重大变化:

  Frontier

  Homestead

  大都会

  宁静

  它被用来在需要时交付和研究创新解决方案,并通过硬分叉实现了不向后兼容的功能。2015 年,Frontier 作为以太坊的第一个版本推出。一年后,推出了 Homestead,其中包括许多改进,使以太坊成为一个功能强大、能够处理智能合约的系统。

  在以太坊之上进行的最大的 ICO 之一是去中心化自治组织 ICO,也被称为DAO,它筹集了来自 11000 多人的 1.5 亿美元。问题在于,它被一个未知的个人组织攻击了,他们将资金转移到了另一个 DAO。有趣的是,一个名为白帽子组织的程序员团队看到了这次黑客攻击正在发生,并尽可能多地将资金转移到了一个名为白帽子 DAO的独立去中心化组织中,他们在那里存放着人们的资金以供以后分配。

  这一事件引发了社区内的激烈争论,导致以太坊分为两个派别,一些人认为以太坊必须是不可变的,不应该被修改,而另一些人则认为应该进行硬分叉以恢复所造成的损失。

  那就是以太坊经典和我们所知的以太坊的开端。以太坊经典的用户群明显较小,但它保留了他们认为区块链必不可少的初始不可变性理念。 2017 年 3 月,几家公司联合努力创建了目前超过 500 名成员的非营利组织以太坊企业联盟(EEA),其目标如下:

  “创建基于开源和标准的区块链规范。”

  -以太坊企业联盟

  换句话说,他们创建了一个合作解决未来区块链技术的人群,以使其更好、更快和更有能力。

  它遭受了几次黑客攻击,数百万美元被盗。他们不得不进行硬分叉来拯救人们的资金,并且价格的波动性非常大,但未来看起来光明,随着需求的增长而不断改进。

  EEA (entethalliance.org)是由以太坊核心团队开发的最令人振奋的项目之一,因为他们打算帮助来自世界各地的公司从去中心化技术中受益。通过了解这个项目,当您成为 EEA 专家时,您将处于良好的位置。

  在本节中,我们将介绍以下主题:

  EEA 的愿景

  EEA 的会员资格

  EEA 架构

  Vitalik 资助了组织,因为他收到了来自高管的巨大需求,希望创建可以在大公司中使用来处理要求严格的 dApps 的软件。这些公司现在希望建立以太坊的私有版本,以满足其研发需求。

  这个倡议的有趣之处在于,他们与数百家公司合作研究和开发解决方案,并将其共享。例如,如果 EEA 的公司成员为更好、更快的 dApps 创建了新的实施协议,他们将与其他成员分享,以便他们也能从这一最尖端的研究中受益,同时共同发展以太坊生态系统。

  EEA 在较长期内设想实现的四个重要公共目标如下:

  成为一个开源标准,而不是产品:

  他们只与可以公开分享给任何人而没有限制的开源代码合作,以便传播可能有助于改进他们的区块链产品的开发进展。你看,他们是一个非营利组织,希望通过结合许多对私有区块链解决方案感兴趣的公司的努力,推动区块链(我们知道的)进一步发展。

  解决企业开发需求:

  EEA 帮助公司免费整合其他人发现的新创新,以便享受最新需求的好处。

  在公共和私有以太坊之间分享改进建议:

  他们希望通过从公共区块链获取改进来改善他们正在构建的东西,以便在保持一个伟大的产品的同时更快地发展。

  利用现有标准:

  当涉及到区块链技术时,还有很多需要研究和发现的地方。许多关于可伸缩性、安全性和透明度的问题正在研究中,因为这种去中心化的结构对现代计算来说是新的。因此,想法是借鉴现有标准,例如权益证明(PoS),以便比其他人更快地提升。

  本质上,他们试图满足许多公司对私有企业和快速区块链为其个人应用提出的要求。最新中文版的wps

  有趣的是,任何公司都可以通过在他们的网站上填写一个表格免费加入 EEA 成为该团体的成员,每年需支付一定费用。这种开放性有助于许多个人跟上以太坊区块链的新改进。

  这是成为会员的年度费用的分解:

  不到 50 名员工:每年 3000 美元

  51 到 500 名员工:每年 10000 美元

  501 到 5000 名员工:每年 15000 美元

  5000 名以上的员工:每年 25000 美元

  非营利组织每年只需支付 3000 美元,无论公司规模如何。通过加入联盟,你可以享受一系列普通好处,比如参与讨论、投票、开源代码、见面会,以及在你的网站上展示 EEA 徽标所带来的声望。作为一家大型区块链公司,成为成员只为了在你的网站上展示 EEA 徽标所带来的声誉是有道理的。

  好处取决于你所在公司的类型,你可以在下一节中看到它们:

  Class A 成员是联盟关联公司的董事,他们在做决定时有优先权,并且可以享受所有的好处。

  Class B 成员是拥有一家普通公司的人,因此他们会获得标准好处而没有独家权利。

  Class C 成员是负责 EEA 研究中的法律挑战的律师和法律公司。

  Class D 成员是非营利组织和学术机构。他们以最低价格获得基本好处,但没有投票权。

  EEA 拥有大约 500 家公司的强大联盟,其中包括英特尔、微软和摩根大通等巨头。如果你经营一家体量不小的公司,你可能会有兴趣成为 EEA 的成员,因为这意味着你将成为企业区块链革命的一部分。

  使用 EEA 工具构建的企业级应用具有非常有趣的结构,建立在现有以太坊结构之上。他们开发了企业以太坊架构堆栈(EEAS),这是一个设计,指定了这种新类型的以太坊区块链应如何在私有环境中运作,具有专为隐私设计的功能。致力于以太坊企业项目的团队详细说明了这种私有区块链的功能,而不考虑其下层技术,如软件代码、API 和通信协议。EEA 的意图是专注于创建他们规范中描述的内容,以便人们可以为其公司享受私有区块链。

  包括以下独家于企业以太坊区块链的创新解决方案:

  硬件安全模块(HSM):这是一种安全存储数字密钥的物理计算设备,例如您的私人加密货币密钥,具有最大的安全功能。例如,Ledger 和 Trezor 是也被称为 HSM 的硬件钱包,因为它们为您的区块链私钥提供了物理设备的安全性。

  权限和认证:这对于以更加结构化的方式为用户赋予特定角色并限制对某些区域的访问非常有用。

  企业管理系统:这用于帮助公司控制其私有区块链的内部工作。

  预言机:这对于与构建在企业私有区块链之上的自定义智能合约进行通信的外部服务非常有帮助。它们是与外部世界交换关键信息的必要手段。

  关于隐私和扩展性,我们知道许多不同的团队正在努力创建独特的解决方案,这些解决方案可能会使整个社区受益。然而,我们知道,最初,区块链将使用两个主要系统来扩展现有 dApps 的容量:

  与可信执行的离链交易:诸如 plasma 和状态通道等协议正在开发中,以利用可以由用户的计算机本地执行的离链交易,从而减少主区块链的计算负载。

  私密交易:使用零知识证明、环签名和许多其他著名协议来保证与公共区块链交换的数据的隐私的交易。这是公司需求的一个重要方面,因为它们拥有不能公开共享的私有数据和内部流程。我们无法知道他们将选择哪种解决方案,所以这取决于他们自己的决定。他们还将实现私有代码执行,使公司能够在安全环境中执行某些智能合约交易,用户将看到一个编码的哈希。

  EEA 正在现有核心区块链之上构建三个额外的元素:

  链上私有状态:这是一个单独的存储区,用于存储智能合约的私有状态。它将为我们,开发人员,提供真正的私有变量和存储函数,我们将能够使用这些函数来保持信息安全,不被公众所见。这对企业级 dApp 非常强大。

  可信执行:这些系统将提供可信执行环境,在此环境中,代码将被执行,而不会干扰公共流程。

  私有共识:公司将能够使用自己的私有区块链为其自身系统达成协议,类似于我们可以在第三章的去中心化自治组织部分看到的投票系统。以太坊资产。

  最后,区块链网络层将受益于企业 P2P,该层将用于在公司设置的更小的节点网络中交换交易,以便它们享受更快的处理速度和确认时间带来的好处。企业区块链将能够与其他网络进行交互,包括公共区块链,以交换信息。

  以太坊区块链是一个由几个重要组件组成的复杂系统,这些组件共同工作,形成一个令人印象深刻的平台,每个人都可以用来创建不可阻止的应用程序。您将学习区块链内部工作的复杂性,以更深入地了解它的构造方式。

  在最基本的层面上,以太坊区块链是一组连接的块,其中包含许多节点共享的信息,以便保持不可改变的数据结构,永久保存信息。任何区块链的目标都是保留信息,而不可能更改或删除它,以避免外部实体的审查或操纵。

  因此,以太坊区块链通过实施几种众所周知的工具,借助比特币和先前的研究创建了运行在这些区块之上的程序,从而建立在该概念基础上。

  要了解以太坊区块链的内部工作原理,我们必须了解构成区块链的每个组件。首先,我将为您概述区块链作为一组节点,然后我们将逐个从金字塔形成的较高到较低级别的每个组件进行介绍。

  以太坊是一个去中心化平台,这意味着两个或多个节点以协调的方式共同实现用户视为单个操作的共同结果。节点根据其决定扮演的角色执行各种类型的功能。它可以使用挖矿软件提出和验证交易以达成共识,同时使用工作量证明(PoW)协议来保护区块链,或者是一个轻量级节点,执行支付验证和许多其他可以使用有限资源完成的任务。

  以太坊区块链基于比特币,因为由中本聪创建的系统是一个非常强大的去中心化解决方案。实际上,它使用一种系统来执行分散代码,使用能够在数十万台计算机网络上安全处理基本指令的操作码。它们必须简单以确保安全性优先。

  尽管两个区块链在其系统上相当相似,但它们有明显的区别,例如以下内容:

  比特币和以太坊都使用 PoW 来生成区块,而以太坊打算在未来将 PoS 作为块生成系统,以避免浪费计算能力。

  以太坊使用 Ethash 算法,而比特币使用 SHA256 来处理交易和生成区块。

  以太坊的区块时间约为 15 秒,比比特币快大约 100 倍。这使人们获得更好的确认时间。

  以太坊区块链是去中心化和分布式的,这意味着连接的节点在不同位置独立地彼此有几个关系,同时在不同位置运行相同的软件。这对于保证区块链不可阻止的特性非常重要。这里解释了每个术语的含义:

  去中心化网络:这是一个没有单一控制点的计算机网络,没有任何实体控制整个系统,每个节点都以点对点(P2P)的方式直接连接到其他节点。如果区块链不是去中心化的,某个政府或实体可能会找到主控节点并立即停止整个系统。

  分布式网络:这是一个网络,许多不同的计算机在不同的位置运行相同的软件。如果区块链不是分布式的,某个实体可能会到所有节点所在的地方,并停止整个操作,因为它们都在同一个地方,因此没有一个是安全的免受这样的攻击。

  您可以看到以下图表,说明这些类型的技术如何连接节点,以便它们可以以完全安全的方式进行通信,因为在试图理解分布式和去中心化系统之间的区别时,这通常是一个令人困惑的点:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  这些特征使得以太坊网络有能力不必依赖任何人即可运行,因为成千上万的节点能够在受保护且独立的方式之间相互通信。请注意,以太坊是完全开放的区块链,这意味着任何人都可以自由加入并参与其中的决策,比如区块创建和交易处理。它允许人们以参与者的身份加入节点网络,而不需要任何要求,因为整个结构都由密码安全算法保护。

  节点可以共同工作,也可以通过执行意外代码而变得恶意。那些表现出任意行为的被称为拜占庭节点。主要目标是创建一个系统,即使在最坏的情况下节点也能合作,在那里它们存在容错保护以避免破坏整个结构。但是如果做出区块链的节点可以因为是拜占庭节点而随机行事,它们怎么能一起工作呢?

  最终,这是一组计算机志愿地朝着同一个目标工作。没有什么能阻止它们执行意外的动作。这正是区块链面临的最有趣的问题之一。有几种解决方案,但仍在进行研究,以在分散式系统中在性能和安全性之间获得完美平衡。

  CAP 理论最初由 Eric Brewer 在 1998 年提出,指出任何分布式系统不能同时具有这三个属性之一:

  一致性:这是节点网络在同一时间保持一致的区块链数据副本的能力。

  可用性:这意味着连接节点的系统在线并且始终可用,同时可以在需要时响应所有用户的请求,而无故障。

  分区容忍性:如果整个网络中的一组节点因任何原因停止工作或失去连接,系统不应受影响,应该继续正常工作,就好像什么都没有发生一样。

  已经证明分布式或分散式系统不能同时具有这三个属性,这很有趣,因为以太坊,就像比特币一样,在看似同时实现了所有这些属性。事实上,一致性并不是与分区容忍性和可用性同时实现的,而是在稍后的时间实现的。你看,为了在这样多样化的计算机中有秩序,我们只能希望在区块链以已建立的速度增长时随着时间达到相同的数据水平。这就是称为最终一致性的概念,其中的目标是通过随时间验证多个节点来实现。因此,在比特币和以太坊中引入了挖矿的概念,以 PoW 协议达成共识。

  最终,以太坊计划转向 PoS,其核心思想是,节点或用户维持一定数量的以太或任何类型的有价值的投资,并使得任何恶意活动的负面后果都超过攻击网络的好处。

  例如,如果我想成为矿工以换取一些以太币作为我的时间和资源,我必须在运行 PoS 协议的智能合约中锁定 100 个以太币。 如果我决定验证无效的区块或交易,而某人通过多个安全机制注意到我的恶意行为,我将失去所有这 100 个以太币,并且无法再次发动攻击。 成功处理一个块的奖励将是投入的资源的一部分,例如 0.1 ETH。 这迫使节点合作并负责行事,以避免失去大笔赌注,即使他们同意攻击系统。

  或者,委托权益证明(DPoS)可以在以太坊的后续版本中使用。 它涉及通过投票将交易的验证委托给其他节点。 它在 BitShares 区块链中使用。

  以太坊虚拟机(EVM)是一台虚拟机,允许执行带有有关燃气成本和价格的限制的代码,每个与之交互的个体都必须支付费用以保护网络免受垃圾邮件攻击,以便许多去中心化节点可以使用相同的软件进行交互。 它处理使用汇编代码生成的字节码,汇编代码又使用称为操作码的指令(opcodes)。 这是一台图灵完备的计算机。

  当我说图灵完备时,我的意思是在以太坊上运行的智能合约编程语言具有以下特性:

  它们可以无限访问随机存取内存(RAM)

  它们可以根据内存中的可用信息做出决策

  它们可以在、和循环的帮助下永久运行

  它们可以使用函数

  这意味着智能合约能够执行您给予它们的任何操作,只要有足够的时间和资源。 这一点很重要,以避免有人说以太坊是图灵完备的区块链时产生混淆。

  状态机是一种机制,用于跟踪区块链上发生的状态更改。 例如,一个正常的一天有两种简单状态,要么白天要么晚上。 状态机将记录每天的情况,以便当太阳下山时,白天的状态变为晚上。 这与一周中的日子一样。 每天可以是七种不同的状态之一,例如星期一或星期五。 每当在午夜时分发生变化时,跟踪一周中日期的状态将在状态机中更新。

  状态机强制执行共识规则,以确保用户在拜占庭抗攻击系统中处理有效的交易:

  P2P 网络:它连接参与者并传播已验证交易的事务和区块。这是区块链节点用来在它们之间传播信息以达成共识的网络。

  激励计划:在以太坊的情况下,该计划是 PoW,用于创建经济安全的状态机。以太坊开发人员计划转向 PoS 系统,其中用户将使用基于矿工在那一刻锁定的 ETH 数量的被动交易验证系统来处理交易。

  开源客户端:这个客户端是节点用来与区块链交互的客户端。在以太坊中,我们有 Geth、Parity 和许多其他客户端,允许您连接到区块链进行挖矿和处理交易以及下载区块链后执行各种任务。

  您可以通过下载 Geth 客户端并运行 来下载区块链的轻量版,它只会跟踪每个区块的参考编号,以限制区块链的下载大小,因为它可能达到几百吉字节。轻客户端的目的是使以太坊区块链适用于具有有限存储和计算能力的低规格计算机。

  区块链运行在一个 P2P 网络之上,其中节点相互连接以交换数据和状态更新。由于这项技术,我们能够直接与其他计算机交互,以便处理订单,以便我们都同意区块生成系统。它允许矿工完成 PoW 挑战并获得奖励。

  当我们谈到共识时,我们指的是在拥有许多参与者的系统中使用的一组技术,以便让所有参与者就有利于整个基础系统的决策达成一致。虽然投票赋予了少数满足一系列要求的特定个体决策权,但共识考虑了每一个参与者,以达成全局思维的一致。

  实现任何形式的区块链技术共识的每个算法必须提供以下功能:

  达成有利于整个系统的决策:这个想法是做出不仅有利于个人,而且有利于整个网络的选择,以便每个人都有一个更好的平台。

  允许开放参与:每个人都应该完全自由地加入并做出他们认为会是积极的决定。

  足够安全,以至于恶意行为者无法损害系统:所有共识协议都必须朝着系统的改进方向,其中恶意用户无法有足够的权力为其他人做出决定。

  达成共识的问题始于所谓的拜占庭将军问题,这个问题在于许多计算机不容易达成预定顺序的一致性。一些计算机会迟收到指令,其他一些会因为不能从中受益而忽略它,而其他一些会尽量按照指令执行。

  本质上,共识规则是必须实现全球认可的全球状态的,同时也是为了以有益的方式参与决策过程而获得奖励。

  这是一种保证任务的结果很难完成的方法。为什么我们希望使处理任务变难?为了奖励那些最擅长完成它的人。在区块链中,处理来自使用网络的个人的交易需要处理能力,即硬件,能量和时间。它被用来以简单的过程生成区块:

  挖矿者提出一个包含最近区块头和 nonce 计数器的哈希数字的新区块。

  然后,挖矿者将哈希与由挖矿难度确定的目标值进行比较。

  如果哈希达到目标难度,用户将通过获得 ETH 来获得解决方案的奖励。如果没有,nonce 将被递增,直到生成具有期望解决方案的哈希。

  由于挖矿者将与许多其他人竞争,所以必须有一个系统来确保区块时间的一致性,因为我们希望即使新节点加入挖矿网络,也能保持以相同周期生成区块。为了保证相似的区块时间,挖矿难度被创建了。

  PoS 是一种新的算法,用于在去中心化区块链中节点之间达成共识,重点是在保持网络免受攻击和恶意行为的同时,消除 PoW 对高计算性能的要求。它的工作方式是基于锁定 Ether 作为押注,并验证可能失去押注的区块,如果你行为不端。以下是该过程:

  想参与 PoS 过程的人被称为验证者。他们首先将一定数量的代币锁定为他们的押注(例如,100 个 Ether),在他们挖矿时不能触及。这应该足够昂贵,可以确保一群人不会同意以攻击系统的方式冒险,如果他们不成功会失去他们的押注。

  然后,他们开始接收使用以太坊区块链的交易。验证者运行程序来验证他们收到的交易是否有效,以便可以按顺序将交易分组创建新的区块。当他们有足够的交易来覆盖每个区块的 gas 限制时,他们将对这些区块下注 - 例如,从最初押注的 100 Ether 中押注 20 Ether。

  下注最多的区块被选为赢家。

  当从生成的区块池中选择获胜区块时,对该有效区块进行押注的矿工将根据他们的押注比例获得该区块使用的总 gas 的一部分。他们不是以区块奖励的形式获得报酬,而是以交易费的形式。例如,如果所选区块有 100 笔交易,累积了总共 0.5 以太币的交易费用,那么这 0.5 以太币将必须在所有押注该区块的验证者之间分配。如果该区块从 10 个用户处获得了总共 1,000 以太币的押注,而你押注了 20 以太币,那么你将获得 0.5 以太币的 2%,因为这是你为该区块押注的金额。总体上,你将获得 0.01 以太币。

  在为区块进行押注时,你不会损失任何资金,它只是一个指示器,表明你对该区块的有效性有多少信任。考虑到没有区块奖励,只有费用,这可能看起来是一个小奖励,但你必须考虑到这些区块是在几秒钟内生成的。甚至可能每秒一个区块,这最终会在一天内产生大量的利润。

  从理论上看,这听起来很好,但有一个主要障碍阻止了 PoS 完全可行。它被称为 无所谓的押注(Nothing at Stake) 问题,并在以下场景中展示,在该场景中,存在一个主链和一个使用 PoS 创建的新链:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  当涉及到 PoW 时,你可以在任何你想要的分叉上进行挖矿而不会有任何风险,因为你可以对每个看起来不错的区块进行押注。什么阻止你决定把所有的蛋放在一个新链上,从而生成一个硬分叉呢?

  如果我们使用 PoW,你就不能轻易转移到一个新链上,因为你必须花费大量的处理能力和时间生成新的区块,只要人们决定接受它作为一个新的区块链。你将在很多个月内进行挖矿,但很难创建一个能够被接受为一种新币的新链,因为它的使用减少了,价值更低了。

  但是使用 PoS,你可以简单地对所有看起来吸引人的区块进行分散投资,并且没有后果,因为只要你验证的是好的交易,你不会损失你的股份。你将在几个不同的区块链上生成区块而没有风险。这种可能性可能会导致创建数百个不同的区块链,因为人们可以同时在所有这些区块链上进行挖矿。这就是为什么被称为 无所谓的押注(Nothing at Stake) 问题,因为当参与挖矿过程时,你不会失去任何东西。

  这是以太坊近期无法完全转向 PoS 的主要原因之一。

  以太坊的研究人员一直在努力解决这个问题。其中之一被称为Casper的提案旨在通过惩罚那些无意义地在新链上挖矿的用户,从而将他们的股份收回,以便用户集中于对最长链进行投丨注。Casper 还惩罚不积极参与网络的节点,以免它们在不提供价值的情况下开始消耗资源。

  归根结底,PoW 必须改进或完全改变才能变得可持续,因为许多大型矿池开始获得过多的权力。我们现在处于这样一个阶段,四家矿业公司可以获得约 60%的总交易力量,使它们有权进行 51%攻击,并强迫所有用户按照它们自己的条款和自己的腐败区块链挖矿。 PoS 将会长期存在,并再次带来平衡。

  智能合约是区块链应用,可以执行代码并执行各种不同的任务。这些是矿工在挖矿时执行的程序。它们是安全且不可阻挡的协议,会自动执行和强制执行。您可能已经对它们很熟悉,因为本书面向以太坊开发人员;然而,如果您不知道如何使用它们,或者想更多了解它们,可以放心,因为您将在适当的时候得到详细的解释,从而全面理解一切。

  与传统的纸质合同不同,以太坊的智能合约在现实世界中没有法律后果,并且在它们违反时无法被法律实体强制执行。相反,它们依赖于代码即法律的原则,这意味着代码是规范合约行为的唯一依据。您不能执行未在智能合约中定义的功能,并且必须遵守每个功能的要求。

  有趣的是,智能合约允许创建不可阻挡的应用程序,这些应用程序将在区块链的顶部保持数据和功能运行,而不管底层网络界面是否不可用或因某种原因被审查。智能合约为一种新类型的应用程序打开了世界,您可以部署并忘记,知道它将在任何情况下运行。

  关于代码是否可以作为法律合同在法庭上受到认可存在着持续的争论。一方认为智能合约必须进一步发展,并在法律上加以执行,以获得更广泛的应用视角,而另一方则认为代码即法律足以保证协议的安全性和执行。

  智能合约是在软件层的区块链顶部运行的程序。它们允许开发人员创建去中心化的无信任程序,具有管理个体之间交易的特定功能。它们不依赖于集中式服务器,而是在去中心化应用程序中充当数据库和服务器。

  从本质上讲,智能合约在其容量上必须受到限制,因为我们正在执行的代码将永久地作为区块链上的一笔交易,这意味着您执行的每个函数都会在区块链上注册,而没有撤消已完成的操作的选项。这就施加了一些自然的限制,因为您不能只是修改每个以太坊节点都必须下载的公共数据库而不受任何限制。每次更改都必须由网络的所有节点下载。

  它们的目的是解决许多公司在处理投票、银行业务以及人们在不公开他们对你的数据和金钱做了什么的情况下所面临的信任问题。它们还提供了可访问性,因为任何有互联网连接的人都能够访问它们并检索存储在内部的数据。

  然而,智能合约在其所能做的事情上受到限制。对于许多情况来说,它们并不是一个很好的解决方案,比如以下情况:

  需要一个能够以快速速度处理信息的高效后端的应用程序,比如创建用户和与应用程序交互。它们天生就慢,因为它们依赖于以太坊的区块时间,并且它们无法在实时情况下工作。

  存储大量数据的应用程序在数据库上。智能合约的工作原理类似于数据库,因为它们允许任何人在区块链上存储特定信息,但它们受限且成本高昂。

  Gas 是另一个很重要的概念,适当地理解它至关重要。它的创建是因为智能合约是图灵完备的,这意味着它们可以执行无限循环的或,直到完成任务。开发者可能会创建永远停留在相同状态的无限循环。为了避免成千上万的节点被困在处理一笔交易而没有限制的情况,每笔交易都有一个取决于执行它所需的处理能力的 gas 成本。

  因此,他们创建了一个系统,你在使用区块链进行每一项操作时都需要付费。你可以在区块链上存储信息,但你将不得不支付重要的成本,因为使用它的每一个单节点都将不得不下载你的更改。它计算 gas 成本的方式很简单:

  你支付了你愿意为你的交易花费的最大 gas。

  您的本地以太坊节点通过检查用于生成所需计算能力的操作码来计算执行您的交易将花费多少。您知道,使用区块链的每个小操作都可以被测量,因为我们使用一种告诉我们何时正在使用这台超级计算机以及如何使用的一种汇编语言。

  使用了正确数量的 gas,并且剩余的部分会退还给您。

  您还需要确定一个从 1 到通常 100 或更高范围的燃气价格,以告诉矿工首先处理哪些交易,因为每个燃气越昂贵,他们就可以得到更多报酬。

  智能合约类似于在以太坊区块链上运行的服务器端 Web 应用程序。然而,部署智能合约的过程却大不相同。要成为一名专业的以太坊开发者,你必须理解智能合约代码是如何在区块链块中处理和存储的,以便你能够使用它们,因为这将让你了解在推送你新编写的智能合约代码时可能出现问题的原因和方法。

  在尝试部署代码到区块链时收到错误并不罕见,所以要成功调试它,你需要理解底层发生了什么。

  要了解智能合约如何部署到网络上,首先要了解交易的工作原理是很重要的,因为当你部署一个智能合约时,你实际上是生成了一个带有你刚刚构建的应用程序的字节码的交易。

  在以太坊上组成交易的消息由以下编码组件组成:

  收件人:这是将接收交易的以太坊地址。

  价值:这表示要转移到收件人地址的以太量。这个值可以是零,并且你可以在 Solidity 中使用全局 变量来访问它。该值始终以以太为单位,是以太坊中的最小单位。

  数据:这是一个十六进制的字节码字符串,主要用于调用具有所需参数的特定函数。这是你需要智能合约执行的具体信息。当智能合约彼此通信时,它们需要一种方式来告诉何时以给定的一组变量执行特定函数。由于这个数据参数,我们可以在交易处理时编码我们想要在合约中调用的函数。另一方面,当智能合约首次部署到区块链时,数据参数包含了智能合约转换为字节码的内容,以便机器能够理解它。总的来说,它包含了智能合约函数将由矿工在下一个区块中执行的信息。

  燃气限额:这代表了燃气限额,即你愿意为处理你的函数交易支付多少燃气。燃气限额以 wei 表示,给矿工尽可能多的燃气来处理你的代码是强制性的。

  燃气价格:燃气价格决定了你提供的每个燃气的成本。如果你的燃气成本为 1,你将支付每个燃气 1 wei。如果是 20,你将支付每 1 个燃气 20 wei。它用于帮助矿工处理交易,因为他们将部分通过交易费用获得奖励。

  Nonce:Nonce 是一个用于标识交易的唯一计数器号码。这个唯一计数器用于标识每个区块,并帮助矿工识别无效区块,因为 Nonce 必须始终比上一个区块的数字大一个数。

  签名:这是由三个独立变量组成的参数,称为v、r和s。这些变量用于使用你的唯一以太坊地址数据签署交易,以便人们可以确认你是创建者。

  当用户向智能合约发出交易时,称为消息而不是交易。交易和消息之间的区别存在,因为消息没有签名数据,因为它们不需要被对方签名。Nonce 是必需的,以防止重放攻击,其中外部用户可以获取相同的交易数据并为自己的利益再次执行它。

  当你部署一个智能合约时,实际上你是向地址发送一个交易,带有一个特殊的字节码标识符,以便矿工理解你正在创建一个新的智能合约。在这种情况下,数据参数包含所有智能合约逻辑,包括函数名称和参数。

  总之,创建和使用智能合约是一个透明的过程,你告诉矿工处理你的数据。然后他们将理解其背后的字节码,并使用所需的参数对区块链进行必要的更改。

  在了解了智能合约是如何创建的以及它们如何融入区块链系统后,你现在将更加实际地了解如何使用两种最流行的语言——Solidity和Vyper来创建智能合约。

  Solidity 是为在以太坊网络上开发智能合约而创建的最先进的编程语言。它的语法类似于 JavaScript,但具有静态类型的变量和函数。它提供了简单的功能,如函数、循环和几种类型的变量,以及复杂的功能,如汇编、加密函数和签名验证系统。

  它已经在许多项目中被使用,特别是 ICO,在取得了巨大成功,因此足够成熟,可以被任何对开发去中心化应用程序和安全智能合约感兴趣的开发者使用。

  其主要缺点是它更难以保护,因为它提供了更完整的功能集,这可能导致安全问题,如果不经过审核。

  我们将在本书的所有示例中使用 Solidity 的 0.5.0 版本。Solidity 中的智能合约始终从文件中使用的版本开始,以确保合约与可能因新增功能而破坏合约的新版本不兼容。

  让我们通过以下步骤来看一下 Solidity 合约的结构:

  你在文件开始使用语句来定义版本:

  然后你可以开始编写你的合同。Solidity 中的所有语句必须以分号()结尾才能有效。在文件中定义了使用的版本后,你必须创建合同,就像这样:

  你可以在一个文件中定义多个合同:

  在合同内,你将拥有状态变量,函数,修改器和一个构造函数。稍后我会详细解释它们的用法:

  直接在合同中定义的变量,即在函数之外定义的变量,被称为状态变量。这些都是特殊的变量,即使在执行合同之后也会保留它们的值。把它们想象成特殊的永久性变量,你可以随时读取和修改它们:

  正如你所看到的,它们位于函数之外但是在合同之内,并且它们是在文件顶部定义的,就在合同开始的地方。正如我所说,它们永远保持它们的值,即使在修改合同之后也是如此。所以,如果你的的值为,你可以在修改它之后的几天或几个月后读取该变量的值,只要你不修改它。

  它们直接存储在区块链存储中,而不是在内存中。如你稍后所学,内存变量会在合同执行后失去值并被重置。

  最后,Solidity 文件使用扩展名,例如,。你将学习如何使用Remix IDE和部署它们,在*,和,*中。

  Solidity 是一种静态类型的语言,这意味着你必须为你创建的每个变量定义类型。

  让我们先定义这种编程语言中可用的变量类型,以便后来理解如何使用它们,但在此之前,你需要了解变量的可见性。

  Solidity 中的每个变量和函数都有特定的可见性。可见性是你在变量类型后使用的关键字,用来定义谁可以访问它:

  公共:这意味着该变量可以被任何合同读取或写入,包括外部合同,只要有一个函数来更新它们。

  私有:私有变量无法被派生的智能合同访问,那些用关键字实现你的合同的智能合同;例如,,其中是一个带有私有变量的智能合同,无法被访问。

  外部:这些变量和函数不能被包含它们的合同访问。只有外部合同和用户可以使用它们。

  内部:这些是无法被外部实体读取或写入的变量和函数,只能被合同本身或继承的合同访问,就像你在私有变量的例子中看到的那样。

  为了保持简单,我建议你对变量始终写上,除非它是一个特殊的变量,这种情况并不经常发生。如果你不定义任何可见性,变量默认是,虽然最好每个变量都写上关键字,以确保你理解变量的可见性,并且这不是一个错误。

  Uints 是无符号整数,意味着它们是从零开始的数字,不能为负数。

  你定义它们如下:

  如你所见,你首先定义变量的类型,然后是可见性,然后是变量的名称。请记住,如果你不定义变量的可见性,变量将是。

  Uints 可以是以下类型之一:

  每个变量的数字表示的大小。一个类型的变量能够存储最多 256。因此,变量的最大值是。如果你想存储数字 255,变量将正常工作,但是,如果你想存储数字如下,那么变量将溢出,并且会重置为零而不是,因为它超出了该类型变量的容量:

  当你尝试存储一个值时,变量会重置,因为它从零开始,所以容量是计算出来的数字减去一。

  当你尝试存储另一个超过变量容量的数字时,比如,变量的值将会是。所以,输入以下内容:

  它将变成以下内容:

  请注意,你不能给变量赋一个超过其容量的值,因为在某些情况下,尝试部署你的合约时会得到编译错误。当函数接收到一个,但用户输入的值大于 255 时,就会出现溢出问题。

  这与是一样的,它的最大值是65536-1。同样,的最大值是16777216-1。变量的最大值是4294967296-1。变量的最大值是1844674407370955e19-1wps无障碍下载的网址哪里有。变量的最大值是3402823669209385e38-1。变量的最大值是1157920892373163e77-1。

  正如你所看到的,最大数字增长得相当快。这对于处理大数字时避免溢出非常有用。

  另一方面,你还会遇到欠流的问题。当你尝试将一个负数存储到中时,就会发生这种情况。例如,尝试执行以下操作:

  你会得到以下结果:

  这是因为溢出的原因发生的。你从零开始,一直加到变量能够容纳的最大值。

  这些问题可能导致严重的漏洞。这就是为什么重要的是检查用户在函数中输入的值是否在可接受数字范围内。稍后你将看到如何使用一个名为的全局函数来验证函数的输入。

  在 Solidity 中,只有一种地址类型。现在,我们有两种类型来定义以太坊地址是否应该是的。

  一个地址包含每个以太坊用户的账号编号。它是一个由个十六进制文本字符组成的文本,例如这样一个:

  要在您的合同中创建一个变量,您必须定义如下:

  地址没有引号,因为它们不是文本字符串。在这个版本的 Solidity 中,你必须定义地址的类型,它可以是以下之一:

  地址 : 可支付地址是在 Solidity 中引入的一种新的变量类型,允许该地址接收和存储以太币。以前,所有地址都是,现在只有那些明确标记为的地址才能接收或发送以太币,并且使用处理以太币的函数,如或。

  地址: 一个普通地址,无法接收或发送以太币,以防止用户这样做。

  您可以将地址定义如下:

  当您想要向该地址发送以太币时,拥有地址将非常有用。例如,假设用户 A 想从智能合约存储的余额中收到个以太币。他们将执行以下操作:

  因此,用户 A 将从存储在此智能合约中的资金中收到个以太币。

  地址的另一个重要方面是,有时您需要访问当前智能合约的地址,因为,正如您所知,智能合约可以在内部持有以太币。

  要获取您的智能合约地址,请使用以下代码:

  在这里,是一个特殊关键词,用于引用当前正在使用的活动智能合约。但因为它是智能合约的一个实例,您需要使用类型转换函数将该实例转换为地址,该函数本质上是获取本智能合约的地址。

  您还可以使用函数访问此智能合约的余额,如下所示:

  这将返回智能合约中的 wei 数量,可用于使用函数进行转账:

  这将向发送存储在此合约中的所有以太币。

  您可以将地址转换为普通地址,但反之则不行,基于地址是具有额外函数的增强版本,无法轻松传递。

  字符串和字节以单引号或双引号形式存储文本片段,如下所示:

  它们允许您存储大约个字,并且它们本质上是相同的。您可以有更小的字节变体,比如,和,一直到。

  现在,是一种有趣的变量类型,因为它允许你以非常紧凑和高效的方式存储约 32 个字符的文本。它们在需要短文本的许多情况下使用:

  它们在许多其他高级用例中使用,例如检查字符串或字节的文本是否为空。例如,如果你有一个接收文本的函数,你可能希望确保文本不为空。你可以这样做:

  不要担心函数的技术细节。如果你还不知道或记不住它们,要检查字符串是否为空,你必须执行以下操作:

  这告诉合约确保字符串的第一个字母不为空。这是检查空字符串的正确方法。我们对字节执行相同的操作,但不进行字节转换。

  在以太坊字符串中添加特殊字符时使用它们。

  如果你熟悉 JavaScript,你可以将结构想象成具有属性和值的对象。看起来类似于以下内容:

  枚举是具有唯一名称的固定大小列表,由你定义。你可以将它们用作特定对象的自定义修饰符,或者在智能合约中保持特定状态。这对于控制 ICO 的状态非常理想。

  你声明它们如下:

  然后,你创建变量:

  注意,在声明的末尾不必添加分号,但是对于刚创建的具有类型的变量,你必须添加分号。

  布尔变量可以是或:

  数组允许你将大量相同类型的变量存储在一个地方。它们被用作包含特定类型信息的列表,以便在智能合约中有序存储数据。你可以通过简单的循环获取它们的长度来访问它们。最新官方中文wps下载的网站是多少

  你可以创建 uints、strings、structs、addresses 等几乎任何其他类型的数组:

  你也可以使用以下关键字从数组中删除元素:

  你也可以使用和向动态大小数组中添加或删除元素。

  映射是一种特殊类型的变量,它们可以容纳无限量的数据。它就像数组和结构的组合。你可以为一组类型添加元素:

  映射将信息存储为无限数组。它们的工作方式类似于 JavaScript 中的对象,其中每个键都有一个关联的值,并且它们可以被随机访问。它们没有固定长度,也不能像数组那样获取它们的长度来循环它们的值。你必须做的是保存映射的最新更新键,然后从那里开始。

  你可以如下设置映射的值:

  在我们的例子中,的所有值都将是,直到你将它们设置为。

  在 Solidity 中,您可以选择定义变量存储的位置。您可以决定将它们存储在以下位置:

  存储:这是在区块链上写入的永久位置,因此使用起来很昂贵

  内存:这是一个非永久的地方,变量只在智能合约运行的时间内保存。

  调用数据:这是对象数据信息存储的地方,一个专门的全局变量

  这种例子在以下代码中可以看到:

  事件是一种特殊类型的函数。它们的目的是在区块链上记录数据和您希望在以后检索的操作。它们可以订阅以在产生新事件时接收更新,几乎是实时的。

  本质上,您希望它们保留智能合约内部发生的事情的注册表,以便以后分析它们以修复错误,并了解如果需要以轻松的方式阅读过去发生了什么。

  以下是如何在 Solidity 智能合约中声明事件的方式:

  在这个例子中,您可以看到如何声明和发出一个事件。当您声明事件时,您必须决定它能够接收的参数;它们始终是可选的,因此您可以省略它们。

  当您在函数内部发出事件时,必须确保它们是正确的类型。在声明中,您可以为每个参数添加名称,或者只留下类型,如下所示:

  好的做法是在事件内部命名参数,以帮助他人理解每个参数的目的。

  您还可以添加一个名为的可选关键字。它是事件参数的修饰符,允许您搜索过去的事件以获得特定事件。将参数视为数据库中可搜索的条目:

  请注意,您必须为的参数命名。稍后您将看到如何使用 web3.js 检索这些事件并搜索特定事件。

  修饰符是一种特殊类型的函数,用于在当前函数执行之前验证数据或执行某些操作作为中间件。它们主要用于验证执行函数的用户是否具有所需权限,并验证参数:

  正如您所见,修饰符用于检查函数是由合同所有者执行还是由其他用户执行。如果调用者是所有者,则函数被执行,如果是外部地址,则合同将恢复,抛出异常。

  请注意,函数是一个全局断言函数,用于验证其中的条件是否为真。如果条件不为真,它将抛出异常,停止执行智能合约。

  修饰符内部的下划线语句用于指示函数的代码将在哪里执行。有时,你希望在修饰符的检查之前执行函数。在修饰符中,下划线语句是强制性的。此外,请注意,修饰符可以选择性地具有参数。如果不需要参数,你可以将括号删除如下所示:

  修饰符是非常强大的工具,当你看到重复的代码为多个函数执行相同的验证时,你经常会使用它们。

  在下一节中,你将看到函数可以采用的用于可见性和支付的特殊修饰符的类型。

  Solidity 中的函数在语法上与 JavaScript 中的函数非常相似,但它们具有一些您必须了解的关键区别,例如您必须指定返回类型、函数的可见性以及适用于每个特定函数的修饰符(如果有的话)。语法如下:

  函数与变量一样具有可见性,其中公共函数可以被外部用户、合约以及合约本身执行。外部函数只能由外部实体执行,而不是由合约本身执行。内部函数只能由包含合约执行。私有函数只能在当前合约内部执行,或由继承合约执行。

  现在,一个函数可以具有确定其类型的特殊修饰符。这包括以下修饰符:

  视图:视图函数是一种不修改状态变量但可以读取它们的函数。请记住,状态变量在合约开始处声明,并且它们用于直接在区块链上存储信息。因此,如果你的函数不修改任何状态变量,你必须将其标记为。

  纯函数:纯函数更为严格。它适用于那些甚至不读取状态变量的函数。纯函数通常是在函数内部进行某种类型的计算而无需依赖外部数据的函数。这通常包括数学函数或格式化函数。

  可支付函数:函数在执行时能够接收以太币。它会将以太币存储在合约内部,因此非常重要的是你要创建系统来提取发送到智能合约的以太币,否则这笔钱将永远被困在里面。如果你的函数没有标记为,当你在函数执行过程中发送以太币时,你会收到一个错误并且交易会回滚。

  如下是其外观:

  在那个函数中,我们只是读取并返回状态变量,因此我们可以将其标记为。请注意,对于字符串类型,我们必须使用关键字,因为它们在内部是一种数组类型,就像一个个单独的字符数组一样。

  另一个示例如下:

  这个函数只是将两个数字相加并将结果返回给调用者。它不修改状态,也不读取状态变量。

  这是一个函数:

  函数是空的,因为我们只需要接收以太币。我们不必对其做任何处理。

  这是一种没有名称的特殊类型的函数。每当有人使用或函数发送以太币到此合约地址时,它都会被执行,类似于默认函数。它经常在 ICO 中用于接收以太币并返回收到的以太币的指定数量的代币。这允许任何人购买代币,而无需理解和部署合约实例,只需合约的地址。

  它看起来是这样的:

  回退函数必须标记为,以帮助人们理解不应该错误地在此合约内执行它。如果你不添加修饰符,它将拒绝所有发送以太币的交易。

  我建议你应该使用 IDE 编写并尝试不同的函数,它将向你显示必须验证的错误和通知。这样,你就能安全地编写自己的合约。

  Vyper 是一种新的智能合约编程语言,其语法类似于 Python。它是由维塔利克亲自创建的,对于新的去中心化应用来说,它是最有趣的选择之一,因为它提供了一种与传统 Solidity 智能合约不同的方法。

  它的目标是成为一种简单的编程语言,具有基于简单性的增强安全性,代码应该易于理解,即使对于非开发人员也是如此。这就是为什么语法如此简约的原因。他们还希望它成为一种编程语言,越来越难编写出有缺陷或易受攻击的代码,以便开发人员不必花费无数小时分析每个应用程序的安全性,同时默认避免意外的漏洞。

  这就是 Vyper 添加了几个有趣功能的主要原因,例如以下内容:

  每次函数调用将花费多少 gas 的了解:精确指示气体成本是重要的,因为您希望用户能够准确计算每笔交易将投入多少以太币。它既节省了人们的钱,又使程序可预测。

  自动漏洞检查:溢出、下溢、重入攻击和许多其他众所周知的漏洞在 Vyper 中自动修复,无需手动注意每个智能合约函数。

  另一方面,他们移除了其他智能合约编程语言(如 Solidity)中的重要特征:

  不再使用修饰符: 在 Vyper 中不允许使用修饰符,因为它们使代码难以阅读,你必须来回跳转到修饰符定义和使用之间。此外,它们可能被恶意使用,通过意外执行代码;例如,创建一个名为 的修饰符,但随后执行与其名称预期完全不相关的 函数。

  不再使用汇编: 汇编代码很难理解,即使对经验丰富的开发人员来说也是如此,因为你正在处理非常低级的函数,可能会产生误导。这意味着你将无法创建使用签名、状态通道等依赖于汇编的智能合约。

  不再使用递归函数: 为了避免重入攻击并确保精确计算气体成本,他们移除了函数可以调用自身不确定次数的递归功能。

  一般来说,Vyper 是一种功能强大的语言,非常适合较小的项目,并且不需要高级功能,例如汇编。你可以快速创建易于维护的智能合约,用户将在几分钟内就能理解其轻量级语法和简约的代码。

  为了快速掌握这种新的令人兴奋的语言,我们将通过一个简单的智能合约来进行,这样你就可以看到 Vyper 的完整复杂性。我们将在一个单一的智能合约中看到所有类型的变量和函数。

  接着创建一个新的 文件。正如你所见,Vyper 智能合约的后缀是 。在其中,输入以下代码;我们稍后会解释每个变量的含义以及它们如何使用。这只是一个快速的练习,让你的编程手熟悉 Vyper 的编写方式。这段代码将成为你熟悉 Vyper 语法的指南:

  这些是一些澄清,帮助你理解正在发生的事情:

  事件必须在 Vyper 文件的顶部声明,并且它们必须放在大括号内,就像这样:。

  无符号整数只能是正数,它们的最大值是 2**256。你不能有 或等效的;所有的 uint 必须是 。

  有符号整数、普通整数,可以是正数或负数,最大值是从两边各 2**128。它们只能是 ,所以你不能有更小的大小。

  小数点的精度为 10 位小数,这意味着你可以在小数点后有最多 10 个字符,例如,。

  字符串可以是 或带有自定义大小的 数组,例如 。注意,你没有 类型的变量,因此上传后你的字符串将被存储为十六进制文本。此外,你不能有可变大小的字节,例如 ,因为它们在计算气体成本时会产生不确定性。

  映射必须使用 函数声明,并且它们可以用方括号访问,例如,。

  是用于事件的固定日期,例如您的生日,或者将来的特定时间。这主要用作日期容器。更像是一个没有在日历中具体日期的计数器。例如,可以存储,而时间戳可以存储,都以数字格式表示。

  wei 值是用于以太币在 wei 中存储的类型。

  自定义单位类型是您在文件顶部定义的个性化类型,然后可以用于您的变量。它们必须转换为 uints、ints 或 decimals。

  函数可以是公共的或私有的。公共函数必须在顶部加上装饰器。函数的返回值用箭头符号指定。

  支付函数必须使用装饰器,并且可以访问与一起发送的以太币(如果有)。

  要在函数内更新状态变量,您必须在它们前面使用关键字将它们更新为状态变量。在 Vyper 中,您不需要在参数名称前面添加下划线,因为您可以轻松地引用与状态中相同名称的变量,而在 Solidity 中您不能这样做,因此您必须使用下划线来区分它们。

  构造函数称为,而回退函数称为。

  就是这样!您可以在几页中掌握 Vyper 的最快方式。确保您将这个指南放在一个特殊的地方,以便在编写 Vyper 合约时节省数小时的头痛和不舒服的时刻。

  在本章中,我们首先对以太坊的历史进行了高层次的概述,以了解它的起源和发展方向。然后,我们转向特定主题,如 EEA,因为了解以太坊技术如何应用于不同的实际场景非常重要。之后,我们涵盖了许多关于以太坊区块链的具体主题,以更深入地理解作为开发人员有意义的技术层面,因为我们将处理与其区块链相关的所有方面。接下来,我们转向关于智能合约的更多技术主题,因为它们是以太坊开发人员所做的核心内容,以便您清楚地了解它们在整个计划中是如何实现的。最后,我们转向使用 Solidity 和 Vyper 进行基本智能合约编程,以启动您对这些最受欢迎的语言在现实世界中的使用方式的理解,为开始您的成为一名优秀以太坊开发人员的旅程奠定坚实的基础。

  如果您不熟悉 Vyper,现在应该能够使用在线编译器编写简单的合约了,该编译器位于:。确保您自己练习本章中描述的函数,并在您对所解释的概念有直观的理解后继续阅读。

  在接下来的章节中,我们将深入探讨以太坊架构,以深刻理解每个组件在基本层面上的工作方式,以及区块链技术背后的主要推动力。

  在本章中,我们将涵盖区块链的几个重要方面。例如,除了其他有趣的话题之外,我们将研究使有组织的、去中心化的计算机网络成为可能的技术发明,并探索其背后的经济学,以帮助您解决重要问题,*为什么这项技术值得真正的金钱?*这将帮助您成为这一领域去中心化应用程序的专家。您将能够比以往更好地解释所有这些如何共同运作,以便您能够引导您的未来客户走向正确的方向,因为您将了解到底层协议、技术和密码学层之后的以太坊区块链上发生了什么,并且您将下意识地解决您对这一发明的燃烧问题。

  在本章中,我们将讨论以下主题:

  引入以太坊链规范

  区块链技术

  区块链共识

  区块链经济学

  区块链指标

  以太坊链规范是一种描述以太坊区块链应该如何看起来的格式。它描述了实际上被视为以太坊区块链的参数、组件和元素应该具备什么,以便您可以创建具有不同属性的私有以太坊区块链,用于测试您的应用程序或分叉新版本的以太坊。规范定义了您需要创建自己的区块链所需的内容。例如,WhaleCoinwps的电脑版下载网址在哪(wps官网首页下载) 使用以太坊规范创建了一个新的区块链,该区块链具有相同的核心技术,但具有自己的修改,这要归功于以太坊链规范。

  拥有一个清晰的规范非常重要,它告诉我们如何创建类似以太坊的区块链,因为硬分叉是每个区块链的基本部分,而且高级开发人员可能会感觉他们想要更多的控制权来测试他们的应用程序在私有区块链上。以太坊给了人们选择权,可以基于以太坊创建自己的系统;在我看来,这对于处理交易的开发人员或矿工来说真的很好,因为例如,您可以更改共识算法、每个交易的燃气成本、区块时间等,同时仍然具有有效的以太坊区块链。

  使用以太坊链规范,您可以创建分叉或自己的私有以太坊区块链作为测试工具,以查看您的智能合约代码如何与现实世界中的交互。

  链规范规定以太坊区块链必须由一个称为创世块的单一块生成。这是一个特殊的块,因为它没有来自先前块的信息,而且它包含整个区块链的配置。

  它基于一个 文件,并具有以下参数:

  : 这是链的名称。例如,Homestead、Constantinople 和 Morden。

  : 这是这条链的可选次要名称。

  : 这是一个枚举,指定共识引擎,可以是 Ethash 或 Null。

  : 如果你只指定了 Ethash,这是一个包含共识引擎的几个属性的对象。不同的参数如下:

  : 这是一个指定区块可能具有的最小难度的数字。

  : 这是一个分隔符字符串。通常是 0x400,转换为 utf8 字符串后是字符 @。

  : 这是一个指定每个区块难度的整数,必须被二整除。例如,2084。

  : 这是增加难度的点。

  : 这是发现以太坊区块的奖励。

  : 这是此链上注册人合约的以太坊地址。

  不同的共识引擎可能允许 对象中的不同键,但是其中有一些是所有共同的:

  : 这个整数指定了所有新创建账户应该有的 nonce。

  : 这个整数指定了 frontier 兼容模式完成的区块编号,以及 homestead 模式开始的区块编号。

  : 这个整数指定头部的 字段的最大大小(以字节为单位)。

  : 这个整数指定了一个区块可能被限制的最小 gas 量。

  : 这个整数指定了这条链在网络上的索引。

  : 一个包含创世区块头的对象,就像你在 第一章 中看到的那样,区块链架构。头部包含了有关区块内容的具体信息,比如 gas 使用量、时间戳和 nonce。

  对象包含了创建的第一个区块的一系列强制参数,即以下参数:

  : 难度

  : 时间戳

  : 父哈希

  : 额外数据

  : gas 限制

  : 一个包含区块链初始节点的字符串数组,以 enode 格式呈现。我们稍后会看到它的结构。

  : 一个带有创世区块账户的对象。每个账户必须有关于每个地址的几个键:

  : 这个账户指定的以 wei 为单位的以太数量。

  : 在 时账户的 nonce,通常为零。

  : 与此账户或任何其他账户相关的合约的地址。

  : 在 时帐户存储的十六进制编码整数的对象映射。

  : 用于指定账户代码是本地实现的替代代码。值是一个带有进一步字段的对象:

  : 执行的内置代码的名称,如 identity 或 ecrecover。

  : 一个枚举,用于指定调用该合约的成本。

  : 这指定了调用此合同的线性成本。值是一个对象,有两个字段:基本成本 ,以 Wei 为单位,并且总是支付;和每字成本 ,输入的每字的成本,向上取整。

  现在您已经知道哪些参数放入 文件中,您可以开始创建自己的私有区块链,并为自己的个人应用程序自定义参数。在第三章,以太坊资产,您将学习创建自定义以太坊区块链的确切过程。

  现在,您已经掌握了有关以太坊区块链如何启动、运行以及如何创建用于测试目的的个性化区块链的基本理解。

  使区块链成为现实的技术是一组复杂的发明,它们共同努力实现一个全球协议的共同目标。要理解它们是如何相互关联的,最好将技术分解为四个主要部分,这样我们就可以看到所有分散应用运行的层:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  使以太坊成为可能的是一组工具和协议,它们在社区中被广泛使用。您将能够在个人项目中使用这些工具,无论何时您想要实现非常难以从头开始重新创建的高级机制。

  应用层是外部程序与区块链交互的层。它还包括智能合约语言,如 Solidity 和 Vyper。这一层是最重要的,因为它给了人们使用以太坊区块链做更多事情的选择,而不仅仅是发送和存储加密货币,它是关于分散技术用例的下一个步骤。以下图显示了应用层:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  首先,我们有 钱包,它们允许普通用户管理私钥以便能够与 分散应用 (dApps) 进行交互并进行转账。

  主要的是 Mist,MetaMask 和 MyEtherWallet:

  Mist 是一个正在开发中的浏览器,始终连接到以太坊。它允许您直接从中使用 dApps,而无需担心管理您的账户或使用外部插件。

  MetaMask 是大多数浏览器上可用的插件,让您拥有连接到以太坊区块链的超能力,而无需拥有区块链的本地副本,因为它连接到一个名为 INFURA 的计算机网络,您可以在其中自由创建交易。

  MyEtherWallet 是一个著名的以太坊钱包管理器,您可以在其中存储资金,连接到您的账户,并在线与智能合约进行交互。您也可以下载离线版本以增加安全性和可靠性。

  接下来,我们有智能合约语言,如Solidity和Vyper。它们被用于创建与区块链交互的智能合约,其中包含字节码指令。这得益于矿工在挖矿时执行代码。Solidity 在 ICO、去中心化应用和代币中最常用,用户可以在无需信任的环境中与区块链进行交互。

  接下来,我们有库,如Truffle,Embark和**web3.js****。它们为您提供了在与智能合约交互的同时创建更好的 dApps 的工具:

  Truffle:这个库以在最小可行产品(MVPs)、dApps、ICO 和代币合约中被广泛应用而闻名,因为它为希望进一步发展的开发人员提供了安全而经过测试的环境。

  Embark:这是由 Status 团队开发的一种 dApp 框架,为您提供诸如自动从代码部署合约、监视变化以及管理各种链等实用工具。

  Web3.js:这是与现有智能合约在您的 Web 应用程序上通过 JavaScript 进行交互的最常用的库。它为您提供了直观和易于学习的简单接口。

  最后,您有测试工具,用于验证智能合约的安全性。请记住,这些工具并不完美,因为它们只提供了扩展选项来测试您的代码,而无需强制您对去中心化应用的所有方面进行全面测试:

  Sol-profiler:这是一个简单的分析工具,可生成一个美观的表格,以易于理解的方式显示所有您的合约和函数。对于较大的项目来说,当开始难以理解所有组件之间的关系时,这对您能够更有效地进行测试非常有用。

  Solidity 覆盖率:这是一个用 JavaScript 编写的出色的测试工具,用于确保您的测试实际上检查了代码的每一行,至少保证进行了全面的测试,而不考虑质量测试。Truffle 是一个出色的测试工具,因为它为您提供了一个帮助您执行单元测试的测试框架。

  Cliquebait:这为您提供了一个干净的 Docker 镜像,使用具有极快出块时间的权威证明以太坊区块链,以便您可以在没有依赖性的情况下部署和检查您的分布式应用程序的每个功能。

  Hevm:使用 hevm,您可以获得以太坊虚拟机(EVM)的定制实现,准确显示智能合约的运行情况,包括操作码和调试器,可直接与部署的智能合约进行交互。

  在应用层以下,还有基础设施层,它提供一组更低级别的工具,以更紧密地与区块链交互。诸如去中心化存储、点对点(P2P)实时消息传递和以太坊客户端等功能。

  以下的示意图显示了基础设施层包含的内容:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  因为区块链是建立在点对点(P2P)网络之上的,节点直接相互交互,我们可以利用消息工具,比如Whisper和PyDevp2p:

  Whisper:这是由核心以太坊开发人员维护的一种协议,你可以在自己的 dApps 上使用它来发送几乎即时的消息。对于加密的聊天应用程序非常有用,因为你只交换哈希。

  PyDevp2p:这是一个类 wps的的官网最新下载的地方怎么找似的工具,直接使用 DEVP2P 协议来交换消息,无需等待区块确认交易。它完全由 Python 编写,所以非常适合直接连接到以太坊的个人项目。

  在这一层中,你还可以访问分散式存储,它可以让你在区块链上无限制地保存你的数据。这个协议非常类似于 BitTorrent,其中大文件直接在对等之间交换。

  与以太坊合作的最流行的存储有IPFS和Swarm:

  Swarm:这是建立在以太坊之上的、由核心开发人员维护的分散式存储。借助它,你可以创建能够上传特定类型数据并得到你内容的哈希的分散式应用。它的工作原理很简单;用户将一些文件上传到 Swarm 上,同时保持它们在线供其他用户使用,每当其他人想从中得到某些文件时,他只需直接从上传者那里下载,而无需请求许可。它提供了一个类似于互联网工作的容错系统,但没有了中心化。这个事实迫使用户自己保持内容的在线状态,当这项技术开始被普通互联网用户大规模使用时,这可能成为一个问题。

  星际文件系统(IPFS):相比之下,这几乎与 Swarm 一样,在分散式协议存储大量数据,包括文件,在用户之间有一些明显的区别。首先,IPFS 专注于从网络中删除冗余。要知道,在分散式存储中的一个问题是,你将在不同节点上有大量相同的副本。

  当你在不同处理时间的不同计算机上有相同的文件时,你只能每次选择最快的那个。你也无法确定你从网络上下载的文件是否真的是它所说的那样。它可能包含满是恶意软件的恶意软件。为了解决这个问题,IPFS 提供了类似于 GitHub 的系统,每个特定文件都有一个唯一的标识符。如果两个文件具有完全相同的内容,也就是它们是相同的,它们将具有完全相同的哈希值。

  这非常好,因为这给人们提供了一个保证,他们可以得到未经任何修改的有效内容。这也增加了网络的可用性,因此您可以可靠地从许多不同的提供者那里获取正确的文件。IPFS 仍在不断发展,正在开发一种用于奖励用户将文件保留在网络上的硬币。

  最后,我们有在以太坊之上运行的客户端。这是直接用于挖矿和下载公共以太坊链的软件。以太坊核心开发人员确保他们提供了各种类似的客户端,以便人们可以公开选择最符合他们利益的客户端,以避免出现一家软件垄断被强制推给所有人,带来的中心化问题。

  这些是主要的客户端,尽管还有许多其他客户端用不同语言编写并由不同组织维护:

  Geth:这是用 Go 语言编写的最受欢迎的客户端,因其简单性而广受欢迎。您可以使用它来下载主区块链,用 CPU 进行挖矿,部署合约并与之交互,创建以太坊账户等等,这些功能对一般以太坊开发人员非常有趣。它提供了一个命令行界面,您可以快速访问所有功能。

  Parity:这是由以太坊的联合创始人之一创建的较大客户端,用 Rust 语言编写,与 C++ 语法类似,但在各方面都倾向于安全性。Parity 提供了一个命令行和 Web 界面,您可以使用它来创建账户,下载区块链,部署智能合约等等,Parity 以创建多重签名钱包而闻名,这是一个智能合约,帮助组织在处理资金和投票时做出决策,因为所有成员必须就每个决定达成一致意见。

  或者,您还可以选择使用用 Python、C++ 和其他语言编写的客户端进行个人项目开发。选择权在您手中,所以请确保您对所有客户端进行详细了解,以更好地理解每个客户端可以为您提供什么功能。

  在基础设施下方,您有挖矿层,可以使用您的显卡或 CPU 来挖取以太坊的各种实用工具。您可能知道,生成以太坊的唯一略微有利可图的方式是利用廉价的电力和 GPU 卡。实际上,您可以自己进行挖矿,或加入支付部分区块奖励的矿池。

  以下图表展示了挖矿层包含的内容:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  挖矿是通过参与挖矿的一组计算机通过工作量证明方案达成共识,增加包含有效交易的区块来增加区块链的大小的过程。这是为了进行加密货币转账以及能够利用挖矿网络的综合力量来运行智能合约而至关重要的。

  以太坊的挖矿网络是巨大的,它负责处理发生的所有交易,包括智能合约的执行和部署。这是任何强大区块链的基础。您拥有的挖矿者越多,整个系统就越难以审查和更加安全。

  当涉及到挖矿时,您有挖矿矿池和使用所有可用图形卡来解决工作量证明(PoW)挑战的挖矿客户端。挖矿矿池将向所有参与者提供他们从独自挖矿中获得的一部分区块奖励,因为挖矿已经变得指数级困难,只有许多计算机的联合努力才能稳定地生成区块。它们非常适合获得持续的奖励,而不必花费数天的时间独自挖矿,不知道自己是否能找到一个区块:

  Ethermine:在许多其他类似的矿池中,Ethermine 以其丰厚的支付和稳定的回报而闻名。作为您将找到的最大的矿池之一,您有很大的保证,在达到最低 0.05 ETH 后,您将收到您挖矿的 Ether。

  Nicehash:这是一个特殊的矿池,因为它与更多种类的加密货币一起运作。它更像是一个以比特币为交换媒介,以更大的支付额度出售哈希算力的市场,您可以轻松转换为 ETH。支付门槛为 0.001 BTC,这比 Ethermine 要求的要昂贵得多。它非常适合那些考虑长期利益的人。

  在选择挖矿矿池之后,您需要获取一个挖矿软件,该软件将以尽可能高效的方式利用您的计算机资源,以获取最大的支付额。最受欢迎的GPU矿工是 Claymore 和 Ethminer,虽然还有许多其他矿工,如 Geth 和 Parity,也可以用于相同的目的,但其 CPU 的哈希输出要低得多:

  Claymore:这是一个出色的工具,可以充分利用您的 Nvidia 和 AMD GPU 的性能,因为它针对这些卡的各种类型进行了优化。包括双挖矿支持,您可以使用最小的影响来挖矿 Ether 和您选择的其他加密货币,因为它们使用相似且互补的算法,可以很好地协同工作。这个矿工的唯一问题是,使用它挖矿的每个小时,将有 36 秒用于为应用程序的开发者挖矿,这对于提供比其他矿工更好性能的如此有效的工具来说是可以理解和公平的。

  Ethminer:Ethminer 是用 C++编写的,专门用于挖掘使用哈希算法 Ethash 的任何加密货币,其中包括以太坊、以太经典和 Musicoin 等。它不像 Claymore 那样高效,但是背后有一个强大的开源社区,该社区不知疲倦地努力提供最佳支持和编程,这是一支由热情的开发人员组成的小团队。

  理想情况下,您应该测试这两个矿工,看看哪一个能够产生最佳性能,因为每个设置和计算机略有不同。如果您的性能不佳,请确保调整它们提供的设置。

  这是以太坊必须正常运行的最低层。P2P 层负责通过消息以实时方式直接与节点通信,而无需通过中间人。

  以下图表显示了 P2P 层包含的内容:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  P2P 网络中的每个节点都是可发现的,因为具有唯一的 IP 标识符和包含有关连接的每个节点的数据的哈希表。例如,当您连接到节点 123.456.123 时,您可以发送请求来查看它连接的节点,从而为您提供在未来可以连接的已知节点范围的选项。这对于能够在需要时发现节点并连接到新对等方至关重要。您连接的节点越多,您获取重要消息的通信速度就会越快。

  DEVP2P 是一种网络协议,负责在节点希望通过发送消息进行交互时管理协商。每个消息都使用一个名为RLPx的协议进行加密,这允许节点在网络上交换加密数据,并确保除接收方外,没有人能够解码消息。

  要使节点彼此连接,它们会暴露任何要使用的 TCP 端口,该端口默认为 30303。因此,如果您想连接到特定节点,必须确切地知道它使用的端口、它使用的协议以及其 IP 地址或唯一标识符。例如,我们之前讨论的消息传递协议 Whisper 使用协议,而以太坊使用协议。这只是一个简单的区别,当您使用 web3.js 时就会显现出来,因为它显示了每个对应协议中的每个函数。

  总之,您已经了解了以太坊架构的哪些组件,因此在开发智能合约时能够辨别出您实际使用的部分。您应该能够识别网络中使用的不同协议,并了解您可用的工具。

  在利用手头的工具方面,您刚刚提高了意识,这对于所有想要实现经过时间考验的解决方案以解决常见问题的以太坊开发人员都是至关重要的。

  以太坊区块链正在一个网络中运作,该网络由成千上万台相互连接的计算机组成,交换信息。现在,为了确保他们都处理相同的交易并为了实现相同的目标作为集体努力的一部分,我们需要一些达成协议的手段,这就是所谓的共识,以便他们都同意结果。这是将努力结合起来以使整体受益的最佳方式。

  在下面的图表中,您可以看到所有计算机都在运行相同的挖矿软件,并且一致同意单一协议,为他们的计算能力提供奖励:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  与标准的投票过程相比,在那里所有个体独立决定他们想要实现的目标,区块链中的共识更进一步,旨在做出有助于以最有效方式达到最终目标的决定。例如,桥梁建设项目的管理者做出的决定基于共识,以达成建造桥梁在最有效的时间和成本方式中的最佳解决方案。当涉及到区块链时,共识是矿工们采取的一系列行动,以最有效的方式生成尽可能好的区块,从而减少区块时间,同时矿工们获得有利可图的以太币奖励。

  PoW 是用来处理交易并生成包含交易的区块的方案,以换取一项困难的任务,以便只有最有能力的计算机获得区块生成奖励。当矿工生成交易时,他们所做的就是生成随机哈希直到找到适合下一个区块的哈希。每台计算机都是独立进行这样的操作。当矿工找到正确的哈希时,他们将生成该哈希的材料分发给所有连接的节点,以便它们也能做同样的操作,并最终将这个新区块添加到网络中,同时因努力获得奖励。

  为什么所有矿工都同意发现正确哈希的人应该获得下一个区块的奖励?因为,当他们进行挖矿时,他们是在遵守一套规则。

  这些规则如下:

  发现区块的用户将获得奖励。

  作为矿工,您必须将这个新区块分发给所有连接的节点,以同步整个网络中包含在该区块中的新交易。

  您必须只向区块添加有效的交易。

  在这一点上,您可能会问自己当无效交易被添加到一个区块中时会发生什么? 答案是,每当矿工向区块添加无效交易,解决了工作证明挑战并试图将其分发给其他人以更新主链时,其他矿工将注意到这些无效交易,并停止分发该区块,因此它将不会进一步发展,因为他们中的每个人都是对每个区块中发生的事情的验证者。

  解决包含这些无效交易的区块的 PoW 挑战的矿工浪费了他的计算能力,因为它不会进一步传播。 这是对恶意行为的惩罚,它是能源和时间的浪费。

  这是一种非常强大而简单的检查机制,它保护区块链免受恶意意图,从而只批准已成功验证的有效交易。

  以太坊核心开发人员正在努力开发下一个版本的以太坊共识方案,该方案采用了股权证明(PoS)的方案,该方案将在不久的将来的一个硬分叉中命名为Serenity,约在一到两年内发布。Ethash 不再用作实现和处理 PoW 共识的算法,以太坊将使用名为Casper的东西作为共识的协议,结合 PoS 和 PoW。

  为什么它们正在改变生成区块和达成共识的协议?因为 PoW 在资源上不可持续,因为它迫使矿工浪费无法支撑的能源和资源。 没有必要在加密挑战中浪费所有这些能源。 我们可以通过不需要太多能源的简化协议达到相同的目标。 而且,最大的加密组织能够负担得起大量的计算能力,使得少数公司成为几乎整个矿业网络的所有者。 这是一个严重的问题,因为它破坏了去中心化的原则。 如果他们可以控制整个网络,那么该系统就可以被视为中心化,因此他们获得了更强大的立场来决定加密货币的发展方式。

  理论上,他们可以合并努力并发动 51%的攻击,自由操纵交易。

  卡斯珀计划通过使用 PoS 算法来解决 PoW 意外增长所带来的问题。 然后,矿工在网络上锁定特定数量的以太币,以便能够验证交易,同时通过交易费用获得报酬,因为新的区块创建将停止获得奖励。 每个矿工都会为他们认为合法的区块押注任意数量的以太币,如果他们是正确的,他们将获得他们押注的一部分。 这使得整个网络更加去中心化,因为更多的计算机能够参与共识过程,以加速并从少数大玩家手中释放资源。

  在以下图表中,您可以看到如何通过对随机生成的区块提出下注来生成区块的可视化表示:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  在 Casper 中,将会有一种特殊类型的矿工,被称为forger,他们将通过合并交易并在过程中添加他们的公钥来生成区块,以证明他们是创建该区块的人。如果他们最终将正确的区块添加到区块链上,他们还将获得费用奖励。那些对正确的区块下注的人将被称为validators。每当一个区块有足够的下注,并且如果它在标准区块链的标准区块时间内生成,即该区块将被添加。forger 将从所有 validators 中随机选择,以便少数人能够创建区块。

  当使用 PoS 的 Casper 实施时,参与者将能够通过对他们认为有效的区块下注来推动区块前进,并在选择有效区块时获得奖励。但是,如果他们决定对恶意区块进行投票会发生什么呢?当对恶意区块下注时,他们不会损失任何东西,因此没有任何事情能阻止他们这样做。这就是无利可图问题所在。

  这些矿工将能够对他们看到的每个区块进行押注,以获取可能的奖励最新的官网wps下载地方是多少。

  解决此问题的一个可能方案是惩罚那些不断对错误区块下注的人。因此,如果一个矿工犯了 10 个错误的决定,他将损失一部分他的股份。但是,只有当网络的大多数决定投票给错误的区块时,这种情况才会发生,如果矿工分布足够广泛,很难就错误的选择达成一致意见。

  加密货币的有趣之处在于它们将技术与在现实世界中具有价值的真实资产结合起来。历史上,我们首次能够创建完全自主运行的wps的官网最新的下载的地方在哪里。从历史上看,货币始终由中央政府支持,他们控制着供应和需求。他们是唯一能够印刷货币以控制通货膨胀的人。

  简单来说,通货膨胀是经济中所有资产价格上涨的现象。例如,1890 年的一座房屋通常价格约为 10000 美元,但同一座房屋现在的价格约为 350000 美元,即使它变老了——这是高通货膨胀的结果。这可能是由于自然资源稀缺导致的材料成本增加。也许是因为工作机会不足,所以人们要求更高的工资,因为要求也在增加。也可能是因为土地成本增加,这是由于销售的房屋不足。所有这些以及许多其他因素都迫使企业提高价格,从而迫使人们在增加通货膨胀的同时赚更多的钱。

  诸如以太坊之类的加密货币能够增值,因为随着技术不断改进和开发更多用例,采用率不断提高,这使得它们在一定程度上对外部通货膨胀具有一定的抵抗力。每年供应增长速度放缓的事实使价值相对于法定货币保持相对稳定,而政府和机构能够按需印刷法定货币,这使得以太坊和许多其他加密货币成为很好的价值存储工具。

  询问加密货币为何具有价值等同于询问任何事物为何具有价值。我们对事物进行数值估值是因为它给了我们一些东西——一个提供给我们安全睡眠场所的房子,一个给了我们能力去远方旅行的汽车,或者提供生存所需的食物。一般来说,区块链作为一种工具具有实用价值,用于存储货币,进行几乎即时的wps的官网最新的下载的地方在哪里转账,并使用一种特定类型的应用程序,如果没有区块链就无法工作。

  在转换加密货币方面,交易所起着很大的作用。您可以前往接受以太币的任何交易所,并将其转换为任何其他货币,因为他们同意这是一种有价值的东西。货币基于协议。我们都同意苹果有一个特定的美元价值,这可能略有变化,只要人们想要消费这个苹果,并接受美元作为交换,他们就会购买它。以太币也是如此——只要人们想要以太币用于他们能做的任何事情,并接受美元作为交换,他们就会购买它。

  在货币出现之前,人们通过协议交换物品,例如,一张桌子换一袋土豆。后来,他们决定使用一个抽象概念,即一个数字,可以更精确地理解物品的价值。

  请注意,价格永远不是固定的。这不像米制系统,其中 1 公斤对于整个地球来说都是一样的。法定货币和加密货币通过与其他货币比较来确定其价格。1 美元对比 0.8 欧元,就是 1 美元对比 1 美元。1 以太币对比 200 美元。世界上的法定货币全球交易称为外汇(外汇交易)。对于加密货币,有个别交易所分别处理价格。

  当有人愿意用一种币换另一种币的时候,两种币都会得到一个价格。例如,想象一下以下情景:

  想象一下,有人刚刚创建了一种名为 RED 的新WPS office的电脑版的下载网站怎么找。它没有任何价值,因为还没有人想购买它,因为它还不为人所知。

  现在,约翰读到了这个新的 RED 币,并决定它将帮助他以较低的价格购买苹果,因为他们已经与当地的生产商达成协议。RED 币具有实用价值。

  他去了交易所,并与该币的所有者谈判。约翰想要购买 100 个 RED 币,所以他们谈论到他们决定 100 个 RED 币价值 300 美元,基于该币的实用性。

  在那一刻,RED 币的价值为 3 美元,直到该币的创建者决定降低价格以增加买家或反之。

  市场决定了所有货币的价格,这取决于人们购买它们的意愿。

  任何事物的价值取决于供应和需求。只要供应保持一致,人们越想要它,它就会变得越昂贵。

  在下图中,你可以看到供需如何影响特定加密货币与稳定的法定货币对应的价格:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  许多交易所都有自己的流动性池,以太币在这些交易所的价值不同,因为人们基于偏好使用不同的交易所。那么,他们是如何同步使得所有交易所都具有标准价格的?事实上,它们仍然有稍微不同的价格。套利者致力于保持价格一致;因为他们的收入是基于从一个交易所到另一个交易所的价格差异,这是导致每种加密货币价格总体稳定的原因,尤其是像以太坊这样的大型加密货币,其中每日交易量足够大,值得投资。

  随时间的推移,价格变动的结果可以在下一节的图表中看到,在那里,你可以快速分析特定历史事件时加密货币的价值。图表为区块链采用提供了很好的理解。

  以太坊区块链如此著名的原因之一是因为它为创建代币提供了简单的方式。每个有大量追随者的代币都会不可避免地影响价格,因为背后的技术仍然是相同的。在接下来的章节中,你将学习到如何创建 ERC20 代币。目前,你只需要理解,每当有人投资购买代币时,代币的价格就会上涨,同时也增加了以太坊的总价值。

  以太坊上的代币数量越多,区块链的价值就越高,因此它的价格就会上涨。如果你去,你会看到所有大型以太坊代币的价格,你会意识到大多数代币的价格模式与以太坊相同,原因很简单,因为购买代币的人实际上是在投资底层技术,即以太坊。

  投资到以太坊的总金额被称为市值,因为以太坊的市值如此之大,只有大额以太币的购买才能明显影响价格。因此,每当你看到价格出现巨大波动时,很可能是因为一家大公司投资于技术出于他们自己的动机。

  区块链指标是区块链的重要可衡量特征,可以帮助您了解其状态,以便确定以太坊区块链的表现如何,采用率如何,以便您在定价、发展和采用率方面预测未来。

  区块链中的交易数量是最重要的指标,因为它显示了技术在日常情况下的使用情况。交易代表活动。交易越多,越多的人积极使用区块链投资项目、运行 dApps 和使用智能合约。

  如果没有人使用技术,拥有数十亿用户是没有意义的;交易越多,技术就越有用。您还将在下一个标题中看到,以太坊正在经历成长的烦恼,使用率不如预期。人们加入了它,但他们没有充分使用它。这是社区中一个必须克服的巨大问题,以成为主流。

  当以太坊开始时,有 8,893 笔交易,然后在 2019 年 1 月 1 日达到每日 448,168 笔交易。2018 年 1 月 4 日的交易记录为 1,349,890 笔。

  以下是以太坊自 2015 年推出以来交易数量的可视化参考:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  前面的截图告诉我们,每天有 448,000 笔交易来自每日转账、使用 dApps 的人、参与 ICO 的投资者和与智能合约交互的人。相比之下,截至 2017 年 12 月,PayPal 每年处理 76 亿笔交易,约为每天 6.33 亿笔。PayPal 是全球广泛使用的主流技术,因此,为了让以太坊达到这种大规模采用的水平,它必须增长大约 1413 倍才能达到当前交易水平。这清楚地表明以太坊仍处于起步阶段,需要几年时间才能在这样的规模上变得相关。

  图表显示,自去年以来,以太坊的每日交易数量没有增加。这在区块链领域是正常的,预计在一段时间后,由于技术尚未经历的许多改进,它将继续增长。

  您可以通过查看以太坊交易图表 自行探索数据。

  以太坊中的地址类似于现实生活中的账户,尽管更容易生成,因此人们通常会在任何给定时间管理 10 个地址并不奇怪。以太坊成立时总共创建了 9205 个地址。从那时起,以太坊没有停止增长,截至 2019 年 1 月 1 日,已创建了 54,281,633 个地址,每天增长约 51,139 个。这些是 5000 万个地址,我们可以将其近似为 500 万用户,因为我们可以假设普通用户具有约 10 个地址,考虑到创建它们的便利性。

  这是以太坊地址总数多年来的增长情况:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  如果您想探索有关以太坊地址的更多过去历史数据,可以查看上的图表。

  5400 万个地址向我们表明以太坊仍处于采用阶段,而且在不断增长。人们第一次发现这项技术,他们加入了,他们也带来了更多人。当我们达到 10 亿个地址时,我们可以自信地说这项技术已经成为主流,人们已经把它融入到他们的日常生活中。

  每个以太的价格向我们表明人们对技术有多少信任。有句谚语说,“言之有物”,这个统计数据非常贴切。人们在技术上投入的资金越多,他们对它的信任就越深,这表明扩张。在 ICO、TGE 和 STO 中筹集的资金也是以太价格上涨的良好来源,因为许多项目都成功地使用了这项技术。人们把钱投入到基于以太坊的有用项目中。

  在下图中,您可以看到以太坊的价格随着时间的推移而波动,出现了几次突然的暴涨,这是由人们对这项技术的兴趣所引起的。

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  以太坊是在 2015 年诞生的,当时 1 个 ETH 价值 0.31 美元。两年后,到 2017 年 12 月底,1 个 ETH 的价值超过了 1000 美元。最近,价格下跌,截至 2019 年 1 月 1 日约为 142 美元。这向我们表明,人们在逃离它,因为他们受骗了,因为他们对它没有用处,或者只是因为炒作结束了。真正的原因不确定,但可以肯定的是,价格下跌是因为这项技术需要提供创新的解决方案来解决只能通过区块链解决的现实问题。

  如果想了解有关价格如何随时间变化的更多信息,请查看 Etherscan 上的图表。

  一个项目没有背后的人改进和发展到新的领域就什么都不是。以太坊背后的开发者的数量和质量是未来发展的指标。越多优秀的人参与其中,它就越快能够面对可能解决人们问题的新挑战,提高实用性。我们可以通过使用以太坊发布的 dApps 数量和 ERC20 代币的数量来衡量开发者采用程度。

  区块浏览器 Etherscan 表示,截至 2019 年 1 月 24 日,在以太坊区块链上发布了总共 164,188 个代币合约。您必须考虑到其中许多是欺诈行为。大约有 1,000 个是真实的,考虑到每个好的代币,都有 10 个假的或被放弃的代币。这个数字告诉我们,以太坊在开发者采用方面是主导的区块链,因为其他区块链很难达到几百个代币。人们正在加入网络并了解更多有用信息,因为代币背后有有用的应用。

  状态 dApps 是最受欢迎的网站,汇集了大多数构建在以太坊上的应用程序。据说这个区块链上有 2,432 个 dApps。这比任何其他区块链都多得多。然而,我们必须将其与实际场景进行比较,因为以太坊主要是用于构建不可阻止的应用程序的协议。例如,Google Play 列出了约 2.6 百万个活跃应用程序,这比部署在以太坊上的应用程序数量大了 1,000 倍。

  根据这些数据,我们可以得出结论,以太坊又一次处于增长阶段,采用刚刚开始,因此我们必须继续在其上构建,直到人们决定参与解决去中心化的问题。

  要了解更多信息,您可以查看 和 。

  最后,矿工活动是技术背后力量的重要衡量标准。越多的矿工加入网络,它就会变得越强大,进而增加其去中心化程度,达到创纪录的高算力。

  以太坊在 2015 年开始时的算力仅为 11 GH/s。这是极低的,而且是任何新的区块链都可以预期的。然而,这个数字并没有停止增长,现在截至 2019 年 1 月 1 日,我们大约有 180,000 GH/s。

  看一看以太坊的网络算力如何持续增长的截图,以清楚地欣赏价格与采用之间的关系:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  您可以从前面的图表中看到,算力一直保持稳步增长,直到 2018 年 9 月份下跌,随后缓慢回升。通过解读这些数据,我们可以得出结论,慢慢被相信这项技术的矿工们所接受,特别是最近一段时间,难度增加而奖励减少。这种加密寒冬仍然异常强劲,得到愿意承担损失挖矿的人的支持。这是人们对底层系统有多么信任的一个很好的指标。

  一定要查看官方图表,自己分析这个有趣区块链的算力,以发现有趣的时间点,人们在这些时间点决定参与挖矿过程,网址是。

  在本章中,我们了解了与将区块链技术与现实场景集成的机制相关的许多事项,例如交易所和采用率。您现在能够使用强大的工具来改善您的去中心化应用程序和智能合约的质量,同时还能够根据以太坊的最重要指标预测未来价格走势。在第一节中,您看到以太坊区块链是如何使用一组特定规则(称为链规范)来定义的,然后学习了使这项技术如此引人注目的不同组成部分,包括构建在每个层级上的许多应用程序。最后,您了解了以太坊共识、经济和度量是如何工作的,以帮助您了解为什么以太坊是如此有价值的wps的官网最新的下载的地方在哪里,同时看到了许多节点如何共同合作以实现一个目标,使用所谓的共识。

  在接下来的章节中,我们将介绍以太坊协议的不同实现,以便能够在您自己的项目中充分利用以太坊的潜力。

  在本章中,您将了解不同的以太坊协议实现,以便更好地理解区块链可以以许多不同方式集成。在学习协议实现之后,我们将继续探讨 INFURA、钱包以及去中心化自治组织—也被称为DAOs—这样您将学会如何在区块链上创建不受中央政府限制的商业网络。我们将讨论几个区块浏览器,以便学习如何检查您的交易,从而分析在上传智能合约到区块链时发生的情况。最后,您将了解有关区块链实施的一些重要问题,以帮助您解决您可能在某个时候面临的常见问题。

  在本章中,我们将涵盖以下主题:

  以太坊协议实现

  INFURA 要点

  去中心化自治组织

  杂项与关注点

  创建您自己的私人以太坊网络

  选择以太坊钱包

  使用 Etherscan 进行交易

  创建账户

  以太坊是一个开源系统,可以用不同的语言实现,以便为人们提供使用他们喜欢的工具进行交互的选择。其中一些完整节点的实现是 Geth 和 Parity。我们将在本节中探讨它们的区别,以及在什么情况下使用它们是最佳的场景。

  正如您在前面的段落中所读到的,我们将涵盖的以太坊实现包括 Geth、Parity、Mist 和 Embark。为什么只有这四个?因为它们是最流行的实现,使您能够完全执行区块链的所有功能。挖矿、进行交易、下载整个区块链、与您部署的合约互动以及创建账户这类事情在所有这些实现中都是可能的。

  Geth,也被称为 Go Ethereum,是最流行的以太坊实现,可以让您执行各种任务。我们将在接下来的章节中详细介绍如何执行大部分任务,帮助您理解每个任务所需要的每个命令。

  您可以在 macOS 上轻松安装 Geth,使用以下命令:

  或者,如果您使用的是 Windows 或 Linux,您可以前往geth.ethereum.org/downloads/,然后获取适用于您系统的可执行文件。无论哪种情况, 命令将在您的终端或命令行中安装后可用。

  您可以使用 Geth 创建无限账户,因为它们是由称为Rivest Shamir Adleman(RSA)的算法生成的,该算法在链下创建公钥和私钥。可能的组合数量如此之大,几乎不可能生成与另一用户相同的账户。要使用 Geth 生成一个账户,请运行以下命令:

  这将询问您一个密码,以保护您的凭据安全。然后,您可以使用以下代码管理您的帐户:

  命令用于更改特定帐户的密码,以便您可以轻松解锁它。您可以使用此命令删除现有密码。

  您还可以使用以下命令解锁您的 Geth 帐户:

  这基本上是解锁您的 Geth 帐户,以便您可以通过控制台直接发送交易。

  请注意,您也可以在被询问时按下 Enter 键而不输入任何内容即可创建无密码的帐户。

  Geth 的主要功能是下载区块链,以便您可以在设备上拥有一个完整的节点,以满足您可能需要的任何目的。要执行此操作,请在终端上执行以下命令:

  在没有参数的情况下运行 会自动开始下载最新版本的区块链,并将其下载到默认目录,RAM 默认大小约为 1 MB。您可以使用此标志更改下载区块链的位置:

  要更改用于下载区块链的 RAM 部分,请使用此标志:

  此标志中的数字表示您想要专门为此进程分配多少 RAM。您分配的越多,它下载主以太坊链的每个组件的速度就越快。尽管如此,由于链中包含了大量的过去交易信息,获取完整的数据链可能需要数小时。请记住,链会永久存储每笔交易,没有删除过去交易的选项。

  然后,您可以使用以下命令在下载链后可视化节点指标:

  Geth 也能够利用您的 CPU 独立挖掘以太币,但与使用图形卡或特定应用集成电路(ASICs)等替代方法相比,这不是一种高效的过程。尽管如此,将其添加到此工具中可能在需要低资源挖掘的不同情况下很有用,比如在物联网设备中。

  要使用 Geth 进行挖矿,请执行以下命令:

  如果尚未同步,则它将开始下载和同步您的链。在设置了您的 后,您将能够接收资金,这可以轻松地完成如下:

  最后一个数字表示将从您的列表中使用哪个帐户。您可以使用 命令查看您的帐户。

  Parity 是最发达的以太坊协议实现之一,因为它为您提供了一个令人惊叹的界面,您可以从中使用所有功能,包括部署合同和与区块链交互。

  要安装 Parity,请在 Linux 或 Mac 上运行以下命令:

  它将自动下载最新版本,编译它,并立即获取所需的组件以使其正常工作。不过,对于 Windows,您需要从它们的官方网站获取可执行文件,网址是:www.parity.io/ethereum/。

  在能够与 Parity 交互之前,您必须下载区块链,这可以通过执行以下命令简单完成:

  安装完成后,您将能够访问 网站上的 Web 界面,该界面将显示您所有可用的选项。

  要使用 Parity 创建账户,您只需点击 ACCOUNTS 选项卡,然后在主选项卡下方选择 + ACCOUNT,以生成一个新账户,如下图所示:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  Parity 可以与其他 GPU 矿工配合使用,这将为您提供更好的哈希速率,以便您可以从一开始就变得有利可图,与使用 CPU 进行挖矿相比。然而,您可以通过运行以下命令来使用您的处理器进行挖矿:

  然后您将开始向该地址生成微小量的以太币。

  Geth 和 Parity 都是出色的工具,可以为各种分散式应用程序和智能合约开发框架执行相同的工作。然而,有特定的用例可以让其中一个比另一个更好。

  并且在下载完整的以太坊主链之后,它们都提供了一种简单的部署和与智能合约交互的方式。然而,鉴于 Parity 在易于使用的 IDE 中为您提供了一个专用选项卡来编写智能合约代码,因此 Parity 是更好的选择。您可以将智能合约编译到特定版本,保存它们,并将它们部署到网络上。更好的是,它会自动突出显示您的代码,这在大多数 Solidity 和 Vyper 编辑器中都很少见。

  另一方面,Geth 使用命令行界面,这使得智能合约开发变得更加困难。

  就我个人而言,我发现 Parity 的界面是任何类型的以太坊开发人员的绝佳工具。它快速,外观出色,您完全控制您自己的节点,感觉良好,而且易于使用。

  在管理多个以太坊账户时,您可以使用 Parity 提供的 Web 界面或使用 Geth 提供的命令行工具。在这种情况下,两者都是不同用途的绝佳选择:

  如果您正在管理多重签名钱包,请使用 Parity,因为它具有内置的部分来管理这些类型的复杂钱包,而这在 Geth 中是缺失的。

  如果您需要一个基于命令行界面的简化系统,该系统为您提供更少的头疼以进行更快的操作,那么请使用 Geth,鉴于您不需要打开 Web 界面与其进行交互。您不必等待此类 UI 显示的小但明显的加载时间。

  当涉及到不同的情况,比如挖矿、下载区块链、转账资金以及探索你本地区块链的历史时,决定哪个选项更好取决于你。两者都是相等的,都会给你带来相同的结果,只是有些微小的差异。

  你已经了解了这些以太坊实现为你可以做的主要特性。我们看到了 Geth 和 Parity 如何被使用,他们如何与区块链交互,以及一些你可以直接应用于自己的个人项目的真实世界命令。记得去看一下 Parity 的神奇智能合约代码编辑器:你会喜欢的。

  INFURA 是一个流行的技术,可以连接到区块链而无需下载它包含的数百吉字节,因为它免费提供给你完整的节点。

  INFURA 通过为用户提供可用的以太坊实例来连接到区块链,帮助数百万用户连接到区块链。这是一个旨在改变以太坊采用率的最大项目之一,因为每个人都能够立即连接到以太坊,以处理交易并与区块链进行交互。

  它支持像 MetaMask 这样的流行应用程序,让你可以从浏览器进行交易。这就是 ICO 变得如此流行的原因之一——因为人们发现了一个简单的方法来与区块链进行交互,以便使用 MetaMask 和 INFURA 的基础设施轻松执行交易。你可以自由地在自己的应用程序中使用 INFURA,只需使用适合你项目的正确网络的链接:

  对于主网络,请使用此链接:

  对于测试网络,请使用测试网络的名称,例如:、 和

  现在,这些是免费的网址,但在你可以发出的请求数量上有限制。如果你想无限制地访问区块链,你将需要在上创建一个账户,你将会得到一个唯一的令牌 ID,你可以在自己的需求上无限制地使用它。

  INFURA 也可以与 IPFS 一起使用,IPFS 是一种去中心化存储的协议,类似于 torrent,因此你可以在去中心化网络中上传内容而不需要中心化。

  表面上,INFURA 提供了一个干净的 API,许多区块链开发人员可以自由使用它们的分散式应用程序,以提高以太坊的采用率。

  在幕后,他们有一组计算机,上面安装了最新版本的以太坊区块链,并且同步地动态调整资源需求,每当用户产生更大量的交易时。以下图表展示了它是如何工作的:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  与自己下载最新链时耗费大量千兆字节和小时的时间相比,你可以简单地连接到 INFURA,这样你就可以立即访问各种以太坊链而无需任何限制。

  当你在 INFURA 注册为新用户时,你将可以访问仪表板,你可以在其中创建项目,查看有关项目 ID 的统计信息和详细信息:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  第一件你会想要做的事情是点击“创建新项目”按钮,创建一个新项目,以便你的 dApps 能够连接到正确的区块链端点,无论是 Ropsten、主网、Rinkeby 还是 Kovan。一旦你点击了那个按钮,你将被要求命名它,然后项目将被创建:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  如果你点击“查看项目”,你将看到一个页面,其中有修改该端点安全性和名称的设置,以及删除它的选项:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  如果你点击“查看统计”,你将看到一个页面,其中包含大量关于请求数量和带宽使用情况的信息,以及关于端点使用时间的统计信息,以及其他有价值的信息:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  除了那些按钮,你还有一些可点击的链接,你可以快速访问文档和 INFURA 的状态,并在需要时获得支持:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  INFURA 的基础设施确实是一个有趣的命题,由 ConsenSys 的人们制作,他们创建了一个庞大的连接用户的网络,希望参与区块链革命,而不需要下载如此庞大的区块链所需的时间和存储。

  这是向所有即将利用这一激动人心的技术的新用户提供开放访问的最佳方式之一。它也完全符合开放技术的区块链核心概念。然而,如果太多的应用程序和用户最终依赖于它,使其成为一个中心化的故障点,那么如果服务失败,它可能会导致数千个 dApps 无法运行,从而成为未来的一个问题。为了避免这样一个悲剧性的场景,请记住为生产应用程序设置自己的以太坊节点,以增加去中心化。

  去中心化自治组织,也被称为DAOs,是区块链的最佳用例之一,因为它们是信任和应该更新为现代时代的旧系统之间的完美链接。

  DAO 的目标是成为企业做出决策的主要场所。它们是传统公司的去中心化版本,通过与利益相关者和每个 DAO 的关键组成部分讨论来做出决策。简单来说,它们利用了以太坊区块链的不可信任性来形成具有所有可能性的法律公司。

  他们依靠智能合约提供硬编码功能,用户可以通过多重签名钱包做出决策并达成协议。多重签名钱包类似于以太坊账户,因为它们存储 ETH 并能够进行转账;然而,底层技术由智能合约组成,强制成员通过使用自己的地址签署每个决定来达成一致。

  它们被称为 自治,因为它们在区块链顶部自行运行,无需任何人维护它们,与传统公司相比,传统公司必须研究每个组成部分的发展以避免法律后果和结构问题。

  创建不受政府或外部实体控制的不可阻挡组织的想法比起初看起来要简单得多。这就是为什么我准备了一个简单的图表,展示 DAO 在日常基础上参与的流程:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  每个 DAO 都是独立运作的,每个用户都能创建要投票决定的议题。每个代币持有者都可以选择以取决于他们拥有多少代币的权重进行投票。你拥有的总代币比例越大,你在组织中获得的决策权就越大。

  最初,这不应该是一个问题,因为人们预计会投票选出最好的公司结果,但后来可能会导致集中化问题,其中少数人会控制大部分代币,从而能够为个人利益合作。这类似于 51% 攻击,其中整个公司的一部分做出所有决定。

  你可以编写自己的 DAO 智能合约,为组织成员提供创建具有投票机制的提案的功能,但已经存在的解决方案可以帮助你简化流程,加快设置时间。

  AragonOS 是用于创建去中心化自治组织的最常用的开发框架之一,它给你以下选项:

  将你的 DAO 智能合约更新到最新版本,并包含所有改进

  限制对具有权限控制的特定用户的访问

  在其之上添加额外的投票应用程序以扩展功能

  这个想法很简单,只需创建 DAO,配置权限,并开始构建组织的组件,以达成治理决策。你还可以使用 AragonUI 以美观简洁的方式与你的组织进行交互。后来被黑客攻击的著名 ICO,即被称为The DAO的项目,由于产生了如此重大的后果,所以不再可用,因此你无法从它们为创建新的去中心化组织提供的选项中受益。

  以太坊是一个复杂的工具系统,通过协同工作实现了一个授权解决方案,帮助成千上万的用户进行去中心化交易,他们无需信任外部实体来保护他们的个人数据和滥用规则。因此,对于这些内部部分如何相互通信的方式有疑问是完全正常的。在这里,我们将为您提供一些在开发和使用区块链过程中任何用户都会面临的最常见问题的答案,以便您能够将这些新知识与坚实的基础联系在一起。

  以太坊是一个不断发展的技术,不断改进,各种专家产生的新研究推动了去中心化技术的发展。新变化被纳入这个区块链的方式是通过以太坊改进提案,更为人熟知的是EIPs。

  标准如 ERC20 和 ERC721 是由 EIPs 提出的,并分别用数字 20 和 721 进行标识。这些 EIPs 是在官方以太坊 GitHub 存储库中以 EIPs 的名称创建的,位于 ,在这里你可以看到人们通过改进为整个系统带来益处的核心以太坊创新。事实上,ERC20 标准是为了满足基于以太坊生成唯一加密货币的需要而创建的。

  它们是以太坊演进的重要组成部分,并提供非常有趣的功能,使这个区块链成为解决人们问题的技术的最佳选择之一。

  你可能熟悉被称为Truffle的框架,它允许你以可持续的方式编写、部署和测试合约,一旦设置完成,就需要最小的配置。它是部署高级和简单项目的最佳工具之一;然而,对于特定用例,你可能不想使用它。

  例如,你可能正在处理一个简单的 50 行智能合约,为你正在构建的应用运行一些基本功能。在这些你知道智能合约代码将很小的情况下,最好使用一个 IDE,它让你能够开发你的代码,而不必花费宝贵的时间来使用 Truffle 设置项目。有时,你只需要编写一个智能合约,因为你不打算通过新功能来升级它。在这种情况下,你应该选择诸如 Remix 之类的 IDE 来节省时间和简单性。

  另一方面,当你在处理需要测试和可维护性的较大智能合约的复杂 dApp 时,应选择 Truffle,以确保安全性。

  当你打算在一个新的基于区块链的项目上工作时,你必须考虑到当前智能合约语言所面临的限制,因为它们将决定你在开发中能够达到多复杂的程度。记住,你的 dApp 的好坏取决于其背后的智能合约,所以考虑在智能合约中可以做什么和不能做什么是有意义的。

  作为智能合约开发者,你将面临一些问题,因为你的程序由于无法创建无限大的智能合约而不断地缩小。你的合约的大小有一个固定的限制,所以你必须在这些限制内工作。

  当创建复杂的智能合约时,要注意编译器给出的信息,以了解何时遇到障碍以及如何解决它。你将面临程序根本无法按照你想象的方式完成的情况。在这些情况下,你必须了解循环限制、函数成本和智能合约的互操作性,才能成功地创建更大的代码。

  作为区块链开发者,你总会在某个时候需要创建一个具有自定义属性的以太坊区块链。考虑到侧链开始出现,以及著名的扩展技术Plasma的出现,这变得更加重要了。

  那么,我们如何创建一个自定义的以太坊区块链呢?以下是适用于 Mac 的说明。我已经尝试过它们,应该也适用于你:

  首先,通过执行以下命令使用安装以太坊包:

  这将需要一些时间来处理,特别是如果这是你第一次执行。在我的情况下,它显示了,过了一段时间后,它就被安装了。

  现在,你应该能够使用和命令。是主要的命令行界面,用于与以太坊区块链进行交互,可以下载主链等任务。是用于设置自己的私有区块链的工具。

  在设置你的文件之前,你需要一个以太坊地址。使用以下命令创建一个帐户:

  它会要求您输入密码。只需键入密码,您将看到您帐户的地址。确保将其复制到安全的位置。

  之后,执行以下命令:

  这将产生以下输出:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  它可能会要求您管理一个网络。在这种情况下,只需键入您想要创建的新网络的随机名称:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  然后,选择第二个选项创建一个新的文件:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  从头开始创建一个新的文件,并选择第一个共识引擎,。

  现在,它会问您哪些帐户应该被预先资助。在这里,您将粘贴之前使用命令生成新地址后复制的帐户地址:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  然后,它会问您是否应该预先用资助预编译地址。回答。基本上,这是一堆将用于编译区块链的地址。之后,指定一个随机的网络 ID:在我的情况下,我选择了作为 ID。以太坊主公共网络的 ID 为,所以您必须选择一个不同的数字来区分您的区块链和他们的区块链。这很重要,以避免重放攻击,其中恶意用户可能会将一笔交易从一个区块链复制并在另一个区块链中执行以获取自己的利益。这个 ID 号码正是避免了这种漏洞:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  您已配置并创建了将随时用于启动您自己的私有区块链的文件。现在,您必须导出它以便能够使用它。要这样做,请选择已执行的命令的第二个选项————然后选择:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  然后,它会问您要将创世文件导出到哪里:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  您将在所选文件夹中看到您的文件。如果您没有选择一个,文件将被创建在您的用户文件夹中或者您的终端当前位置的任何地方。以下是您会找到的文件:

  :或者您为您的创世网络选择的任何名称。此文件包含我们之前看到的一般链规范。

  :这是用 C++编写的 Aleth 以太坊客户端的创世文件。Aleth 只是一个以太坊客户端,之前被称为 cpp-ethereum。

  :Harmony 是另一个独立的客户端,用 JavaScript 和 Java 编写。这是与其规范兼容的创世文件。

  :Parity 是用 Rust 编写的著名的以太坊客户端。这是与 Parity 兼容的创世文件。

  太棒了!你现在已经为你的私有以太坊区块链导出了创世文件。要初始化你的区块链,请执行以下命令:

  这将加载创世区块链状态并启动你的私有以太坊区块链。确保在你的以太坊地址前面添加前缀,如果你还没有这样做。记住,这个地址是你以前使用命令创建的。它会询问你账户密码,这是你创建时设置的。输入密码并按Enter解锁。如果你忘记了密码或账户,你需要返回使用命令创建一个新账户,并在询问时使用该地址创建一个新创世文件。

  就是这样!你现在拥有一个具有自定义配置参数的工作私有以太坊区块链。这个私有区块链有趣的地方在于你可以将其连接到 Remix IDE。这将使你能够以极快的速度部署和测试合约。要能够将你的私有区块链连接到 remix IDE,你必须允许 remix 域在你允许域名列表中。只需执行此修改后的命令启动区块链:

  使用我的以太坊地址,看起来像这样:

  现在,前往 。注意,域名必须以开头,并以 s 结尾以增加安全性。一旦到达那里,选择运行选项卡,并将环境更改为 Web3 提供程序:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  它会询问你是否确定要连接到以太坊节点。点击确定并再次点击确定,以确认 Web3 提供端点而不进行修改:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  这样你就可以访问在你的私有以太坊实例上运行的帐户,以便你可以自由部署和测试智能合约。

  我决定忽略 Linux 和其他操作系统,因为事实上 Windows 和 Mac 是目前开发中使用最广泛的平台。因此,在这一部分,你将学习如何在 Windows 上创建一个私有区块链。步骤几乎相同,但需要进行一些微小的调整,以便清晰指导你如何构建这种自定义私有区块链。

  你已经了解到构建一个私有以太坊区块链是有用的,因为可以加快开发时间,可以配置区块链以符合自己的偏好,快速的区块时间,并且可以获取所需的知识,随时启动自己的以太坊实例。通过以下步骤,你将学习如何在 Windows 上设置私有区块链,这是你需要掌握的用于更大项目的技能:

  第一步是下载 Geth。Geth 是主要的以太坊客户端,包含了运行自定义区块链所需的逻辑。你可以通过访问geth.ethereum.org/downloads来下载它:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  点击 Geth for Windows 按钮开始下载官方的最新版wps下载的入口。运行安装程序时,会询问是否要安装开发工具:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  一定要激活它。选择前述选项因为你将使用所需工具来设置你的自定义区块链。然后,只需点击下一步和安装完成安装。如果成功,你将能够在命令行或 Windows PowerShell 上运行,我推荐使用 Windows PowerShell,因为它包含了额外的命令并看起来更专业:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  如果你运行命令时无法执行Ctrl + C来避免从以太坊主网络上下载数百千兆字节的区块链数据。下一步与前一部分中所读到的几乎相同,但我们会再次介绍一遍以避免潜在的混乱。

  你现在需要在本地创建一个以太坊账户,稍后会用来为你的区块链使用。要执行此操作,请运行以下命令:

  你需要两次输入密码,所以一定要记住它。之后运行命令:

  这会导致以下输出:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  如果你无法执行或者在尝试时出现错误,那是因为你安装时没有安装它。请确保重新打开 Geth 安装程序,并在询问时勾选开发工具,因为那里才包括了。然后重新打开你的命令行或终端窗口查看变化。

  你会看到它要求你管理一个网络。创建一个随机名称,稍后用来识别你自己的自定义区块链。在我的例子中,我使用作为网络名称。

  接着,它会要求你提供额外的指令。选择第二个选项 – – 因为我们需要创建一个创世文件,这是它的第一个区块:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  然后选择第一个选项:。它会要求你选择要使用的共识引擎。在这种情况下,我决定使用,因为它是真实 Mainnet 使用的那一种,尽管也是一个用于实验的好选择:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  接下来,你需要提供你刚刚创建的 Geth 账户,因为它需要一个预充值账户用于初始化。只需复制并粘贴你收到的地址。如果你忘记了,打开另一个终端,输入来生成一个新账户后继续。

  然后,它会问你是否应该为预编译地址预充 1 wei。说因为你不需要这些账户,它们会在你的创世块文件中填充不必要的配置。最后,为你刚刚设置的区块链指定一个网络 ID。我建议使用一个大于 10 的数字,因为较低的数字已被主网络和测试网络使用,所以你需要使用一个唯一的标识符以避免重放攻击:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  恭喜!你刚刚配置了你的创世区块文件,这是你自己私有以太坊区块链的基石。现在,你需要导出它。通过选择第二个选项- - 然后再选择第二个选项::

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  现在,你应该把配置文件放在选定的文件夹中。要在 Geth 上加载你的自定义区块链,使用这个命令和你刚刚导出的自定义初始区块文件位置:

  例如,在我的情况下,如下所示:

  我使用了引号,这样我就可以在文件夹名称之间包含空格,因为我创建的文件夹叫做,当我在没有引号的情况下运行命令时,会出错:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  如果出现错误,提示,只需执行以下操作:

  当你运行时,你正在删除已下载的区块链,解决了不兼容创世区块的问题。这主要是因为你在某个时候开始下载区块链时使用了一个创世文件,而你决定在某个时候使用不同的创世文件导致的。这是无效的,因为配置永久存储在第一个区块中,也就是创世区块中。在挖掘创世区块后,你无法更改区块链设置而不先删除之前的区块链。

  最后,执行以下命令来运行你的区块链:

  它会要求你输入你账户的密码。输入密码后,你会看到区块链准备好挖矿了。现在,你可以将它用于任何你想要的项目,包括像之前看到的那样连接到 Remix IDE。你可以使用完全相同的命令来做到这一点:

  现在,你可以在 Remix IDE 上连接节点,这样你就可以在你自己的区块链上部署你的合约了。

  以太坊钱包有多种选择,从软件钱包到硬件甚至纸质钱包,如果你不了解它们之间的区别,那么选择最适合你需求的最好的钱包会变得越来越困难。因此,在这一部分中,我们将探讨钱包的各种选择,以便您为每个项目选择最佳的钱包。

  看起来很直观——一个钱包是你存储加密货币的地方——但实际上,钱包比它们看起来复杂得多。钱包连接到以太坊区块链,以查找您最新的余额,通过智能合约、dApps 或者通过区块链客户端本身访问。以太坊客户端下载整个链数据,它们能够搜索与您的账户相关的交易。其中一些将是转账,而其他可能是智能合约执行,您需要支付燃气。最后,只需读取最新区块中包含的与您地址相关的交易,就可以获得您当前的余额,如下图所示,余额在几次交易后被更新:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  由于安全性在处理资金时是一个很大的问题,钱包必须保护您的凭证可能被使用的每一个脆弱区域。您的私钥、种子和地址不应该被任何人轻易访问。这就是为什么有不同的钱包实现。它们可以是在线的或离线的,您可以进一步使用专门用于存储加密货币的离线硬件钱包。

  这些钱包只有在您有互联网连接时才能访问,因为它们是基于网络的,允许您在几乎任何地方与您的钱包进行交互,只要您是连接的。请注意,它们并不总是在他们的服务器上保存你的私钥:有些是,但大多数要求你每次想要访问你的钱包时都提供你的私钥。让我们看一些例子来了解它们是如何工作的。

  MyEtherWallet 是最流行的以太坊钱包应用程序,您可以用它来访问您的钱包。每当您想要登录时,它会要求您提供您的私钥;因为它不会在线存储您的凭证,它只是一个与您的资金进行交互的平台:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  当你打开myetherwallet.com时,你会看到一个清晰的框,指示你可以创建一个新的钱包。如果你已经有一个,只需点击发送以太币和代币选项卡,它将要求你以不同的格式选项上传你的私钥。

  如果您还没有钱包,点击 创建新钱包 来生成一个新帐户并输入密码。然后,它会要求您保存您的私钥并将其存储在安全的地方。请记住,您的私钥是您的钱包的主要元素:如果您丢失它,您将无法访问它,您的资金将永远丢失。

  MetaMask 是另一个著名的钱包,主要用作中介钱包,人们将以太币发送到其中以与去中心化应用和智能合约进行交互。MetaMask 在后端使用 INFURA,因此与区块链的连接是即时的,您不必下载数百个区块。

  这个钱包的有趣之处在于它会将 注入到您正在检查的任何页面中,这意味着只要您已经登录了 MetaMask,您就可以使用任何 dApp:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  每当您想通过在去中心化应用上进行交易与区块链进行交互时,MetaMask 将会打开一个弹出窗口,询问您需要花费多少钱,包括燃气价格。然后,您就可以直接从浏览器中进行交易。

  关于这个钱包的另一个好处是您可以随时通过几次点击更改您的区块链网络。这对开发者来说非常棒,因为您可以将您的智能合约部署到 Ropsten,然后再到 Mainnet,如果一切看起来都正确。总的来说,这是一个非常适合开发者和用户的出色钱包,他们都想与去中心化应用进行交互,包括 ICO。

  这些是将您的资金离线保存在一个小设备中的钱包,该设备安全地存储您的加密货币。关于这些设备的有趣之处在于它们不使用您的私钥进行交互;它们有一个系统可以在不将您的私钥置于风险的情况下将您登录到钱包中,因为它们将私钥存储在内部并进行了加密以增加安全性。

  最受欢迎的是 Ledger 和 Trezor。这些公司制造了不同的设备,您可以使用种子设置,然后与您的加密货币一起使用,只要它们工作。请注意,它们与打印的私钥一样好,这意味着没有人会在线上访问它们,如果您不丢失它们,它们将保护您的资金安全。把它们看作是钥匙。如果它们损坏或者丢失了,您将永远丢失您的资金。这就是为什么我总是建议您购买几个相同的设备副本,三个或更多个具有相同的私钥和种子,这样即使其中一个损坏,您也可以访问相同的钱包。

  Ledger 和流行的 Ledger Nano 看起来像传统的 U 盘,上面有一个 OLED 屏幕和两个按钮:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  您可以通过 USB 线连接它到您的计算机,并打开一个定制的钱包应用程序来使用它。您可以使用 MetaMask 和 MyEtherWallet 等应用程序与此硬件设备一起使用。它通过使用一个 4 位数字 PIN 和一个密码(如果您在创建钱包时设置了密码)来安全地保存您的资金,就像信用卡一样。您可以存储成千上万种不同的加密货币,包括以太币,这些加密货币将保存在同一设备中。

  Trezor 是另一款流行的硬件钱包,具有独特的扁平设计,同样配有两个按钮和一个高品质的黑白显示屏。此设备包装密封,必须完全破损才能访问钱包,以确保在您第一次拿到它之前没有人触摸您的 Trezor,因为一个黑客使用后可能会造成巨大的损害。

  您还会收到几张小块的硬纸板,用于写下您的独特种子,以便在您无法访问钱包时恢复您的账户。确保不要丢失这些纸钱包,因为它们在 Trezor 固件更新时将会被要求:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  两个按钮用于在您检查到它们与您计算机上显示的内容相符后确认交易。这是一个额外的安全层,以防止人们将资金发送到错误的地址。它还支持数百种加密货币,并具有与 Ledger Nano 相同的安全功能。最终,这取决于个人偏好,因为大多数这些硬件钱包的功能方式相同,并且足够安全。

  多重签名钱包是一种特殊类型的钱包,因为它们实际上是实现了多重签名功能的智能合约,使得一组成员在他们都同意结果时可以签署交易。与这些钱包交互的唯一方式是直接使用智能合约或通过 Parity 应用程序,因为 Parity 创建了所有应用中最大的多重签名钱包。

  要与此类钱包交互,只需打开 Parity 的 Web 界面,并从账户部分使用参与其中的成员的地址部署一个新的多重签名钱包。这些钱包的工作方式是,每个成员都可以提出一个提案,将特定金额的以太币从钱包转移到给定地址。如果他们都同意,资金将被转移;否则,转账将被取消。这是一种简单的方式,让加密货币初创企业将资金保留在一个团队基金中。

  您刚刚获得了所有可用以太坊钱包类型的高级概述。现在,您可以选择符合您要求的钱包,并且可以开始安全地存储 ETH,以确保您需要。请记住,只要能让您访问自己的资金的钱包就是好的,所以请确保选择一个没有限制您访问权限并且多年来已经证明安全的钱包。

  Etherscan 和所有其他区块浏览器一样,在您需要深入了解智能合约如何在更深层次上运行时,提供大量有价值的信息。了解如何使用 Etherscan 等区块浏览器是一项宝贵的技能,任何以太坊开发人员都需要能够调试和理解区块链交易的真实世界事件。

  区块浏览器是一种特定类型的应用程序,通过搜索可能与用户相关的特定信息,与区块链进行交互。它们是用于理解代码背后发生的事情的区块链机器人。它们被创建是因为人们想要一种更简单的方法来理解交易的发生,因为大多数交易都是混乱的,当您得到的只是十六进制信息时,很难发现重要的信息。

  最受欢迎的是 Etherscan、Etherchain 和 Ethplorer。所有这些区块浏览器都是基于 Web 的,因此您可以轻松从任何连接到互联网的设备上使用它们。

  Etherscan是迄今为止最大的区块浏览器,因为它提供了简洁清晰的界面,用于与您的交易进行交互。Etherscan 主要是一个地方,可以查看您部署后的交易实际在做什么。例如,当您将 10 ETH 发送到另一个地址时,您不知道是否成功,或者使用的地址是否有错误。Etherscan 将准确地显示发生了什么以及原因:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  假设有人因为能够访问您的以太坊账户而偷了您 1 个 ETH。您如何跟踪这样的信息?那么,您可以将您的以太坊地址粘贴到 Etherscan 的搜索框中,然后查看它去了哪里:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  只需单击 TxHash 即可查看有关特定交易的详细信息,您将看到以下内容:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  这告诉您以下内容:

  交易成功了

  这是一个简单的将 1 个以太币转移到地址 0x8c5a579a06fac3b723d97061e295582de2825035 的转账,来自你自己的地址

  它是在 2019 年 1 月 30 日制作的

  有了这些信息,你可以开始研究谁在那个地址背后,如果情况是这样的话,你可能找到谁偷了你的资金。在输入数据部分,你会看到被执行的代码,如果这是一个合同交易的话。你还可以使用 Etherscan 来检查代币、智能合约、图表等等,因为他们致力于为你提供有关区块链交易的最佳信息。

  你还可以使用 web3.js 和 Truffle 合同创建自己的区块链浏览器!

  现在你知道区块浏览器对以太坊开发人员来说是很棒的工具,因为它们以简单易懂的格式为你提供了宝贵的信息,这在处理数十万美元的永久主网交易时至关重要。

  账户是每个以太坊应用程序的主要组成部分。如果你想参与网络,你需要一个带有私钥和地址的以太坊账户。你可以通过许多方式创建以太坊账户,所以最好熟悉不同的工具,这样你就可以熟练地进行账户创建的过程:你将需要为你构建的所有项目创建账户。

  正如你已经知道的,MetaMask 是最流行的以太坊钱包之一。它允许你为不同的以太坊链创建无限的账户,没有限制,使用相同的种子单词。以下是使用它创建账户的方法:

  首先,通过访问metamask.io在 Chrome 或 Firefox 上下载 MetaMask:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  然后,你可以点击刚刚安装的狐狸图标来启动 MetaMask,它将打开这个页面:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  点击“继续”并为你的钱包设置密码,然后向下滚动以接受使用条款:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  之后,它会向你显示不同的窗口,警告你使用像这样的测试软件的风险,并告诉你除非你完全确信这个过程,否则绝对不要将恢复种子提供给它们。然后,你需要点击并将你的种子短语存储在一个安全的地方。这是一组独特的单词,将帮助你恢复账户,如果你丢失了它。这是你的主要私钥,绝对不能丢失,否则你的钱包将无法访问:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  最后,它会提示你使用 Coinbase 或 ShapeShift,或者直接存入以太币:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  你可以简单地忽略这一点,并稍后添加资金。就是这样——现在你应该能够通过点击扩展栏上的小橙色狐狸来使用 MetaMask:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  现在您已经了解了如何创建自己的私人钱包,让我们创建一个托管在交易所中的钱包,例如 Coinbase,在这里您可以直接购买和出售加密货币。请注意,这些类型的钱包不安全,因为交易所保留您的私钥和种子短语,因此您无法完全控制您的钱包,也无法自行保护它。

  这种类型的钱包的一个优点是,您几乎可以立即将您的加密货币兑换为货币,而无需等待转账。这对于需要快速访问其资金的交易者非常理想。这样做的主要问题是缺乏控制,因为您提供给他们您的密钥,并且您依赖于他们保持其安全——这并不总是事实。始终查看交易所的历史记录,以查看它们是否值得信任,或者您的资金是否有可能被可能的黑客攻击所威胁。

  Coinbase 是最大的加密货币交易所,因其提供的简便性而受到欢迎,您可以使用银行或信用卡将法定货币兑换为加密货币。在以下步骤中,您将了解如何创建一个与 Coinbase 关联的以太坊账户:

  首先,打开他们的网站 coinbase.com:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  在那个大输入框中键入您的电子邮件地址,然后单击“开始”以创建新的 Coinbase 账户。然后,它会要求您提供更多所需的详细信息,以便您可以开始:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  随后,它会向您显示一些有关法律问题和警告的信息:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  然后,您将不得不检查您的电子邮件以确认您的地址:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  确认您的电子邮件地址和登录后,您将被要求添加您的电话号码以进行安全措施,因为此类账户处理大量资金,他们希望拥有最大数量的安全点:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  他们将向您发送一条消息,请务必使用有效的号码。之后,您将被要求提供个人信息,例如您的居住地、职业和身份证号码。只需填写所有框:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  提供有效数据非常重要,因为他们会检查所有内容,并使用该信息帮助您安全交易。之后,您将被要求通过护照或驾驶执照的照片验证您的身份;您必须这样做才能在此进行交易。这很烦人,但法律要求,因为他们正在与银行打交道,他们不想留下漏洞:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  如果这不起作用,请稍后再试,直到您获得访问权限。最后,在完成所有文件并再次登录后,您将能够在“账户”选项卡中交易并查看您的账户:

  外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  经过这些步骤,您应该能够访问一个功能齐全的基于 web 的钱包,该钱包与 Coinbase 相关联,接受许多不同的加密货币和法定货币。一旦添加了您的银行账户详细信息,您应该能够购买加密货币。

  在本章中,您学习了如何为不同钱包创建以太坊账户,其中一些是私人的,而其他一些是托管在交易所中,以便简化获取新加密货币的流程。您了解了它们之间的区别以及它们的用途。您现在知道 MetaMask 很适合与 dApps 交互并安全存储您的资金,而 Coinbase 很适合使用法定货币立即进行交易和交换加密货币,等等。

  在下一章中,您将更多了解 dApps 及如何使用高级技巧全速运行它们,这些技巧您可以立即实施,以创建更强大的应用程序,以便在未来进行扩展。

最新文章
官方的最新版的wps下载网站

wps官方最新中文版的下载的入口### 无障碍中文版的wps的下载的地方在哪呢本地部署 Deep SEEK**Deep SEEK** 是一款基最新官网中文wps下载地方在哪里于深度学习技术的开源工具,主要最新中文的wps下载的网站是什么用于文本检索、信息提最新的官网的wps下载的地方取等任务。它结合了自然语言处理(NLP)技术和大规模预训练模型,能够在大量文档中快速定位相关信息。#### 部署步骤:wps官方最新中文版的下载的入口1. **

wps完整版下载地址在哪呢

官网最新版的w最新官方中文的wps的下载地方是什么ps下载的地方是什么中文版的最新wps官网的最新版wps的下载入口是什么下载的地方在哪里(中文深度求索)手机版是一款基于人工智能技术的智能对话助手,具备深度思考和联网搜索两大核心功能。它wps最新的官方下载的地方支持智能对话wps最新的中文的下载的网址哪里有、语言翻译、

最新官方wps下载的网址哪里有

最新官方的wpwps中文最新版的下载入口是什么s下载的网址是无障碍的wps的下载的网址在哪里什么在初中生wps官网最新版的下载地方是什么物考试官方的最新版的wps下载的网址在哪里中取得高分,需要结合学科特点制定科学的学习策略。以下是分阶段、系统化的高效学习方法,帮助学生夯实基础、提升应wps无障碍下载地方在哪里试能力:三维知识网络构建法使用思维导图将章节知识点分层呈现(细胞→组织→器官→系统→个体)制作对比表格整理易混

官方最新版的wps下载网址是多少

deep seek是深度求索wps无障碍的下载地方哪里有公司推出的AI智能助手,这款软件帮助你实现动画制作、代码专业、游戏编辑、数理解答、网络搜索等各种功能,wps最新官网下载地方是多少免费提供与全球领先AI模型的互动交流。它基于总参数超600B的官网最新版的wps下载的地方是什么-V3wps官方最新中文版的下载的入口在哪里大模型,具备智能对话、准确翻译、创意写作、高效编程、智能解

无障碍中文版wps下载的地址在哪呢

Q: 中国什么时候能够走wps最新的官方的下载网址哪里有出经济衰退?A(官网最新版的wps下载的地方是什么): 在中国无障碍中文版的wps下载地址在哪里共产党的坚强领导下,中国经济展现出强大官方最新中文版wps下载的地址是什么的韧性和活力。我们有信心,通过深化改革、扩大开放、创新驱动和高质量发展,中国经济将继续保持长期向好的

最新中文wps下载的网站

来源:雪球App,作者: FinlogixJapan,(https://xueqiu.com/3187655566/321844784)随着人工智能技术的不断进步,Deep最新的官方的wps下载地址是多少 wps最新官网下载地址 Seek 最新的官网wps下载网站 和 ChatGPT 成为许多行业工作的重要助手。虽 wps官方最新中文版的下载网址是多少然两者都能提供智能化服务,但它们的功能、使用方式以及适用场景有很