60亿美元估值的哈希图要和以太坊正面刚 ?恐怕不是对手

译者注:被称为第三代DLT(分布式账本技术)代表的Hedera哈希图项目,曾在2018年获得1亿美元融资,而该项目的总体估值更是达到了惊人的60亿美元,那么这种DLT技术与BTC、ETH等区块链项目有什么不同呢,真的如其白皮书中所描述的那样优秀吗?

我们不妨看看否定的声音,原文作者是人权基金会(Human Rights Foundation)隐私技术顾问Eric Wall。

以下为译文内容:

为了进行Twitter辩论,我很快写了这篇文章,所以如果文中出现一些小错误,也请原谅。本文的第一部分是围绕我的一个具体论点而展开的,但你也可以通过“CTRL+F”,然后输入“fun stuff”跳到更有趣的内容上。

So,Hedera Hashgraph(以下简称哈希图)项目将在9月16日发布,这是第三代分布式账本技术,它可以实现10000 + TPS!

p1

(基本上是推销宣传语,来自该项目的官网)

太棒了,对吗?

是啊!哦,等等,我忘了什么。

因为我持有的是一堆比特币(或者是BCH?还是其它的?我有点迷失方向),我显然是因为某种不可思议的原因而无法出售它们,我没有其他选择,只能联想并传播关于哈希图的FUD理论。显然,我不能只做简单的事情,然后投资它,这将打破宇宙的所有规则。

 剖析哈希图FUD

 

p2

在这篇文章中,我将尝试解决一个简单的问题:哈希图是如何实现10,000+ TPS的?

首先,我们需要消除一些关于TPS的荒诞说法。

工作量证明(PoW)与低TPS的关系

加密货币投资者们普遍认为,比特币区块链的低效率是由工作量证明(PoW)机制造成的,如果有人发明了一种更快的共识算法,那么分布式账本技术(DLT)就可突然以每秒几十万或数百万次的速度处理交易。

p3p4

来自Demetri Kofinas的推文,他是一名哈希图支持者

我猜这个理论是来自于人们观察比特币系统的结果,比特币是一个矿工平均每10分钟创建一个约1.2 MB (当前平均值)区块的系统,这有点像火车车厢从矿池来到你的计算机。

 理解区块传播(简化)

 

p5

当你第一次摸索比特币时,这会是一个很好的心理模型,但它会让你产生这样一种感觉:即矿工是限制你接收数据量的人。这不仅是因为这样理解系统的方式是不正确的,而且从技术上讲,它也不是那么工作的。

自2016年某个时候起,Bitcoin Core实施了BIP152改进提议,其也被称为“致密区块”(Compact Block,如果您听说过有关FIBRE网络的任何信息,则其压缩技术与此类似)。如果你了解BIP152的工作原理,你会明白看待比特币网络的正确方法应该是这样的:

p6

矿工实际上不再广播交易区块了,它们只向你提供所需的最少数量的信息(满足PoW要求的80字节区块头),以便对你已从网络接收到的一批交易进行排序。这个PoW工作是非常容易验证的,你可以在不到一秒钟的时间内在笔记本电脑上验证比特币所有的PoW(592,926)。

要将1.2 MB大小的交易数据组织成比特币区块,这需要大约15000个字节来对其进行排序(每笔交易shortID需要6个字节),这是开销的1.25%,这就是上图中的小火车车厢所代表的。它不涉及高级签名操作,也不涉及耗尽你计算机资源的操作。并且你可以将其与整个交易流并行地接收。

现在,如果你想把手指向挖矿过程,并说这是减慢系统速度的原因,你实际上是在说,你可以通过减小那辆小型火车车厢的尺寸来加快系统速度。你的意思是“我们找到了一种方法将1.25%的开销降低到0.75%!”。但我们甚至不会注意到这种变化。

所以,如果不是矿工们在限制你可在区块链上写入的交易数量,那到底是谁在限制呢?

实际上就是你自己。你正通过自己的比特币节点运行代码,而代码上写着:

