主页 > imtoken官方app > 什么是以太坊节点和分片? --2020/03/27
什么是以太坊节点和分片? --2020/03/27
矿工与节点
为简单起见,所有矿工都是全节点,但并非所有全节点都是矿工。 矿工需要运行全节点才能访问区块链。 任何运行全节点的人都不需要挖掘区块。
以太坊面临的可扩展性问题是什么?
以太坊网络如何达成共识? 每一次计算都是由网络中的每个节点进行的,当它们都达成共识时,交易就被认为是好的。 现在,这可能运作良好,但从一开始,以太坊就变得非常流行,交易数量也在稳步增长。 通过 Etherscan 查看此图:
图片来源:Etherscan
现在,虽然这是一件好事,但网络在达成共识之前必须经过的计算数量成倍增加。 然后又来了一个问题。 由于某些企业重量级人物的支持及其 ICO 的流行,以太坊已被广泛采用。 结果,以太坊网络上的节点数量呈指数级增长。 事实上,它是具有最多节点的加密货币,因此也是最去中心化的。
事实上,截至 2017 年 5 月,以太坊有 25,000 个节点,而比特币只有 7,000 个! 这是3倍多。 事实上,从 4 月到 5 月,节点数量增加了 81%……几乎翻了一番!
图片提供:信任节点。
现在,您可能认为在网络中拥有更多节点将有助于加快交易时间。 嗯……再想想。
共识以线性方式发生。 意思是以太坊节点分红多少,假设有 3 个节点 A、B 和 C。
为了达成共识,首先A会做计算并验证,然后B会做同样的计算,然后是C。
但是,如果系统中有一个名为“D”的新节点,则共识系统将增加一个节点,这将增加总时间。 随着以太坊变得越来越流行,交易时间变得越来越慢。
事实上,在速度测试中,以太坊每秒仅进行 20 次交易,而 PayPal 的 193 次和 Visa 的 1667 次!
现在记住一件事,以太坊并不只是将自己设想为一种货币,他们的最终愿景是成为类似于新互联网的东西。 他们希望人们创建 Facebook 和 Youtube 规模的 DApps 以在他们的区块链之上运行。 为了实现这一点,他们将需要对可扩展性问题采取一些措施。
为了解决这个问题,提出了三个建议:
增加块大小
使用户能够使用不同的山寨币
碎片化
增加块大小
因此,一种解决方案是增加块大小。 虽然通过增加进入区块的交易数量肯定会提高性能,但结果可能会出现一些问题:
首先,这仍然没有解决节点达成共识速度较慢的问题。 事实上,随着每个区块交易数量的增加,每个节点的计算量和验证量也会增加。
为了适应不断增加的交易数量,需要定期增加区块大小。 这将使系统更加中心化,因为普通计算机和用户将无法下载和保存这么大的区块链。 这违背了区块链的平等主义精神。
最后,块大小的增加只能通过硬分叉来实现,这会分裂社区。 上一次以太坊发生重大硬分叉时,整个社区分裂,并创建了两种不同的货币。 人们真的不希望这种事情再次发生。
使用户能够使用不同的山寨币。
另一个建议是运行并行区块链而不是一个主区块链。 基本上,不是在一个主区块链上运行 50 个 DApp,而是有 2 个区块链,每个区块链运行 25 个 DApp。 这个提议有两个问题:
拆分链的哈希率是不明智的。 毕竟,一条链的哈希率决定了它对外部黑客的安全性和系统的安全性。
恶意矿工更容易在较小的链上获得 51% 的多数。
碎片化
最后,分片被确定为以太坊的一个选项。 在深入研究分片之前,让我们简单了解一下它是什么。 假设有三个节点 A、B 和 C,它们必须验证数据 T。而不是 A、B 和 C 单独验证整个数据 T,该数据将被拆分为 3 个分片:T1、T2 和 T3。 之后,A、B 和 C 将并排验证一个分片。 如您所见,节省的时间呈指数增长。
不管怎样,让我们深入挖掘吧!
什么是分片?
分片是一个取自数据库系统的术语。 让我们看看分片对数据库意味着什么。 假设您的网站有一个庞大的数据库。 拥有庞大的数据库不仅会使搜索数据变慢,而且还会阻碍可扩展性。 那么在这种情况下你应该怎么做呢?
如果数据被水平分区并转换成更小的表并存储在其他数据库服务器上怎么办?
图片来源:Dzone
是这样吗?
现在,您可能会问,为什么要水平分区而不是垂直分区? 这是因为表的设计方式:
看? 它是相同的表/数据库,但数据较少。 这些较小的数据库称为较大数据库的分片。 每个分片应该有相同的表结构。
区块链中的分片
现在,正如我们所看到的,以太坊共识的问题在于所有节点都需要为每笔交易进行所有计算和验证。 这使得整个过程非常缓慢和繁琐。 那么,分片有什么帮助呢?
考虑一下以太坊区块链的状态,我们称之为“全局状态”,它对所有人都是可见的。 让我们考虑一下这个全局状态的默克尔根。 (有关 Merkle 树和根的信息,请阅读有关散列的文章)。 这个状态根将被分解成分片根,每个共享根都有自己的状态。 这些状态将以 Merkle 树的形式表示。
这是一个看似简单的结构。
现在,让我们进入内部机制。
那么分片激活后会发生什么?
碎片
每个唯一帐户都在一个分片中
账户只能与同一分片中的其他账户进行交易
Vitalik Buterin 在 Devcon 中对分片的解释如下:
想象一下以太坊已经分裂成数千个岛屿。 每个岛都可以做自己的事情。 每个岛屿都有其独特的功能,岛上的每个人(即账户)都可以相互交流,并可以自由地享受其所有功能。 如果他们想与其他岛屿取得联系,就必须使用某种协议。
那么,问题是,这将如何改变区块链?
比特币或以太坊(预分片)中的普通区块是什么样的?
因此以太坊节点分红多少,有一个区块头和一个包含该区块中所有交易的主体。 所有交易的默克尔根都在区块头中。
现在,想想看。 比特币真的需要区块吗? 你真的需要区块链吗? 中本聪可以创建一个交易链,可以说是一个“交易链”,只需将先前交易的哈希值包含在新交易中即可。
他们将这些交易安排在一个区块中的原因是为了创建一定程度的交互并使整个过程更具可扩展性。 以太坊的提议是他们将其更改为两个级别的交互。
一级
第一层是事务组。 每个分片都有自己的一组交易。
图片来源:Hackernoon
一个事务组分为事务组头和事务组体。
事务组标题
标题分为不同的左右部分。
左边部分:
Shard ID:事务组所属的shard的ID。
Root Before State:这是应用事务之前分片 43 根的状态。
发布状态根:这是应用事务后分片 43 根的状态。
收据根:应用分片 43 中的所有交易后的收据根。
正确部分:
右侧充满了需要验证分片本身交易的随机验证器。 它们都是随机选择的。
交易组标的
它在分片本身中具有所有事务 ID。
1 级属性
每个事务指定它所属的分片的 ID。
属于特定分片的交易表明该交易发生在该特定分片的两个本地帐户之间。
事务组具有仅属于该分片 ID 且唯一的事务。
指定前后状态根。
现在,让我们看看顶层(又名第二层)。
第二级
图片来源:Hackernoon。
不要害怕! 它比看起来更容易理解。
有普通的区块链,但现在它包含两个主要根源:
状态根
事务组根
状态根代表整个状态,正如我们之前看到的,状态被分解成片段,片段包含它们自己的子状态。
事务组根包含该特定块内的所有事务组。
第二类的性质
第二层就像一个简单的区块链,它接受交易组而不是交易。
事务组仅在以下情况下有效:a) 状态前根与全局状态中的分片根匹配。
b) 交易组中的签名全部通过验证。
如果事务组进入,则全局状态根成为该特定分片 ID 的后状态根。
那么跨分片通信是如何发生的呢?
现在,还记得我们的岛屿类比吗?
碎片基本上就像岛屿。 那么这些岛屿是如何相互通信的呢? 请记住,分片的目的是使大量并行事务同时发生以提高性能。 如果以太坊允许随机跨分片通信,那将破坏分片的全部目的。
那么跨分片通信需要遵循什么协议呢?
以太坊选择遵循跨分片通信的收据范式。 看看这个:
图片来源:hackernoon
正如您在这里看到的,任何交易的每张收据都可以通过交易组 Merkle 根中的多个 Merkle 树轻松访问。 分片中的每笔交易都做两件事:
改变所属分片的状态
生成收据
这是另一条有趣的信息。 收据存储在分布式共享内存中,可以看到但不能被其他分片修改。 因此,可以通过以下收据进行跨分片通信:
图片来源:Hackernoon
实施分片的挑战是什么?
需要一种机制来知道哪个节点实现哪个分片。 这需要以安全高效的方式完成,以确保并行化和安全性。
Vlad Zamfir 表示,需要首先实施权益证明以使分片更容易。
节点在无信任系统上工作,这意味着节点 A 不信任节点 B,并且无论这种信任如何,它们都应该达成共识。 所以,如果一个特定的交易被分解成碎片并分发到节点 A 和节点 B,节点 A 将不得不提出某种证明机制来证明他们已经完成了碎片的工作。
什么是以太坊节点和分片:结论
随着 Ethereum 扩展并导致 Metropolis 和 Tranquility,分片对其增长变得越来越重要。 如果以太坊确实计划成为新的互联网,他们需要解决其可扩展性问题。 他们绝对需要实施和分片以确保他们的成长。 以太坊激动人心的时刻即将到来!
AMAZONPOLLY-ONLYAUDIO-START - 在本指南中,您将了解什么是以太坊节点和分片。 如果您想了解更多信息,请浏览我们的区块链课程。 如果你在去年以一种或另一种形式活跃于加密货币,你就会知道比特币和以太坊存在一个问题:可扩展性。 比特币通过激活隔离见证(Segwit)和硬分叉比特币现金解决了这个问题。 以太坊正试图以另一种方式解决这个问题。 他们希望在进入下一增长阶段时激活的众多协议之一是“分片”。 在我们理解这意味着什么之前,我们需要对网络和节点有一个扎实的了解。