跳转到正文
buybitcoinsmart

术语表 /节点与软件

BIP-324加密传输

又称 v2 传输。

BIP-324加密传输是什么?
BIP-324加密传输是比特币点对点链路协议的第2版,它对两个节点之间交换的每条消息加密,使窃听者无法将该连接与随机数据区分开来。

规定于 BIP-324。

两个都支持 BIP-324的节点会在发送任何比特币消息之前先进行一次临时密钥交换,然后用 ChaCha20Poly1305 封装每条消息。该规范已于2024年7月10日标记为最终版,节点通过 NODE_P2P_V2 服务标志(第11位)声明自己支持该协议。您的币不会因此发生任何变化:变化在于,被动观察者无法再读取您的节点所转发的交易。

运作方式

BIP-324把过去用于开启比特币连接的固定魔术字节,替换成一段毫无可辨识形态的数据流。

发起连接的一方会生成一个一次性的 secp256k1 密钥,并发送其公钥的64字节 ElligatorSwift 编码。关键就在这种编码:普通公钥可以被识别为曲线上的点,而每一个512位的比特串都是有效的 ElligatorSwift 编码,因此开头的字节在统计上只是噪声。随后任何一方都可以追加最多4095字节的任意填充数据(称为 garbage),因此连接不必恰好以64字节开头。双方运行 X-only ECDH,并把结果交给 HKDF-SHA256,派生出四个加密密钥、两个16字节的 garbage 终止符和一个会话 ID。

这些开头的字节是整个交换过程中唯一以明文发送的部分。在终止符之后,线路上的一切都是数据包。一个数据包由3字节的加密长度字段和 ChaCha20Poly1305 密文组成,密文涵盖1字节的头部和内容,开销为20字节加上有效载荷。该头部的最高位是忽略位,带有该位的数据包是诱饵:接收方确认其能够解密,然后将其丢弃,节点由此可以填充自己的流量,掩盖真实消息发出的时刻。密钥每经过224个数据包就向前棘轮更新一次,这个间隔的设定使得一条近乎空闲、只发送每20分钟一次 ping 的链路大约每3.11天更换一次密钥,而这种棘轮机制正是会话具备前向保密性的原因。

该设计有意不去证明对端是谁。它没有证书,也没有身份,因此执意而为的中间人仍然可以介入两个节点之间。但它无法低成本或不被察觉地介入:会话 ID 由密钥交换得出,两位运营者如果互相念出各自的会话 ID,只要中间有人,两者就会不同。

在哪里会遇到它

BIP-324不会在区块链上留下任何内容,因此它只会出现在两个正在运行的节点之间。

对该协议的支持通过地址传播中的 NODE_P2P_V2 标志来声明,对等节点从 addr 和 addrv2 消息中获知这一标志。这些标志要经过不受信任的中继并被按位或合并,因此虚假声明是可能的,BIP 建议:v2 客户端若被立即断开连接,应改用 v1 重试同一对等节点。反过来,v2 节点有意继续接受入站的 v1 连接,以免网络分裂成互相无法连通的两半。

第二个可见的效果是消息变短。第1版为每个命令名称花费12个 ASCII 字节;第2版则为目前已定义的28种消息类型分配单字节 ID,因此 inv 是单字节14,getblocktxn 是10,凡使用短 ID 的消息都比其 v1 形式少占用3字节。没有分配 ID 的消息则回退到13字节的编码,即一个零字节后接原来的 ASCII 名称,因此不会丢失任何内容。

该规范的状态为 Deployed,附有测试向量和一个仅供演示的简易 Python 参考实现,目前仍在修订:2026年1月30日发布的修订版1.0.2在一个辅助文件中增加了消息类型 ID 表,使其他 BIP 无需修改主文档即可申请 ID。文件头还注明 BIP-324取代 BIP-151。

常见问题

BIP-324能让我的比特币交易变得私密吗?

不能。它加密的是两个节点之间的链路,而这些节点所传播的区块链仍然完全公开。它消除的是被动网络运营者查看您的特定节点最先广播了哪笔交易的能力,这属于元数据问题,而不是账本问题。

使用 v2 传输需要开启什么设置吗?

钱包应用中无需任何操作,因为协商发生在节点之间,而不是发生在您和交易所之间。支持该协议的节点会声明 NODE_P2P_V2 服务标志,BIP 建议:v2 客户端若被当场断开连接,应改用 v1 重试该对等节点,因此重试是节点软件的工作,而不是您的工作。

观察者仍然能看出我在运行比特币节点吗?

是的,而且有多种方式。该 BIP 明确指出,对数据包时序和长度的分析仍可能暴露正在使用 v2 协议,而能够干扰连接的攻击者可以迫使节点退回到明文的 v1。伪随机字节流提高的是识别指纹的成本,并不能将其消除。

接着阅读

来源

最近审阅:2026年9月6日。

相关术语

节点与软件中的更多术语

阅读本页英文版