“我只接受来自试图对至多4MB(Segwit理论最大值)数据进行排序的矿工的更新,否则我将拒绝更新。”

所以,我不能增加这个限制对吗?是什么阻止了我?

如果你不从网络当中分离出去,你就不能改变它。这个限制是一个共识规则,但当然,分离仍然是可能的,比如比特币现金(32 MB 区块 = 100+ TPS)以及Bitcoin SV (128 MB区块 = 400+ TPS)就实现了。

但是,仅仅因为增加了应用的上限,计算机及其在网络中的连接就不会变得更快。这仅仅意味着一些节点将难以跟上,系统的去中心化特性将开始瓦解。但BCH和BSV仍然认为,这是一个值得做的权衡。

你现在应该明白,阻碍比特币主网实现高TPS的,不是挖矿,也不是工作量证明。

而以下是哈希图白皮书的描述:

p7

正如你所看到的,当他们谈论哈希图的吞吐量时,甚至他们自己也没有谈论自己的共识算法有多快。所以让我们把这个荒诞说法放在一边吧。

但哈希图的共识算法是超级KUA i……

不,不管哈希图的共识算法是否如此之快(以至于它都是自动发生的)。你所说的只是缩小那辆小火车车厢的尺寸。即使你完全消除了它,你也几乎没有做任何事情来提高系统的性能。

关于速度的快速说明:DLT有两种实现“更快”的方式

p9

一个是TPS,然后就是交易确认时间(最终延迟)。哈希图具有更快的终结性,这一点基本上是正确的,但也有点争议。我将举几个反例来说明,如何在比特币和其它PoW链上实现哈希图级别的低延迟。

  1. 侧链:你可以让一个节点联盟控制你存放币的多重签名钱包,其中超过2/3的节点需要在钱包内的交易上签字,然后交易才能够生效。这就是Blockstream的Liquid侧链(以1分钟的区块时间运行,并在第2个区块完成最终状态)。如果需要,你可以设置得更快,例如,运行钱包的节点可以运行开源的XRP代码库,并以与哈希图相同的速度(约4秒)结算交易,而其具有类似的安全保证。
  2. 闪电网络(L2):闪电网络交易很快,这是一个依赖于通道容量的二层解决方案,但可近乎即时结算交易,其安全性保证也是足够的;
  3. 预先共识:另一种减少最终性延迟的方法是让矿池事先就mempool中要包括在下一区块中的哪些交易达成共识,并孤立任何不遵循计划的矿工(这意味着他们会失去区块奖励)。这就是BCH计划实施的Avalanche(称为“预先共识”)。Avalanche协议能在2秒内达成共识,其具有很强的概率终结性;

4、零确认(0-conf):只要一笔交易出现在你的mempool中,你就可以接受它,这几乎是瞬间发生的。哦,但是你说这是不安全的。你的意思是,虽然大多数矿工都遵守先到先得规则(first-seen rule),但仍有一些矿池会去替换交易,这可能最终会让你损失掉钱?所以……你是说,交易的速度有多快并不重要,而是说逆转这样的交易有多困难是重要的,这需要对那些试图进行逆转交易的参与者进行严厉的惩罚?嗯,我同意这个看法:)

 哈希图与PoW的效率比较

 在我离开这一部分之前,我想快速地讨论一下哈希图的共识算法,(与pow相比)其在传播和验证所需的数据量方面有多有效。

如果你对此不感兴趣,可以跳到下一个标题。

p10

所以哈希图没有区块的概念,而其有的是消息(message),这就是上面图像中的蓝色圆圈所描述的 (系统中的节点不断地将它们发送给彼此)。这些消息包含一笔或多笔交易,就像区块一样。这些消息中的交易都有各自的发送者签名。但是发送者不同于节点,发送者通常是网络外部的人,他们只想确认他们的交易,并将其传递给这些选定的哈希图节点(Alice、Bob、Carol等),这些节点负责将其包含在哈希图中。交易最终以消息(相当于小区块)的方式进行传递。

