1. 为什么区块链必须使用 Gossip?
区块链网络的特点:
- 节点数量大(数万~数十万)
- 地理分布广(全球多个区域)
- 没有中心服务器
- 节点频繁上线/下线
- 要求快速传播区块、交易
- 要求广播消息必须可靠
这些决定:
区块链不可能使用“中心化广播”,只能使用 Gossip 协议。
Gossip 也叫“谣言协议”,它的核心思想是:
每个节点把消息转发给随机邻居,
直到全网所有节点都收到消息。
2. Gossip 的核心思想:Push / Pull / Hybrid
Gossip 协议有三种模型:
① Push Gossip(推送)
节点收到消息后主动广播给邻居:
收到 message → 转发给所有邻居
优点:快
缺点:大量冗余消息,容易 DoS
Bitcoin 使用的就是增强版 Push Gossip。
② Pull Gossip(拉取)
节点定期向邻居询问:
你有我没有的消息吗?
优点:避免洪泛
缺点:速度较慢
③ Hybrid(混合模型)
当前主流区块链的最佳方案:
- 元数据通过 Push 扩散
- 内容通过 Pull 获取
Ethereum 的 GossipSub 属于 Hybrid。
3. Bitcoin Gossip 机制(简单但强大)
Bitcoin 的广播流程包含三类消息:
① inv(inventory)
只包含哈希:
inv(tx hash)
inv(block hash)
节点收到后,检查:
- 是否已有此消息?
- 若没有 → 发送 getdata 请求
② getdata
向对方请求数据:
getdata(tx hash)
getdata(block hash)
③ tx / block
发送完整内容。
Bitcoin Gossip 的特点
- 使用 Push + Pull 的混合模式
- 减少冗余传输
- 节点只在必要时转发
- 有限传播(不会盲目向所有 peers 扩散)
即便如此,Bitcoin Gossip 每天依然会传播数亿条消息。
4. Ethereum GossipSub:更先进的 PubSub 模型
Ethereum 使用 libp2p GossipSub,比 Bitcoin 复杂得多。
4.1 为什么要用 GossipSub?
因为 ETH 交易量高、PoS 共识更快,需要:
- 更低延迟
- 更可靠广播
- 更强抗攻击能力
- Topic 区分(不同消息走不同频道)
4.2 GossipSub 的结构
GossipSub 是一个 基于社区结构的 PubSub 扩散协议。
架构包括:
① Topic(主题)
不同内容走不同频道:
- tx
- block
- validator attestation
- sync committee
- blob sidecar(EIP-4844)
② Mesh(网状连接)
每个主题形成自己的 mesh 连接组。
mesh 是稳定的“紧密邻居”,用于快速扩散消息。
③ Fanout Peers(额外临时连接)
Topic 还会维持一些临时 peers 防止断层。
4.3 GossipSub 的消息传播流程
简化如下:
发布者 → mesh 中邻居 → 邻居的邻居 → 全网扩散
节点收到消息后,会:
- 去重(避免重复转发)
- 验证签名
- 转发给 mesh peers
- 随机向部分 fanout peers 发送
- 定期 gossip 已见消息(push 元数据)
这是一种 可控的随机扩散。
5. Gossip 协议的核心挑战
Gossip 在区块链中面临五大挑战:
① 冗余消息过多
全网每个消息被重复转发几十次甚至几百次。
解决方案:
- 去重缓存
- inv / getdata 机制
- 哈希广播、内容按需下载
- GossipSub 的 scoring
② 消息放大系数(Message Amplification)
节点越多,消息越多,最终导致网络过载。
Ethereum 和 Bitcoin 都通过限速与过滤降低放大。
③ 延迟(latency)
区块必须在数百毫秒内传遍全网,否则会:
- 增加分叉率
- 共识不稳定
- 延迟出块
Bitcoin 引入 Erlay 来优化延迟。
④ Sybil / Eclipse 攻击
恶意节点可以:
- 只给你发送部分交易
- 阻止区块传播
- 人为延迟 gossip
- 执行定向隔离攻击
GossipSub 内置 Anti-Sybil 与 Peer Scoring。
⑤ DoS 和垃圾消息
攻击者可以:
- 发送大量无效消息
- 伪造交易
- 构造巨大区块头
- 洪泛 gossip
区块链必须过滤:
- 无效交易
- 弱签名
- 垃圾消息
否则整个网络会堵塞。
6. Gossip 的关键优化技术
区块链中常见的 Gossip 优化包括:
① Multi-hop Relay(多跳快速传播)
Bitcoin 的 FIBRE(高速中继网络)专为矿工加速区块传播。
② Inventory-first(先发送哈希)
大量减少冗余消息。
③ Partial Gossip(选择性广播)
- 只向部分 peer 广播
- 限制转发次数
④ Flow Control(流控)
限制:
- 每秒消息数量
- 每连接消息数量
- 每 peer 的消息速率
防止 DoS。
⑤ Peer Scoring(邻居评分)
Ethereum GossipSub 使用评分系统:
- 转发垃圾 → 扣分
- 转发有效区块 → 加分
- 被其他节点举报 → 扣分
低分节点被踢出 mesh。
7. 小结
在这一篇中,你学到了:
- 为什么区块链必须使用 Gossip 协议
- Gossip 的 Push/Pull/Hybrid 模型
- Bitcoin 的 inv/getdata 流程
- Ethereum 的 GossipSub 情况
- Gossip 如何传播交易与区块
- Gossip 面临的攻击与优化
Gossip 是区块链网络的“血液循环系统”。



