本文详细探讨了轻客户端和完全验证节点之间的差异,指出不同区块链网络架构在去中心化和中心化方面的潜在影响,分析了以太坊在采纳分片技术和转向权益证明后可能面临的中心化趋势。值得注意的是,文章对比了比特币和以太坊在节点验证过程中的结构性差异,并对以太坊未来的可扩展性和去中心化状况提出了质疑。
你是不是在想这到底是什么意思?别担心,你会明白的。先去泡杯咖啡吧,这又是一篇长文。如果你还没读过这个,可以从这里开始:
以太坊区块链的大小已超过1TB,这确实是个问题\ \ (TL;DR:这与存储空间限制无关)\ \ hackernoon.com
以下是我与Vitalik在上述文章发表后进行的交流。尽管最初是由他对我文章的回应发起的,但从我的角度来看,这次交流的目的变成了提取他及许多以太坊爱好者不认为分片会削弱实施网络完整性的根本原因。幸运的是,他对我提出的问题进行了合作性的回答,这些问题是故意设计用来分解逻辑,以便我们最终得到这个半意料之中的回应:
我指的是节点。他知道我指的是什么,并作出了相应的回应。
我强调这一点是因为它很好地概括了整篇文章。
Vitalik: “艾瑟,现如今以太坊就是这样,分片切换后也不会有什么不同,只是某些事情会对某些人更轻松。”
我: “我完全不同意这种看法,这是我完整的反驳。”
这将是一场长时间的挑战,但不会太难。如果你关心理解这些内容,那就去读它吧。
与以太坊用户保持同步——对区块链大小问题的回应 \ \ 昨天 @StopAndDecrypt 发布了一篇 Medium 文章,讨论了以太坊区块链的增长及相关问题…\ \ medium.com
这里是Vitalik说分片是一个第1层扩展解决方案的样子:
vit - YouTube
Stop And Decrypt
217个订阅者
Stop And Decrypt
搜索
观看稍后
分享
复制链接
信息
购物
点击取消静音
如果播放没有很快开始,请尝试重启设备。
你已退出登录
你观看的视频可能会添加到电视观看历史记录并影响电视推荐。为避免这种情况,请在计算机上取消并登录YouTube。
取消确认
包括播放列表
检索共享信息时发生错误。请稍后再试。
0:00
0:00 / 0:41•现场直播
•
注意,扩展在这里是无上下文地使用,因此让我们提供一些背景。我们不能不断地使用“可扩展性”这个术语,而没有一个被认可的定义。即使不同的人对定义有所不同,做论证的人至少应当提供他们的定义。
当我在这篇文章中谈论扩展时,我说的只有一件事,在不牺牲去中心化的情况下增加功能性,并且总的验证节点集是网络去中心化程度最直接的表现之一。当讨论与基于区块链的网络的扩展相关时,关注其他方面要么是因为对其的误解,要么对此持不同意见,或者是出于任何人可以有的故意误导的原因。
首先明确这一点很重要,因为理解以下不同扩展类型及其在去中心化网络的应用需要这个基础。
相反还有:
“节点”这个术语经常被提起,但通常对试图跟上这一切的外部人士仍然没有定义。我有一个朋友试图告诉我,Nano 让每个人都能运行一个节点,拥有自己的区块链。人们就是不知道自己在说什么,因为正确信息并不随时可得。增加节点数量是毫无意义的,如果它们不是正确的种类 的节点。而当我说你被销售的是一个扩展内部的解决方案时,是因为这些重要的节点数量由于这一变化会减少。并不一定是立刻发生,而是随着时间的推移,我也会提到这一点的重要性。
https://twitter.com/lopp/status/1001903809004736513 /// 如果你对“比特币” Twitter 帐户为何封锁我感兴趣,可以阅读我的 BCash 文章。
我想做的第一件事是为这些节点的重要性提出一个简单的理由,然后我将向你呈现对其的常见反对意见。我会简要回应这些论据,然后稍后深入探讨比特币网络如何实际运作,并且你将能通过我的解释看到这些反节点论点的不足之处。
提醒一下:如果你来这里想了解以太坊,而不想了解比特币的网络是如何运作的,那么你应该承认你所投资的任何钱或你浪费在以太坊上的任何时间。
在比特币中,所有节点都完全验证。如果有人试图提交任何不有效的内容,它将不会在网络中传播。每个节点都是白血球。这是一个区块链网络没有比这更好的安全性。
对此我将通过直接深入比特币的网络是如何工作的来回应。你会非常容易地在“比特币网络拓扑”部分结束时看到这个问题的答案。我还将这部分单独作为独立文章发布,因为关于这个主题的误信息传播非常猖獗。(这一切最终都会与分片和以太坊回到一块,相信我。)
为了在文章的其余部分澄清这一点,当我说去中心化时,我指的是(c) 在以下图示中 (但在“4D”而不是2D),这个图我是偷来的,Vitalik用它来说明这幅图有多糟糕。:
边缘只是一个节点与另一个节点的连接。以下图示是各由16个节点构成的网络。相同数量的节点,但一个连接边缘更少。另一个则每个节点与其他所有节点都有连接。
这两者之间的区别是什么?
第一个有足够的边缘来有效传播_(我们稍后再讨论)到网络中的每个节点,并且没有节点可以被审查,因为这些连接(边缘)_被适当地分布。
另一个网络呢?
这与私密相对立,也与安全相对立。
在边缘方面,肯定有一个“足够”的要求,如你稍后所见。我在之前的文章中也讨论了传播而且情况还在改善,尽管这些“有限”的边缘。它通常是那些诈骗艺术家所使用的一个论点(他们甚至是维塔利克经常指出的),试图在诈骗时显得聪明:
他还在这里将第1层网络和第2层网络进行了比较,就像个傻瓜一样。
“需要多少才能安全”的论点在我看来,可能是某人没有理解更大图景的最大迹象。通过提出这个问题,他们已经默认收益条件,即需要有_某些_节点才能被认为是安全的,而现在他们只是在尝试把论点引向找出这个值的方向。有时候他们是真诚的,其他时候则是在转移话题。
这是一些简单的问题,我并不指望你有答案。假设我们双方共同确定并同意这个数字是2万条全节点。
我的观点是这没办法做到。你不能在代码中编码网络以“停留”在某个特定的节点数量上。我非常倾向于相信这一点,我没有看到任何好的反对意见:任何区块链网络,如果协议保持不变且需求持续增长,随着时间的推移将去中心化_或_中心化,具体取决于它们是如何构建的。所以如果去中心化是你想要的特性,协议需要固有去中心化。这意味着协议需要以确保验证节点数量_随时间增长_的方式进行设计。如果增长是得以保障的,那就不是确保收缩,这将引入我接下来的部分。
我想在这一部分开始澄清一些关于这些链如何进行比较的混淆。有些关于我和其他人过去使用的比较方法的盐是公认的,因此我旨在给你一个更公平的比较,实际上让它看起来更糟。
希望以下内容是清晰的,但我会进一步阐述:
https://twitter.com/StopAndDecrypt/status/1000874907448827904
https://twitter.com/StopAndDecrypt/status/1003807436967481344
通过一个固定的区块大小,随着技术的发展,运行一个节点变得越来越简单,因此,总的节点数量将随时间增长。这就是我提到的“固有去中心化”的含义。当比特币升级到Segwit时,运行一个进行完全验证的节点的要求确实上升了,但只是边际水平。它并没有将任何人踢出网络,也没有让运行先前版本节点的人变得更困难,但最重要的是,它仍然固有去中心化:
当为Segwit更改大小时,做这件事情的原因并不是单纯“增加空间”。现在,比特币的区块大小是受到监管的。上限是设定好的,并且不会更改。如果块太大,它就是无效的。这是理想的,因为它确保了数据量在时间上的静态性。没有人对这一点投票,这并不是一个51%对49%的情况。如果它太大,它总是无效的。
网络无法判断你的节点是否挖了一个块,因此,在这方面协议强制隐私平等,但区块大小限制则在物理层面上强制执行平等,这意味着无论他们是否挖矿,验证者之间没有区别 (关于这点后面会再讨论). 他们处理交易的能力并不会将他们隔离,因为这对每个人的节点而言都很简单。移除区块大小限制会将这些节点分开,造成一个层次结构,其中一组可以通过创建区块、切断另一半网络而强制切断其他节点,从而在长期内毁掉网络。
改变比特币的设计以允许变数的区块大小将导致:
更多的变量意味着更多的方式来区分和分隔节点类型。
我还想指出,无论上限设定在2MB还是8MB,总会在某个点上技术让这个区块大小可行,但那是另外一个争论,比如我们_可以_将区块大小设定为50TB,然后“静待其追赶”,但到那时,比特币就会变得中心化而被破坏。上限应当在哪里是不同的论点,但我现在唯一想提出的就是需要一个不会随着时间变化的硬上限,如果超过这一限制,区块都是无效的。
这引出我的下一个例子:以太坊及其任意的“ gas 限制”:
没有类似于上图的规则的限制,或者在以太坊中,区块大小持续增长,技术永远无法足够快速地增长,以有效跟上,确保你能继续运行节点。这就是我所说的“固有中心化”。由一小群中心化参与者决定的无界增长要求是不好。即使有分片,这个限制也会随着时间的推移而增加。分片可能在分割工作上暂时成功,但以太坊的固有方向始终向南:
以太坊区块的大小由矿工决定,他们为区块设置gas限制。如果你不理解以太坊的gas限制,以下是一个非常简单的解释,可能会让一些技术人士不满:
在以太坊中,区块不是按字节限制,而是以它能消耗的gas单位数量来限制。拿这个例子来说,假设是1000个gas单位。
当你想创建一个交易或“合约”时,这个过程是需要消耗gas的。假设你的交易耗费2个gas,而矿工耗费5个gas。我们都能适应在一个区块里,此外还能有993个gas单位的交易。
因此,当矿工生成区块时,他们只能包括1000个gas单位的交易,否则网络将认为这是无效的。
但是,他们并没有限制在1000个单位上……
他们可以生成一个1200单位的区块。然后他们可以生成一个1500个单位的区块。共识规则允许他们逐步增加此限制而不被认为无效。其他矿工可以生成更小的区块,这有助于降低平均值(因此限制),但这些只是其他矿工。如果你在这些共识规则下运行的是一个完全验证的节点,你没有能力决定这个指标。矿工在这个网络中高于所有其他节点,而Vitalik甚至没有否认这一点。
由于以太坊网络内按代码对节点的区分,以太坊是固有中心化的。这是比特币和以太坊当前存在的网络属性之间的基本区别。以太坊的完全验证节点没有平等的投票权,因为它们的外部能力使其能够更改协议,从而影响其他节点。在比特币中,没有任何投票权会影响你运行节点的能力。
我认为,值得注意的是,如果没有国家通道网络技术,如闪电网络,我的说法在比特币中就不成立。像这样的固有属性不仅限于节点数量上涨/下降。我也认为,尽管状态通道网络在以太坊中也可以存在,但以太坊面临的问题更加严重。
接下来的两个部分将详细介绍比特币的网络拓扑,以进一步阐述这一概念,然后直接讨论由于谁可以和不能投票而导致的以太坊网络的差异。
比特币不仅仅是一个区块链,我想帮助你先理解比特币区块链网络的设计,因为这是最多简约的一部分,而其简约的基本特征对你今后的文章尤为重要。我所说的区块链网络是因为比特币上方还有一个支付通道网络 (闪电网络),这个网络并不会影响区块链网络的结构。不过在这篇文章中我并不会讨论比特币的闪电网络,因为它与我将在此观点稍作讨论并不相关。
下面是一个缩小到1000个完全验证节点的比特币网络的粗略示例 (实际上目前有115,000个)。每个节点在这个图中与其他节点有8个连接,这是客户端未做任何更改时默认的连接数。如果你运行一个节点,它就会在这里面,你的节点也在这里面。Coinbase的节点在里面,Bitmain的节点在里面,如果中本聪还在,他的节点也在里面。
请注意这只是一个图示,实际的网络拓扑(可能)不同于此。一些节点有比默认连接数更多的边,而另一些可能会选择连接有限的数量节点或只能维持在其他一个单一节点的连接。没法了解它实际是什么样子,因为 它是以隐私为中心设计的 (尽管有些监测公司确实试图接近近似),并且节点可以也确实定期更换它们的伙伴关系。
我以这个图开始是因为我希望你理解,这些节点之间没有区别,因为它们都完全验证。内部节点和外部节点是没有不同的,它们都有相同的连接数。当你启动一个全新的节点时,它会找到其他节点并成为这个蜂巢的一部分。在这个图中,任何一个节点到另一个节点的最长距离是6。在现实中,由于寻找新节点并不是一个完美的自动化过程,不能均匀分配,因此这段距离会有一些偏差,但通常情况下,向网络添加更多节点并不会改变这一点。总有6度凯文·贝肯,如果你的交易是有效的,经过6次跳转,我的交易就会到达几乎每个节点手中。
我将从这个群体中选取“我的”节点并将其拖出,以演示当我创建一个交易并向网络公告时会发生什么。下面,你将看到我的节点在最右边,然后你会看到与我相连的其他8个节点 (伙伴)。
当我创建一个交易并“发送到世界”,实际上是只发送给这8个伙伴。由于比特币从头开始设计成每个节点都是完全验证的,当这8个节点收到我的交易后,它们会检查它是否有效,在将其发给_它们的_8个伙伴之前,如果我的交易无效,它将永远不会传播整个网络。我的伙伴永远不会将有问题的交易传递给他们的伙伴。他们甚至不知道我创建了这个交易,也没有办法告诉,并且将所有数据视为平等,但如果我反复向我任一8个伙伴发送无效交易,它们最终会封杀我。这是它们出于防止我对它们的连接进行垃圾邮件而自动完成的。无论你是谁,或者你公司的规模如何,如果交易无效,你的交易都不会传播。
现在假设你不是在运行一个全节点,而是使用轻客户端。各种轻客户端存在于桌面和手机上。其中一些是Electrum,Armory,Bread和Samourai Wallet。轻客户端依赖于特定节点。有些可以都设置为随着时间的推移更换其连接,但它们最终仍然是紧耦合的。以下是耦合的样子:
我之所以展示这个,稍后在本文中将变得更为明显,但是我想让你注意到这只是一个图示,用一个恰好在边缘的节点来演示耦合是很容易的,但实际上并没有_真实的_边缘,而耦合在该图示中的任何地方都算是耦合。这个图示中,黄色强调的是被耦合的节点是绿色的,蓝色点是轻客户端。所有从轻客户端发出或接受的信息都通过它所耦合的节点进行。它们依赖于那个节点。它们并不是网络的一部分。它们不是节点。记住这一点,因为在以太坊中,它们的_行为_稍微有些不同,但它们对网络的_影响_是一样的:毫无意义。
这里的乐趣开始了,其他人尝试扭曲网络实际工作的方式:如果我想开始挖矿怎么办?
_挖矿_一个区块的行为是_创建_一个区块。就像你想发送的交易一样,你必须创建一个区块并向网络公告。任何节点都可以宣布一个新块,这个过程没有什么特别之处,你只需要一个新区块。挖矿变得越来越困难,但如果你愿意,可以购买专用硬件并将其连接到你的个人节点上。
记住那段关于无效交易的内容?对区块也适用,但你需要了解有关区块创建的某个具体内容。
首先观看这个视频。我跳到了那个关于哈希、使用随机值_(随机值)_和附加带新块的头的重要部分:
如果你有时间,请观看完整个视频。它是我最喜欢的视频,讲解了挖矿是如何工作的。
当你看到视频中的“Prev hash”标签,这些都是区块头:
此视频没有提到的是,虽然区块内的所有交易都是无效的,但你仍然可以创建有效区块头。挖掘无效交易的块和挖掘有效交易的块所需的时间是相同的。花这么多的时间和精力创建这样的区块的动机是推动一个奖励你以比特币的交易获取不是你的比特币。这就是为什么所有节点不仅会检查块标题、还会检查交易。这就是防止矿工浪费时间的原因。因为所有节点都进行检查,没有矿工能够作弊。如果所有节点都不检查,那么你就必须依赖那些_确实_在检查的节点。这会将节点分成“类型”,而唯一重要的类型则是那些进行检查的节点。以太坊目前确实执行这一点,我将在下一部分讨论这一点。
那么如果你加入一个矿池呢?你可能这样做是因为挖矿对你来说太困难,或者如果你是一个稍大的实体,你可能更喜欢稳定的收入而不是偶尔的收入。许多矿工会这样做,他们将其专用硬件直接连接到一个矿池,使用一种完全不同的协议来称为Stratum挖矿协议。就像用你的非节点手机创建一个交易一样,你不必运行一个节点就可以将你的硬件连接到矿池。你可以在不运行节点的情况下挖矿,许多矿工就是这样做的。以下是我为此示例使用的Slush矿池:
记住,我将这些矿池运行的节点从图中拖出以进行演示。就像任何其他节点一样,这些池运行的节点需要伙伴。它们需要伙伴来接收交易和区块,并且需要伙伴来宣布它们创建的块。让我再强调一遍:所有节点验证所有块和交易。如果这些池中的任何一个宣布一个无效区块,它们的伙伴会知道 因为它们是完全验证的,他们不会将其传递给其他节点。与交易相似,无效区块不会进入网络。
再来看一种不把这些节点从图中拖开的方式。下面是一位不想被发现的私人矿工,它有8个随机伙伴,这些伙伴都不知道它是一个矿工。同样,这种方式是为了隐私原因故意设计的。在网络中的任何节点都无法知道它们接收到的块是由他们的伙伴创建的,或者被他们的伙伴中继的。它们只知道这是否有效,如果有效,它们会继续传送,如果无效,则不传送。
希望你能理解这一点,我认为我没有使用任何高深的数学或公式到达这里。我想继续前进,因为我觉得这一点已经讲到位了,但我还有最后一点想要提及,因为这一最后的方面被用来混淆那些未完全理解我刚刚解释的内容的人。这种误导性是如此之普遍,我需要关注。
https://twitter.com/VitalikButerin/status/1000232465540136960
我最初的评论是在谈论轻客户端,也称为SPV客户端,以及它们并不是网络的一部分。我在上面用蓝色标示的小点演示了这一点。他的后续评论试图暗示,矿工才是唯一重要的、可以拒绝的节点。请记住:节点没有办法知道其他节点是挖矿的还是转发块的, 这一点是故意设计的。现在来了一个最后的示意图,我可以尝试解释人们说“只有挖矿节点重要”时所用的逻辑。一些矿工直接连接到其他矿工,以便在他们的对等网络列表中,一些人也是其他矿工。并不是所有矿工都这样做。一些直接连接的矿工还使用选择性的中继网络,比如由比特币核心开发者 Matt Corallo 设计的 FIBRE 网络 正在设计中,但即使这个侧网络也并非仅限于矿工,任何人都可以加入,包括你或我,它只是有助于在网络中中继区块。无论如何,人们试图辩称,这种挖矿节点之间的互联性(无论是否使用类似 FIBRE 的方式)意味着它们是唯一重要的节点,这真是荒谬:
在这个示例中,我在图示中保留了节点的对等节点。你现在应该明白了。他们拒绝无效块。绿色圆圈内的那组节点绝对不是唯一在这个网络中重要的节点,话说回来,我认为我已经涵盖了你需要了解有关比特币区块链网络的一切,以便我可以继续讨论以太坊。
这一点与之前相对相同,但有几个关键区别。最大的启示是,你的全节点无法基于区块的大小或 gas 限制拒绝区块。对于这个外部过程没有限制,给这些全节点施加了处理这些信息的压力,可能无法跟上,从而减少了节点数量并使节点集偏向更大实体。
与比特币类似,以太坊当前使用工作量证明系统进行区块链的附加过程和代币分配过程。由于以太坊区块链网络的预期功能不同,因此放入区块中的数据也不同。这将不涉及数据的种类,“智能合约”或类似的东西。这个主题只是关于这些数据的数量和网络拓扑。
下图就像比特币的那张图,仅是一种视觉表示,而不是实际拓扑。与每个节点都有均匀的对等分布不同,我在节点的对等数量上用了一个曲线,因为众所周知,以太坊在对等问题上遇到困难,因为节点数量一直在下降,而“良好”的对等节点很难找到。
https://github.com/ethereum/go-ethereum/issues/15753
这就是当良好的对等节点数量有限时,“去中心化”网络的样子,当人们尝试同步新的以太坊节点时,由于根本没有足够的对等节点提供他们请求的数据,这就成了问题。你会得到一小群高度连接的对等节点为所有其他节点提供区块链。这对一个广播网络来说是非常糟糕的。更糟糕的是,gas 限制(以及相应的总区块大小)不断上升,因为对此没有限制,给这些有限的节点带来更多压力,并缩小了它们的存在,尽管有声明称“gas 限制在 X 个月内没有变化”:
所谓的 gas “限制”并不是真正的限制,正如我之前提到的,矿工在自己的方便下选择这个限制。重要的启示是以太坊节点无论 gas 限制如何都不拒绝区块。这是比特币和以太坊之间的根本区别之一。节点并未设置以防止外部压力使它们因没有规制的数据而集中。矿工并不是基于利他主义的原因来提高这一限制,现在也并不是 Vitalik 告诉他们不要这样做。听起来很去中心化,对吧?这并不是你希望区块链运行的方式。当费用变得过高时会发生什么?
看看 Vitalik 的回应,以及下方的区块大小图表,你自己思考:
以太坊有2个选择:
幸运的是,以太坊有轻客户端,就像比特币一样,如果你无法运行自己的验证节点,它们可以来拯救你……
还记得我之前如何展示过 SPV 客户端(仅同步头部)是绑定到特定节点并不是真正的网络一部分吗?在以太坊,他们进一步采取了措施,为这些轻客户端创建了一个“子网络”,在那里它们可以共享区块头部。如果你不知道,事实是大多数人实际上并不运行完整验证节点的以太坊(出于各种原因),而是运行轻客户端。
https://www.reddit.com/r/ethereum/comments/7k4vy5/we_desperately_need_more_lightserve_nodes/
https://github.com/ethereum/go-ethereum/issues/15454 /// 你也可以参考我之前的文章。
他们一直面临一些问题,难以让足够的完整节点为轻客户端提供所需的区块头部。由于人们在开启和关闭时变得太懈怠,因此轻客户端无法持续互相连接,因此它们更加依赖自愿提供这些数据的完整节点。在比特币中没有志愿者,所有的完整节点都执行相同的中继功能,这非常简单。总体而言,我实际上并不认为为轻客户端拥有一个子网络有什么问题。我认为任何想要运行一个的人都应该能够做到。无论如何,拥有它们的子网络是件好事,至少更多的人不必信任特定节点以获取头部,最糟糕的是,他们无法充分满足自身产生的需求。问题在于当开发者开始称这些“节点”,而社区被引导相信它们对于网络的贡献。它们不是“节点”,也对网络没有任何贡献。
https://twitter.com/NickSzabo4/status/1001488447129829377
而以太坊开发者确实称它们为节点。以下是关于分片的内容,我将接下来讨论,但他们不应该对社区说它们正在运行的轻客户端就是节点。然后它们的节点数量持续上升,但实际上发生的只是轻客户端数量上升,而完整节点数量缓慢下降。称这些为节点掩盖了问题。
希望我到现在为止已经讲清楚了。验证区块头对网络毫无意义。
所以这是这个网络的更准确模型:
看到这一点,当你看到这个总的“节点”数量时,你现在有什么想法?它们是在区分这些节点吗?在阅读这些文章之前你明白其中的差别吗?即使它们不包括轻节点,随着时间的推移会发生什么?
随着时间的推移,即使这个总的“节点”数量可能在上升,这就是一个本质上集中且不关注其完整验证节点集的网络所发生的事情:变得更糟。
网络不仅开始减少验证器数量,矿工开始由于需要直接连接到彼此,以避免差的叔块/孤块率。叔块/孤块是由于区块时间过于接近而丢弃的区块。当不同的矿工同时生成有效的区块时,你最终会得到两个有效链。最终其中一个区块会在其上构建,而另一个区块则成为孤块。
在这个图中,紫色区域为孤块。
你知道谁在其区块因网络选择了不同的分支而失去最多?更小的矿工,进一步集中该网络,因为他们无法处理收入波动。
所以现在你有:
提升这个问题的反应不是出于共识的担忧,就是完全忽视这个问题。当人们忽视这个问题时,通常会使用我们已经讨论过的“非挖矿”策略。他们说“所有在中间的节点都在缩小,它们过去根本没有做任何事,除非它们在挖矿/质押。”
https://twitter.com/StopAndDecrypt/status/999716942322814976
这真的是本月你听到过的最难以理解的论点吗?
https://twitter.com/NickSzabo4/status/1001488447129829377
类似于以太坊的工作量证明,以上所有内容同样适用于权益证明。预期是与分片同时推出 PoS,因此我认为单独的 PoS 不会在以太坊中出现。这只是为了强调在我们接近分片时中心化的阶段。在上节的所有内容中,PoS 带来了以下附加问题:
在这个网络中,它在结构上与我下面提供的以太坊图相同,但这次我突出了质押节点,以便你可以看到随着时间推移,验证节点集的增长与也在质押的验证者之间的比例。请记住,Vitalik 说这一直是这样的,而我在上面解释过,这在技术上是不正确的。无论如何,通过 PoS 这个过程被加速:
在其价格最高峰时,你可能需要 45,000 美元才能成为其中的一个节点。汇集资金不会改变任何事情,资金池在运行节点,而不是你。幸运的是,PoS 将与分片一起到来,因此我们可以在这里结束这一部分。
如标题所述,分片引入缩放的同时,让你相信它正在帮助以太坊扩展。可以想象,它与验证节点数量有很大关系,但情况有所不同。验证责任在各组之间分配,每个组有自己的分片。目标是减轻单个验证节点必须承担的工作量,以便有更多的节点,但这只是延长问题,而非解决问题。此外,这些节点现在面临巨大的成本,因为质押已成为它们的必要条件。
完整视频:https://www.youtube.com/watch?v=r0TGpp2SV-w
因为我认为我已经为完整节点提供了很好的论点,因此我们之间不同的定义无关紧要,我将专注于他们的定义。
重新措辞:
我认为该文章中最重要的收获是比特币完整验证节点的网络、固有的去中心化以及当人们试图向你出售“扩展解决方案”时这一点与其他所有技术的比较。因此让我们来与分片进行比较。这部分会很有趣,因为即使 Vitalik 也没有清晰阐述拓扑将会是什么样子。我将尽力而为,因为分片的概念将“所有节点都是平等并执行相同的工作”完全废除了。 pinpointing 集中的存在将会很有趣。
首先,以下是分片的通常解释 听起来像,这是典型的文章样子:
https://bitcoinist.com/vitalik-buterin-sharding-plasma-scale-ethereum-10000-times/
这只是一家区块链新闻网站,所以预计会有很多流行词,而没有具体的技术信息。我强调它是因为它充斥着一些似乎被不知情的加密社区所忽视的词语和术语。“可扩展性”没有定义,“处理”需要进一步澄清,提到“节点”一词的每一次都不适用于你或你的轻节点。所有这些提及:
可以替换为:
在你阅读或听到分片的时候,解释 似乎 说明“节点的工作会变得更轻松”,但能负担得起 $16,000 进行质押的节点并不需要事情变得更轻松。他们其实已经能够处理更大的区块。数据中心不需要分片,你也不会在一台笔记本电脑上运行一个“重要”的节点。这个系统中有很多种节点,而在协议最终定稿时,哪些将真正存在仍然不清楚。我将首先解释基本结构,然后定义这一系统中的主要节点,以便我们可以突出哪些节点是重要的,哪些是不重要的。
分片将单一区块链拆分为多个称为Collations的区块链,然后在其上扭曲并希望霉菌不会生长。开玩笑说,这里一个单一的 collation 的示意图应该能帮助你理解:
开玩笑说,这里有一个漂亮的图,但制作得花费了我太多时间让它看起来更好:
让我们来拆解你所看到的内容:
在每个分片内,唯一重要的节点是执行节点与 Collator 节点。两者都需要质押 32 ETH 来运行。每个轻节点可以“选择一个他们‘关心’的分片(如果他们愿意),同步该分片,以及主链的区块头部。他们可能不会需要这样做,除非他们是依赖于验证该分片的应用程序或服务,因为它们的合约驻留在其中。
在上面,你会看到多个 collation 链,执行/Collator 节点集在这些链上工作(32 ETH),以及“主链”(绿色),当然还有你的轻节点在顶部 如果 你选择了一个特定分片进行“验证”。
你应该注意的几件事情:
但这还不是全部,网络还有更多。你所有仅同步主链头部的轻节点可以简化为上面的那个大框。它们什么都不做,但在数量上是最多的。通常,如果你没有 32 ETH,你将成为这些节点之一。
我在这里要表达的是,尽管“全面验证”被分为子工作,但执行这些工作的节点组仍然是有限的。他表示这些节点的处理能力将低于当前的以太坊节点,但问题从来都不是出在这一点上。根本问题在于,这样做的难度会随着时间推移而增加,节点的数量也会因此逐渐减少。这是本质上中心化的。Vitalik 甚至同意,如果 gas 限制不断增加,节点数量将随时间缩减,而没有任何措施可以阻止这种现象。目前矿工正在出于利他主义行事,但当挖矿不存在时会发生什么?当只是质押,而参与的人不关心其他人的区块被孤立时会发生什么?他们为什么会保持低的gas限制?请记住,他们可以手动调整这个限制,所以如果他们高度互联且完全能够处理这些数据,他们为什么会故意保持低水平?当他们开始聚合质押收益,设置更多节点并对网络获得更多控制权时会发生什么?
当人们不觉得它是个山寨币时会发生什么?大多数将失败,但当其中一些在一段时间内被认为是相对去中心化的足以让人们使用它时,会发生什么?
我说这一切将会简单。虽然我觉得最终结果并不那样,但我尝试尽可能保持简单。我提到这一点是因为我想用分片常见问题解答的链接来结束这篇文章,里面有很多承认分片问题的列表,以及他们如何打算解决这些问题,而且这些问题每一个都会引入新的复杂性及其自身的问题,以及解决这些新问题的其他解决方案。这个过程曲折,花了我过长时间才解读节点类型的术语,但提供它是公平的。
我所在的问题从来都不是它是否“正常工作”,而是是否将继续去中心化。在分片之前就已经很糟糕了,但我认为现在可以更清楚的是,这个网络在足够长的时间范围内只有一条道路。如果你不介意拥有中心化的验证者,你可以直接买 EOS。他们跳过了整个伪装点,直接进入了中心化。因为他们不用分片就能以中心化方式处理区块链数据。
谷歌可以处理每个人的支付。
我们不希望谷歌处理每个人的支付。
我们也不希望财富500强或福布斯400强处理这些支付。
所以我们学到了什么?
这极其无知。以太坊已经在其 gas 限制的形式下有一个区块大小限制,这个 gas 限制在 800 万,并且在过去的六个月里一直如此。
我在上面对此进行了论述。如果分片还没有准备好迅速介入并解决这个问题,你将提高 gas 限制。
快速同步数据目录的增长在过去六个月已平稳至每月10GB,并且不会再增加,理由只有进一步提高 gas 限制将导致叔区块率中心化问题。所以我们已经经历了它的最坏状态,并已经持续了半年。
如果你不提高 gas 限制,费用将禁用 Dapps,并引发社区的愤怒,因为他们有了期望和需求。我在上面也详细说明了。叔区块率在没有其他解决方案的情况下是没有意义的,现在矿工只是出于利他主义听从你的建议。这本身就是一个问题。
此外,关注存档节点大小是高度错误的,因为 (i) 你可以通过每年同步一次,或只是运行一个为你修剪的 Parity 节点,获得更低的数据目录大小,并且 (ii) 它包含一堆多余的数据(从技术上讲,所有历史状态,外加 Patricia 树节点),这些数据可以从区块链(52GB 以内)重新计算,因此通过这样做你根本没有“丢弃历史”重要信息。 如果你愿意抛弃历史,运行 Parity 时的状态模式,磁盘要求将降到 10 GB 以内。
当我展示数据吞吐图时,我已经在讨论这个“冲突”。目录大小与节点处理需求的指数增长是一样的。对此唯一的反驳是你不会提高 gas 限制。你会的。
分片的重点是网络在理论上可以生存,零个你所称之为“完整节点”。如果存在五个完整节点,这五个节点也没有额外的特别权力来决定共识;他们只会验证更多的内容,所以会更快找到正确的链,仅此而已。共识形成节点只需要分片节点即可。
我在上面阐述了分片。
最后,你使用“BCash”这个术语是错误的;这是一个实现,而不是区块链/数字货币。
那不是比特币,那是 BCash \ \ 或者,去而复返,完整节点的故事\ \ hackernoon.com
跟上以太堡垒——关于区块大小问题的回应 \ \ 昨天 @StopAndDecrypt 发布了一篇关于以太坊区块链增长和关注的中型文章…\ \ medium.com
1: “(…) 基础层的激励结构完全建立失败,因为以太坊的区块大小没有上限 (…)"
这在最佳情况下是误导,在最坏情况下是错误的。 以太坊由共识协议强制的区块 gas 限制 有 区块大小限制。
他们不太可能为一个阻碍网络的区块大小上限投票。
我在这篇文章中进一步阐述了 gas 限制。该网络不会因验证者丢失和对等节点丢失而崩溃。网络在两个数据中心下运行。真正会崩溃的是去中心化。连接的节点无动于衷,不去关心其他不那么连接的节点的验证能力。
2: “即使制定了某个区块大小上限,它也必须是合理的,然后这些 Dapps 都无法正常运行,因为以目前的全部区块空间,几乎难以运行。”
没有人再去海滩了——太拥挤了。
如果一个区块链网络达到容量,所有区块都满是交易,那么所有交易发送者都能在他们的特定费用中找到交易的效用。
这完全偏离了要点,因为这是我们在比特币中提出的相同论点。它非常流行,但比特币并不向 Dapp 开发者和用户承诺低费用和可用性。当这些 Dapps 被价格压缩为来自洗钱者(哈哈)的基本交易时,洗钱者使用 90% 的区块空间来倾倒他们被黑客/盗走的币,因为混合比支付更多来使用愚蠢的 Dapps 更有价值时,你还有什么市场吗? 这就是要点。你可以慢慢论证这一点,但有一个时刻,你实际上是在用比特币的匹配属性来证明以太坊的存在,而没有那些华丽的附加功能,而比特币能更好地处理比特币。
作者直接开始自己崩溃地论证,认为以太坊的应用程序将转移到比特币上。如果应用程序因交易费上升而在以太坊上变得无用,那么它们也会因被更加努力支付的其他用户排挤而在比特币上变得无用。
我建议开发者在比特币上进行开发。我并没有说要继承可能根本不会运行的相同程序设计,然后将其建立在比特币上。几乎所有 Dapps 本质上都是中心化的,实际上并不是“去中心化的应用程序”。它们都可以在闪电网络上构建。无论支付通道网络的区块大小如何,你都不会面临费用问题。你也可以争辩以太坊也可以这样做,但这并未提升其基本层存在的任何意义。
没有应用会因为网络繁忙而阻碍以太坊发展
cryptokitties 以太坊——谷歌搜索 \ \ 2017年12月15日…加密猫成长到了如此规模,以至于扰乱了以太坊网络——导致…\ \ www.google.com
3: “比特币区块大小不会限制交易流,它调节的是在整个网络中发送的广播数据量。”
这对任何理智的“交易流”定义都是错误的。交易/s 的任意上限确实会限制交易流,因为在规定时间内无法流入更多交易… 如果我们将链下解决方案(例如,闪电网络)作为 L1 tx/s 上限不会减少流量的论证,我们也要包括以太坊上已经实时可用的 解决方案。
我们开始包含它们,这就是我们说的不会限制流量。区块大小是个水坝,从中产生费用的形式。溢出将流入闪电网络,闪电网络在交易吞吐量上的限制不是来自其节点数量和支付通道,而是它们本身没有限制。
而且,你通过新开的通道收到的每一笔比特币可以直接发送。上述并不是一个两步过程。
4: “我说这些信息需要停止被掩盖。我也说,当这些信息不再被掩盖时,将为时已晚,根本无能为力。”
这些信息并没有被掩盖。你只需运行完整节点并查询。
只因你没有找到做这个的网站,
该论点声称“当信息被揭露时,就太晚了”最好的情况下是愚蠢的归纳推理,最坏的情况下则是事后的谬误。
这被掩盖。并不是我“不知道”的网站在追踪它。那些追踪过的站点已经停止追踪。
你忘了加上一句:“已经为时已晚。”
这是一句带有俏皮话,而不是谬误。喜欢就接受,不想接受也无所谓。
5: “请记住,没有这些信息[区块传播时间和交易时间]对于以太坊来说是不可用的。”
这不正确。通过运行几个地理分布的完整节点,连接它们并测量它们何时看到并中继新块和交易,可以轻松测量块传播时间。
想要获得此信息的人往往懒于花几个小时学习如何部署、使用,甚至为以太坊客户端添加调试,而是可以查看与https://ethstats.net/的节点传播时代进行检查。
首先,这听起来和简单相去甚远。再次重申,这并不是指我,因为我显然能清楚辨别这些网络的差异并整合这些信息。我所做的正因为这样而分享。
其次,我不需要在全球分布节点的情况下检查这一点,因此网站上在线的投诉以及这些信息的左侧来自你推荐的网站只进一步巩固了在线的共识。当一半自愿为该网站提供数据的节点都存在可怕的延迟时,这表明存在一个问题。
第三,懒惰的人根本不需要付出我现在的努力,我显然没有虚伪声明这些信息不公开可用。网络数据一般是公开不可得的,它几乎不在公众眼里,而一些信息曾经是过的。访问信息可不仅仅是常识。
6: [对使用区块链的“正确”方式和厌恶 CryptoKitties 的模糊谴责]
作者的假设是,在一个公共的、无权限的区块链上,是有“正确”的使用方式。比特币和以太坊等区块链的美在于用户可以按照他们想要的方式使用它们,只要他们能说服矿工接受他们的交易。
例如,很多人实际上_享受_加密小猫,以至于在最近的拍卖中,一只猫价格达到了 140,000 美元。这并不是关于矿工接受什么交易。我是说,即便这些交易现在被接受,将来任何只能在低费用下运行的 Dapps,将无法使用,除非提高限制,或者牺牲去中心化。如果你不在乎去中心化,那么这对你来说就不适用,这完全没问题。但这确实是以太坊目前的卖点:
撇开洗钱不谈,傻瓜是存在的。CryptoKitties 是一个很好的工具来证明这一点。我实际上喜欢 CryptoKitties,因为它提供了这个有价值的公开可得的检测试纸,我也不讨厌猫:
7: “比特币网络大约有 115,000 个节点,其中大约 12,000 个是监听节点。”
这似乎与其他几个关于比特币节点数量的来源相矛盾
如果所有这些来源都是错误的,他们可能会想知道作者链接的网站是如何计算节点的。
此外,谁审核了这些计算更大节点数量的脚本?
它只计算非监听节点和监听节点。计算两者是更困难的,所以网站不这样做。同样,分离轻节点和验证节点在以太坊中也较难,所以网站不这样做。
https://twitter.com/LukeDashjr/status/1001202223009935361
8: “那个以太坊节点数量?我保证那些大多数都是毫无验证工作的轻节点(检查头部不是验证)。不同意吗?证明我错。给我展示数据。”
作者怎么不给出一些支持他们推测性主张的数据呢?“我保证”暗示了一种权威诉求,鉴于上述错误的主张和误解,我认为作者已经失去了在(以太坊)协议和网络问题上被认真对待的可信度。
我承认是假设,但说我的可信度丧失有点不切实际。我的担忧是合理的,不应该被忽视。你可以不同意,但你需要提出一个你不同意的理由,而我之前的文章已经明确说明:验证节点很重要,而以太坊在协议层面上忽视了它们。
9: 当你的节点无法保持同步时,它将降级为轻客户端。
错。在同步时,即使一个节点落后了一些区块,它仍然可以回答过去区块和交易的查询,并服务其他正在同步的节点。作者应该更好地检查如 parity 和 go-ethereum 等客户端的并发性和状态处理,以更好地理解节点目前如何实现同步以及如何与新的分片提案一起工作。
这并不是错,你只是字面理解了。网上关于人们节点掉线的评论导致了他们个人决定使用快速同步,通常是在被别人告知“没问题”后。从更广泛的角度看,这导致验证节点离线,轻节点在线,就像我上面展示的图表。
10: “你怎么能知道在这个设置中有多少完全验证节点?你现在甚至无法确定,因为唯一跟踪它的网站将轻客户端纳入总数。你怎么能知道完全节点集中在 10 个数据中心?你永远都不会知道。你。永远。不会知道。”
好吧,现在我们能够100%确定有115000个正确验证的全比特币节点,但在作者设想的这个假设未来,我们无法知道以太坊网络中有多少个正确验证的全节点?
显然,比特币中目前存在一些网络工程设计魔法,这个未来以太坊网络可以利用。鉴于比特币和以太坊客户端都是开源的,我期待这个魔法很快被以太坊开发者发现并合并,从而使我们都能在任何时刻确切知道有多少个全节点。
你对比特币能够有信心的原因是所有节点都在验证。网络中参与的每一个角色都验证链,这是你知道下一个区块是有效的唯一方式,而不必信任其他人。比特币中没有轻节点。
在以太坊中,节点彼此交互的方式有很多模糊的地方,唯一合理地检测哪些节点是完全验证的方式是请求随机区块的历史,以查看它们是否拥有那个完整的区块,但大多数以太坊节点通常不保存历史,因为以太坊是基于状态的。
这两个网络本质上是不同的,这就是为什么在比特币中轻松轮询网络,而在以太坊中却充满了问题。
— — —
自然,要运行一个以太坊全节点需要更多的资源。尤其是在较旧的笔记本电脑上,这可能会造成困扰,确实需要 SSD。然而,根据合理的标准,它并不需要一个强大的服务器。事实上,任何拥有最近 6 年的 CPU、8GB RAM 和现代 SSD 的专用机器都可以很好地处理一个以太坊全节点(或者像我那台相当普通的服务器上运行的多个全节点)。Tx 和区块转发的带宽使用是一个值得考虑的因素,但在连接良好的网络上通常不是问题。
1: 随着时间的推移,它变得越来越困难。
2: 鉴于 $45,000 的验证节点,这也是有点无关紧要。
3: 在非 $45,000 验证节点网络上的带宽肯定很重要,因为如上所述,“连接良好”对隐私来说是危险的。
— — —
矿工意识到当前的区块大小(Gas)限制,并积极参与与社区其他部分讨论理想的区块大小限制
矿工在历史上曾为降低和提高限制而采取行动
在一个 PoS 集中网络中,这些都没有意义。然而,在长期的 PoW 系统中,这很危险。在“它们只是可以同步头部”的情况下,没有激励来保持“其他”节点连接或同步。它们现在可能在表现出利他,但未来并不值得期待这种行为。这是一个危险的提议,随着这些网络规模扩大,开始信任权力中的诚实时。
— — —
总体而言,随着客户端自网络启动以来不断提高性能,矿工逐渐将限制提升到目前的 8M(以太坊启动时为 3.14M)。通常,如果同步问题变得足够严重以影响 ETH 价格,矿工将获得降低限制的激励以调节网络。
我没有理由相信限制会降低,正如我在这些文章中明确指出的那样。
— — —
由于其他人已经讨论了以太坊客户端支持的各种同步模式及其不同的资源需求,值得讨论的另一件事作为一种紧急补救 — 如果以太坊网络确实增长如此快速,以至于大多数全节点无法跟上 — 是检查点。
像 StopAndDecrypt 这样的人可能只听到区块链检查点就感到恐慌。 如果客户端实现共识协议同意某个检查点区块而非从创世区块同步,区块链怎么会去中心化?!
检查点有其功能,但你在我对它们的看法上有些假设。无论如何,同步模式并不重要,如果这就是你想要做的,随你便。我的担忧,依然是验证节点集,而检查点只解决历史数据,而不是在同步后数据处理的需求。
实际上,无论是在比特币还是以太坊,超过几小时的重组是极不可能的。
我同意。
— — —
后记
没有人实际上知道一个网络需要多少个全节点才能“安全”。
在那之前,我们无法知道 1K、5K、10K 或其他任何数字是否是保持网络合理安全所需的最低数量。
见上文。
— — —
也就是说,我们应该继续鼓励个人和项目致力于开发以太坊应用 — 或任何对贡献网络感兴趣的人 — 运行自己的全节点。
我希望在 PoS + Sharding 来临时这种数字能够超越 $45,000。如果 ETH 上升,那就更糟糕了。DASH 曾经需要 1000 个币,做一个主节点曾花费过 $1,000,000。
— — —
对于那些读到这里的人 —
我阅读过,我并不讨厌你。人们往往把我的写作视为敌意。其实不是。
- 原文链接: medium.com/hackernoon/sh...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!