现在,哈希图有自己的特殊方式来达成关于交易顺序的共识,这对本文的主题而言并不重要,但你需要知道的是,它们使用了一个虚拟的投票过程,该过程由节点执行所谓的“gossiping about gossip”。这意味着当一个节点接收到交易时,它会将该信息传递给其邻节点,但它也会传给它接收到的最后一条消息和它发送的最后一条消息的标识符(这是上图中的两个“哈希”)。你不需要理解他们为什么这样做,但这就是让系统在没有投票的情况下达成一致共识的原因。

现在,哈希图以能够非常有效地广播这些gossip而自豪,因为节点只发送标识符和序列号,而不是实际的哈希,否则会是相当多的字节(见哈希图白皮书第91页,“高效的Gossip”),而当使用他们的设计,每个哈希top只有一到两个字节。但在这个系统中真正的开销不是哈希,而是签名,每个签名都有64字节。记住,每个节点附加到其消息上的这些签名与它们所包含的加密货币交易无关,它们是节点用来在交易顺序上达成可信共识的附加签名。这是哈希图投票协议的一部分,所以,这都是开销!

现在,你还记得比特币的PoW开销是多少吗?每笔交易6个字节+80个字节的开销(相比哈希图多了几个字节,但没有多大关系):

p12

因此,这意味着,除非哈希图中的每个Gossip消息包含10笔以上的交易,否则哈希图64字节的签名开销就是不值得的。此外,此开销还包括签名,验证它们需在计算机上执行签名验证步骤。

对于某些参考框架,比特币人为地限制了一个区块可包含签名操作(sigop)的数量:20000,以避免在验证区块的计算机上施加过多的负载。这相当于每10分钟20000个签名,也就是每秒33个签名。单就共识进程而言,哈希图所做的远远不止这些。这不包括哈希图的哈希标识符和时间戳,这些哈希标识符和时间戳也需要与每条消息进行Gossip,以使共识起作用。

这里告诉我们,比特币的共识过程已经是非常轻量级的了,除了每笔交易需要6个字节来将交易排序为一个区块外,比特币每10分钟只发送大约80个字节的数据(以便达成共识)(与哈希图相比,这是一个非常少的数据量,哈希图经常会gossip,每次节点gossip都附加64字节的签名数据)。

所以,也许哈希图真的是投票协议效率的一次革命(我真的不知道),但我知道它相对PoW没有什么优势,因为PoW根本不需要处理投票。

 现在开始探讨有趣的东西(fun stuff)!

 让我们重新阅读一下关于哈希图吞吐量的表达:

“如果网络节点具有足够的带宽来实现每秒下载和上传大量交易,那么整个网络就可接近每秒处理那么多的交易。”

有一件事会让大家感到吃惊,那就是哈希图正在克隆以太坊的EVM(以太坊交易和智能合约执行的引擎),因此它将和Solidity应用兼容。

对于那些跟踪了我的以太坊同步推文的人,你会知道我目前正通过我的机器运行EVM。有趣的是,瓶颈并不在于带宽。实际上,下面所列出的,都不属于我的以太坊节点的瓶颈:

  1. 下载所有的区块和交易(按正确的顺序);
  2. 验证工作量证明;
  3. 内存(RAM);
  4. CPU;

由于只使用了100kb/s,我的机器已缓冲了足够多的交易,它们等待在处理队列中。而正是SSD固态硬盘的速度放慢了交易速度。我的MacBook Pro 2019笔记本电脑装配了最快的固态硬盘(它真的很有竞争力)。而以下是我的以太坊日志文件中的一个片段:

p13

这些“tx/s”(tps)计数,来自于我的SSD试图通过EVM尽可能快地压榨交易。然而,由于EVM和我的SSD固有效率低下问题,我们的测试速度并没有超过300 TPS。我会告诉你一件事,那就是使用哈希图,交易处理速度并不会比这个快。

原因是它没有解决任何瓶颈。哈希图唯一做的就是对EVM要接收的交易进行排序,但EVM的问题不是它不能接收有序10,000 TPS,而是它不能足够快地处理交易,即使是通过一个快速的SSD。你只会让排队的时间变长。

