如今的区块链还不完美。比特币在10多年前首次发布,但它仍然面临着低吞吐量和高交易费用的问题。以太坊多年来一直在推动更新,但在可扩展性方面几乎没有比特币做得好。这个问题的发生是由于区块链还存在所谓的三难困境。
在本文中,我将介绍区块链的三难困境是什么,Algorand是什么,以及他们如何尝试以一种高层次的方式解决它。本文假设您对区块链及其相关术语有一定的基础知识。
区块链三难困境是什么?
三难困境是指有三种选择,但最多同时只有两种可能。在区块链三难困境的情况下,有三种选择:
· 安全
· 可扩展性
· 去中心化
如果三难困境成立,只有两个选项为真就意味着没有好事发生。
没有去中心化,我们基本上仍然处于今天已经存在的同一系统中:排他性和神秘性。这包括有少量“代表”的项目——这不是真正的去中心化。
没有安全性,交易可能会凭空消失。你本可以从别人那里拿到钱,然后给他们提供产品或服务,但过了一段时间,你意识到你根本就没有拿到钱。
最后,如果没有可扩展性,网络就会很慢,很容易阻塞(还记得加密猫蓬勃发展时以太坊发生了什么吗?)这是不利的,因为我们要建立一个全球即时的网络。
区块链应该做什么?
区块链本质上有两个需求:
· 使其防篡改和可跟踪。这是通过单向哈希技术实现的,包括最新块中的最后一个块的哈希值。几乎所有的区块链都是这样做的,在这种情况下并没有太大的不同。
· 产生新的块。如何选择将哪个块添加到链上?这是一个棘手的问题,不同的区块链使用不同的共识性算法来确定。
解决三难问题归结于开发一种共识算法,它可以同时做这三件事。
流行的共识算法及其缺陷
工作量证明(PoW)
PoW因中本聪(Satoshi Nakamoto)将其用作比特币的共识算法而臭名昭著。在撰写本文时,以太坊也仍然使用着PoW。虽然该算法已经被证明是可靠的,因为它已经运行了10多年,但它也有相当多的问题。
· 不可扩展: 在PoW中,“矿工”需要在他们的机器上解决一个非常复杂的密码难题。世界上第一个这样做的人有权在链上附加一个新块。这个过程是昂贵的,因为解决这个难题需要大量的计算能力和电力。除了获胜的矿工之外,实际上所有人都在赔钱,因为他们只是花时间试图解决一个谜题而已。
· 事实上的集中化: 虽然PoW本身并不是一个集中化的共识机制,但由于成本高昂,随着时间的推移,比特币开采实际上已经变得集中化。当今世界的采矿业使用的是一架又一架的专用硬件,耗电量极其的大。在个人电脑或笔记本电脑上采矿是完全没有价值的,而且很有可能会赔钱。由于盈利需要巨额投资,比特币的区块链主要由三个矿池控制。
· 易受51%攻击:如果一个PoW链的主要矿商串通,或者某个恶意行动者以某种方式能够控制51%的网络矿商哈希率,他们可以同意“假块”并自己控制整个链。另外49%的人是否同意他们的决定并不重要。这使得事实上的集中点非常可怕。
· 分叉: 网络现在看到下一个块的多个候选对象,由于传播该信息的延迟。这种分支称为分叉,分叉可以存在一段时间,甚至可以通过添加新的块继续延长。但最终,除了一个叉外,所有的叉都会消失。这将导致交易的不确定性和延迟,因为您不能完全确定您的交易是否已经完成。对于比特币,人们建议等待6个区块以确保交易是最终的,因为在添加了6个区块之后,它进入叉链的几率极低。但是,这可能需要一个小时,这并不好。
委托权益证明(DPoS)
在DPoS中,社区授权一组称为“委托”的用户选择下一个块。该算法在EOS中得到了应用。但也有一些缺陷:
· DPoS本质上是直接集中化的。当您希望网络为数百万用户运行时,选择将哪个块附加到链后面的固定数量的委托是没有意义的。长期依赖选定的代表是非常危险的。
· 可以停滞不前。因为只有有限的几个节点可以完成所有的艰苦工作,所以攻击者可以识别它们并停止网络的运行,例如通过DDoS对委托节点执行操作。
Bonded权益证明(BPoS)
正如许多人愿意做的那样,BPoS允许网络用户将一些钱以一种他们无法触及的“债券”形式放在桌面上。这给了他们一些网络上的权力,这些用户验证并向链添加新的块即可。他们的想法是,如果他们恶意行事,就会失去他们的保证金。这有一个非常明显的缺陷:
· 网络的普通用户没有足够的可支配资金来购买债券。恶意行为者更容易将巨额资金投入他们的赌注中,这将使他们能够完全控制区块链。如果回报是数十亿或数万亿美元,他们完全可以承受几百万美元的损失。
Algorand的纯粹股权证明(PPoS)
Algorand解决这些问题的方法是他们的PPoS算法。PPoS不要求用户在债券上投资,只要求他们首先持有债券。这并不是试图通过担心罚款来让用户保持诚实,而是让“一小部分钱作弊成为不可能,而大部分钱作弊又是愚蠢的”。当大部分钱都在诚实的人手中时,这种算法就是安全的。
实施纯粹股权证明
在高层,Algorand分两个阶段构建一个新的块:
在阶段1中,随机选择一个代币,并选择该代币的所有者来提议下一个块。
在阶段2中,从网络中的所有代币中随机选择几千个代币。选择这些代币的所有者组成一个阶段2委员会,该委员会将验证和批准阶段1中提议的块。由于代币是随机选择的,而不是所有者,所以一些成员可能会被选择k > 1次,并在委员会中拥有k票。
这是如何安全的?
这个问题的答案有点哲学意味。核心假设是,在任何社会中,都有少数坏人。也许是1%也许是2%,如果一个人生活在一个特别危险的社会,甚至可能是10%或20%。但是,在任何社会中都不会有大多数的坏人,否则社会就不会存在。
把算法和网络看作一个社会。让我们假设最坏的情况,并考虑网络上20%的代币属于恶意参与者。然后,1/5次,为阶段1选择的代币将由一个坏参与者拥有。假设他们告诉一些用户块是X而他们告诉另一些用户块是Y,就会试图引起社会上的分歧。
Algorand网络上的代币数是非常大,接近2²⁵⁶ (这取决于总投票权的股份)。代币的概率被选中投票块~ 2990/2²⁵⁶。因此,对区块进行投票的委员会的规模近平均值为2990。达成共识的门槛是2267票。由于对手持有20%的股份,预计投给坏人的选票数量约为2990/5 = 598(实际数字基于Poisson分布),而诚实选民的预期数量约为2990 *(4/5)= 2239。
如果对手能够为两个不同的值获得超过阈值的选票,从而划分链并在网络上引起分歧,那么他们将获胜。
举个例子,让我们来看看在诚实投票的数目恰好是期望2239的平均情况下会发生什么。要使对手获胜,他们需要[(2 * 2267)-2239]/2票才能获胜——或1147.5票。因为投票数是整数,所以他们需要≥1148票才能获胜。然而,如上所述,投给对手的选票的期望值是598。计算的概率≥1148票在Poisson分布大致与E (X) = 598(5/10⁸⁷)这是非常非常小的。
不过,这个算法最有趣的问题还有待回答。谁确定这个委员会?
如何选择使用者成为委员会成员
如果我告诉你,委员会是由Algorand(公司)自己选择的,这将是一个高度集中的解决方案,并拥有三难困境。
如果我告诉你,用户彼此讨论,直到他们决定谁是成员,这是一个超级慢的系统,因为你如何确定你信任别人,可能永远不会导致选择。
这就是有趣的地方。委员会成员自己选择。为了成为委员会的成员,这些节点在所有帐户上运行一个密码可验证的“彩票”,如果它们的任何代币中了彩票,它们将被选为委员会的成员。此彩票是独立运行的,不与网络上的其他节点通信。因为它是可以通过密码验证的,所以没有人能改变他们中彩票的机会。不管你有多少计算能力,你都不能改变被选中的机会。
当用户运行彩票时,有两种可能的场景:
1. 他们的代币都没有中彩票,在这种情况下,他们对街区的看法就被忽略了。
2. 如果一些k≥1的代币中了彩票,在这种情况下,用户获得一张“中奖彩票”(一个简短的密码证明),以证明他们中了彩票。然后,他们将这张票连同他们对块的看法传播到网络的其他部分。
回顾三难困境
安全
假设一个强大的恶意对手想要贿赂委员会成员,并影响他们对下一个街区的投票。我们甚至假设,如果他们知道委员会成员是谁,他们就能做到这一点。
这就是警告的由来,他们不知道委员会成员是谁。由于彩票是独立运行的,只有成员才知道他们是否被选中,直到他们将自己对区块的证明和意见传播到网络的其他部分。
一旦他们传播了自己的观点,其他节点就会知道委员会成员是谁,但现在要想腐化他们已经太晚了。他们已经说了他们必须说的话,他们的意见已经被广播到网络上。谁也不能保证他们什么时候会再次成为委员会成员。因此,恶意的对手现在不能做任何事情来让他们闭嘴。
所以基本上,Algorand是安全的,因为首先,对手不知道委员会成员是谁。当他们发现的时候,已经太晚了。
此外,由于没有人知道委员会成员最初是谁,所以他们也不能使用DDoS之类的方法攻击自己的节点。
可扩展性
任何用户只要一微秒就可以运行“彩票”,不管他们有多少代币。此外,由于所有彩票都是彼此独立运行的,所以节点不需要等待其他节点先完成某些操作。这可以在所有节点上并发发生。
一旦选中,成员将向网络的其他部分传播一条短消息。因此,无论网络上有多少用户,只需要在网络上传播几千条消息。这是高度可伸缩的。
去中心化
没有几个用户可以决定下一个块是什么。也没有一个固定的委员会每次都做这个决定。委员会是随机而安全地选出来的,根本不需要太多的计算能力。这使得网络上的每个人都有机会成为委员会的一员,对下一个区块进行投票。
奖励: 基本上不会分叉
在Algorand,一次只有一个区块可以获得所需的委员会投票门槛。因此,所有交易都是最终的,只要它们被添加到一个块中。一旦出现一个块,您可以指望它永远在那里,因此交易将立即结束。