Shardeum推动分片技术创新 探索动态状态分片新路径

分片技术的创新之路:Shardeum与动态状态分片

2022年9月15日,以太坊完成合并(Merge)。这是一个历史性时刻,以太坊为此准备了5年、推迟了6次。由于长期的开发和调试,加上备受关注的光环效应,很多人误以为合并会自然而然地带来更高的可扩展性、安全性和可持续性,但实际上并非如此。从PoW(工作量证明)到PoS(权益证明)的过渡,只是更换了轨道和轮子,它并不会直接带来更快的速度、更大的容量、更低的费用。真正能实现这些目标的,是一整套解决方案:具有分片能力的主网搭配增强可扩展性的Layer2方案。

正如以太坊创始人Vitalik Buterin所指出的,分片是可扩展性三难困境下的一种扩容解决方案,通过将网络中的节点分成更小的组,处理不同的事务集并实现并行处理。通过分担处理整个网络上汇总所需的大量数据的负担,就像我们在Walmart购物结账时一样,通过多开设几条购物结账的收银通道,可以直观地减少排队时间和提升结账效率。

这就是分片的逻辑,直接而简单,然而,魔鬼都在细节中 - 原理和方向没错,但在实施中总会遇到很多问题。本文想通过理顺在"分片"这条路上的方向和困局,绘制一张仰望星空与脚踏实地的分片探索者地图。同时通过比较现有的分片解决方案,找到一些共性的问题,并提出一种可行的探索方向:Shardeum与动态分片。

一、关于"分片"

简单来说,考虑不可能三角的制约,从以太坊作为坐标系原点(0,0)出发,按照"纵向"和"横向"两种思路,我们将当前的区块链的扩展性方法分为两大类:

纵向扩容(Vertical Scaling):通过提高系统现有硬件的性能来实现。建立一个去中心化网络,而网络中的每个节点都具有超级计算能力,即每个节点都需要"更好"的硬件 - 这种方式简单有效,可以达成吞吐量的初步改进,尤其适用于高频交易、游戏以及其他对延迟比较敏感的应用场景。然而这种扩容方式会限制网络的去中心化水平,因为运行验证节点或全节点的成本变高了。维持去中心化水平受限于计算硬件性能的大致增长速度(这就是所谓的"摩尔定律":芯片上的晶体管数量每两年会翻一倍,计算成本则会减半)。

横向扩容(Horizontal Scaling):横向扩容一般有几种思路。一种是在区块链的语境下,将某一生态中的交易计算量分散到多个独立的区块链上,每条链都拥有自己的区块生产者和执行能力,这种方式可以充分定制化每条链的执行层,比如节点硬件要求、隐私功能、gas费用、虚拟机以及许可设置等。另一种横向扩容方案是模块化区块链,将区块链的基础架构划分成执行层、数据可用性层(DA)以及共识层。最主流的区块链模块化机制就是rollup。还有一种是将一条区块链分成很多片,并行执行。每个分片可以看成一个区块链,也就是说许多区块链可以并行执行。另外,通常还会有一条主链,其唯一的任务就是保持所有分片同步。

需要指出的是,以上的扩容思路都不是孤立存在的,每一种解决方案都是在不可能三角中找到一个权衡点,配合系统中经济力量创造的激励机制设计,达到宏观和微观层面的有效平衡。

为了讨论"分片",我们需要从头开始梳理。

依然假设这样一种情景,Walmart购物结账,为了提高结账效率,降低客户等待时间,我们从单一的结账通道,扩展到10个结账窗口,为了避免账本错误,这个时候我们需要制定统一的规则:

第一,如果我们有10个收银员,该如何分配他们去哪个窗口工作?

第二,如果我们有1000个客户排队等待,该如何决定每一个客户去哪个窗口结账?

第三,这10个窗口对应的10个单独账本,该如何进行汇总?

第四,为了避免发生账目不匹配的情况,该如何防止收银员出现错误?

这几个问题其实对应了分片中的几个关键问题,分别是:

该如何确定全网的节点/验证者属于哪个分片?即:如何进行网络分片(NetworkSharding);

该如何确定每一笔交易分配给哪个分片?即:如何进行交易分片(Transaction Sharding);

区块链资料如何在不同分片中储存?即:如何进行状态分片(State Sharding);

复杂意味着风险,在以上所有的基础上,该如何避免整个系统安全性的分裂?

01 网络分片(Network Sharding)

如果我们将区块链简单理解成一种去中心化账本,无论是PoS还是PoW的共识机制,都是为了让各个节点按一定的既定规则争夺记账权,在这个过程中保证账本的正确性。而网络分片是指,需要另一种既定规则,将区块链网络分片,在尽量降低互相通信的前提下,由各个分片处理链上交易,争夺记账权 - 即,节点的分组规则。

而在这个过程中遇到的问题是,随着区块链内部节点被划分成不同的片,攻击者的难度和成本会直线下降。我们可以推理,假定这个分组过程的规则和结果是固定且可以预知的,那攻击者想要控制整个区块链网络,只需要定向地控制其中一个分片,收买分片内的部分节点即可。

Near的创始人Alexander Skidanov这样描述这个问题:如果一个有X个验证者的单一链决定硬分叉成一个分片链,并将X个验证者分成10个分片,每个分片现在只有X/10个验证者,破坏一个分片只需要破坏5.1%(51% / 10)的验证者总数。这就引出了第二点:谁为每个分片选择验证者?只有当所有这5.1%的验证者都在同一个分片中时,控制5.1%的验证者才是有害的。如果验证者无法选择在哪个分片中进行验证,则控制5.1%的验证者的参与者极不可能将所有验证者都放在同一个分片中,从而大大降低了他们破坏系统的能力。

