跳至内容
0%

什么是 danksharding?

发布于 2022年6月22日2 分钟阅读

一种名为 proto-danksharding 的新分片设计,已作为通往完整区块链分片路线图的一部分被提出。由于这个概念太新,许多人尚未理解它。

本文将对 proto-danksharding 以及它将如何帮助 Layer 2 扩容进行全面而易懂的解析。我们开始吧。

什么是分片?

分片指的是将一条区块链拆分成更小的部分,以提升整体效率。

举例来说:与其在 Ethereum Mainnet 上处理一笔价值 100,000 美元的交易,不如将其拆分为十个分片,每个分片承载价值 10,000 美元的交易数据。这样做的目的是缓解网络拥堵。

除了速度之外,分片链还能提供更大的存储空间并降低费用。

需要注意的是,分片是一项需要经历多个阶段才能达到最终形态的实现方案。

什么是 danksharding?

Danksharding 是一种实现合并费用市场概念的分片设计。与常规分片中每个分片有各自的区块和区块提议者不同,danksharding 中只存在一个提议者。

区块构建者负责选择哪些数据和交易进入区块的每个 slot。

Danksharding 与分片相互关联,但二者并不相同。分片是为扩展 Ethereum 而对网络进行拆分的整体设计,而 danksharding 则是实现这一目标的一个步骤。

Tim Beiko——Ethereum 最重要的研究员之一——曾在 Bankless 播客中解释过 Danksharding 这个名称的由来:它是以另一位资深 Ethereum 研究员 Dankrad Feist 的名字命名的。

Danksharding 是如何运作的?

区块构建者提交请求,以确定哪些内容将进入某个 slot(这些 slot 之后会组成一个区块),然后由提议者从中选出出价最高者。一旦某个构建者被选中负责某个 slot,处理整个区块的责任就落在了他们身上。

在某些情况下,预言机也有可能承担区块构建者的角色。根据 Ethereum 团队的说法,采用这种设计的主要原因,是为了遏制矿工目前所拥有的两种不公平权力——也就是最大可提取价值(Maximum Extractable Value,MEV)。

首先,矿工可能会通过选择自己或熟人的交易表现出不公平的偏向。其次,矿工可能只挑选出价最高的交易,从而让数以百万计的其他交易滞留在 mempool 中长达数小时甚至数天。

而在 danksharding 中,没有人能知道某个构建者提交的交易排序列表的具体内容。因此,提议者 的权力受到了限制。

区块构建者与提议者有什么区别?

区块构建者负责构建区块,而区块提议者则负责选择应加入区块的交易头,并相应地进行广播。这两者是协同工作的。

区块构建者将交易打包成 slot 或区块以便加入区块,然后将其提交给提议者进行选择。提议者成功选定一个区块后,区块构建者便会处理该区块。

Danksharding 中的数据可用性抽样

区块链的一个基本原则是透明性。如果一个恶意或无效的区块被添加到链上,可能会对整个网络造成损害。

通常,在 Ethereum 生态系统中,全节点可以向轻客户端——乃至整个网络——提交欺诈证明,作为某笔交易无效的证据。但这种方式只在 rollup 场景下运作良好,在 danksharding 中可能并不完全适用。

矿工可以通过对可用数据进行抽样来验证 danksharded 区块。首先,数据可用性意味着某个哈希背后的底层数据已经在链上发布。在今年的 ETH Dubai 上,Protolambda 将数据可用性解释为_无需许可地重建状态的能力_(permissionless)。

在实践中,这种数据可用性抽样是通过纠删码(erasure codes)实现的。纠删码可以被抽样,从而获取添加到 slot 或区块中的实际数据。

在交易处理完成后,关于何时应从 Ethereum 区块链中删除数据以避免造成吞吐量瓶颈,可能仍会存在争论。

目前的计划是,数据将在一个月后被删除。不过,即使过了这个期限,仍可以通过 Graph Protocol 和区块浏览器等多种方式访问这些数据。

什么是 proto-danksharding(EIP-4844)?

就目前情况而言,要实现完整的 danksharding,仍有许多问题需要解决。这促成了 EIP-4844 提案的诞生,它是一种实现 proto-danksharding 的格式。

该提案旨在实现完整分片所需的核心变更——尤其是交易格式方面的变更。proto-danksharding 这一名称同样源自另一位 Ethereum 研究员 Proto Lambda 的名字。

