Flashbots:与MEV危机赛跑
Flashbots 是一个研究和开发组织,成立的初衷是缓解由 “矿工可抽取价值” 给智能合约平台型区块链带来的负外部性和生存风险。我们提议为 MEV 的收取设计一种免信任、透明且公平的生态系统,来保卫以太坊的理念。
“数据可得性(data availability)”和“数据可得性问题”指的是一些区块链扩容方案所面临一个问题。详细来说,就是当新的区块建立时,节点若何确保该区块中的所有数据都已宣布到网络上?难题之处在于,若是区块生产者没有宣布区块中的所有数据,就没人能发现该区块中是否隐藏了恶意买卖。
在本文中,我将深入探讨数据可得性问题的主要性,以及相关解决方案。
区块链节点是若何运行的?区块链上的每个区块都由两部门组成:
区块头,即,区块的元数据,由一些关于区块内容的基本信息组成,包罗买卖的默克尔根。
买卖数据,即,区块的主要组成部门,由现实的买卖数据组成。
区块链网络中主要有两类节点:
全节点(又称完全验证节点)。这类节点会下载区块链中的每笔买卖并验证其有用性。这需要消耗大量资源和数百 GB 的磁盘空间,然则这些节点的安全性最高,由于它们不会接受包罗无效买卖的区块。
轻客户端。若是你的盘算机没有足够的资源来运行全节点,你可以运行轻客户端。轻客户端不需要下载或验证任何买卖。它们只下载区块头,并认定区块中包罗的买卖都是有用的。因此,轻客户端的安全性低于全节点。
幸运的是,有一种方式可以让轻客户端间接检查区块中的所有买卖是否有用。轻客户端可以依赖全节点向其发送关于无效买卖的 敲诈证实,无需自己检查买卖的有用性。敲诈证实是一个很小的证实,可以证实区块中的某个买卖是无效的。关于敲诈证实的运作原理,本文不做详细先容,请阅读这篇文章。
这里只有一个问题:全节点若是要为某个区块天生敲诈证实,需要知道该区块的买卖数据。若是区块生产者只宣布区块头,没有宣布买卖数据的话,全节点就无法验证买卖的有用性,并针对无效买卖天生敲诈证实了。这就要求区块生产者宣布区块的所有数据,然则我们需要找到一种方式来强制执行。
为领会决这个问题,轻客户端需要找到某种方式来检查区块的买卖数据是否真的宣布到了网络上,以便全节点举行验证。然而,我们又要制止让轻客户端下载整个区块,由于这会使得轻客户端损失存在的意义。
我们该若何解决这一问题?首先,我们先来讨论数据可得性问题的相关性,以及若何接纳解决措施。
数据可得性问题与哪些方案有关在上一节中,我们先容了数据可得性问题。让我们来讨论一下它对可扩展性解决方案的主要性。
增添区块巨细在比特币等区块链中,绝大部门一样平常的手提电脑都能运行全节点并验证整条链,由于存在人为划定的区块巨细上限,来防止区块链变得过大。
然则,若是我们想要增添区块巨细上限该怎么办?那就只有更人才气负担得起运行全节点并自力验证区块链的成本,大多数人都市运行安全性更低的轻客户端。这并不利于去中央化,由于这会让区块生产者更容易更改协议规则,插入无效买卖来诱骗轻客户端。因此,为轻客户端提供敲诈证实支持很主要,然则正如我们已经讨论过的,轻客户端需要一种方式来验证区块中的所有数据是否都已宣布至网络。
提高区块链吞吐量的一种方式是,将区块链分成多条链,即,分片。这些分片都有自己的区块生产者,而且可以相互通讯,以便在分片之间转移代币。分片的意义在于,将网络中的区块生产者分组,这样就不需要每个区块生产者处置每个买卖,只需将他们涣散到差别的分片上即可。每个分片只需处置部门买卖。
通常来说,在分片式区块链上,验证者只需要为一个或少数几个分片运行全节点,并为其它分片运行轻客户端。究竟,若是每个验证者都要为每个分片运行一个全节点,就无法实现分片的目的 —— 将网络的开销分割给差别节点。
然而,这种方式自己存在缺陷。若是分片上的区块生产者作恶,最先接受无效买卖怎么办?相比非分片式系统,分片式系统更有可能发生这种情形,由于后者的每个分片上只有少量区块生产者,攻击起来更容易。请记着,区块生产者会被不停分配到差别的分片上。
为便于察觉是否存在分片接受无效买卖的情形,我们必须确保分片中的所有数据都是公然可得的,以便使用敲诈证实来证实所有无效买卖。
RollupOptimistic rollup 是一种基于 rollup 侧链(类似分片)的新型可扩展性计谋。这些侧链有自己专属的区块生产者,可与其它侧链相互转移资产。
然则,若是有恶意的区块生产者将无效买卖打包进区块,将侧链上所有用户的资金盗走怎么办?为解决这一问题,我们可以使用敲诈证实来发现这种情形。然则,照样谁人老问题,侧链用户需要找到某种方式来确保侧链上所有区块的数据都公然可见,以便发现无效买卖。为领会决这一问题,以太坊上的 Rollup 将所有 rollup 区块都宣布到以太坊区块链上,依赖以太坊来实现数据可得性。也就是说,将以太坊作为数据可得性层。
ZK-rollup 与 optimistic rollup 类似。区别在于,前者并非使用敲诈证实来发现无效区块,而是使用有用性证实来证实区块的有用性。有用性证实自己不需要数据可得性。然而,总的来说,ZK-rollup 需要数据可得性,由于若是区块生产者建立了一个有用区块,并为其天生有用性证实,却没有宣布区块数据,用户就无法知道区块链的状态以及他们的余额,也就无法与区块链举行交互。
进一步探索rollup 的设计旨在将区块链作为数据可得性层来存储买卖,然则现实的买卖处置和盘算都发生在 rollup 上。这是一种很有趣的思绪:区块链现实上不需要举行任何盘算,然则至少需要将买卖分装到区块中,并确保买卖的数据可得性。
这也是 LazyLedger 的设计思绪,即,一种“懒惰的”区块链,只需要完成区块链的两个焦点义务 —— 通过可扩展方式对买卖举行排序,并实现买卖的数据可得性。这使得 LazyLedger 成为 rollup 等系统中的最小“可拔插”组件。
数据可得性问题的解决方案 下载所有数据正如上文所讨论的那样,解决数据可得性问题的最直接方式就是,要求所有人(包罗轻客户端)下载所有数据。显然,这种方式不具备优越的可扩展性。比特币和以太坊等大多数区块链均接纳这种方式。
数据可得性证实数据可得性证实是一种新技术:客户端只需下载区块中的一小部门数据,即可检查该区块中所有数据是否均已宣布。
数据可得性证实接纳了一种被称为纠删码的数学元件。纠删码被广泛应用到了从 CD-ROM 到卫星通讯再到二维码等信息技术中。纠删码可以将原本 1 MB 的区块数据扩充成 2MB,其中多出的 1 MB 就是叫做纠删码的特殊数据。若是区块中的任何字节丢失,纠删码都可以帮你找回它们。纵然整个区块的数据丢失, 纠删码也可以帮你找回所有数据。同样地,有了纠删码,纵然 CD-ROM 中的数据都被擦除,你的盘算机也可以读取到(译者注:纠删码并不能帮你节约带宽,假设 1MB 的数据被扩充成了 2 MB,你仍然需要获得至少 1MB 的数据才气恢复出原始数据,虽然并不要求这 1 MB 的数据是延续的)。
这就意味着,要实现 100% 的数据可得性,区块生产者只需将区块中 50% 的数据宣布到网络上。若是恶意区块生产者想要乐成遮盖 1% 的数据,就必须遮盖跨越 50% 的数据,否则这 1% 的数据可以通过剩下 50% 的数据找回(译者注:此段第一句存疑)。
有了这个知识,客户端就能接纳措施来确保区块中的数据不会被隐藏。客户端可以实验随机下载区块切分而成的数据块,若是他们未能乐成下载数据块(即解释,该数据块属于恶意区块生产者未公然的那 50% 的数据),它们就会拒绝认可该区块的数据可得性。若是下载一个随机数据块,客户端就有 50% 的概率发现无效区块。若是下载两个数据块,就有 75% 的概率。若是下载三个数据块,就有 87.5% 的概率。以此类推,直到下载七个数据块之后,就有 99% 的概率。通过这种方式,客户端只需下载区块中的一小部门数据,即可有用检查整个区块的数据可得性。
数据可得性证实的所有细节会更庞大一些,而且依赖于其它假设,例如,网络中的轻客户端数目不能低于某个下限,这样就有足够多的轻客户端请求数据块,以便恢复整个区块的数据。若是你想领会更多信息,可以查看关于数据可用性证实的论文。
在本文中,我们先容了数据可用性问题,讨论了数据可用性对区块链可扩展性的主要性,并提出领会决方案。
加入新手交流群:每天早盘分析、币种行情分析
添加助理微信,一对一专业指导:chengqing930520
上一篇:一文读懂Diem:从「一篮子钱币」到「稳固币」,从Libra中衍生出哪些差别?加入新手交流群:每天早盘分析、币种行情分析,添加助理微信
一对一专业指导:chengqing930520