---
title: "什么是 danksharding？"
description: "深入理解 EIP-4844 影响的完整指南"
---

# 什么是 danksharding？

一种名为 proto-danksharding 的新分片设计，已作为通往[完整区块链分片](https://www.alchemy.com/overviews/ethereum-sharding-an-introduction-to-blockchain-sharding)路线图的一部分被提出。由于这个概念太新，许多人尚未理解它。

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

## 什么是分片？

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

举例来说：与其在 [Ethereum Mainnet](https://www.alchemy.com/rpc/ethereum) 上处理一笔价值 100,000 美元的交易，不如将其拆分为十个分片，每个分片承载价值 10,000 美元的交易数据。这样做的目的是缓解网络拥堵。

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

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

## 什么是 danksharding？

[Danksharding](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq#What-is-Danksharding) 是一种实现合并费用市场概念的分片设计。与常规分片中每个分片有各自的区块和区块提议者不同，danksharding 中只存在一个提议者。

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

Danksharding 与分片相互关联，但二者并不相同。分片是为[扩展 Ethereum](https://www.alchemy.com/overviews/ethereum-scaling-solutions) 而对网络进行拆分的整体设计，而 danksharding 则是实现这一目标的一个步骤。

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

### Danksharding 是如何运作的？

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

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

首先，矿工可能会通过选择自己或熟人的交易表现出不公平的偏向。其次，矿工可能只挑选出价最高的交易，从而让数以百万计的[其他交易滞留在 mempool](https://www.alchemy.com/overviews/what-is-a-mempool) 中长达数小时甚至数天。

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

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

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

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

## Danksharding 中的数据可用性抽样

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

通常，在 [Ethereum 生态系统](https://www.alchemy.com/dapps/ecosystem/ethereum)中，全节点可以向轻客户端——乃至整个网络——提交欺诈证明，作为某笔交易无效的证据。但这种方式只在 [rollup](https://www.alchemy.com/overviews/optimistic-rollups) 场景下运作良好，在 danksharding 中可能并不完全适用。

矿工可以通过对可用数据进行抽样来验证 danksharded 区块。首先，数据可用性意味着某个哈希背后的底层数据已经在链上发布。在今年的 ETH Dubai 上，**Protolambda** 将数据可用性解释为_无需许可地重建状态的能力_（[permissionless](https://www.alchemy.com/overviews/permissionless-vs-permissioned-blockchains)）。

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

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

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

## 什么是 proto-danksharding（EIP-4844）？

就目前情况而言，要实现完整的 danksharding，仍有许多问题需要解决。这促成了 [EIP-4844 提案的诞生](https://eips.ethereum.org/EIPS/eip-4844)，它是一种实现 proto-danksharding 的格式。

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

Proto Lambda 为 danksharding 引入的实际变更被称为[二进制大对象](https://hackmd.io/@vbuterin/sharding_proposal#Blob-publication-process)（Binary Large Objects），通常简称为 "blob"。事实上，blob 在编程中并不是新概念，在 JavaScript 和 Python 中都存在。但真正新的地方在于，blob 有可能与智能合约产生关联。要更好地理解这一点，我们需要先弄清楚："什么是 blob？"

### 什么是 blob（二进制大对象）？

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

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

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

注意：[Ethereum 虚拟机](https://www.alchemy.com/overviews/what-is-the-ethereum-virtual-machine-evm)只能访问被_封装_在 blob 中的更便宜数据，而无法访问 blob 本身，因为 danksharding 中的交易不会进入常规的 mempool，而是进入一个不同的 mempool。

### EIP-4844 与 EIP-4488 有什么区别？

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

从本质上讲，[EIP-4488](https://eips.ethereum.org/EIPS/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](https://www.alchemy.com/overviews/the-ethereum-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 协议之上实现更具可扩展性的构建。
