词条 · 加密与分布式 · 核心
节点
网络里存账、验账、转发的机器,分自己全验和只验头两种
也称:节点、全节点、轻节点、轻钱包、node、full node、light node、SPV、SPV client
一句话
节点是网络里参与存储、验证、转发账本的一台机器。全节点自己验证每一笔交易,什么都不信;轻节点只保存区块头,把”交易是否合法”这件事托付给了算力。两者的差别不在性能,在信任谁。
先看这个分层为什么躲不开。
先看一个麻烦:你手机装不下这本账
你想收一笔钱,想确认它真的到账了。
彻底的办法是自己把整本账从第一页读到最后一页,逐笔核对:这笔钱的上一手是谁、上一手的上一手是谁,一路追到源头,确认它没有被花过两次。
问题是这本账很大。按目前约 90 万个块、平均每块一两 MB 估算,全量数据在 1 TB 上下的量级。你的手机装不下,用流量下载也不现实。
于是出现一个两难:要么读完全部才敢信,要么什么都不读只能听人说。 中间似乎没有别的选项。
朴素尝试为什么都不够
招数一:问一个人,让他告诉你到账了没。 最省事,也最脆弱。他可以直接骗你。更要紧的是,你没有任何办法检查他的回答——你手上没有可以对照的东西,所以他的话既不能被证实也不能被证伪。
招数二:问一百个人,取多数。 比一个人强,但这仍然是招数二式的按人头计票,而人头在开放网络里可以伪造:攻击者只要给你连上一百个他自己控制的节点,“多数”就是他说的。多数只在身份稀缺时才有意义,这一点在最长链规则里已经吃过一次亏。
招数三:只下载和自己有关的那几笔交易。 听起来很聪明,但你没法判断一笔交易是否有效——有效性取决于它花的那笔钱有没有在别处被花掉,而”别处”你没下载。双花的证据永远在你没看的那部分数据里。
招数四:下载全部交易但跳过验证,只看它在不在链上。 那你就得先知道哪条链是对的,而这又需要验证。跳过验证的”在链上”是一句空话。
招数五:只下载区块头。 头很小——90 万个头 × 80 字节 = 72,000,000 字节,约 72 MB,手机完全放得下。而且头里带着工作量证明,你能自己检查每个头是否达标、是否咬住前一个,所以你能独立判断哪条链累积工作量最大。但光有头不够:头里只有一个 Merkle 根,看不到你的交易在不在里面。
五次失败凑出三条要求。一个装得下的方案必须:
- 数据量与账本总长无关或只随长度线性增长一点——否则手机永远追不上;
- 链的选择必须自己算,不能问人,否则退回招数一;
- 需要一个”某笔交易在某个块里”的短证明,短到几百字节。
前两条招数五已经做到了。差的是第三条,而这件工具已经有了:Merkle 树可以只证明一条。
机制:两种节点,各自验什么
全节点下载并检查每一个块里的每一笔交易:签名对不对、这笔钱是否存在、是否已被花掉、工作量证明是否达标、难度是否按规则计算。它自己维护一份完整的未花费金额集合,因此不需要相信任何人。代价是磁盘、带宽和初次同步的时间。
轻节点(白皮书第 8 节的 simplified payment verification)只做两件事:
1. 保存全部区块头(72 MB 量级),自己检查每个头的工作量证明和链接关系
2. 要确认某笔交易时,向网络索取它到 Merkle 根的那条路径,自己往上算
算一下第 2 步的开销。假设一个块有 2048 笔交易,路径长度是 log₂(2048) = 11 个哈希:
11 × 32 字节 = 352 字节
再加上那个 80 字节的区块头 = 432 字节
四百多字节,就能确认”这笔交易被打包进了这个块”。对比全量下载的 1 TB 量级,这是压倒性的差距。这也回头解释了区块那一条里为什么要强调头是定长的 80 字节:定长的头 + 对数长度的路径,是轻节点能存在的全部原因。
看清两者的分界线:
全节点 轻节点
交易有效性 自己验证 不验证 ← 关键差别
工作量证明 自己验证 自己验证
链的选择 自己算累积工作量 自己算累积工作量
存储 全量(TB 量级) 仅头(几十 MB)
它信任什么 不信任任何人 信任"多数算力在诚实链上"
轻节点验证的是**“这笔交易被埋在一条花了很多电的链里”**,不是”这笔交易合法”。这两句话之间的缝隙,就是它交出去的那部分信任。缝隙不大,但真实存在:如果攻击者掌握了多数算力,他能造出一条工作量最大、却包含无效交易的链,轻节点会接受,全节点会拒绝。
回头看:Merkle 树的”只证明一条”在这里兑现了
Merkle 树那一条讲过一个性质:证明某笔交易在某个块里,只需要 log₂(n) 个兄弟指纹,不需要全部交易。
当时这只是一个数学上的好性质。这里它变成了架构上的分层:正因为存在”极短的存在性证明”,账本才能分成”全验”和”只验头”两档,而不是只有”全下载”或”听人说”两个极端。 招数一到招数四之所以全部失败,就是因为它们都假设中间没有档位。
另外,最长链规则在这里有个容易被忽略的推论:链的选择规则对两种节点是同一条。轻节点虽然不验交易,但它自己算累积工作量、自己判断哪条链胜出,这一部分它并不外包。所以它不是”信任某个服务器”,而是”信任多数算力”——招数二的按人头计票被换成了按算力计票,这才是它和”问一百个人”的本质区别。
白皮书对这个缝隙有个务实的补充:收款方如果在意,可以在收到大额付款时拉取完整区块自行校验,或者干脆跑全节点。分层不是强制的,是可选的。
边界与常见误解
节点不等于矿工。 绝大多数全节点不挖矿:它们验证、存储、转发,但不制造新块。挖矿是往链上追加,验证是检查追加物。两个角色常在同一台机器上,但职责独立。说”节点越多算力越高”是把两件事混了。
轻节点不是”更快的全节点”。 它省下的不是时间,是验证。省掉的那部分被替换成一个假设:多数算力是诚实的。这是安全模型的差别,不是优化。
跑全节点没有收益,但它决定规则。 全节点不拿奖励。它的作用是拒绝不合规的块——矿工造出违反规则的块,全节点不接受,那个块就没有价值。规则的执行权在验证方,不在生产方,这是理解协议升级之争的关键。
72 MB 是头的总量,不是轻钱包的实际占用。 真实的轻钱包还要存自己的交易、Merkle 路径、地址索引等。而且许多手机钱包其实连头都不同步,直接查询服务商的接口——那已经退回到招数一,安全模型比 SPV 更弱。市面上叫”轻钱包”的东西不都是 SPV。
索取 Merkle 路径会暴露隐私。 你向别人询问”这笔交易在不在”,等于告诉对方你关心哪些地址。轻节点在带宽上省下的东西,一部分是用隐私换的。
提到这个词条的文章
- 比特币白皮书逐节拆解经典拆解 2026-07-31
- PeerDAS:以 1/16 的下载量换取全量数据可用性保证 2026-07-30