比特币--警告消息

警告消息并不经常使用,但在大多数节点上都有此功能。警告消息是比特币的“紧急广播系统”,比特币核心开发人员可以借此功能给所有比特币节点发送紧急文本消息。这一功能是为了让核心开发团队将比特币网络的严重问题通知所有的比特币用户,例如一个需要用户采取措施的的严重bug。警告系统迄今为止只被用过几次,最严重的一次是在2013年,一个关键的数据库缺陷导致比特币区块链中出现了一个多区块分叉。

警告消息是通过alert消息来传播的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
警告消息包含几个字段,包括:

▷ ID
警告消息序号,用于检测重复警告

▷ Expiration
警告到期的时间点

▷ RelayUntil
在此时间点之后,警告不再被中继

▷ MinVer,MaxVer
此警告所适用的比特币协议版本范围

▷ subVer
此警告适用的客户端软件版本

▷ Priority
警告消息的优先级(暂未使用)

警告通过公钥进行加密签名。对应的私钥是由核心开发团队的一些特定成员所持有。这样的数字签名可以确保虚假警告不会在网络中传播。

收到警告消息的节点会验证该消息,检查是否过期,并传播给其所有对等节点,从而保证了整个网络中的快速传播。除了传播警告之外,节点也可能会实现一个向用户推送警告的用户级接口函数。

在比特币核心客户端,警告是与命令行选项alertnotify一起设置的,该选项指定了收到警告时需要执行的命令。警告消息作为参数被传递给alertnotify命令。最常见的应用是,alertnotify命令被设置为生成一个包含该警告消息的电子邮件并发送给节点管理员。警告也会以弹出对话框的形式显示在图形用户界面(如有运行)上(bitcoin-Qt)。

其他比特币协议的实现可能以不同的方式来处理警告。许多硬件嵌入式比特币挖矿系统由于没有用户界面,并没有实现警告消息功能。我们强烈建议运行这类挖矿系统的矿工订阅警告消息,既可以通过矿池运营方来订阅、也可以通过运行一个单独以警告为目的的轻量级节点来订阅。