比特币是加密货币网络中第一个成熟的代表产品,也是因为比特币网络的出现,才后继发展出以太坊等世界计算机雏形。
不过后续公链为了性能需求,做了过多更改和添加,其中最重要的是把公链的共识彻底更改为PoS,尽管以太坊还没有彻底改变,但也已经提上日程。
我们不禁需要思考,能不能不修改PoW共识,而达到其性能呢?我们就以本文讨论一下,PoW共识该如何进化。
因为共识算法主要应用在区块链网络结构的共识层,可以理解为layer1。而如果对PoW共识进行更改,那对比对象就是比特币的PoW中本聪共识和以太坊的ethhash,今天不用谈其对ASIC芯片和GPU芯片的规定,而是在PoW出块验证过程中的变化。
中本聪共识是区块链早期广泛使用的一种共识方法。目前为止中本聪共识仍是容错能力最好的,其设计简单,通讯开销低,经过了数十年的验证。但是该共识有一个自然的吞吐量限制。其吞吐能力较低,出块时间过长,用户体验较差。
如果你想提高吞吐量,你可以做两件事:一是增加块大小(如比特币现金,比特币无限),二是降低块间隔,但这会增加孤块率。消耗带宽,也不利于交易确认。随着孤块率的增加,系统的安全性下降,吞吐量下降。
当孤块率非常高时,攻击者很容易秘密生成更长的链。攻击者则不需要 51% 的算力,可以用更少的算力覆盖区块链。
如果我们想突破吞吐量限制,必须想办法降低孤块率。
孤块出现的原因来自于块的传播延迟,如果在传播另一个块时发现一个块,则其中一个注定是孤块。
Tik Tok“大V”杰森·德鲁罗购买CryptoPunks:金色财经报道,美国歌星杰森·德鲁罗在推特宣布购买了CryptoPunks,目前他在Tik Tok上拥有4920万粉丝,有能力将年轻受众带到加密货币领域。(u.today)[2021/9/10 23:15:34]
而一些区块的传播速度较慢,是因为这些区块相关有更多的新交易,新交易是在区块打包前的 10 秒内生成的未同步交易,因此矿工必须先同步这些交易,然后才能进一步传播这些块。
例如,当节点 A 向节点 B 传播一个块并且其中没有新的交易时,节点 B 可以立即将这些块传输给它的所有邻近节点。
但是,如果区块中有新交易,节点 B 必须首先从节点 A 同步这些交易,然后验证这些交易的签名,这也需要时间。只有当整个区块的有效性得到验证时,节点 B 才能继续传播这个区块。
以太坊出现后,对中本聪共识并没有实质性的改善。其只是简单地缩短了出块间隔。
并且以太坊还有一个问题,因为交易的有效性取决于区块内的交易顺序,验证交易,必须等到区块收到后,因此无法在收到实际区块之前验证交易有效性。
也即是因为这样,每个区块中的每笔交易都会被视为新交易。交易传播中有很多冗余。例如一个以太坊客户端可能会将同一笔交易传播到不同的节点七次,而这些交易就意味着以太坊会出现非常高的孤块率,数据表明,可能有时高达 30%,严重占用网络资源,造成交易堵塞。
以太坊还有叔块的设置,如果这些孤块被纳入最长链,可以拿到部分奖励,但叔块的数量和奖励无济于事。
因此,这些迟缓的交易确认流程和技术现象,造成了PoW共识表现出的比特币网络和以太坊网络的问题。
那可以如何改善PoW共识?
在现有的设计案例中,可以看到两种必要的方法。
首先是挖矿难度调整,这是对于计算出块难易程度的预估,比特币和以太坊是定期调整的,并且是较长周期内调整,而改善后的PoW共识内可以通过一个小周期(时隙)来调整,一个时隙会包含多少个块,以保证快速调整到平稳的难度值。这对出块时间也是重要的。
第二个必要的改进就是调整出块时间,而这涉及到很细节的过程。在上文中,因为区块打包前的新交易会不停延迟区块链传播时间,那如果让传播节点不再因新交易出现而延迟同步,出块就会变快速,但需要将新交易,以及漏掉的交易进行新的验证打包。这就需要一个新的交易提交渠道。
我们在NC-MAX的算法里查到了一个设计。
那就是将区块中添加了一个“叔块头”区域,允许矿工将尽可能多的叔块嵌入到一个块中。叔块可以在区块中传播他们的头和他们的交易提议区,但叔块不计入块大小限制。
另外还需要添加了一个交易提议区,其中可能包含一些新交易的提交,交易在传播区块后同步。并且是并行同步的,不会影响块的传播过程。只要哈希检查,不会影响块的有效性。
还有一种可以称之为智能的方式,那就是让出块时间设计为动态变化。
在PoW链正常的共识出块中,会出现孤块、叔块,这会影响链的数据,但如果通过一个数据来监控孤块和叔块,进而调整出块时间和块大小。就足以让所有链上的资源变得更智能。
例如还有一个公链的案例是引入叔块率等运行期数据,对出块时间,难度,出块奖励进行动态调整,进而最大限度利用网络资源。
详细的过程如下:当区块越大,出块时间越短,孤块会越多,而孤块率增加会降低双花攻击的难度,所以需要将孤块率限制在一个阈值之内。
如果在孤块基础上,引入叔块。首先,定义每 N 个块为一个 Epoch。并且为每个Epoch定义出叔块。
这样就可以用 Epoch 内的叔块率评估网络的拥塞情况,并以此作为出块时间,出块大小调整的依据,实现充分利用网络,提升吞吐的同时,也可避免区块过大或者出块时间太短导致孤块过多,安全降低。
为了将叔块维持在一个合适的阈值内,在每个 Epoch 末,都会重新调整下一个周期的出块时间。
如果叔块率较高,则说当前的出块时间间隔下,网络中存在较多的分叉和孤块,我们需要调大出块的时间,缓解此问题。反之,则说明全网出块情况良好,还能进一步缩短出块时间,进一步提高全网吞吐。
以此看来,通过对PoW共识设计的改变,足以改善PoW链的表现能力,但如果用此与PoS链相比,仍旧是无法比较的,只是通过这样的改进,在面临网络拥堵情况下,链的处理能力是更高的,也是更可控的,这样的调整下,部分项目可以保持对PoW共识的信仰,同时其网络资源也是在矿工经济模型的保护之下运行的,在行业面临巨大问题时,可能会有缓冲效果。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。