---
title: "弱主观性"
description: "解释弱主观性及其在以太坊权益证明中的作用。"
lang: zh
---

区块链中的主观性是指依赖社交信息来就当前状态达成一致。可能会有多个有效的分叉，根据从网络上其他对等节点收集的信息从中进行选择。相反的是客观性，指的是只有一条可能的有效链，所有节点通过应用其编码规则必然会就此达成一致。还有第三种状态，称为弱主观性。这指的是在通过社交方式获取一些初始信息种子后，能够客观推进的链。

## 前提条件 {#prerequisites}

要理解本页面，必须首先了解[权益证明 (PoS)](/developers/docs/consensus-mechanisms/pos/)的基础知识。

## 弱主观性解决了什么问题？ {#problems-ws-solves}

主观性是权益证明区块链固有的特性，因为从多个分叉中选择正确的链是通过计算历史投票来完成的。这使区块链面临几种攻击向量，包括长程攻击（long-range attacks），即在链的早期参与的节点维护一个替代分叉，并在很久以后发布以谋取私利。或者，如果 33% 的验证者提取了他们的质押，但继续进行证明和生成区块，他们可能会生成一个与规范链冲突的替代分叉。新节点或长时间离线的节点可能不知道这些攻击验证者已经提取了资金，因此攻击者可能会欺骗它们跟随一条不正确的链。[以太坊](/)可以通过施加约束来解决这些攻击向量，将机制的主观方面（以及因此产生的信任假设）降至最低。

## 弱主观性检查点 {#ws-checkpoints}

在以太坊权益证明中，弱主观性是通过使用“弱主观性检查点”来实现的。这些是网络上所有节点都同意属于规范链的状态根。它们与创世区块具有相同的“普遍真理”作用，只是它们不位于区块链的创世位置。分叉选择算法相信该检查点中定义的区块链状态是正确的，并从该点开始独立客观地验证链。这些检查点充当“回退限制”，因为位于弱主观性检查点之前的区块无法更改。这通过在机制设计中将长程分叉定义为无效，从而破坏了长程攻击。确保弱主观性检查点之间的距离小于验证者提款期，可以确保分叉链的验证者在提取质押之前至少被罚没一定阈值的金额，并且新加入者不会被已提取质押的验证者欺骗而进入不正确的分叉。

## 弱主观性检查点与已最终确定区块之间的区别 {#difference-between-ws-and-finalized-blocks}

以太坊节点对已最终确定区块和弱主观性检查点的处理方式不同。如果一个节点发现两个相互竞争的已最终确定区块，那么它会在两者之间犹豫不决——它无法自动识别哪个是规范分叉。这是共识失败的症状。相比之下，节点会直接拒绝任何与其弱主观性检查点冲突的区块。从节点的角度来看，弱主观性检查点代表了绝对真理，不能被来自其对等节点的新知识所破坏。

## 弱主观性有多“弱”？ {#how-weak-is-weak}

以太坊权益证明的主观方面在于，需要从受信任的来源获取最近的状态（弱主观性检查点）来进行同步。获取到不良弱主观性检查点的风险非常低，因为可以通过几个独立的公共来源（如区块浏览器或多个节点）对它们进行核对。然而，运行任何软件应用程序总是需要一定程度的信任，例如，相信软件开发人员编写了诚实的软件。

弱主观性检查点甚至可能作为客户端软件的一部分提供。可以说，攻击者可以破坏软件中的检查点，也可以同样轻易地破坏软件本身。没有真正的加密经济途径可以绕过这个问题，但在以太坊中，通过拥有多个独立的客户端团队，每个团队使用不同的语言构建等效的软件，并且都对维护诚实链拥有既得利益，从而将不可信开发人员的影响降至最低。区块浏览器也可以提供弱主观性检查点，或者提供一种方法，将从其他地方获取的检查点与额外来源进行交叉引用。

最后，可以向其他节点请求检查点；也许另一个运行全节点的以太坊用户可以提供一个检查点，然后验证者可以根据区块浏览器的数据对其进行验证。总的来说，信任弱主观性检查点的提供者可以被认为与信任客户端开发人员一样存在问题。所需的整体信任度很低。需要注意的是，只有在极不可能发生的情况下（即大多数验证者共谋产生区块链的替代分叉），这些考虑才会变得重要。在任何其他情况下，只有一条以太坊链可供选择。

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

- [Eth2 中的弱主观性](https://notes.ethereum.org/@adiasg/weak-subjectvity-eth2)
- [Vitalik：我是如何学会爱上弱主观性的](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity)
- [弱主观性（泰库文档）](https://docs.teku.consensys.io/concepts/weak-subjectivity)
- [阶段 0 弱主观性指南](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/weak-subjectivity.md)
- [以太坊 2.0 中的弱主观性分析](https://github.com/runtimeverification/beacon-chain-verification/blob/master/weak-subjectivity/weak-subjectivity-analysis.pdf)