区块链扩容方案之“分片技术”

 网赚项目   2019-10-17 18:40   11 人阅读  0 条评论
  • 分片是区块链扩容的热门方向之一。不仅以太坊基金会把分片作为官方钦定的扩容方向,有分片概念的一众公链也受到投资界热捧。

    区块链扩容方案之“分片技术” 第1张

    “分而治之”是分片技术的支撑性设计理念,目前区块链中的的容量机制,以比特币为例,每10分钟产生一个区块,并且每个区块大小限定为1MB,容纳的交易数平均大概3000笔,显然无法应对日益扩增的交易频次。

    分而治之的理念相当于处理交易数据时,同时开通多个通道同步进行,在交易过程中,如果每笔交易都需要网络中的每个节点进行确定,必然造成交易阻塞。分片即将网络、交易、状态进行分片,对节点由随机序列分配成多个碎片,当网络当中接收到待确定的交易,系统随机分配给各个碎片,这些碎片呈现独立状态,可以完成区块链信息确立。

    1. 分片是什么

    目前区块链的扩容方案主要分为三个不同的Layer。分片和DAG (有向无环图)同属对区块链本身架构进行改变的Layer 1。分片目前被关注的热度很高,主打分片技术的公链被投资机构热捧, 分片也和Layer 2的侧链、子链、状态通道等方向一起被列入以太坊官方的扩容方案。

    2. 分片的原理

    分片其实是一种传统数据库技术,它将大型数据库分成更小、更快、更容易管理的部分,这些部分叫做数据碎片。在公链中,它是通过使用多个网络设备来获得平行处理转账的功能,从而分散那些转账验证的工作量。这样会自动地把网络分成很多更小的部分,或者说进行“分片”处理,从而每一个小网络只需要运行一个更小范围的共识协议。网络上的交易将被分成不同的碎片,其由网络上的不同节点组成。

    因此,每个节点只需处理一小部分传入的交易,并且通过与网络上的其他节点并行处理就能完成大量的验证工作。将网络分割为碎片会使得更多的交易同时被处理和验证。所以,分片技术使用的是平行处理的方式,有越多的节点加入,网络中批准的速度也会加快。简单来说,分片的就是将一个大任务拆分为多个可以并行处理的小任务,从而提升性能。

    图中,我们把以太坊的网络分为两部分,左边一部分L1为现有的以太坊主链,右边一部分L2为各个分片,他们各自是一个独立的账户空间。每个分片有专门的节点来维护,就相当于一个个独立的区块链,每个分片将自己的记录汇总发给主链。主链收集各个分片的摘要,然后生成主链区块(N+1)。但是主链收集的是摘要而不是具体的交易细节。

    分片方案带来的主要好处是,网络节点进行的冗余计算量大大减少,每个节点只需对自己分片内的交易进行验证,不需要验证分片外的交易。如此可节约大量的时间与网络资源,进而完成更多的交易的处理。

    3. 区块链与分片技术

    目前主流的分片技术分为网络分片、交易分片和状态分片等三个层级,其技术难度也随之依次递增。主要的核心在于分片内节点需要达到一致,并且防止被恶意攻击者控制,而分片之间需要信息传递机制,保证交易及智能合约的状态在不同分片间达到一致。

    网络分片:实现区块分散

    实际上,在区块链网络(比特币、以太坊)当中,区块与区块之间都会建立强连接,也即是,在确认每一笔交易的同时,彼此区块之间也会建立通信,这就造成了区块当中的交易无法在短时间内得到确认,网状般的连接架构,在保证安全性能以及去中心化过程中,也降低了交易释放效率,从而导致网络堵塞。

    网络分片,使得区块以随机性形成各个碎片,由于区块链中用于记录数据的默克尔树,支持公共随机性区块当中提取,而且形成后的碎片之间不必形成强连接,在不必通信条件之下,由于随机成分居多,最大限度保障网络节点的忠诚度。

    从理论上而言,网络分片用随机分配机制来平衡过度中心化与交易效率,但也存在恶意节点掌控大部分算力节点,由于网络节点被分割成多个碎片,包容的节点越少,恶意节点占的权重就越高,网络中一部分交易掌握在恶意节点手中,存在一定安全隐患,此时,区块链安全性取决于节点的数量以及网络分片的数量大小。

    交易分片:拆解交易

    交易属于对于UTXO(比特币)机制与账户机制(以太坊)影响有很大不同,两者在关于交易之间主体设计架构上也有很大不同。

    对于使用UTXO的区块链设计模型,交易分片涉及到问题较为复杂,在发生交易过程中,UTXO中会有输入、输出两个不同地址,若是对两个地址进行分离,货币转移无法统一,若想实现正常转移而避免“双花问题”,碎片之间必须建立通信,这样一来,分片没有意义了,违背最初分片为了提升交易效率的愿景。

    然而对于如以太坊一样的账户机制,一个用户对应一个地址,不需要考虑一笔费用别多次消费,对交易拆分,每一笔交易将会有一个发送者的地址,然后系统可以根据发送者的地址分配一个碎片,这确保了两笔双花交易将在相同的碎片中得到验证,因此系统可以很容易地检测到双花交易,而不需要进行任何跨碎片的通信。

    状态分片:缩减存储负担

    这一技术的关键是将整个存储区分开,让不同的碎片存储不同的部分;每个节点只负责托管自己的分片数据,而不是存储完整的区块链状态。状态分片一经提出,就伴随着挑战。

    在一个状态分片的区块链中,一个特定的分片只会保留一部分状态。假设其中一个账户创建了一笔交易,它将支付另一个账户一笔钱。这笔交易将由第一个分片进行处理,一旦该笔交易被验证,关于第一个账户的新余额的信息就必须与它所在的分片进行共享。如果两个帐户由不同的分片进行处理,那么这可能需要进行频繁的跨片通信和状态交换。确保跨片通信不会超过状态分片的性能收益仍然是一个值得公开的研究问题。

    状态分片的第二个挑战是数据的可用性。比如由于某种原因,一些特定的分片遭到了攻击而导致其脱机。由于分片并没有复制系统的全部状态,所以网络不能再验证那些依赖于脱机分片的交易。因此,在这样的情况下区块链基本上是无法使用的。解决此问题的方法是维护存档或进行节点备份,这样就能帮助系统进行故障修复以及恢复那些不可用的数据。但是,这样就使得节点将不得不存储系统的整个状态,因此这还可能会引发一些中心化的风险。

    任何分片机制需要确保分片在抵御攻击和失败时是具有弹性的;网络必须接受新的节点并以随机的方式将这些分配给不同的分片。然而,在状态分片的情况下,重新分配节点是非常棘手的。在一次重新调整网络的过程中,在同步完成前可能会出现导致使整个系统失效的问题。为了防止系统的中断,我们必须对网络进行逐步调整,以确保每个分片在所有节点被清空前仍有足够多的旧节点。类似地,一旦一个新节点加入了一个分片中,系统就必须确保该节点有足够的时间与分片状态进行同步。

    目前多数方案都已完成网络分片和交易分片,能够满足一定的数据处理需求,但状态分片整体进展缓慢,也就自然成为分片公链突围的关键之一。

    在上述三种分片结构之外,还有另外一种分片逻辑——存储分片,主要针对数据量暴涨后的存储问题。由于目前区块链网络数据量有限,远未达到内存天花板,也就导致大多数项目并未将存储问题作为当下主要工作,但随着公链真正开始落地应用,存储问题势必需要解决,以YeeCo为代表的公链项目就已提出了全分片方案,其中涵盖存储分片的解决方式。

    分片技术可以说是过去一段时间中扩容乱战的赢者,不过能不能一直“赢”下去还有待商榷,或许下一个扩容爆款已经走在到来的路上了呢?




    本文地址:http://www.mwzbk.com/index.php/post/184.html
    版权声明:本文为原创文章,版权归 网赚项目 所有,欢迎分享本文,转载请保留出处!

     发表评论


    表情

    还没有留言,还不快点抢沙发?