去中心化一定需要达成共识吗?

编译:Tia,Techub News

地球是宇宙中心的这一错误认知延续了几个世纪。那时的人们认为太阳、恒星和行星都围绕着地球旋转。直到勇敢的思想家们揭示了日心说的真相,才彻底改变了天文学,从而打破了地心说的模型。

和天文学世界一样,区块链世界也存在一个长期误解:共识是建立去中心化支付的必要条件。我们被比特币和以太坊束缚住了。

去中心化货币需要去中心化共识的解决方案。 —以太坊白皮书,2014 年

共识其实是敌人。通过消除共识,我们可以像谷歌搜索一样快速完成交易。

共识难题

Eve 攒比特币买了她的第一辆特斯拉。Bob 和 Charlie 是特斯拉经销店运营者。

Eve 对一条消息签名,以此表示她正在向 Bob 转账。Bob 收到了 Eve 签署的付款,但还不放心把车钥匙交给她。因为 Bob 需要确定 Eve 没有同时向 Charlie 签署付款交易(双花)。

图片

图 1:Eve 尝试双重支付,目的是将相同的代币转移给 Bob 和 Charlie。

通常,区块链共识来解决双重支付问题。共识将交易作为输入,并按照多数节点都同意的某种全局顺序进行输出。

图片

图 2:共识作为一个黑匣子,将无序的「内存池」交易作为输入,并按照大家都同意的顺序输出它们。

回到 Eve。将 Eve 支付给 Bob 的交易叫作 tx1,支付给 Charlie 的交易叫作 tx2。区块链通过共识确保交易顺序,当出现双花时,最先被打包出块的交易才是有效的。

在只有一方参与的网络中,达成共识很简单:该方只需按照收到交易的顺序输出交易即可。但在有两方或多方参与的网络中,网络条件的差异将导致交易以不同的顺序接收。除此之外,恶意方可以故意提出相互矛盾的观点或引入网络延迟。那么,我们如何就全球秩序达成一致呢?

我们可以使用中心化银行来管理所有交易。但由于我们不想依赖任何可信中介,因此我们选择一组称为验证者的参与方,并假设其中三分之二以上是诚实的。

验证者通过多轮沟通达成共识。每隔一段时间,就会随机选择一个领导者,通过将待处理交易放入他们签名的区块来提出全局顺序。其余验证者对领导者的区块进行投票。拥有三分之二验证者签名的区块被视为已公证。恶意领导者可能会选择性地审查交易,甚至无法创建区块,从而迫使流程重新开始。多次重复此迭代过程可让每个人最终达成相同的顺序。达成共识的过程很慢。

相比之下,Web 应用很快,它只需要实现一次往返 —— 客户端发送 HTTP 请求,服务器返回 HTTP 响应。

我们需要完整排序吗?

让我们重新考虑一下:每笔交易都需要成为全球状态的一部分吗?

假设进行了两笔付款交易:Alice 向 Bob 付款,Charlie 向 Dave 付款。由于这两笔付款是独立的,实际上可以按任何顺序执行。即无论以哪种方式执行,结果状态都保持不变。

图片

图 3:Alice 向 Bob 支付的款项与 Charlie 向 Dave 支付的款项无关。无论这些交易的结算顺序如何,结果都保持不变。

共识可以解决双重支付问题——但我们能否避免因此带来的延迟成本?

方法如下。与共识类似,还是需要一组验证者,并假设其中三分之二以上是诚实的。验证者不是就全局顺序达成一致,而是通过签名来保证他们收到的交易有效(基于他们的本地视图)。只要获得超过三分之二的验证者确认的那笔交易则为有效交易。

Eve 向验证者发送两笔双花交易。首先,有一组不诚实的验证者同时签署了这两笔交易。然后,她将诚实的验证者分成两组(假设每组占总验证者数的三分之一),并向不同组发送不同的交易(比如向第一组发送给 Bob 的交易,向第二组发送给 Charlie 的交易)。不过 Eve 还是无法为这两笔交易收集足够的签名来执行双重支付攻击。

将这一分布式网络再具像化,假设这个网络有 N 个验证者,其中不到三分之一是恶意的。

诚实用户:向所有验证者广播新的交易,并在收到三分之二以上验证者的签名后,认为交易已完成,该笔交易获得证书(certificate)

诚实验证者:维护本地未花费代币列表,并且仅签署代币的第一个有效交易。

如果要完成双花,两笔双花交易都需要获得证书,即需要超过三分之一的验证者是非诚实的。

图片

会有潜在风险吗?当 Eve 试图进行双重支付时,共识将在全球范围内对她的交易进行排序,并且只有两个交易中的第一个会被接受。但在我们描述的协议中,协议无法保证 Eve 的每一笔交易都会最终完成。Eve 的账户甚至可能永远被封锁,因为我们不必向对手方提供任何保证。

那么,我们为什么需要再次达成共识?

我们不存在达成共识一说。

除了支付之外,「bag」或常见子集协议(例如,链上拍卖、投票、限价订单)、仅附加信息流(去中心化社交、公证)以及可以表示为无冲突复制数据类型的协议(社交图谱、声誉系统、游戏)都可以在没有全局排序的情况下运行。目前运行的许多依赖顺序的 DeFi 协议也可以在无需全局排序的情况下运行。

Pod消除了共识,从而实现了像谷歌搜索一样快、像比特币一样安全的去中心化系统。