分片系统必须开发一种机制来信任网络不会从外部分片中逆转这些交易。迄今为止,可能最好的答案是确保分片内的验证者数量高于某个最小阈值,这样不诚实的验证者压倒单个分片的几率就会很低。最常见的办法是构建一定程度上的无偏随机性,依靠数学的方式,将攻击者的成功概率降到最低。比如以太坊,以太坊的解决办法是随机从所有验证者中选出某个分片的验证者,并且每6.4分钟(一个epoch的长度)更换一次验证者。

说的简单一点就是将节点随机分组,再将工作分配给各组节点独立验证。

然而需要指出的是,区块链中的随机性是一个非常具有挑战性的话题,按照逻辑来说,这个随机数的生成过程不应该依赖于任何特定分片的计算。对于该计算,很多的现有设计思路都是开发一个单独的区块链,维护整个网络。这样的链在Ethereum和Near中称为Beacon链,在PolkaDot中称为Relay链,在Cosmos中称为Cosmos Hub。

万字详解新公链 Shardeum:分片的另一种可能

02 交易分片(Transaction Sharding)

交易分片是指关于"哪些交易要被分配到哪些分片"的规则制定,则既能够达到并行处理的目的又能避免双花问题的出现。区块链的帐本模型的不同会对交易分片的开发造成影响。

目前区块链网络中存在两类记账方式,分别为UTXO(Unspent Transaction Outputs,未使用交易输出)模型和账户/余额模型,前者的典型代表是BTC,后者如ETH。

UTXO模型:在BTC交易中,每笔交易都会有一个或多个输出,UTXO指尚未花费的区块链交易的输出,可以作为新交易的输入,而已花费的交易输出不可再花费,类似纸币交易情况下的支付和找零,顾客将一张或多张纸币支付给店家,店家则将一张或多张纸币找零给顾客。UTXO模型下,交易分片需要跨分片通信。一笔交易可能包括多个输入和多个输出,没有帐户的概念,也不会有余额的纪录,一个可能的方式是:按照其交易的某个输入值将其放入哈希函数处理成为离散型的哈希值以确定数据应该去哪个分片。如下:

为了确保条目以一致的方式放置在正确的分片中,输入到哈希函数中的值都应该来自同一列。此列称为Shard Key。之后,将产生为1值的交易都分入分片1,将产生为2值的交易都分入分片2。而这种方式的弊端在于,分片之间不得不进行通信以避免双花攻击。如果限制跨分片交易将限制平台的可用性,而允许跨分片交易则不得不权衡跨分片通信的成本和性能提升带来的收益。

账户/余额模型:系统记录每个账户的余额,在进行交易时,系统检查账户是否有足够余额用于支付,类似于银行转账时,银行会记录每个账户的余额,只有账户余额大于所需转账金额时,交易才能够进行。在账户/余额模型下,由于一笔交易只有一个输入,因此只要将交易按照发送者地址进行分片,就可以保证同一个账户的多笔交易在同一个分片中处理,有效防止双花。因此,大多数采用分片技术的区块链,都是像以太坊一样的账户帐本系统。

万字详解新公链 Shardeum:分片的另一种可能

03 状态分片(State Sharding)

状态分片指的是,在区块链资料是如何分配在不同分片中储存的。

依旧沿用我们Walmart排队的例子,每个窗口都有一笔账,他们的账本是如何记录的?如果:客户来排哪个队,就记哪个账,比如A客户去了A窗口,那第二天该客户去了别的结账窗口比如B窗口,而B窗口并没有该客户的过往账户信息(比如涉及到了储值卡等结账方式),该怎么办?向A窗口调用该客户的账户信息?

状态分片是分片最大的难题,比上述的网络分片和交易分片更棘手。因为在分片机制下,交易会根据地址分配在不同的分片处理,也就是说,状态只会储存在其地址所在的分片中,此时要面临的一个问题是,交易不会只在一个分片中进行,时常会涉及到跨分片(Cross-Sharding)。

考虑一种转账情形,A账户转账10U给B账户,而A的地址分配在分片1,交易的纪录也会储存在分片1。B的地址分配在分片2,交易的纪录就会储存在分片2。

一但A要转账给B,就会形成跨分片交易,分片2就会向分片1调用过去的交易纪录,确认交易的有效性,如果A频繁地打币给B,分片2就必须不断跟分片1互动,交易的处理效率便会因此降低。但是,如果不下载和验证特定分片的整个历史,参与者则不一定能确定他们之间交互的状态是某些有效块序列的结果,且这样的块序列确实是分片中的规范链。

因此,相比于无分片的单一链,分片系统面临的新挑战是用户无

SHM57.28%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 6
  • 分享
评论
0/400
GateUser-c799715cvip
· 13小时前
又在狂吹merge梦呢
回复0
GasOptimizervip
· 19小时前
gas什么时候能降到2gwei啊 算了整套解决方案再等5年吧
回复0
GateUser-32ed30edvip
· 07-30 20:40
能不能说人话
回复0
币圈塔罗师vip
· 07-30 05:08
这不等于白折腾了五年
回复0
pumpamentalistvip
· 07-30 05:04
就知道炒merge 结果啥用没有
回复0
GateUser-00be86fcvip
· 07-30 04:57
这波升级不如直接上L2
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)