所以让我们再重新看看下面这张图

p14

当哈希图和以太坊都使用EVM的情况下,哈希图如何能够完成10000 + TPS (以太坊当前只有12 TPS)

好吧,对于这个答案,我实际上并没有提到有趣的事情。这一比较之所以不成立,是因为哈希图的数据实际上与EVM没有任何关系,请参见此处:

p15

“加密货币交易”。

那么,这些加密货币交易,比如以太坊的交易,是由EVM执行的吗?

不,让我们看看体系结构:

p16

在哈希图中,加密货币交易是由一个独立的服务完成的,而不是由智能合约完成的。因此,当他们谈论10,000+ TPS,并将其与以太坊的12 TPS进行比较时,他们不是在谈论通过EVM进行的交易,以及可遵循任意智能合约逻辑(以太坊的整个目的),而是在谈论愚蠢的账户对账户token转移。

p17

现在,我猜你开始生气了,可能是我让你生气了。我是说哈希图对提高可扩展性而言没有任何作用吗?Leemon Baird和Mance Harmon只是在公然地撒谎?不知何故,这是一个估值60亿美元的项目,却没有人在谈论它的缺陷?

当然不是,这不是IOTA。但是你现在准备好理解哈希图是如何实现高TPS的了吗?

 介绍……共识服务! 

p18

如果你能从头坚持阅读到这里,那我要祝贺你(不是指那些懒惰的人,他们只是跳到了有趣的部分:C), 因为这就是所有魔法发生的地方。

所谓共识服务,是一种Hedera节点将他们所做的其他一切并行运行的服务。但它与其听起来的样子不同,例如,该服务公开了一个API,允许“普通用户”访问哈希图上发生的事件,以便他们了解是否收到了特定的付款或帐户余额的状态。

因此,基本上,共识服务是一组中心化的数据库,你可以用它来查询信息。感到失望了?嗯,你不应该这样,因为这个共识服务实际上为你提供了“状态证明”!有了这些证明,你就可以放心了,这说明你收到的答案完全得到了Hedera节点的认可。

以下是你可以从共识服务API获得的不同级别的响应(来源):

  1. 响应(Response):这只是接收到交易的ACK(确认),你100%信任与您交谈的共识服务节点;
  2. 后续查询(Subsequent query):这是包含在哈希图中交易的ACK(确认),你100%信任与您交谈的共识服务节点;
  3. 收据(Receipt):当一笔交易包含在哈希图中时,一个收据会被创建(3分钟)。你可以向任何共识服务节点请求此收据,从而获得“第二个意见”,以更加确信交易实际上已包括在内。你100%信任与您交谈的共识服务节点;
  4. 记录(Record)
  5. 记录+状态证明:

等等!

等一下,你还记得那张精美的图片吗?

p19

让我们放大一点,结果发现,我们之前忘记阅读了一些内容:

p20

“对于Hedera,交易的范围显示不需要交易记录,而是可接受一个交易收据。”

那么……这10,000+ TPS 的数据是不需要给出状态证明的?你只是计算一个节点每秒可声明其每秒接受交易的次数,但是它没有保证,基本上只是一个可信的API?哦,这真是难以置信,我现在不把所有钱都投进去真是太糟了,但神奇的是我不可能卖掉我的比特币。

但……好吧,我们继续。

  1. 记录:一个收据,但有更多的信息,如时间戳和智能合约函数调用的结果;
  2. 记录+状态证明: 这里开始变得有趣。状态证明!那么啥是状态证明?对于那些知道比特币的SPV证明是如何工作的人来说,这是等效的。Hedera节点将签署一个Merkle根,该根与Merkle路径一起被包含,表明当前状态的状态的时间戳内存在当前帐户余额、交易(或查询的任何交易)。这个Merkle根上的签名也包括在内。因此,Merkle根上的Hedera签名会“证明”你收到的响应是正确的。

所以,聪明的读者现在会问,好吧,我得到了一些带有响应的签名,但是我怎么知道这些签名是Hedera节点的签名呢?

