分片技术sharding
专题·17篇·资料归档
分片区块链可以更好地处理网络分区吗?
实际上,每个分区最终都会在分区两侧有一些节点。
IPFS创始人Juan Benet有人建立了可扩展的网络,其具体目标是网络可以根据需要分割成碎片,从而在网络分区条件下尽可能地继续运行,但是在制造网络时存在着巨大的经济学挑战。
一个主要的挑战是,如果我们想要基于位置的分片,那么地理网络划分最低限度地阻碍了分片内聚合(具有非常低的分片内潜伏期和因此非常快的分片内分块时间的副作用),那么我们需要有一种方法让验证者选择他们正在参与的碎片。
这是很危险的,因为它允许在诚实/不协调的多数模型中有更多类别的攻击,因此在Zamfir模型中有更高的不确定因素。
分割地理分区安全性和通过随机抽样来分割效率是两个根本不同的事情。
其次,如何组织应用程序需要更多的思考。
上面描述的分片区块链中的一个可能的模型是每个“app”在某个碎片上(至少对于小规模的应用程序)。
但是,如果我们希望应用程序本身具有分区防护功能,则意味着所有应用程序都需要在某种程度上进行跨分割。
解决这个问题的一个可能途径是创建一个提供两种碎片的平台 ,一些碎片是随机抽样的高安全性“全局”碎片,而其他碎片则是可能具有属性的较低安全“本地”碎片如超快的封锁时间和更便宜的交易费用。
非常低的安全性碎片甚至可以用于数据发布和消息传递。
解决区块链网络交易拥堵问题的方法?
区块链扩容方式“解决方案”有三大类。
首先是放弃缩放个人区块链
而是假设用户将使用许多不同的“altcoins”。这极大地增加了吞吐量,但是以安全为代价:使用这种方法的吞吐量的N因子增加必然伴随着N因子安全性的降低。因此,N以上的小数值可能是不可行的
简单地增加块大小限制
这可以起作用,在某些情况下也许是正确的处方,因为区块大小可能更多地受到政治限制,而不是现实技术考虑。
“合并采矿”这是一种链条很多的技术
所有的链条都具有相同的采矿能力(或者证明利益体系的利益)。
这个三难局面声称,区块链系统最多只能拥有以下三个属性中的两个:
- 分散化 (定义为系统能够在每个参与者只能访问O(c)资源,即常规笔记本电脑或小型VPS的情况下运行)
- 可扩展性 (定义为能够处理O(n)> O(c)事务)
- 安全性 (被定义为可以抵御高达O(n)资源的攻击者)
什么是一些中等简单但只能部分解决可伸缩分片问题的方法?
许多分片的建议(例如来自新加坡国立大学的Loi琉等人早期BFT拆分提案,以及本Merklix树1已经提出了比特币的方法)尝试或者只是碎片事务处理或仅碎片状态,不接触其他2。这些努力是令人钦佩的,可能会带来一些效率上的提高,但却遇到了根本性的问题,只能解决其中的一个瓶颈。我们希望能够每秒处理超过10,000个事务,而不必强迫每个节点成为一台超级计算机,或者迫使每个节点存储一千兆字节的状态数据,而这需要一个全面的解决方案,即状态存储,事务处理的工作负载事务下载和重播都在节点之间传播。
尤其要注意的是,这要求在P2P级别进行更改,因为广播模式不可扩展,因为它要求每个节点下载并重新发送O(n)数据(每个正在发送的事务),而我们的分散标准假设每个节点只能访问各种O(c)资源。
那么不试图“碎片化”任何东西的方法呢?
Bitcoin-NG 可以通过另一种区块链设计的方式来增加可扩展性,如果节点花费大量CPU时间验证块,则可以使网络安全得多。在简单的PoW区块链中,存在较高的集中化风险,并且如果容量增加到节点的CPU时间超过大约5%的时间用于验证块,则共识的安全性被削弱; Bitcoin-NG的设计缓解了这个问题。然而,这只能由或许5-50x一个常数因子增加的交易量的可伸缩性3,4,不增加国家的可扩展性。也就是说,Bitcoin-NG式的方法与分片并不是相互排斥的,这两者当然可以同时实施。
基于通道的策略(雷电网络,雷电等)可以通过一个常数因子来扩大交易容量,但不能扩展状态存储,并且还会带来自己独特的折衷和局限性,特别是涉及拒绝服务攻击; 通过分片进行链上缩放(加上其他技术)和通过信道进行链外缩放可以说是必要的和互补的。
存在使用先进加密,如方法Mimblewimble 基于ZK-SNARKs和策略,为了解决结垢问题的一个特定部分:初始完整节点的同步。节点可以验证一个密码证明,而不是从历史中验证整个历史。这些方法确实解决了一个合理的问题,但是值得注意的是,可以依靠密码经济学而不是纯密码学来以更简单的方式解决同样的问题 - 参见以太坊当前的快速同步和同步的实现。这两种解决方案都无法缓解州的规模增长或在线交易处理的限制。
等离子如何适应三难困境?
在等离子子链上发生大的攻击时,等离子子链的所有用户都需要退回到根链。如果等离子有O(N)个用户,那么这将需要O(N)交易,所以O(N / C)时间来处理所有的提款。如果撤销延迟固定在某个D上(即天真的执行),那么只要N> C * D,区块链中没有足够的空间来处理所有提款,这样系统就不安全; 在这种模式下,等离子体应该被视为只有通过一个(可能很大的)常数因子才能提高可扩展性。如果退出的延迟是灵活的,那么如果有很多退出是自动延长的,那么这意味着随着N越来越大,攻击者可以迫使每个人的资金被锁定的时间增加,所以系统的“安全性”水平在一定程度上进一步下降,因为延长拒绝访问可被视为安全失败,尽管比访问的总体丢失要温和。但是,这是一个不同的从其他解决方案的折中方向,可以说是一个更温和的权衡,因此,等离子子链为什么现状仍然是一个很大的改善。
分片背后的基本思想是什么?
我们把状态分成K = O(n / c)分区,我们称之为“分片”。
例如,以太坊的分片方案可能会将所有以0x00开头的地址放入一个分片,所有以0x01开头的地址放入另一个分片等等。在最简单的分片形式中,每个分片也有其自己的交易历史记录,在一些分片k中的交易被限制在分片k的状态。一个简单的例子就是多资产区块链,其中有K个碎片,每个碎片存储余额并处理与一个特定资产相关的交易。在更高级的分片中,也包括某种形式的跨分片通信能力,其中一个分片上的事务可以触发其他分片上的事件。
分割区块链的基本设计是什么样的?
CAP定理是与
分布式共识有关的结果; 一个简单的陈述是:“在网络分区发生的情况下,你必须选择一致性或可用性,你不能同时拥有”。
现在在这样一个系统中可以存在几个“层次”的节点:
- 超级完整节点 - 处理所有归类中的所有事务,并为所有碎片维护完整状态。
- 顶级节点 - 处理所有顶级块,但不处理或尝试下载每个归类中的事务。相反,如果这个分类中有三分之二的分类者认为这个分类是有效的,那么这个分类是有效的。
- 单个分片节点 - 充当顶级节点,但也处理所有事务并为某个特定分片保持完整状态。
- 光节点 - 仅下载和验证顶级块的块标题; 不处理任何排序标题或事务,除非它需要读取某些特定分片状态中的某个特定条目,在这种情况下,它将Merkle分支下载到该分片的最近校对头,然后从那里下载Merkle证明在该状态期望的值。
我们如何促进跨程序区块沟通联络?
要满足的最简单的情况是有许多应用程序单独没有太多的用户,而且这些应用程序只是偶尔和松散地彼此交互; 在这种情况下,应用程序可以在单独的碎片上生存,并通过收据使用交叉分片通信相互交谈。
这通常涉及将每笔交易分解为“借记”和“信用”。例如,假设我们有一个交易,其中碎片M上的账户A希望向碎片N上的账户B发送100个硬币。这些步骤如下所示:
- 发送一个交易碎片M(i)扣除100的硬币余额,和(ii)创建一个收据。收据是一个没有直接保存在状态中的对象,但收据产生的事实可以通过Merkle证明来验证。
- 等待第一个事务被包含(有时候需要等待终结,这取决于系统)。
- 发送包含来自(1)的收据的Merkle证明的分片N上的交易。该交易还检查分片N的状态以确保该收据是“未用完”的; 如果是的话,那么它将B的余额增加100个硬币,并且保存在收据用完的状态中。
- 可选地,(3)中的交易也保存收据,然后可以用来对碎片M执行进一步的操作,这取决于原始操作的成功。
在更复杂的分片形式中,交易在某些情况下可能具有分散在多个分片上的效果,并且还可以同时从多个分片的状态请求数据。
什么是火车旅馆问题?
下面的例子是Andrew Miller提供的。假设用户想要购买一张火车票并预订一家旅馆,并且想要确保这个行动是原子性的 - 无论是保留成功还是两者都不成立。如果火车票和酒店预订应用程序在同一个分支上,这很容易:创建一个事务,试图进行两个预留,并引发异常,并恢复所有事物,除非两个预订都成功。但是,如果两者在不同的碎片上,这并不是那么容易; 即使没有隐含经济/分散关注的问题,这实质上也是原子数据库事务的问题。
区块链设计安全模型
评估区块链设计的安全性有几个竞争模型:
- 诚实的绝大多数(或诚实的绝对多数):我们假设有一些验证者,并且这些验证者的½(或⅓或¼)由攻击者控制,其余的验证者诚实地遵循协议
- 不协调的多数:我们假设所有的验证者在博弈论的意义上都是合理的(除了攻击者,他们有动机使网络以某种方式失败),但是不超过一部分(通常在¼和½之间)协调他们的行动。
- 协调选择:我们假定所有的验证者都是由同一个参与者控制的,或者完全有能力协调他们之间的经济上最优的选择。我们可以谈论联盟的成本(或联盟的利润)达到一些不良的结果。
- 贿赂攻击者模式:我们采取不协调的多数模式,而不是让攻击者成为参与者之一,攻击者坐在协议之外,并有能力贿赂任何参与者来改变他们的行为。攻击者被模拟为拥有预算,这是他们愿意支付的最高金额,我们可以谈论他们的成本,他们最终为破坏协议平衡而支付的金额。
我们如何解决不协调的大多数模型中的单分片接管攻击?
总之,随机抽样。
每个分片被分配一定数量的校勘员(例如,150),批准每个分片上的块的校勘员从该样本中获取该分片。样本可以半频繁地(例如每12小时一次)或最频繁地(也就是说,没有真正的独立抽样过程,每个块从全局池中的每个碎片随机选择整理者)重新洗牌。
结果是,即使在任何给定的时间只有几个节点在每个碎片上验证和创建块,但是在一个诚实/不协调的多数模型中,安全级别实际上并不低得多,如果每一个节点正在验证和创建块。原因是简单的统计:如果你在全局集合上假设一个诚实的绝对多数,如果样本的大小是150,那么以99.999%的概率就可以满足样本的真实多数条件。如果你假定在全球组合上有一个¾诚实的绝对多数,那么这个概率就会增加到99.999999998%。
因此,至少在诚实/不协调的大多数情况下,我们有:
- 分散化(每个节点只存储O(c)数据,因为它是O(c)碎片中的一个轻量级客户,所以存储O(1)* O(c)= O(c)块头的数据,以及O (c)对应于当前分配给它的一个或多个碎片的完整状态和近期历史的数据)
- 可扩展性(具有O(c)碎片,每个碎片具有O(c)容量,最大容量是n = O(c ^ 2))
- 安全性(攻击者需要控制整个O(n)大小的验证池中的至少1/3,以便有机会接管网络)。
在Zamfir模型中(或者在“非常非常适应性的对手”模型中),事情并不是那么容易,但是我们稍后会做到这一点。请注意,由于采样的不完善性,安全阈值确实从1/2降低到了⅓,但这仍然是一个令人惊讶的低安全性损失,可能是100-1000倍的可扩展性增益,而不会损失分散性。
你怎么样做这个抽样证明工作和证明利益?
为了证明利益,这很容易。已经有一个“活动验证器集合”在状态中被跟踪,
推荐
不过,对于现有的单链系统,确实有一个不可逾越的物理限制,那就是全节点平…
最新文章
按发布时间