Proto Lambda 为 danksharding 引入的实际变更被称为二进制大对象(Binary Large Objects),通常简称为 "blob"。事实上,blob 在编程中并不是新概念,在 JavaScript 和 Python 中都存在。但真正新的地方在于,blob 有可能与智能合约产生关联。要更好地理解这一点,我们需要先弄清楚:"什么是 blob?"

什么是 blob(二进制大对象)?

Blob 由区块提议者提出。它们可以被比作_大型包裹_,即能够容纳更便宜数据的大型可携带数据束。每个区块只能容纳有限大小的这类_大型包裹_。从结构上看,一个典型的 blob 包含主体(body)和头部(header)。

Blob 的主体始终存储与交易直接相关的数据内容。而头部则包含较少的信息,例如提议者的签名。

在 proto-danksharding 中,每笔交易始终有一个对应的 blob 孪生体,其最终目的是降低交易成本。为了增强可扩展性,proto-danksharding 中的每个 slot 大致会拥有 1 MB 的数据带宽。

注意:Ethereum 虚拟机只能访问被_封装_在 blob 中的更便宜数据,而无法访问 blob 本身,因为 danksharding 中的交易不会进入常规的 mempool,而是进入一个不同的 mempool。

EIP-4844 与 EIP-4488 有什么区别?

区别在于:EIP-4844 提供的解决方案与整个分片路线图相契合,甚至能加速该路线图的推进;而 EIP-4488 仅仅是尝试暂时缓解当下的问题。

从本质上讲,EIP-4488 试图大幅降低 call data 的 gas 成本。虽然这在短期内会有所帮助,但如果实现了完整分片,这种做法就会失去意义,因为分片将使用 blob。而 EIP-4844 则计划在其交易格式中使用 blob。

不过,我们也应当认识到,这两项提案不必被视为相互竞争或彼此权衡的关系。虽然 proto-danksharding 由于一些工程技术上的问题可能需要一段时间才能实现,但 EIP-4488 可以通过 rollup 来实施,从而解决短期的成本问题。

Proto-danksharding 会降低 gas 费用吗

答案很明确:"不会"。Proto-danksharding 不会降低 Ethereum 的 gas 费用,但会降低 Layer 2 协议的交易成本。

事实上,这个问题在关于 proto-danksharding 的讨论中经常被提及。之所以会产生这种误解,是因为 proto-danksharding 将引入 blob。

即便如此,blob 也只会取代 rollup 通常使用的 call data。因此,Ethereum 协议本身的 gas 费用将保持不变。

事实上,多年来一直关注 Ethereum 生态系统动态的开发者都会认同:目前大多数提案都不会直接影响或显著降低 Ethereum 主协议的 gas 费用,即便是 The Merge 也不例外。

Proto-danksharding 的现状

自今年 2 月早些时候 proto-danksharding 改进提案被提出以来,外界一直在关注其进展情况。

尽管 Ethereum 研究团队仍在解决一些关键问题,但要成为完整分片的先驱,proto-danksharding 仍有很长的路要走。

首先,数据可用性抽样目前仍停留在理论层面,尚未付诸实现。部分原因在于,开发者们仍在讨论:该 Ethereum 改进提案是否应仅实现 point evaluation precompile,而放弃将其与 blob verification precompile 相结合的想法。

事实上,blob verification precompile 在 Layer 2 之间是可以自行实现的。因此,Ethereum 社区正在考虑是否仍有必要对其进行正式规定。

Ethereum 团队正在研究最切合实际的 blob 架构,以及应当采取的最合理的安全措施。

Proto-danksharding 的未来

多年来,Ethereum 网络一直在与吞吐量相对较慢、gas 费用较高的问题作斗争,Ethereum 研究人员也提出了包括分片在内的多种技术解决方案。

Proto-danksharding 是实现完整分片路线图的一条途径,其主要目标是通过以 blob 为核心的交易格式,降低 Layer 2 协议的交易成本。

Ethereum 社区一直致力于推进其模块化目标,即为 Layer 2 区块链提供所需的架构,使其能够在 Ethereum 协议之上实现更具可扩展性的构建。

Background gradient

构建区块链应用

Alchemy 将最强大的 Web3 开发者产品和工具与资源、社区及专业支持结合在一起。