﻿---
title: "轻客户端"
description: "介绍具备分叉感知能力的共识轻客户端启动、同步委员会、弱主观性检查点、乐观与最终确定标头、执行状态证明、RPC 提供商、数据可用性和隐私。"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 轻客户端

> 仅供教育参考，不构成安全或交易建议。轻客户端仅验证其所配置协议和证明覆盖的对象；请确认具体链、分叉、检查点、标头状态、提供商和未经验证的数据范围。

<a id="answer"></a>

## 直接答案

轻客户端是一种验证软件，它跟踪区块链时所需的本地执行、状态和历史数据少于全节点。轻节点是运行这类软件的设备或进程。在权益证明以太坊上，共识轻客户端从近期可信的最终确定检查点启动，并验证能识别分叉的同步委员会更新，以维护乐观标头和最终确定标头；它不会重放每笔 EVM 交易。

这个经过验证的共识视图只是第一层信任锚。要验证账户或合约存储值，客户端必须将已认证的信标链标头关联至执行负载标头，选定其中的 `stateRoot`，并以该根验证账户或存储证明。缺少所需证明的普通 RPC 响应仍只是提供商的主张。共识签名不会自动证明交易历史、收据、调用追踪、数据可用性、应用行为或长期可检索性。

<a id="mechanism"></a>

## 运行机制

1. 锁定网络与信任根：链身份、创世验证者根和创世时间、分叉计划与预设、当前时钟、客户端版本，以及近期可信的最终确定弱主观性检查点。通过相互独立且经过认证的来源交叉核验检查点；节点意见一致无法修复恶意起始根。
2. 为可信区块根取得 `LightClientBootstrap`。验证启动对象的标头、当前同步委员会及其 Merkle 分支，然后初始化 `LightClientStore`。若链、分叉摘要、广义索引或序列化模式与所配置分叉不符，应拒绝处理。
3. 按同步委员会周期处理 `LightClientUpdate` 对象。在轮换委员会前，验证时隙、参与位、BLS 聚合签名与域、当前及下一委员会分支、最终性分支和单调性。分叉升级可能改变对象字段与广义索引，因此 Altair 常量并非永久通用值。
4. 分别维护 `optimistic_header` 和 `finalized_header` 策略。乐观更新能提供较新的信息，但重组或数据扣留风险更高；最终确定更新的共识状态更强，却可能有所滞后。应用必须明确选择适合的标头，而不能把最新响应重新标成最终确定。
5. 锚定执行数据。验证已认证轻客户端标头携带的执行负载标头及其分支，再把每项账户或存储查询绑定至该执行 `stateRoot`、区块哈希和最终性状态。在以太坊上，`eth_getProof` 可返回账户证明及指定存储证明；应在本地验证节点、路径、值和不存在性。
6. 盘点每个未经验证的范围。余额证明不会认证交易收据、日志查询、调用追踪、调用模拟、内存池、代币标签、预言机、blob、历史区间，也不会证明提供商没有遗漏结果。每种必需对象都应有证明、独立重建、全节点后备方案或明确的信任假设。
7. 按失败即关闭原则运行。记录检查点、分叉、乐观与最终确定根、执行区块与状态根、证明节点、提供商和时间戳。强制执行最大陈旧期，分散提供商与网络路径，保护查询隐私，测试日蚀攻击与停机恢复；轻客户端的证明范围不足时，应使用全节点或其他验证系统。

<a id="example"></a>

## 计算示例

- **同步委员会整数边界。** 对于 `512` 人委员会，规范中的超多数测试为 `participants * 3 >= 512 * 2`。参与者为 `341` 人时，`341 / 512 = 66.6015625%` 且 `1,023 < 1,024`，测试不通过。参与者为 `342` 人时，`342 / 512 = 66.796875%` 且 `1,026 >= 1,024`，测试通过。这只验证所配置的更新规则，并不能证明每名委员或每个实现都是诚实的。
- **标头时钟。** 教学示例中的检查点位于时隙 `10,000`，被认证标头位于 `10,064`，其最终确定标头位于 `10,032`。按 `12 seconds/slot`，被认证标头比检查点晚 `64 * 12 = 768 seconds = 12 minutes 48 seconds`，而最终确定标头落后被认证标头 `32 * 12 = 384 seconds = 6 minutes 24 seconds`。时隙时间不保证网络交付，也不构成固定挂钟时间的最终性服务承诺。
- **紧凑分支，有限主张。** 在包含 `2^20` 个叶节点的理想平衡树中，单叶分支有 `20` 个同级哈希。按 `32 bytes/hash` 计，共 `640 bytes`；与 `8 MiB = 8,388,608 bytes` 的对象相比，该分支占 `0.00762939453125%`，减少 `99.99237060546875%`。该分支只证明叶节点到根的关系，不证明其他字节可用。
- **证明与裸 RPC。** 在最终确定的执行 `stateRoot` 下，经验证的账户证明得出 `3.25 ETH`，而未经证明的 RPC 响应称为 `3.30 ETH`。差额为 `0.05 ETH`，且裸响应高出 `0.05 / 3.30 = 1.5151515152%`。应接受在所选根下证明的值，但不能据此推断稍后的余额、收据、历史结果或代币身份。