原文标题:决战分片之颠 ?全面对比波卡和以太坊2.0的设计 备受关注的公链项目波卡(Polkadot)发布了第一个侯选链CC1,而它很可能成为将来的Polkadot主网,而根据描述,波卡已从之前的跨链定位切换到了分片协议,因此将与以太坊2....

最近很多朋友问FileStorm是采用的什么共识机制,这里我写个文章解释一下。 IPFS协议 区块链的一个核心价值就是建立了一套信任机制,让不同的个体和团体能把计算资源共享,将计算能力大大提升。同理,区块链也可以用来实现数据存储的共享,提升...

区块链的诞生,带来了天然的运行基础平台 区块链1.0时代是以比特币为代表,2008年这个概念被首次提出,2009年正式启动了比特币的网络。这个网络有别于普通意义上互联网,因为它在互联网上面实现了价值的转移。 维度 核心结论 区块链的诞生,...

不过,对于现有的单链系统,确实有一个不可逾越的物理限制,那就是全节点平均带宽。 以 13Mbps 的带宽为例 这是互联网带宽中位数,4K 电影在线播放带宽下限要求为 15Mbps,无论基于什么共识技术,即使完全丧失去中心化,并忽略传送协议,...

分片应该做到什么? 从上面对瓶颈根源进行分析之后,我们可以得到这样的结论:特定的分片方案至少要切分系统的网络带宽、内存容量相关的工作量,才有可能大幅提高全网的伸缩性,才有可能打破所谓的「不可能三角」。 维度 核心结论 分片应该做到什么? 从...

