什么是 Compact Blocks?
Compact Blocks 是一种让比特币节点以更少字节共享新区块的方法,同时不丢失任何信息。节点不会逐笔发送完整交易,而是交换一个简短摘要,让对等节点基于已有数据在本地重建区块。可以把它想象成给已经下载过歌曲的朋友发一条歌单名称的短信。
“Compact Blocks 改变了 区块大小。” 不是的。链上的区块保持不变。这只是关于节点如何通过网络更快更轻地同步。
Compact Blocks 的工作原理
想象一下矿工挖到一个有效区块,你的节点想立刻获取它。邻居节点不会直接发送完整区块,而是发送一套小工具包,让你在本地重建。
- 步骤 1:节点通过发送其 区块头 和一些提示来宣布新块。
- 步骤 2:除了区块头外,还会包含对方认为你已经在 mempool 中拥有的交易的短标识符。
- 步骤 3:你的节点将这些短标识符与 mempool 条目匹配,并在本地重建大部分区块内容。
- 步骤 4:如果缺少某些交易,节点只会请求那些特定缺失的交易。
- 步骤 5:你验证重建后的区块,然后继续运行,通常能快上几百毫秒。
消息更小,同步更快,安全性相同。对,就是这个思路。
为什么 Compact Blocks 很重要
因为时间和带宽都很宝贵,节点都希望节省它们。
- 好处:每个区块发送的数据更少,意味着 降低带宽使用 并加快在网络中的传播。
- 影响:更快的传播降低了过时区块的概率,并在实际层面提升整体 可扩展性。
- 相关性:无论你在家或云端运行节点,这都是在高负载时保持同步顺畅的原因之一。
如果你运行比特币节点,保持 mempool 的交易充足并与对等节点保持良好连接。重复率越高,Compact Blocks 表现越好。
Compact Blocks 的关键特性
突出让该概念独特的核心特征。保持简洁,便于浏览:
- 轻量:在可能的情况下发送标识符而非完整交易。
- 快速:更短的消息使区块在节点间传播更快。
- 选择性:只请求缺失的交易,而不是再传输整个区块。
- 兼容:与常规区块验证和 mempool 逻辑兼容。
变体
不同协议追求相似目标,各有做法。
- Compact:通过 BIP 152 在比特币中成为标准,实用且被广泛部署。
- Graphene:基于研究的方案,使用集合对账与更智能的编码方法。
- Xthin:早期方法,侧重于薄区块传输。
- Erlay:提出减少交易中继开销,与 Compact Blocks 概念配合良好。
Compact Blocks 改变了节点间共享数据的方式,而不改变区块的构建或验证方式。安全检查保持不变。
示例
矿工发现新块,你的节点收到区块头和短标识符后,从 mempool 填充大部分内容,获取两笔缺失交易,然后验证并转发。
趣闻
Compact Blocks 作为 BIP 152 在 2016 年进入比特币网络,在 mempool 高峰期间默默减少了大量带宽使用。
总结
一句话:Compact Blocks 保持区块的真实性,同时使下载过程像走捷径一样更快。
