---
title: 分布式验证者技术
description: 分布式验证者技术使多方能够分布式地运行以太坊验证者。
lang: zh
template: staking
sidebarDepth: 2
summaryPoints:
  - 将验证者的签名密钥拆分到多台机器和多个操作员之间，消除单点故障
  - 在个别硬件、软件或操作员出现故障时，保持验证者在线
  - 如今已被独立质押者、质押服务和质押池使用的生产级基础设施
---

## 什么是分布式验证者技术？ {#what-is-dvt}

分布式验证者技术 (DVT) 是一种保障验证者安全的方法，它将密钥管理和签名职责分散给多方，以减少单点故障并提高验证者的弹性。

DVT 通过将用于保护验证者的**私钥拆分到**组成“集群”的**多台计算机上**，来分配密钥管理和签名工作。这样做允许集群中的某些节点离线，同时保持验证者节点处于活跃状态，因为必要的验证工作可以由每个集群中的一部分机器完成。这种分布式架构减少了单点故障，使验证者更加健壮。DVT 签名分布的另一个好处是，它使攻击者极难获取密钥，因为完整的密钥不会存储在任何单台机器上。

![一张示意图，展示单个验证者密钥如何被拆分为密钥份额，并分发给具有不同组件的多个节点。](./dvt-cluster.png)

DVT 不是一种独立的质押方式。它是一个任何质押设置都可以使用的软件层：
- [独立质押者](/staking/solo/)可以组队共同运行一个验证者，或者单个独立质押者可以使用 DVT 为其独立质押设置增加弹性。
- [质押服务](/staking/saas/)和[质押池](/staking/pools/)可以使用 DVT 来增加弹性并加固其质押基础设施，或者将验证者操作分布到许多独立的操作员之间。

## 为什么我们需要 DVT？ {#why-do-we-need-dvt}

### 安全性 {#security}

验证者生成两对公私钥对：用于参与共识的验证者密钥和用于访问资金的提款密钥。虽然验证者可以将提款密钥安全地保存在冷存储中，但验证者私钥必须全天候在线，以签署验证者被分配的日常职责，例如证明和区块提议。保持密钥在线会增加其被盗的风险，而 DVT 限制了这种风险：只有密钥份额会在线，完整的密钥永远不会在线。

如果验证者私钥被泄露，攻击者就可以控制验证者，这可能会导致罚没或质押者的 ETH 丢失。DVT 降低了这种风险。借助 DVT，原始的完整验证者密钥被加密并拆分为密钥份额。密钥份额在线存在，分布在共同操作验证者的多个节点上，而完整的“主”密钥则安全地保持离线状态。这种分布之所以可行，是因为[以太坊](/)验证者使用具有可加性的 BLS 签名，这意味着可以通过对各个组成部分求和来重构完整的密钥。使用密钥份额生成的部分签名组合成对完整密钥有效的签名，因此日常签名永远不需要完整的密钥本身。当集群使用分布式密钥生成来生成新的验证者密钥时，完整的私钥永远不会存在于任何单台机器上。

### 无单点故障 {#no-single-point-of-failure}

当一个验证者被划分到多个操作员和多台机器上时，它可以承受个别硬件和软件故障而不会离线。通过在集群中的节点上使用不同的硬件和软件配置，也可以降低故障风险。单节点验证者配置原生不支持多操作员分布；它来自 DVT 中间件层。

如果集群中某台机器的一个组件发生故障（例如，如果验证者集群中有四个操作员，其中一个使用的特定客户端存在漏洞），其他操作员可以确保验证者继续运行。

### 去中心化 {#decentralization}

以太坊的理想场景是拥有尽可能多的独立运行的验证者。然而，少数质押提供商变得非常受欢迎，并占据了网络上质押 ETH 总量的很大一部分。DVT 可以允许这些操作员存在，同时保持质押的去中心化。这是因为每个验证者的密钥分布在许多机器上，验证者要变得恶意需要更大程度的串谋。

如果没有 DVT，质押提供商更容易为其所有验证者仅支持一两种客户端配置，从而增加了客户端漏洞的影响。DVT 可用于将风险分散到多种客户端配置和不同的硬件上，通过多样性创造弹性。

**DVT 为以太坊提供以下好处：**

1. 以太坊权益证明 (PoS) 共识的**去中心化**
2. 确保网络的**活跃性**
3. 创造验证者**容错性**
4. **信任最小化**的验证者操作
5. **最小化罚没**和停机风险
6. **提高多样性**（客户端、数据中心、地理位置、监管等）
7. **增强**验证者密钥管理的**安全性**

## DVT 是如何工作的？ {#how-does-dvt-work}

DVT 实现通常作为附加软件运行在集群中的每台机器上。该软件充当中间件，位于节点的验证者客户端和共识客户端之间，它与集群中的其他节点进行协调，以便共同签署验证者的职责。

DVT 解决方案包含以下组件：