可以说,以伸缩性为目标的公链研发项目,其方案中如果没有分片的设计,都是不切实际的,在未来的实际应用中必将面对性能瓶颈和容量瓶颈,至少会遭遇这两个瓶颈中的一个。 由于分片这个术语本身太过于宽泛,我想在下面引入异步共识组 Asynchroniz...

覃文延人生 覃博士是加拿大北美区块链基金会主席,并且和蒋勇、嘉文合著了《白话区块链》一书,为很多小白建立起进入区块链世界的桥梁。您的人生经历大概分为哪些阶段?对你影响最大的人和事是什么?您有哪些感悟? 我是覃文延,我从加拿大回到中国写了一本...

墨客的子链一个显著的不同点是子链可以定义自己的共识方式和执行模块。 MOAC特有的子链设计可承载10000+DAPP,在MOAC平台上链,DAPP可以自定义任何共识方式。 与主链POW的共识方式不同,子链的共识方式可以是PBFT,POS,甚...

公链区块链核心限制 比特币,以太坊等已有的公链,网络堵塞问题日益严重。 去年12月份,一款名为cryptokittes(加密猫)的游戏在以太坊网络上火爆起来,一只猫甚至被卖到了几十万美元。 以太坊网络交易量的30%一度被这款游戏占用,直接导...

