分片其实是一种传统资料库的技术,它将大型资料库分成更小、更快、更容易管理的部分。分片是将网络中的每个区块变为一个子区块链,子区块链中可以容纳交易资料,最终组成一个在主链上的区块。
分片技术的概念源于传统数据库,顾名思义就是将区块中的数据分成很多不同的「片段」,并将它们分别存放在各个节点之上。
简单来说,分片技术就是一个分散式并行系统,在保持主链完整稳定的同时,减少每个节点的数据储存量,从而达到扩容的效果。
分片技术是更为长远且理论上可行的扩容方案。不过其过于复杂且存在不少问题,比如在分散式并行模式之下无法利用Merkle根植实现「不存在证明」(涉及双花问题的信息验证)等。所以说,分片技术至少需要两到三年的时间酝酿。
区 块 链 的 扩 容 问 题
区块链平台今天面临的最大问题之一就是可扩展性。
所有主流的平台都在努力提高每秒的交易量。事实上,当今的公共以太坊网络和比特币网络平均每秒可以处理7-10笔交易。这一数字远低于像Visa这样的集中支付处理器,后者平均每秒能处理约8000笔交易。
缓慢的交易处理速度造成大量的未完成交易阻塞了网络。从技术角度来看,所有区块链的共识协议都有一个具有挑战性的限制:
在大多数像比特币和以太坊这样的区块链上,节点都是由公众运行的。虽然去中心化的共识机制提供了一些重要的优势,比如容错性、安全性、政治中立和真实性,但是这种验证链的方法是以降低可扩展性为代价的。
当这些公共区块链容量变得更大时,它将需要更强大的处理能力来验证,可能会在这些区块链的网络中造成瓶颈,从而减慢那些创建新应用进程的速度。
分 片 技 术:分 而 治 之
分片技术是一种基于数据库分片传统概念的扩容技术,它将数据库分割成多个碎片并将这些碎片放置在不同的服务器上。
在公共区块链的情境中,网络上的交易将被分成不同的碎片。因此,每个节点只需处理一小部分传入的交易,并且通过与网络上的其他节点并行处理就能完成大量的验证工作。将网络分割为碎片会使得更多的交易同时被处理和验证。
因此,随着网络的增长,区块链处理越来越多的交易将成为可能。这种属性也称为水平扩容。
基于分片技术的区块链的实现有着不同的好处。
首先,区块链上处理交易的速度变成了每秒上千笔甚至更多,这改变了人们对加密货币作为支付方式效率的看法。
改善交易吞吐量将会给去中心化的系统带来越来越多的用户和应用进程,而这将反过来促进区块链的进一步运用,也使挖矿变得更有利可图,同时也能吸引更多加入到公共网络上的节点,从而形成一个良性循环。
此外,分片技术可以帮助降低交易费用。因为验证单笔交易的处理量减少了,节点可以在保持盈利运营的同时收取较小的费用。
分 片 技 术 的 类 型
分片技术的一些挑战是很容易克服的,而另一些则不然。一般来说,网络和交易分片更容易实现,而状态分片则要复杂得多。
通过网络和交易分片,区块链节点的网络被分割成不同的碎片,每个碎片都能形成独立的处理过程并在不同的交易子集上达成共识。通过这种方式,我们可以并行处理相互之间未创建连接的交易子集,通过提高数量级提高交易的吞吐量。
另一方面,在当今的主流公共区块链上,所有公共节点都承担着存储交易、智能合约和各种状态的负担,这可能使其为了获得更大的存储空间而进行巨大的花费,以维持其在区块链上的正常运转。
为了解决这一问题,有一种被称为状态分片的可行方法已被提出。
下面,对于不同的分片机制,我们会明确地讨论它们所面临的一些挑战,以及它们的可行性。
网 络 分 片
分片的第一个也是最重要的挑战是创建碎片。
开发者需要开发一种机制来确定哪些节点可以按照安全的方式保留在碎片中,这样就能避免那些控制大量特定碎片的人所发起的攻击。
打败攻击者的最佳方法(至少在大多数情况下)就是创建随机性。通过利用随机性,网络可以随机抽取节点形成碎片。这样一种随机抽样的方式可以防止恶意节点过度填充单个碎片。
但是,我们如何创建随机性呢?
最容易获得公共随机性的来源是区块。在区块中所提供的随机性是可被公开验证的,并且可以通过随机提取器中提取统一的随机比特。然而,简单地使用随机机制将节点分配给碎片仍是不够的。
我们还必须要确保网络的一个碎片中不同成员意见的一致性。这可以通过像工作量证明这样的共识协议来实现。
交 易 分 片
我们假设网络已经由碎片所组成,用户发送一笔交易,每一笔交易有两个输入和一个输出。那么,该笔交易将如何分配给一个碎片呢?
最直观的方法是根据交易哈希值的最后几位来决定碎片。
例如,如果哈希值的最后一个比特是0的话,那么交易将被分配给第一个碎片,否则它被分配给第二个碎片(假设我们只有两个碎片)。这允许我们在单个碎片中验证交易。
但是,如果用户是恶意的,他可能会创建另一笔具有两个相同输入但不同输出的交易——是的,就是一个双花交易。第二笔交易将有一个不同的哈希值,因此,这两笔交易就可能形成不同的碎片。然后,每个碎片将分别验证接收到的交易,同时忽略在另一个碎片中验证的双花交易。
为了防止双花问题,在验证过程中,碎片将不得不进行相互通信。
事实上,由于双花交易可能会在任何碎片中出现,因此特定碎片所接收到的交易将不得不与其它的碎片进行通信。而实际上,这种相互之间的通信可能会破坏交易分片的整个目的。
另一方面,当我们有一个基于账户的系统时,问题就简单得多了。每一笔交易将会有一个发送者的地址,然后系统可以根据发送者的地址分配一个碎片。
这确保了两笔双花交易将在相同的碎片中得到验证,因此系统可以很容易地检测到双花交易,而不需要进行任何跨碎片的通信。
状 态 分 片
状态分片带来了新的挑战。事实上,状态分片是迄今为止最具挑战性的分片技术提案。
这一技术的关键是将整个存储区分开,让不同的碎片存储不同的部分。因此,每个节点只负责托管自己的分片数据,而不是存储完整的区块链状态。
如果两个受欢迎的帐户由不同的碎片进行处理,那么这可能需要进行频繁的跨碎片通信和状态交换。
确保跨碎片通信不会超过状态分片的性能收益仍然是一个值得研究的问题。
减少跨碎片通信开销的一种可能方法,是限制用户进行跨碎片交易,但它可能会限制平台的可用性。
状态分片的第二个挑战是数据的可用性。
我们可以考虑这样一个场景,由于某种原因,一些特定的碎片遭到了攻击而导致其脱机。由于碎片并没有复制系统的全部状态,所以网络不能再验证那些依赖于脱机碎片的交易。因此,在这样的情况下区块链基本上是无法使用的。
解决此问题的方法是维护存档或进行节点备份,这样就能帮助系统进行故障修复以及恢复那些不可用的数据。
综上所述,分片技术是区块链的一项令人兴奋的技术。
它让我们看到了希望,它可以在不影响去中心化和透明度的情况下解决扩容问题。
然而,毫无疑问的是,分片技术,尤其是状态分片,在设计层面和实现层面都是非常困难的。
开发者们还需要做更多的研究来确定状态分片的可行性,研究人员和开发者们正在积极寻找那些可替代的解决方案。
--- end ---
加入『Boonchain 社群』,发现投资价值!
在这里,你将获得:
1、高质量、深度的原创区块链行业分析,深入浅出。
2、针对区块链的投资策略分析。
3、优质项目的客观评测,解读。
4、一对一咨询、问答。
5、免费糖果。
加入 Boonchain,成为区块链的达人。
添加客服微信申请入群
领取专属 10元无门槛券
私享最新 技术干货