2023以太坊发展方向:以太坊基金会(EF)研究团队成员 AMA@DeFi之道
V神 2023 首次Reddit AMA 12问12答 转载请注明来自“DeFi之道” 原文:Reddit,由 DeFi 之道编译。 1 月 11 日,以太坊基金会(EF)研究团队成员在 Reddit 上展开了第九次 AMA。这也是 202...
实际上,每个分区最终都会在分区两侧有一些节点。
IPFS创始人Juan Benet有人建立了可扩展的网络,其具体目标是网络可以根据需要分割成碎片,从而在网络分区条件下尽可能地继续运行,但是在制造网络时存在着巨大的经济学挑战。
一个主要的挑战是,如果我们想要基于位置的分片,那么地理网络划分最低限度地阻碍了分片内聚合(具有非常低的分片内潜伏期和因此非常快的分片内分块时间的副作用),那么我们需要有一种方法让验证者选择他们正在参与的碎片。
这是很危险的,因为它允许在诚实/不协调的多数模型中有更多类别的攻击,因此在Zamfir模型中有更高的不确定因素。
分割地理分区安全性和通过随机抽样来分割效率是两个根本不同的事情。
其次,如何组织应用程序需要更多的思考。
上面描述的分片区块链中的一个可能的模型是每个“app”在某个碎片上(至少对于小规模的应用程序)。
但是,如果我们希望应用程序本身具有分区防护功能,则意味着所有应用程序都需要在某种程度上进行跨分割。
解决这个问题的一个可能途径是创建一个提供两种碎片的平台 ,一些碎片是随机抽样的高安全性“全局”碎片,而其他碎片则是可能具有属性的较低安全“本地”碎片如超快的封锁时间和更便宜的交易费用。
非常低的安全性碎片甚至可以用于数据发布和消息传递。
区块链扩容方式“解决方案”有三大类。
而是假设用户将使用许多不同的“altcoins”。这极大地增加了吞吐量,但是以安全为代价:使用这种方法的吞吐量的N因子增加必然伴随着N因子安全性的降低。因此,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定理是与分布式共识有关的结果; 一个简单的陈述是:“在网络分区发生的情况下,你必须选择一致性或可用性,你不能同时拥有”。
现在在这样一个系统中可以存在几个“层次”的节点:
要满足的最简单的情况是有许多应用程序单独没有太多的用户,而且这些应用程序只是偶尔和松散地彼此交互; 在这种情况下,应用程序可以在单独的碎片上生存,并通过收据使用交叉分片通信相互交谈。
这通常涉及将每笔交易分解为“借记”和“信用”。例如,假设我们有一个交易,其中碎片M上的账户A希望向碎片N上的账户B发送100个硬币。这些步骤如下所示:
在更复杂的分片形式中,交易在某些情况下可能具有分散在多个分片上的效果,并且还可以同时从多个分片的状态请求数据。
下面的例子是Andrew Miller提供的。假设用户想要购买一张火车票并预订一家旅馆,并且想要确保这个行动是原子性的 – 无论是保留成功还是两者都不成立。如果火车票和酒店预订应用程序在同一个分支上,这很容易:创建一个事务,试图进行两个预留,并引发异常,并恢复所有事物,除非两个预订都成功。但是,如果两者在不同的碎片上,这并不是那么容易; 即使没有隐含经济/分散关注的问题,这实质上也是原子数据库事务的问题。
评估区块链设计的安全性有几个竞争模型:
总之,随机抽样。
每个分片被分配一定数量的校勘员(例如,150),批准每个分片上的块的校勘员从该样本中获取该分片。样本可以半频繁地(例如每12小时一次)或最频繁地(也就是说,没有真正的独立抽样过程,每个块从全局池中的每个碎片随机选择整理者)重新洗牌。
结果是,即使在任何给定的时间只有几个节点在每个碎片上验证和创建块,但是在一个诚实/不协调的多数模型中,安全级别实际上并不低得多,如果每一个节点正在验证和创建块。原因是简单的统计:如果你在全局集合上假设一个诚实的绝对多数,如果样本的大小是150,那么以99.999%的概率就可以满足样本的真实多数条件。如果你假定在全球组合上有一个¾诚实的绝对多数,那么这个概率就会增加到99.999999998%。
因此,至少在诚实/不协调的大多数情况下,我们有:
在Zamfir模型中(或者在“非常非常适应性的对手”模型中),事情并不是那么容易,但是我们稍后会做到这一点。请注意,由于采样的不完善性,安全阈值确实从1/2降低到了⅓,但这仍然是一个令人惊讶的低安全性损失,可能是100-1000倍的可扩展性增益,而不会损失分散性。
为了证明利益,这很容易。已经有一个“活动验证器集合”在状态中被跟踪,并且可以直接从这个集合中简单地抽样。协议内算法运行并为每个分片选择150个校验器,或者每个校验器独立地运行一个算法,该算法使用一个共同的随机源来(可证实地)确定它们在任何给定时间的分片。请注意,抽样任务是“强制性的”是非常重要的。验证器没有选择它们进入的碎片。如果验证者可以选择,那么攻击者就可以把小股份集中在一块碎片上,攻击它,从而消除系统的安全性。
为了证明工作,这是比较困难的,就像“直接的”工作计划一样,不能阻止矿工将工作应用于某一特定的碎片。有可能使用证明文件访问形式的工作证明来将个人矿工锁定到单独的碎片,但是很难确保矿工不能快速下载或生成可用于其他碎片的数据并因此避开这种机制。最为人所知的方法是通过Dominic Williams发明的一种叫做“拼图塔”的技术,在这种技巧中,矿工首先在一个共同链上进行工作证明,然后将这些证据导入到一个利益型验证池中,然后验证者池就像在证明风险的情况下一样。
一个可能的中间路线可能如下所示。矿工可以花费大量的(O(c)大小)工作来创建一个新的“密码身份”。工作证明解决方案的确切价值,然后选择他们有哪些碎片,使他们的下一个块。然后,他们可以花工件的O(1)尺寸量在该碎片创建块,以及工作溶液举证的值确定它们可以工作下其上碎片。请注意,所有这些方法都以某种方式证明工作“有状态” 这是必要的。
首先,重要的是要指出,即使随机数的产生是高度可利用的,这对协议来说也不是一个致命的缺陷。相反,它只是意味着有一个中等偏高的集权激励。原因在于,由于随机性选取相当大的样本,因此很难将随机性偏差超过一定数量。
如上所述,最简单的方法就是通过二项式分布。
那么这意味着我们实际上可以创建可扩展的分片式区块链,其中发生不良事件的成本与整个验证器集的大小成正比。
让我们回头一点。如果我们有即时洗牌,我们是否真的需要这种复杂性?不立即洗牌基本上意味着每个分片直接从全局验证器池中提取验证器,所以它就像区块链一样运行,因此分片实际上不会引入任何新的复杂性?
有点。首先,值得注意的是,即使没有分片,工作证明和简单的证据证明,两者在贿赂攻击者模型中都具有非常低的安全性; 一个区块在经过O(n)个时间后才真正地“定型”(好像只有几个区块已经过去了,那么替换链条的经济成本就是从区块之前开始双重支出的成本有问题)。卡斯帕尔通过增加最终机制解决了这个问题,经济安全边际立即增加到最大。在一个分支链中,如果我们想要经济最终的话,那么我们需要提出一个推理链,为什么一个验证者愿意在一个完全基于随机样本的链上做出非常强烈的主张,
基本上,我们并不直接向开发者提供“碎片”的概念,也不会永久性地将状态对象分配给特定的碎片。相反,该协议有一个正在进行的内置负载平衡过程,可以在碎片之间移动物体。
如果碎片变得太大或者消耗太多的燃料,可以分成两半。
如果两个碎片变得太小,并且经常彼此交谈,他们可以合并在一起; 如果所有碎片太小,则可以删除一个碎片并将其内容移动到各种其他碎片等等。
可以通过引入“顺序域”的概念来缓解共置问题,其中契约可以指定它们存在于相同的顺序域中,在这种情况下它们之间的同步通信将始终是可能的。在这个模型中,一个分片可以被看作是一组被一起验证的顺序域,并且如果协议确定这样做是有效的,那么顺序域可以在分片之间重新平衡。
如果您将交易历史记录视为已经结算,并且只是试图计算状态转换函数,则该过程变得更容易。有几种方法; 一个相当简单的方法可以描述如下:
Vlad Zamfir创建了一个方案,通过这个方案,异步消息仍然可以解决“预订火车和旅馆”的问题。这工作如下。状态记录了最近所做的所有操作,以及任何给定操作(包括交叉分片操作)触发哪些操作的图形。如果操作被还原,则创建收据,然后可以使用该收据来恢复该操作对其他碎片的任何影响; 那些回复可能会触发他们自己的回复等等。这个论点是,如果一个人偏好系统使得回复消息可以像其他类型的消息一样快地传播两次,那么一个在K个回合中完成执行的复杂交叉分片事务可以在另外的K个回合中完全恢复。
分片中的挑战之一是,在进行调用时,默认情况下没有硬协议保证,由该调用创建的任何异步操作都将在任何特定时间范围内完成,甚至完全没有; 而是由某方在目的地碎片中发送触发收据的交易。
燃料?这听起来很有趣,不仅是跨分片操作,还有可靠的分片内调度
是否有保证的调度,分割内部和交叉分割,有助于抵制试图审查交易的大多数共谋?
选择频率只影响自适应对手如何才能使协议仍然安全; 例如,如果您认为适应性攻击(例如不诚实的验证者发现他们是同一个样本的一部分并且共同勾结)可以在6小时内发生但不会少于4次,那么采样时间为4小时,但不是12小时。这是一个赞成尽快抽样的理由。
每个区块进行抽样的主要挑战是重新洗牌会带来非常高的开销。具体来说,验证分片上的块需要知道该分片的状态,因此每次校验器被重新洗净后,校验器需要下载他们所在的新分片的整个状态。这需要强大的状态大小(即经济上确保国家规模不会过大,无论是删除旧账户,限制创建新账户的比率还是两者的结合),以及相当长的改组时间。
目前,Parity客户端可以在〜3分钟内通过“warp-sync”下载和验证完整的以太坊状态快照; 如果我们增加20倍以弥补增加的使用量(10 tx / sec而不是0.5 tx / sec)(我们假定未来的状态尺寸控制策略和从长期使用中积累的“灰尘”大致抵消了)得到约60分钟的状态同步时间,这表明12-24小时的同步周期是安全的。
有两条途径可以克服这个挑战。
我们是否可以强制更多的状态保持在用户端,以便事务可以被验证,而不需要验证器来保存所有的状态数据?
这里的技术往往涉及要求用户存储状态数据,并提供Merkle证明以及他们发送的每一个事务。一个事务将与Merkle证明正确执行一起发送,这个证明将允许一个只有状态根的节点计算新的状态根。这种正确的执行证明将包括需要遍历的trie中对象的子集,以访问和验证事务必须验证的状态信息; 因为Merkle证明的大小是O(log(n)),所以访问恒定数量对象的事务证明也是O(log(n))大小。
以纯粹的形式实施这个计划有两个缺陷。首先,它引入了O(log(n))的开销,尽管可以说这个O(log(n))开销并不像看起来那么糟糕,因为它确保了验证器总是可以简单地将状态数据保存在内存中,它永远不需要处理访问硬盘的开销。其次,如果交易所访问的地址是静态的,则可以很容易地应用,但如果所讨论的地址是动态的,则更难以应用 – 也就是说,如果交易执行具有表单的代码read(f(read(x)))
某些状态读取的地址取决于其他状态读取的执行结果。在这种情况下,事务发送者认为事务将在发送事务时读取的地址可能与事务包含在块中时实际读取的地址不同,因此Merkle证明可能是不足。
一种折中方法是允许交易发送者发送一个证据,该证据包含访问什么数据的最可能的可能性; 如果证明是足够的,那么交易将被接受,如果状态意外地变化并且证明不足,那么发送者必须重新发送或者网络中的一些帮助节点重新发送交易并添加正确的证据。那么开发人员可以自由地进行具有动态行为的事务,但是行为越动态,事务实际上被包含在块中的可能性就越小。
注意验证者在这种方法下的交易包含策略需要很复杂,因为他们可能会花费数百万的天然气处理一笔交易,只能意识到最后一步访问他们没有的一些状态条目。一个可能的妥协是验证者有一个策略,只接受(一)低成本的交易,例如。(ii)静态地指定一组允许访问的合同,并包含这些合同的整个状态的证据的交易。请注意,这只适用于最初广播交易时; 一旦事务被包含在一个块中,执行顺序是固定的,因此只能提供与实际需要访问的状态对应的最小Merkle证明。
如果验证者不立即重新洗牌,还有一个提高效率的机会。我们可以期望验证者存储来自已经处理的事务证明的数据,以便该数据不需要被再次发送; 如果k次交易是在一个洗牌周期内发送的,那么这就将Merkle证据的平均大小从log(n)减少到log(n)-log(k)。
V神 2023 首次Reddit AMA 12问12答 转载请注明来自“DeFi之道” 原文:Reddit,由 DeFi 之道编译。 1 月 11 日,以太坊基金会(EF)研究团队成员在 Reddit 上展开了第九次 AMA。这也是 202...
原文标题:决战分片之颠 ?全面对比波卡和以太坊2.0的设计 备受关注的公链项目波卡(Polkadot)发布了第一个侯选链CC1,而它很可能成为将来的Polkadot主网,而根据描述,波卡已从之前的跨链定位切换到了分片协议,因此将与以太坊2....
最近很多朋友问FileStorm是采用的什么共识机制,这里我写个文章解释一下。 IPFS协议 区块链的一个核心价值就是建立了一套信任机制,让不同的个体和团体能把计算资源共享,将计算能力大大提升。同理,区块链也可以用来实现数据存储的共享,提升...
区块链的诞生,带来了天然的运行基础平台 区块链1.0时代是以比特币为代表,2008年这个概念被首次提出,2009年正式启动了比特币的网络。这个网络有别于普通意义上互联网,因为它在互联网上面实现了价值的转移。 之前互联网经历几十年发展,主要...
不过,对于现有的单链系统,确实有一个不可逾越的物理限制,那就是全节点平均带宽。 以 13Mbps 的带宽为例 这是互联网带宽中位数,4K 电影在线播放带宽下限要求为 15Mbps,无论基于什么共识技术,即使完全丧失去中心化,并忽略传送协议,...
分片应该做到什么? 从上面对瓶颈根源进行分析之后,我们可以得到这样的结论:特定的分片方案至少要切分系统的网络带宽、内存容量相关的工作量,才有可能大幅提高全网的伸缩性,才有可能打破所谓的「不可能三角」。 必须再次强调,这个结论非常重要。因为只...
可以说,以伸缩性为目标的公链研发项目,其方案中如果没有分片的设计,都是不切实际的,在未来的实际应用中必将面对性能瓶颈和容量瓶颈,至少会遭遇这两个瓶颈中的一个。 由于分片这个术语本身太过于宽泛,我想在下面引入异步共识组 Asynchroniz...
覃文延人生 覃博士是加拿大北美区块链基金会主席,并且和蒋勇、嘉文合著了《白话区块链》一书,为很多小白建立起进入区块链世界的桥梁。您的人生经历大概分为哪些阶段?对你影响最大的人和事是什么?您有哪些感悟? 我是覃文延,我从加拿大回到中国写了一本...
井底望天 其实大家应该好好看看 BM 和 Vitalik 的技术争论,很有意思的。 BM 批评 Vitalik,认为: 简单分片,并不能解决不同的 traffic 之间的特异性; 状态分片和跨片通信太多 overhead。 这些批评,是很中...
墨客的子链一个显著的不同点是子链可以定义自己的共识方式和执行模块。 MOAC特有的子链设计可承载10000+DAPP,在MOAC平台上链,DAPP可以自定义任何共识方式。 与主链POW的共识方式不同,子链的共识方式可以是PBFT,POS,甚...
公链区块链核心限制 比特币,以太坊等已有的公链,网络堵塞问题日益严重。 去年12月份,一款名为cryptokittes(加密猫)的游戏在以太坊网络上火爆起来,一只猫甚至被卖到了几十万美元。 以太坊网络交易量的30%一度被这款游戏占用,直接导...
你为什么会选择区块链作为事业发展的起点? Vitalik Buterin: 我第一次听说比特币是在2011 年初, 当时我还在读高中。我父亲跟我提到比特币,同时我在网上也看到各种关于比特币的讨论。 那个时候我已经对Linux等开源软件项目非...
首先,重要的是要指出,即使随机数的产生是高度可利用的,这对协议来说也不是一个致命的缺陷。相反,它只是意味着有一个中等偏高的集权激励。原因在于,由于随机性选取相当大的样本,因此很难将随机性偏差超过一定数量。 如上所述,最简单的方法就是通过二项...
评估区块链设计的安全性有几个竞争模型: 诚实的绝大多数(或诚实的绝对多数):我们假设有一些验证者,并且这些验证者的½(或⅓或¼)由攻击者控制,其余的验证者诚实地遵循协议 不协调的多数:我们假设所有的验证者在博弈论的意义上都是合理的(除了攻击...
“简单解决方案”有三大类。 首先是放弃缩放个人区块链 而是假设用户将使用许多不同的“altcoins”。 这极大地增加了吞吐量,但是以安全为代价:使用这种方法的吞吐量的N因子增加必然伴随着N因子安全性的降低。 因此,N以上的小数值可能是不可...
一个简单的方法如下。有一些节点称为collators,它们接受碎片k上的事务(取决于协议,协作者可以选择哪个k或随机分配一些协议k)并创建排序规则。排序规则有一个排序标题,一个形式为“这是shard上的事务排序规则”的短消息,k它预期s...
我们可以通过某种奇特的密码累加器方案来消除解决数据可用性的需要。 假设有一个方案存在一个表示状态的对象S(S可能是一个散列),以及个别用户持有的可以证明存在状态对象的辅助信息(“证人”)(例如S是Merkle根,证人是分支,尽管其他结构如R...
如果您将交易历史记录视为已经结算,并且只是试图计算状态转换函数,则该过程变得更容易。有几种方法; 一个相当简单的方法可以描述如下: 一个事务可以指定一个可以在其中操作的一组碎片 为了使交易有效,它必须包含在所有这些碎片的同一块高度处。 块中...
分片中的挑战之一是,在进行调用时,默认情况下没有硬协议保证,由该调用创建的任何异步操作都将在任何特定时间范围内完成,甚至完全没有; 而是由某方在目的地碎片中发送触发收据的交易。这对于许多应用程序来说是可以的,但是在某些情况下,由于以下几个原...
备案号:黑ICP备17001154号-2