你为什么会选择区块链作为事业发展的起点? Vitalik Buterin: 我第一次听说比特币是在2011 年初, 当时我还在读高中。我父亲跟我提到比特币,同时我在网上也看到各种关于比特币的讨论。 维度 核心结论 你为什么会选择区块链作为事...

首先,重要的是要指出,即使随机数的产生是高度可利用的,这对协议来说也不是一个致命的缺陷。相反,它只是意味着有一个中等偏高的集权激励。原因在于,由于随机性选取相当大的样本,因此很难将随机性偏差超过一定数量。 如上所述,最简单的方法就是通过二项...

评估区块链设计的安全性有几个竞争模型: 诚实的绝大多数(或诚实的绝对多数):我们假设有一些验证者,并且这些验证者的½(或⅓或¼)由攻击者控制,其余的验证者诚实地遵循协议 不协调的多数:我们假设所有的验证者在博弈论的意义上都是合理的(除了攻击...

“简单解决方案”有三大类。 首先是放弃缩放个人区块链 而是假设用户将使用许多不同的“altcoins”。 维度 核心结论 首先是放弃缩放个人区块链 这极大地增加了吞吐量,但是以安全为代价:使用这种方法的吞吐量的N因子增加必然伴随着N因子安全...

一个简单的方法如下。有一些节点称为collators,它们接受碎片k上的事务(取决于协议,协作者可以选择哪个k或随机分配一些协议k)并创建排序规则。排序规则有一个排序标题,一个形式为“这是shard上的事务排序规则”的短消息,k它预期s...

我们可以通过某种奇特的密码累加器方案来消除解决数据可用性的需要。 假设有一个方案存在一个表示状态的对象S(S可能是一个散列),以及个别用户持有的可以证明存在状态对象的辅助信息(“证人”)(例如S是Merkle根,证人是分支,尽管其他结构如R...

如果您将交易历史记录视为已经结算,并且只是试图计算状态转换函数,则该过程变得更容易。有几种方法; 一个相当简单的方法可以描述如下: 一个事务可以指定一个可以在其中操作的一组碎片 为了使交易有效,它必须包含在所有这些碎片的同一块高度处。 块中...

区块链背景 跨分片调用缺少硬协议保证 分片中的挑战之一是,在进行调用时,默认情况下没有硬协议保证,由该调用创建的任何异步操作都将在任何特定时间范围内完成,甚至完全没有; 而是由某方在目的地碎片中发送触发收据的交易。这对于许多应用程序来说是可...