LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 分片如何突破区块链扩展三难困境?(一)

分片如何突破区块链扩展三难困境?(一)

2020-01-11 紫瑰 来源:区块链网络

区块链的可扩展性三难困境

「可扩展性三难困境」 理论认为我们无法创建能同时具备以下三点的区块链:1)运行全节点的开销低,2)交易吞吐量高,3)同时保持安全性。显而易见的是,单纯地增大区块大小(虽然能提高吞吐量但)会使得运行全节点的开销更昂贵。反之亦然:我们只需提高部署全节点的目标要求,就可以在支持更高交易吞吐量的同时保持安全性。

很多区块链引入或正在引入一些新的共识协议(其中很多项目都是由学术圈内人士发起的,因此这些项目也被戏称为 「教授币」,但这些教授们都不太理解可扩展性三难问题)。这些新的共识协议声称其支持的每秒交易处理量(TPS)比中本聪共识更高,但是我从未见过这些协议在相同的硬件,网络以及攻击力条件下与中本聪共识做比较。无一例外的,他们都是在网络容量巨大的超强云服务器下对共识协议进行基准测试,然后 「发现」 他们的共识协议可提供高于比特币(每秒 3~7 笔)的交易吞吐量。换句话说,这些链关注于分片的垂直可扩展性而不是水平可扩展性。

共识与可扩展性(即交易吞吐量)几乎是正交的(译者注:即相互独立,不会互相影响)。教授币的设计思路可能因为术语上的混淆而受到了影响,在分布式共识协议中,可扩展性意味着延迟或者参与者的数量,而在区块链语境下,则是吞吐量。只要网络中的每个全节点都必须验证每笔交易,那么瓶颈就是交易的执行。不同的共识协议可能会提供其他有用的特性,例如较低的首次确认延迟和更快的敲定区块速度,但这些都不影响可扩展性。

所以,如果我们无法用一个崭新的共识协议来解决可扩展性三难困境 ... 我们能怎么做呢?

共识节点的数量(通常被称为 「去中心化」 属性)本身并不影响可扩展性。可扩展性三难困境的第一点常常被错误地指称为 「去中心化」,但实际上有关的是运行全节点的成本,而不是共识节点的数量。例如,人们常常说 EOS 是围绕着 21 个验证者的中心化系统,因此具有高吞吐量,但这实际上是错误的—— EOS 之所以可扩展,是因为它的全节点有极高的硬件和网络要求。能够支持大量活跃参与者的共识协议当然是值得追求的,但是这并不会直接影响链的可扩展性。

分片: 解决可扩展性三难困境

为解决可扩展性三难困境,区块链分片似乎是比较有前景的方法。在分片系统中,对交易的执行不会在所有节点上完全重复。理论上,这种方法会随着分片数量的增加,对可扩展性提供一个常数因子的提升。当然,这只是在理论上,因为存在很多需要注意的地方!接下来的分析主要针对于 Eth 2.0,因为我比较熟悉这块,但是这些分析应该适用于所有分片区块链。

分片如何提供可扩展性

分片指所有的节点并不完全重复所有交易的执行。但是这到底是怎么做到的呢?如果每个节点都要验证每一条分片链,那就不是分片了——就像一条区块链,其区块是将所有的分片合在一起的大小,分片前后是一样的可扩展性。如果我们允许每个节点去选择分片,并负责验证所选分片内的每个区块,那么很弱的敌手也能轻松地对单个分片发动攻击。这样的话,某个分片上就有可能出现违反状态安全性的事情(比如非法制造货币)继而影响所有其它分片。

解决方法是验证者必须被混洗(或者叫 「轮换」)到委员会中,每个委员会是所有验证者的一个子集。系统必须要知道混洗的结果以及赋予每个验证者的责任,从而可以在发生可证明的恶意行为时,追责并施加惩罚(不巧的是,使用 VRF 解决不了这个问题)。其它方面的细节暂且不论,出块过程大概是:一个委员会在一段时间内生成区块并为该区块提供见证数据,然后该委员会内的验证者会被分别混洗到另一委员会中负责另一个分片(也可能就是原来的分片)。

潜在的问题 1:如果验证者被分配至新的分片后,需要下载并执行他们上次离开这个分片后在这个分片上生成的所有区块,并同步至此分片的最新区块,那么分片没有提供可扩展性,本质上还是大区块。这可以通过两种办法来解决。首先,使用无状态客户端的概念,执行交易只需要一个状态根,每笔交易向状态数据库提供必要的证据。这样就不用存储大量的状态,但是为了确保提交至分片链的最新状态根是正确的,依旧需要处理所有的区块。其次,假设验证者将要去往的任意分片中都存在至少一个诚实参与者。只要有至少一个诚实参与者,就可以对提交的无效状态根生成错误性证明(Fraud Proof)。

潜在的问题 2:如果分片的区块被隐藏,那么验证者就无法对此分片区块生成欺诈证明。因为一个委员会中的大多数就可签名认可一个块的有效性,勾结起来的大多数可以创建一个无效区块然后把数据扣住。诚实的验证者们必须全局地、挨个请求其他验证者提供分片区块。由于 「说-听错误等价」(译者注:即非单一可归因错误),验证者不会因为数据被隐藏时发出的错误警告而受到惩罚,这意味着在恶意条件下,所有的验证者将必须实时下载所有的分片区块——再一次,这又取消掉了分片的效果,回到了大区块模式中。那么,这个系统系统要扩展也可以,但代价就是牺牲安全性,因为作了所有分片委员会中都是诚实参与者占大多数的假设,而这个假设是不现实的。相对应的解决方案是数据可用性证明,事实上,数据可用性证明是最基本的数学元件,没有这个,分片区块链不能同时保持安全和可扩展性。

这些潜在的问题解决了,看起来好像 「为完全实现 eth2 所需的所有研究突破」 都有了,为了实现用树莓派就可以跑全节点的可扩展且安全的分片链,只需完善实现细节就可以了。

—-

编译者/作者:紫瑰

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...