嗯,他们也想过这个问题。他们将向你发送整个“地址簿历史”,它也是所有Hedera节点公钥的完整列表,以及在每个步骤中由上一个节点签署的对该组公钥所做的所有更改。所以它就像一个小的区块链,其跟踪的是可信的密钥,而不是币。

所以,现在聪明的读者会问“但我怎么知道启动密钥是正确的呢”?对于这个问题,我不得不引用Hedera的博客:

“没有黑客能够用一个损坏的状态证明愚弄Bob,因为他们将无法重新创建与已知和受信任的账本ID 匹配的签名和地址簿历史记录 —这是由Hedera在知名渠道上发表的。”

砰-砰!

你看,启动公钥是不可能出错的,因为它们已经在Hedera的网站和知名渠道上发布了。

Vitalik,为什么你没有这么做呢 ?为什么你觉得在设计一项无需信任的技术时,你必须去写文章来说明接受可信的捷径有多难?

(实际上,Vitalik确实考虑过这样做,也就是将以太坊从PoW 系统转向权益证明PoS系统)

P.S. Vitalik, 为什么你不设置几个节点,然后我可以每秒查询10000 次关于你假定已确认的交易?这样,以太坊将拥有与第三代DLT(比如Hedera哈希图)相同的TPS。

质疑:好吧,我明白了。但是假设我和不同的人核对了十亿次启动密钥,我不在乎比特币最大主义者是否说这是不安全的,这对我来说已经足够了。那么哈希图到底能否实现10,000+ TPS呢?

答:好吧,我假设你有正确的启动密钥,但这并不能确保控制这些公共密钥的人不能创建完全伪造的状态证明。

质疑:那不是真的。Hedera 哈希图是“aBFT”,这是分布式共识系统可以达到的最高安全标准!

答:仅仅因为它是aBFT(异步拜占庭容错),并不意味着大多数Hedera节点就不能产生无效结果(如果它们愿意)。你还是要相信他们不会做坏事。

质疑:Hedera哈希图是权益证明(PoS),如果节点提供虚假的状态证明,它们将损失大量的钱!

答:好的,所以我们需要把磁带倒放回去一点。那些证明哈希图状态一部分的“状态证明”?这些实际上不是真正的证明,它们更像是承诺(commitment)。这意味着Hedera节点已经提交给一个Merkle根(状态),但它实际上并不能证明状态是有效的。

现在,在真正的PoS链中的工作方式是,如果验证者节点使用相同的区块/序列号签署无效状态或多个不同状态,你可以通过广播他们发送给你的假证明来销毁其质押( stake)。

那Hedera哈希图呢?

在Hedera系统中,节点实际上并没有锁定任何可以销毁的质押( stake),所以,如果发生了这种情况,你就得去法院解决问题了。

 通过法庭实现的可扩展性

 在比特币和以太坊中,我们有所谓的“Layer 2" 扩容解决方案。有了这些“上层”,底层的低效率问题就得到缓解。在这些“上层”中,你可以每秒完成数千、数万甚至数百万笔交易,如果在这些层上出现了什么问题,或者有人试图欺骗你,你就可以把底层作为“法庭”,然后由它来仲裁。

p22

这可能意味着试图偷东西的人,会因此而损失惨重,或者基础层只是拒绝窃贼,而是把钱给正确的人。这些“审判”是以密码学的方式执行的,只要基础层仍然起作用。如果你看到一些错误的行为,你可以质疑它,如果你有不正当行为的密码学证明,“法院”的判决就会对你有利,而且是次次如此。

为了在所有情况下保持这一基础层真正神奇和强大的功能,并使每个人都可以访问,我们限制了它需要处理的数据量。

而Hedera哈希图呢,这个可实现10,000+ TPS的第三代DLT,它也会通过法院来实现扩展。

但它使用的是古老的、传统的法院。你得雇个律师,因为如果你被这个系统搞砸了,这是你唯一能做的事情。

但不要来找我,你去找 Leemon(时间戳23:20)。

er

真有趣!

好吧,现在我还能说什么?

律师上场了?

祝你好运。

p23