[TOC]
前言
Whisper是以太坊中一项非常有趣的技术,它是一个基于身份的通信系统,被设计用于Dapp之间少量数据通信。Whisper协议运行在以太坊p2p协议框架之上,所有运行Whisper协议的节点(以下简称节点)组成一个Whisper网络。通过节点之间的消息转发,理论上,每个节点都可以收到所有Whisper消息。
特性
Whisper具有以下基本特性和概念
通信加密
每一条Whisper消息在网络上都是加密传输的,可以选择非对称加密(椭圆曲线)和对称加密(AES GSM)两种加密算法之一。
Envelope(信封)
Envelope是网络中传输的Whisper消息的基本单位,它包含已加密的原始消息以及消息相关的控制信息:
Expiry time:消息的超时时刻,过了这个时刻,本消息不会被节点处理或者转发
TTL:消息的存活时间,一个消息在从被创建起,只能生存TTL的时间,过了这个时间之后,消息在网络中超时
Topic:消息的主题
AESNonce:采用AES对称密钥加密算法时使用的Nonce值
EnvNonce:用于PoW计算
当一个节点从一个Peer收到一个Envelope时,不管它自己管不关心里面的数据(Topic是否符合设置的值), 它都会将这个Envelope转发给其他Peer,这是Whisper的固有机制。
Topic(主题)
每个Envelope上写明了自己封装消息的Topic,如果一个节点不关心这个Topic,那么它就不需要去试着打开(解密)这个Envelop