- **[Shamir 密钥分享](https://medium.com/@keylesstech/a-beginners-guide-to-shamir-s-secret-sharing-e864efbf3648)** - 验证者使用 [BLS 密钥](https://en.wikipedia.org/wiki/BLS_digital_signature)。验证者私钥可以拆分为多个“密钥份额”，并且由于 BLS 签名具有可加性，使用这些密钥份额生成的部分签名可以组合成对完整验证者密钥有效的单一签名。
- **[门限签名方案](https://medium.com/nethermind-eth/threshold-signature-schemes-36f40bc42aca)** - 决定签署职责所需的单独密钥份额的数量，例如 4 个中的 3 个。
- **[分布式密钥生成 (DKG)](https://medium.com/toruslabs/what-distributed-key-generation-is-866adc79620)** - 生成密钥份额的密码学过程，用于将现有或新验证者密钥的份额分发给集群中的节点。
- **[多方计算 (MPC)](https://messari.io/report/applying-multiparty-computation-to-the-world-of-blockchains)** - 完整的验证者密钥是使用多方计算秘密生成的。任何单个操作员都永远不知道完整的密钥——他们只知道自己那部分（他们的“份额”）。
- **共识协议** - 共识协议选择一个节点作为区块提议者。他们与集群中的其他节点共享区块，其他节点将他们的密钥份额添加到聚合签名中。当聚合了足够的密钥份额时，该区块就会在以太坊上被提议。

分布式验证者具有内置的容错能力，即使某些个别节点离线也能继续运行。即使验证者节点集群中的某些节点被证明是恶意的或消极怠工的，该集群也具有弹性。

## 生产环境中的 DVT {#dvt-in-production}

如今，分布式验证者在主网上运行，涵盖独立质押、质押服务和联合质押。有两个网络占据了大部分此类活动：

<ProductDisclaimer />

- **Obol** 开发了 Charon，这是一个开源的 DVT 中间件客户端，允许机器集群共同操作一个验证者（“小队质押”）。各个小组通过 Obol 的 [DV Launchpad](https://docs.obol.org/learn/readme/launchpad) 执行分布式密钥生成并配置其集群。Obol 集群在生产环境中被[质押协议](/staking/pools/)和[质押服务](/staking/saas/)使用，包括 Lido 的 Simple DVT 模块和 EtherFi 的 Operation Solo Staker 计划，该计划将家庭操作员引入容错集群。
- **SSV Network** 是一个由独立节点操作员组成的无需许可的网络。验证者密钥被拆分为密钥份额，并分发给选定的一组操作员，他们共同履行验证者的职责；没有任何单个操作员持有完整的密钥。质押服务和质押池在 SSV 上运行大型验证者集，并且与 Obol 一样，它也被 Lido 的 Simple DVT 模块使用。

## DVT 用例 {#dvt-use-cases}

DVT 对更广泛的质押行业具有重大意义：

### 独立质押者 {#solo-stakers}

DVT 实现了**小队质押**：一小群人（例如朋友、社区成员或通过启动平台协调的陌生人）在他们自己的机器上共同运行一个验证者。该小组必须达到一定的在线门限（例如 4 人中的 3 人），验证者才能履行其职责，因此任何单个成员的停机、硬件故障或错误都不会导致验证者离线。当使用分布式密钥生成创建密钥时，没有任何成员持有完整的签名密钥。

DVT 还通过允许你将验证者密钥分布在远程节点上，同时保持完整密钥完全离线，从而实现非托管质押。这意味着质押者不一定需要运行自己的硬件，并且分发密钥份额有助于防范潜在的黑客攻击。

### 质押即服务 (SaaS) {#saas}

管理许多验证者的操作员（例如质押池和机构质押者）可以使用 DVT 来降低风险。通过分布式基础设施，他们可以为操作增加冗余，并使他们使用的硬件类型多样化。

DVT 在多个节点之间分担密钥管理的责任，这意味着一些运营成本也可以分担。DVT 还可以降低质押提供商的运营风险和保险成本。

### 质押池 {#staking-pools}

由于标准的验证者设置，质押池和流动性质押提供商过去不得不对每个单独的操作员寄予极大的信任，因为收益和损失在整个池中是社会化的。他们还依赖操作员来保护签名密钥，因为在 DVT 出现之前，他们没有其他选择。

尽管传统上人们努力通过将质押分布在多个操作员之间来分散风险，但每个操作员仍然独立管理着大量的质押。如果单个操作员表现不佳、遇到停机、被攻破或采取恶意行动，依赖他们会带来巨大的风险。

通过利用 DVT，可以减少对每个单独操作员所需的信任。**质押池可以使操作员在不需要托管验证者密钥的情况下持有质押**（因为只使用密钥份额）。它还允许将管理的质押分布在更多操作员之间（例如，DVT 允许这些验证者由多个操作员共同运行，而不是由单个操作员管理 1000 个验证者）。多样化的操作员配置有助于确保如果一个操作员发生故障，其他操作员仍然能够进行证明。由此产生的冗余和多样化可以带来更好的性能和弹性，同时最大化奖励。

最小化单操作员信任的另一个好处是，质押池可以允许更开放和无需许可的操作员参与。今天一些质押池在生产环境中就是这样做的。多操作员 DVT 集群让协议将家庭质押者和较小的操作员与较大的专业操作员配对，结合了精选和无需许可的操作员集。

## 使用 DVT 的潜在缺点 {#potential-drawbacks-of-using-dvt}

- **额外的组件** - 引入 DVT 节点增加了一个可能出现故障或存在漏洞的部件。这可以通过拥有 DVT 软件的多种实现来缓解，就像共识层和执行层有多个客户端一样。
- **运营成本** - 由于 DVT 将验证者分布在多方之间，因此操作需要更多节点而不是单个节点，这带来了运营成本的增加。
- **潜在的延迟增加** - 由于 DVT 利用共识协议在操作验证者的多个节点之间达成共识，因此它可能会带来延迟的增加。

## 常见问题 {#faq}

<ExpandableCard title="我需要 DVT 才能质押吗？" eventCategory="DVT" eventName="clicked do I need DVT to stake">
不需要。运行验证者客户端的单台机器无需任何 DVT 软件即可工作，这仍然是一种常见的家庭质押设置。DVT 是一个可选层，它增加了容错能力并消除了单点故障。如果你希望你的验证者在个别机器出现故障时幸存下来，或者如果你想与其他人分担运行验证者的责任，这将非常有用。
</ExpandableCard>

<ExpandableCard title="DVT 会拆分我的 ETH 或提款密钥吗？" eventCategory="DVT" eventName="clicked does DVT split my ETH">
不会。DVT 仅拆分验证者_签名_密钥，该密钥用于证明和区块提议等共识职责。你的质押始终由为验证者设置的提款地址控制，该地址不受 DVT 的影响。自佩克特拉 (Pectra) 升级以来，提款地址持有者还可以直接从执行层触发验证者退出，而完全不需要签名密钥。
</ExpandableCard>

<ExpandableCard title="如果集群中的节点离线会怎样？" eventCategory="DVT" eventName="clicked what happens if nodes go offline">
只要达到门限数量的节点保持在线（例如 4 个中的 3 个），验证者就会继续履行其职责。如果同时有太多节点离线，验证者就会直接离线并错失奖励，直到有足够的节点恢复，这与任何离线验证者一样。离线不是会被罚没的违规行为。
</ExpandableCard>

<ExpandableCard title="集群必须是 4 个中的 3 个吗？" eventCategory="DVT" eventName="clicked does a cluster have to be 3 of 4">
不是。“4 个中的 3 个”只是最小的常见配置，在本页面中作为示例使用。集群大小和签名门限是在创建集群时选择的。

集群的大小通常设置为门限是节点的三分之二绝对多数，这使得集群能够继续签名，同时容忍出现故障或离线的成员。一个 4 节点集群用 3 个节点签名并容忍 1 个故障；7 个节点用 5 个签名并容忍 2 个故障；10 个节点用 7 个签名并容忍 3 个故障。更大的集群以运行更多机器和它们之间更多协调为代价，换取了更高的容错能力。

[关于集群大小和弹性的更多信息](https://docs.obol.org/next/learn/charon/cluster-configuration#cluster-size-and-resilience)
</ExpandableCard>

<ExpandableCard title="DVT 和联合质押一样吗？" eventCategory="DVT" eventName="clicked is DVT the same as pooled staking">
不是。联合质押将许多人的 ETH 结合起来为验证者提供资金，是几种[质押方式](/staking/)之一。DVT 是用于_操作_验证者的基础设施。它将一个验证者的签名分布在多台机器和多个操作员之间。两者是互补的；许多质押池使用 DVT 来分布其操作员集，但 DVT 本身并不汇集任何人的 ETH。
</ExpandableCard>

## 延伸阅读 {#further-reading}

- [以太坊分布式验证者技术 (DVT) - 完整介绍](https://www.cyfrin.io/blog/full-introduction-to-ethereum-distributed-validator-technology-dvt) - Cyfrin
- [什么是 DVT，它如何改善以太坊上的质押？](https://blog.obol.org/what-is-dvt-and-how-does-it-improve-staking-on-ethereum/) - Obol
- [以太坊分布式验证者规范（高层级）](https://github.com/ethereum/distributed-validator-specs)
- [以太坊分布式验证者技术规范](https://github.com/ethereum/distributed-validator-specs/tree/dev/src/dvspec)
- [Obol 文档](https://docs.obol.org/)
- [SSV Network 文档](https://docs.ssv.network/)
- [Lido Simple DVT 模块](https://operatorportal.lido.fi/modules/simple-dvt-module)
- [Shamir 密钥分享演示应用](https://iancoleman.io/shamir/)