---
title: "什麼是 danksharding？"
description: "深入了解 EIP-4844 影響的完整指南"
---

# 什麼是 danksharding？

一種名為 proto-danksharding 的新分片設計，已作為邁向[完整區塊鏈分片](https://www.alchemy.com/overviews/ethereum-sharding-an-introduction-to-blockchain-sharding)路線圖的一部分被提出。由於這項設計相當新，許多人尚未完全理解它。

本文將對 proto-danksharding 進行完整、易懂的分析，說明它將如何協助 Layer 2 擴容。讓我們開始吧。

## 什麼是分片？

分片（sharding）是指將區塊鏈拆分成較小的部分，以提升整體效率。

舉例來說：與其在 [Ethereum Mainnet](https://www.alchemy.com/rpc/ethereum) 上處理一筆價值 10 萬美元的交易，這筆交易可以拆分成十個分片，每個分片承載價值 1 萬美元的交易資料。這樣做的目的是減少網路壅塞。

除了速度之外，分片鏈還能提供更大的儲存空間並降低費用。

值得注意的是，分片是一項需要經過多個階段才能達到最終形態的實作。

## 什麼是 danksharding？

[Danksharding](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq#What-is-Danksharding) 是一種實作合併市場手續費（merged market fee）概念的分片設計；與一般分片不同，一般分片中每個分片都有各自的區塊和區塊提議者，而 danksharding 中只存在一個提議者。

區塊建構者（block builder）負責選擇要放入區塊每個時段（slot）的資料和交易。

Danksharding 與分片彼此相關，但並不相同。分片是為了[擴展 Ethereum](https://www.alchemy.com/overviews/ethereum-scaling-solutions)而拆分網路的整體設計，而 danksharding 則是實現此目標的其中一個步驟。

Tim Beiko——最重要的 Ethereum 研究人員之一——曾在 _Bankless_ podcast 中解釋 _Danksharding_ 這個名稱的由來，它是以另一位資深 Ethereum 研究人員 Dankrad Feist 的名字命名的。

### Danksharding 如何運作？

區塊建構者提出請求，決定要放入每個時段的內容，之後這些時段會組成一個區塊，接著由提議者選出出價最高者。一旦某個建構者被選中負責某個時段，他們就須負責處理整個區塊。

在某些情況下，oracle 有可能扮演區塊建構者的角色。根據 Ethereum 團隊的說法，這種設計背後的主要原因，是為了遏止礦工目前擁有的兩種不公平的控制權——也就是最大可提取價值（Maximum Extractable Value，簡稱 MEV）。

首先，礦工可以透過選擇自己或熟人的交易來展現不公平的偏好。其次，礦工可以只挑選出價最高者的交易，導致數百萬筆其他[交易滯留在 mempool](https://www.alchemy.com/overviews/what-is-a-mempool) 中長達數小時甚至數天。

然而，在 danksharding 中，沒有人知道建構者提交的交易排序清單內容為何。因此，_提議者_ 的權力受到了限制。

#### 區塊建構者與提議者有什麼不同？

區塊建構者負責建構區塊，而區塊提議者則選擇應加入區塊的交易標頭並相應地廣播出去。這兩者是相輔相成的。

區塊建構者將交易打包成時段或區塊，以便加入到區塊中，接著建構者將這些提交給提議者以供選擇。提議者成功選出一個區塊後，區塊建構者便會處理該區塊。

## Danksharding 中的資料可用性抽樣

區塊鏈的一項基本原則是透明性。如果一個惡意或無效的區塊被加入鏈中，可能會對整個網路造成不良影響。

通常在 [Ethereum 生態系](https://www.alchemy.com/dapps/ecosystem/ethereum)中，完整節點可以向輕節點——以及整個網路——提出詐欺證明，作為某筆交易無效的證據。但這種方式僅在 [roll-up](https://www.alchemy.com/overviews/optimistic-rollups) 中運作良好，對於 danksharding 來說可能不太適用。

礦工可以透過抽樣可用的資料來驗證經過 danksharding 處理的區塊。首先，資料可用性意味著某個雜湊值背後的底層資料已經發布在鏈上。在今年的 ETH Dubai 大會上，**Protolambda** 將資料可用性解釋為 _在無需許可的情況下重建狀態的能力_（[permissionless](https://www.alchemy.com/overviews/permissionless-vs-permissioned-blockchains) ability to reconstruct the state）。

實務上，這種資料可用性抽樣是透過糾刪碼（erasure codes）來實作的。糾刪碼可以被抽樣，以取得實際加入該時段或區塊的資料。

交易處理完成後，關於資料何時應從 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 引入的實際變更稱為 [Binary Large Objects](https://hackmd.io/@vbuterin/sharding_proposal#Blob-publication-process)，通常簡稱為「blob」。事實上，blob 在程式設計中並不是新概念，JavaScript 和 Python 中都存在這個概念。然而，新的地方在於 blob 有可能與智慧合約產生關聯。要更清楚理解這一點，我們需要先問：「blob 究竟是什麼？」

### 什麼是 blob（binary large object）？

blob 是由區塊提議者提出的。它們被比喻為 _大包裝_ 或可以裝載較便宜資料的大型可攜式包裹。每個區塊能容納的這種 _大包裝_ 數量是有限的。就結構而言，一個典型的 blob 有主體（body）和標頭（header）。

blob 的主體始終儲存與交易直接相關的資料。而標頭則包含較少的資訊，例如提議者的簽章。

在 proto-danksharding 中，每筆交易都始終有一個對應的 blob，其最終目的是讓交易更便宜。為了提升可擴展性，proto-danksharding 中每個時段大多會有 1 MB 的資料頻寬。

注意：[Ethereum Virtual Machine](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 可以先被實作，透過 roll-up 解決當前的成本問題。

## Proto-danksharding 會降低 gas 費用嗎

答案很明確：「不會。」Proto-danksharding 不會降低 Ethereum 的 gas 費用，但會降低 Layer 2 協議的交易成本。

事實上，這個問題在關於 proto-danksharding 的討論中經常出現。之所以會產生這種誤解，是因為 proto-danksharding 將引入 blob。

即便如此，blob 也只會取代 roll-up 通常使用的 call data。因此，Ethereum 協議上的 gas 費用仍然維持不變。

事實上，多年來一直關注 Ethereum 生態系更新動態的開發者都會同意，目前大多數提案都不會直接影響或大幅降低主要 Ethereum 協議的 gas 費用，即使是 [The Merge](https://www.alchemy.com/overviews/the-ethereum-merge) 也是如此。

## Proto-danksharding 的現況

自從今年二月稍早提出 proto-danksharding 改進提案以來，各界一直期待著這項提案是否有任何進展。

雖然 Ethereum 研究團隊仍在研究若干關鍵問題，但 proto-danksharding 要成為完整分片的先驅，仍有很長的路要走。

首先，資料可用性抽樣仍停留在理論階段，尚未實際實作。部分原因在於，開發者仍在決定該 Ethereum Improvement Proposal 是否應僅實作 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 協議上實現更具擴展性的建構。
