一文详解分片技术如何实现区块链扩容

分片是一种分区方法,将计算工作量和存储工作量分布到P2P网络上,这样每个节点就不负责处理整个网络的所有交易,而是只处理自己本分区(或分片)的信息。

在本文中,我们将以以太坊区块链上的分片技术为例,分析分片技术将如何实现区块链扩容。
来源|hackernoon
作者|Tiaan Wolmarans
翻译|头等仓Annie
编译|头等仓Alonso Chen
文章版权属原作者,翻译由头等仓提供,任何转载请保留前言信息

一文详解分片技术如何实现区块链扩容

众所周知,目前最常用的区块链是以太网,所以理解为什么以太坊开发者社区希望在以太坊上采用分片技术,将有助于理解分片技术是什么,以及分片技术为什么是一个受欢迎的扩容解决方案。

ETH Gas Station表示,在以太坊网络中,将交易添加到以太坊区块链大约需要1.78分钟,生成一个新区块需要32秒,平均每秒处理15-20笔交易。可以看出,以太坊生态系统是一个对矿工有利,而非对用户有利的环境,如果用户想要优先处理他们的交易,就必须提高该笔交易的gas(手续)费用。

低吞吐量、高延迟和高交易费用是当前以太坊面临的主要问题,一些对扩展性有要求的服务和应用不太适合采用以太坊网络。以太坊吞吐量低的主要原因是每个节点都要处理系统中的所有交易。

分片技术是什么?

简单地说,分片是一种分区方法,将计算工作量和存储工作量分布到P2P网络上,这样每个节点就不负责处理整个网络的所有交易,而是只处理自己本分区(或分片)的信息。

为了进一步了解分片,我们从实现分片最简单的方式开始讲,V神在他的文章中将这种方式称为“scaling by a thousand altcoins(通过上千种山寨币来进行扩展)”。

在这个分片方式中,我们不会只运行单条区块链,而是运行多条区块链,并且不是将每条链称为区块链,而是称为shard(分片)。每个分片都会拥有独立的验证者或节点网络,即通过 PoW 机制挖矿或者质押投票机制来验证交易和生成区块的网络参与者。

分片技术面临的一些主要挑战

在尝试使用分片技术中,我们发现的第一个问题是,由于每个分片都有自己的验证者,单个片区的安全性就会比整条链更差。例如,一条有 X 个验证者且没有分片的区块链,决定硬分叉成一条有分片的链,并将 X 个验证者分摊到10个片区中,那单个片区中的验证者数量就是 X/10个,因此只需要控制总验证者数量的 5.1%(51%/10)就可能破坏一个分片。

一文详解分片技术如何实现区块链扩容

我们遇到的第二个问题是:“由谁来为每个分片选择验证者?”对于一个坏的参与者来说,如果所有5.1%的验证者都在同一个分片中,则控制5.1%的验证者会造成不好的情况。如果验证者无法选择验证哪个分片,则控制5.1%验证者的参与者极不可能在同一分片中获得所有验证者,从而大大降低了它们破坏系统的能力。

一文详解分片技术如何实现区块链扩容

实际上,几乎所有的分片设计都依赖于某种随机性(randomness)来为分片分配节点,且随机性和验证者分配都需要不针对任何特定分片的计算。为了实现这种计算,几乎所有现有的设计都包含一条单独的区块链,负责执行维护整个网络所需的操作。

这个链在以太坊中称为信标链(Beacon Chain),负责生成随机数、为分片分配节点、接收分片的信息更新(并创建快照)、处理权益证明(PoS)和其他各种功能。

信标链也有一些不足之处。因为信标链需要做一些记账计算工作,且这些计算量是与系统中分片的数量成正比的,所以分片数量越多,信标链的计算工作量就越大。这就出现了与没有使用分片网络时的同样问题:低吞吐量和高延迟,所以分片网络存在一个与生俱来的可扩展性限制的问题。

但是,分片网络的结构确实对节点的任何改进都具有乘法效应。因为任何提高节点效率的提升都会使节点能更快地处理交易,如果运行网络的所有节点处理交易的速度都变成 4 倍,那每个分片能够处理的交易量将是之前的4倍,且信标链能够维持的分片数量也将是之前的4倍。由此来看,整个系统的吞吐量将变成之前的 4x4=16 倍。

如何将数据分割为碎片?

让我们先看看节点在区块链上主要执行那些事务:

1.处理/验证交易

2.将经过验证的交易和已完成的区块传播给其他节点

3.存储所有交易的历史

随着网络的发展,节点需要能够跟上网络的需求,从而随着网络的发展而增长;

1.随着需要处理的交易的数量不断增长,要求每个节点增加更多的计算能力

2.随着需要中继的交易的数量不断增长,节点在中继交易和区块时需要更多的网络带宽;

3.随着状态的增多,节点在存储数据时需要更多的存储空间。

从这三点可看出,无论每秒的交易量和中继的交易量是否增加,数据存储都会增加。

虽然很多人提议过对存储进行分片,而不是对交易处理进行分片,但是有一些项目已经实现了对交易处理的分片(而非对存储分片),最常见的分片类型被称为“状态分片”,在状态分片中,每个分片中的节点都在搭建自己的分片链,这条链包含的交易只会影响该分片全局状态中本地的状态。这意味着分片中的验证着只需要存储本地的状态,并且只需执行和中继那些影响本地状态的交易。

原文:
稿源(译):

本文来自,仅作分享,存在异议请联系平台删除。本文观点不代表刺猬财经 - 刺猬区块链资讯站立场。

(0)
上一篇 2019年9月11日 下午3:55
下一篇 2019年9月12日 下午1:31

相关推荐