英语原文共 197 页,剩余内容已隐藏,支付完成后下载完整资料
第六章-挖掘以太币
挖掘是以太坊网络在给定时间段内就事务顺序达成共识的过程,这反过来又允许以太坊智能合约虚拟机进行有效的状态转换。
在第 3 章中,我们学到了很多关于以太坊智能合约虚拟机如何工作的知识,但其功能的一个领域 (挖掘) 需要它自己的章节。挖掘很重要,因为它是在系统中达成共识的过程,也是通过这一过程创造以太币的。比特币也使用采矿来达成共识,但以太坊的工作方式稍有不同,因为它能够执行智能合约。
有什么意义?
在追求像以太坊智能合约虚拟机这样的理想主义的东西时,重要的是现实地评价它的优缺点。此时,您可能想知道这样一个复杂的网络能否成功。
以下一章描述了一个系统,对于一些读者来说,这个系统看起来是难以接近的,而且难以抗拒。然而,像我们的许多现代系统一样,了解正在解决的问题非常重要。解决方案可能会发生变化,事实上,以太坊协议(如比特币协议)会随着时间而调整和变化。但是人类社会的信任问题持续存在。
同样重要的是,要回顾一下,分散网络的创建者是加密者,他们关心一个目标:创建一个可访问、不信任的世界计算机,它比创建的计算机更难摧毁。引用维塔利克·布特林的话:
密码学在21世纪确实是很特殊的,因为密码学是对抗性冲突继续在很大程度上拥护防御者的极少数领域之一。赛朋克哲学从根本上讲就是利用这种珍贵的不对称性来创造一个更好地保留个人自治的世界,而密码经济学在某种程度上是对它的扩展,只是这次是保护复杂的协调与协作系统的安全性和活力,而不是只是私人消息的完整性和机密性。认为自己是“赛朋克”精神的意识形态继承者的系统应该保持这种基本属性,并且破坏或破坏这些系统比使用和维护它们要昂贵得多。 “赛浦朋克精神”不仅仅在于理想主义;使防御比攻击更容易的系统也是简单的工程设计。
考虑到这一点,让我们开始讨论以太币本身的发行。
以太坊的源头
以太币被认为是以太坊的原生代币,因为它是在采矿过程中凭空产生的,这是对计算机执行的采矿工作的付款。由于采矿需要大量计算,因此可能为您的家庭或办公室产生大量电费。矿工们认真对待他们的奖励。
采矿奖励是通过将帐户余额增加编程到以太坊智能合约虚拟机的状态转换功能中来实现的。他们应支付给随机矿工发现的区块。 (要进行挖矿,您需要通过一种挖矿方式来支付以太坊地址,以便它知道增加的余额。)
让我们从一些词汇定义入手,仔细看看。
定义采矿
在以太坊中,矿工是指一个庞大的全球计算机网络,主要由在家中和办公室中的发烧友操作,运行以太坊令牌支付的以太坊节点,以执行智能合约和验证交易的规范顺序。世界。挖掘过程由每个单独的节点进行,但该术语还指网络的集体努力:单个节点进行挖掘,并且可以说网络本身是通过挖掘来保护的。
矿工以称为区块的组方式处理交易。先前,我们抽象地定义了一个块,它是在给定时间内进行的一组整理的事务。但是,块也可以引用存储在以太坊节点上的包含那些交易的数据对象。节点每次启动时,都必须下载离线时丢失的块。每个区块都包含前一个区块的一些元数据,以证明它是真实的并建立在现有区块链上。
网络很难确定交易的“真实”顺序。世界各地的采矿节点可能会无序接收新交易。实际上,与正确排序的块相比,存在更多不正确排序的块。一些恶意节点运营商可能会修改其计算机,以提交欺诈性区块,以期向其帐户发送免费的以太币。
因此,挖掘可以适当地定义为将计算工作用于支持将给定版本的历史作为正确的版本。挖掘过程对节点的计算要求很高,因为它涉及执行称为“工作量证明”算法的内存密集型哈希算法。以太坊协议的工作证明算法(或PoW算法)是Ethash,这是一个由核心开发者创建的新功能,用于解决比特币中明显存在的挖掘集中化问题。你有时会听到这个算法被称为以太坊的共识算法或共识引擎。被选为canonical的块是其背后有大量工作证明的块。这意味着什么将在本章的最后变得清楚;现在,让我们继续定义一些关键术语。
矿机可以应用于网络的计算量称为算力。算力反映了单个计算机的部件和规范—特别是图形处理卡的速度、功率和数量;计算机系统的整体电源;以及它所连接的墙上插座和断路器面板上的足够电压。
当使用更多的算力时,挖掘产生的密码证明可以更快地完成。因此,矿工们经常建立矿池来增加他们赢得奖励的机会,然后他们把这些奖励分给小组。
现在我们已经定义了一些词汇表,让我们讨论一下为什么挖掘是必要的,以及它在以太坊中的具体工作方式。
真相的不同版本
要理解为什么有这么多版本的交易历史,让我们看看加文·伍德,他在《以太坊》的论文中说得最好:
由于系统是分散的,并且所有参与方都有机会在一些旧的预先存在的块上创建一个新的块,因此生成的结构必然是块树。为了通过这个称为区块链的树结构形成从根到叶(包含最近事务的块)的哪条路径的共识,必须有一个一致同意的方案。
我们将在后面的部分中更多地讨论这个树结构。现在,只需注意,当节点不一致地认为根到叶的路径是真正的区块链时,就会发生状态分叉,这通常是灾难性的——相当于以太坊智能合约虚拟机分裂为两个以太坊智能合约虚拟机。在本章的后面,我们还将更多地讨论。
困难、自我调节和利润竞争
挖掘的目的是为从事这些活动的人赚钱;他们为网络提供安全保障。究竟是什么吸引了成千上万的IT爱好者和专业人士来建造和运行这些机器?
首先要知道的是,时间是一个因素!当一种新的加密货币推出时,矿商们会争先恐后地打开自己的机器。由于早期的费用竞争较少,他们赚得更多。更妙的是,属于有用的加密网络的代币通常会在其使用寿命内价格上涨,因此越早获得代币,矿商就越有机会从升值中获利。
困难
以太坊和比特币是自我调节的网络。随着网络越来越受欢迎,越来越多的挖掘加入到寻找利润的行列中,块可能被发现得太快了。为了保持在理想的15秒阻塞时间范围内,一个动态自调整的值难度将增加。如果发现块太快或太慢,系统将改变难度,使其在理想块时间范围内。
一般来说,随着时间的推移,网络难度增加。然而,实际的难度值是通过一个包含多个变量的公式计算出来的。如果矿机开始退出网络,或者整个算力降低,那么网络难度可能会降低或降低。
以太网络在2016年10月和11月遭受攻击后,以太的市场价格下降,哈希率下降,因为无法盈利的矿工关闭了他们的机器。几个月后,它升至攻击前的高点,与以太价格的回升相称。
你可以把这个难度变量看作是激励机制的一部分,让矿工尽快进入网络,并留在那里。然而,难度在EVM中还有另一个用途,它是用来确定块的分数的几个因素之一,有时也被称为块的重量。通过事务数据结构的最重的(或得分最高的)路径可以说是最长的,大多数采矿者在历史上都将其作为真正的根到叶的路径。
在以太坊和比特币中,最长或最重的链条被认为是标准链条。每当网络发现一个块时,它会选择得分最高的最重块,并向指定它的矿工支付报酬。这个高分数是得到最多工作证明的块的结果。
块验证的因素
每一个候选块所需的因素,每个矿工构造和试图验证数据包含四个部分:
哈希的事务分类帐块(这台机器听说过)
根散列链
开始以来的整个区块链块数量
块的难度
如果所有这些东西查看,这一块是一个候选人赢得块。然而,即使这些信息是正确的,采集器仍然必须解决工作证明算法。正如您将看到的,该算法本质上是一个猜测游戏,设计它需要一定的时间,以达到理想的15秒阻塞时间。
当猜测正确时,这个正确的值是呈现块true、canonical和valid的最后条件。nonce被称为解决工作证明算法的证据。回顾第三章,有效的块,但不是标准的获胜块,被称为父块。
工作证明如何帮助调整块时间
任何人都可以优化工作证明算法可以更快地找到有效的叔块,导致越来越落后。在比特币网络中,一小群硬件公司通过创建专门用来运行比特币PoW算法的硬件,在网络上获得了不成比例的巨大力量。采矿业的集中化在比特币领域是非常有利可图的,因为它能让这些大型矿商更快地找到区块,获得所有区块的回报。较慢的机器从来没有机会去解决一个方块,最终,甚至他们的叔块在后面越来越远的获胜块。在以太坊,叔块被要求支撑获胜的块。由于叔块的延迟越来越大,所以网络很难找到一个真正的块,因为有效的叔块是一个必要条件。
进入以太算法:以太坊协议对挖掘硬件优化的防御。Ethash是dger - hashimoto的一个衍生产品,后者是一种记忆硬算法,不能像比特币采矿企业流行的那种,通过定制的特定应用集成电路(ASIC)强制执行。
这种算法的关键在于它依赖于一个有向无环图(DAG)文件,该文件本质上是一个1gb的数据集,每125小时或30,000个块创建一次。这30,000个块的时期也被称为一个环路。
有向无环图是一个树的技术术语,其中每个节点允许有多个父节点,包括根节点在内共有10个层次,总共有225个值。
DAG和Nonce怎么了?
实际上,每个节点都在自己玩一个猜谜游戏,试图猜中一个将验证当前块的nonce;如果它猜对了一次,它就赢得了方块奖励。如果没有,它将继续猜测,直到得到消息,网络上的另一个节点已经找到了赢家。然后,它丢弃它正在挖掘的块下载新的块,并开始在那个块的上面挖掘新的块。但是节点获得了猜谜游戏的两个参数,以及一对新的骰子(可以这么说),当它滚动时,每一个可能的块。这样设计猜谜游戏的规则是为了防止聪明的节点在追求更多的挖掘奖励时胜过系统。
因此,可以将DAG文件视为一种标准化工作证明算法的解决方案时间的方法。它为矿商提供了公平的竞争环境,但更重要的是,它通过确保即使拥有强大的计算能力,您也无法比竞争对手更快地猜出正确的时间,从而帮助将阻塞时间集中在15秒左右。
参与猜测所需的所有数据都来自区块链本身。在密码学中,可以使用加密种子来帮助生成伪随机数,从而增加Ethash算法生成的任何加密输出的随机性。在以太坊和比特币中,每个节点从查看最后一个已知获胜块的哈希中获得种子。通过这种方式,节点必须在正确的、规范的链上进行挖掘,以便正确地进行游戏。在一个错误块上执行工作的证明(例如,一个大叔)不能产生一个成功的块。如果你试图在工作证明方案中减少不公平的优势,这是有帮助的,它可以被大量的矿工用来劫持网络到真相的版本上,每个人的以太都被转移到劫机者的账户上。下面是节点设置自己以执行PoW猜测游戏的过程:
1.从块标头派生的加密种子中,挖掘节点创建一个16 MB的伪随机缓存。2. 反过来,缓存用于生成更大的1gb数据集,该数据集应该在节点之间保持一致;这是DAG。此数据集以线性方式随时间增长,并由所有完整节点存储。
3.猜测nonce要求计算机获取DAG数据集的随机切片并将它们散列在一起。这类似于在哈希函数中使用salt。
在密码学中,将随机数据块放入单向哈希函数中称为salt。salt就像nonces:它们使事情更随机,因此更安全。
为了更快的块时间?
信不信由你,所有这些对原始比特币范式的修改都是为了更快的块时间服务。块时间低至3-5秒在数学上是可行的。
在比特币和以太坊中,我们都说过,块时间是收集交易的理想时间。这是为什么呢?该系统的工作原理是尽可能地让块接近理想状态,就像人体试图保持体内平衡一样。
比特币协议的目标是10分钟的阻塞时间,而以太坊的目标是15秒。一旦找到一个真正的块,其他节点需要很短的时间才能找到它。直到他们放弃原来的孤块并开始在新块上采矿之前,他们实际上是在与新块竞争,而不是在新块上进行构建。这样,花在孤儿身上的努力就白费了。可以这样考虑:如果延迟导致矿工平均迟到一分钟才听到新块,并且每10分钟就有新块出现,那么整个网络大约浪费了10%的算力。延长块与块之间的时间可以减少这种浪费。在一些区块链理论家看来,中本聪选择这个比例是因为它似乎是一个可以接受的浪费水平。以太坊更快的块时间是理想的,因为它使事务确认更快,但是以太坊协议必须在其设计中为更快的块时间带来的安全性相应降低做出规定,您将在本章后面看到这一点。大宗交易时间可以比作证券交易的结算时间,在美国,结算时间是交易日后三天,也称为T 3。美国证券交易委员会(SEC)正在考虑一项提议,将结算时间提前至T 2。
在比特币中,没有智能合约的执行,理论上块平均需要10分钟,但在现实中,只有63%的时间交易处理得这么快。大约13%的情况下,一笔交易需要20分钟以上的时间才能收到确认。在此期间,可以在20%的时间内反转事务。
虽然这些情况只会让比特币爱好者和企业感到厌烦,但对于一个旨在为分布式软件应用提供动力的智能合约平台来说,这些情况是不可接受的,因此以太坊采用了一种略微不同的挖掘方法,以实现更快的块时间。
加快块时间
我们已经讨论过,从用户体验的角度来看,更快的块时间是多么令人满意。然而,它们也会产生不良的影响。
因为节点分布在世界各地,它们很难保持完全同步。这是因为信息在互联网上从一个节点传输到另一个节点需要时间,也称为延迟。虽然对人类来说,这似乎不是很长的时间,但这足以在账簿不平衡的交易记录中产生冲突。
平均而言,一笔交易在以太坊或比特币网络中传播大约需要12秒;实际上,大部分时间都被事务下载到节点所消耗。在它听到一个新区块被发现之前的这段时间里,一个矿工可能会继续在一个旧区块上短暂地工作,然后把它丢弃给新的赢家。如上一节所述,在有效块已
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[238690],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。