<a id="risks"></a>

## 风险

- 配置了错误的链、创世验证者根、创世时间或预设。
- 从恶意、陈旧或未最终确定的检查点启动。
- 只使用一个未经认证的检查点来源，或接受长程分叉。
- 本地时钟漂移导致时隙、周期、域或陈旧性判断错误。
- 使用过时的分叉计划、对象模式或广义索引。
- 未验证同步委员会参与度、BLS 签名或域。
- 遗漏委员会轮换，或接受无效的当前或下一委员会。
- 把乐观标头当作最终确定标头。
- 关联了错误的信标链标头、执行负载或执行区块哈希。
- 对错误的 `stateRoot` 验证账户或存储证明。
- 接受格式错误的 trie 节点、路径、编码或不存在性证明。
- 把不受支持或无证明的 RPC 方法视为已验证。
- 收到陈旧、受审查、不完整或伪造的提供商响应。
- 表面独立的提供商共同受控，或遭遇日蚀、Sybil 攻击。
- 提供证明的全节点剪枝或停止服务，造成活性丧失。
- 混淆共识有效性与执行重放或应用正确性。
- 混淆有效证明与数据可用性或永久可检索性。
- 缺少应用所需的收据、日志、追踪、区块体或历史。
- 客户端实现、依赖项、二进制文件或分叉升级失败。
- 向提供商或节点泄露查询、IP、账户和交易隐私。

<a id="misconceptions"></a>

## 常见误区

- 轻客户端只是更小的全节点，或是远程 RPC 的另一个名称。
- 同步委员会标头经过验证后，每项 RPC 响应都可信。
- 最新的乐观标头等同于最终确定标头。
- Merkle 证明或共识签名能证明数据可用性和完整历史。
- 使用轻客户端会自动获得全节点的隐私、活性与抗审查能力。

<a id="related"></a>

## 相关主题

- [全节点](/zh-cn/crypto/full-node/)
- [弱主观性](/zh-cn/crypto/weak-subjectivity/)
- [状态根](/zh-cn/crypto/state-root/)

<a id="sources"></a>

## 来源

- [Light clients](https://ethereum.org/developers/docs/nodes-and-clients/light-clients/) - Ethereum.org（查阅日期：2026-08-13）
- [Altair Light Client -- Sync Protocol](https://ethereum.github.io/consensus-specs/specs/altair/light-client/sync-protocol/) - Ethereum Consensus Specs（查阅日期：2026-08-13）
- [Altair Light Client -- Light Client](https://ethereum.github.io/consensus-specs/altair/light-client/light-client/) - Ethereum Consensus Specs（查阅日期：2026-08-13）
- [Electra Light Client -- Sync Protocol](https://ethereum.github.io/consensus-specs/electra/light-client/sync-protocol/) - Ethereum Consensus Specs（查阅日期：2026-08-13）
- [Weak subjectivity](https://ethereum.org/developers/docs/consensus-mechanisms/pos/weak-subjectivity/) - Ethereum.org（查阅日期：2026-08-13）
- [eth_getProof](https://ethereum.github.io/execution-apis/api/methods/eth_getProof/) - Ethereum Execution APIs（查阅日期：2026-08-13）
- [Merkle Patricia Trie](https://ethereum.org/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) - Ethereum.org（查阅日期：2026-08-13）
- [Data availability](https://ethereum.org/developers/docs/data-availability/) - Ethereum.org（查阅日期：2026-08-13）

Source: https://wiki.fcontext.com/zh-cn/crypto/light-client/index.mdx
