Ethereum 网络协议栈、
上一节, 我们分析了基本的Ethereum 网络通信的控制流程。 这一节, 我们将更为细致深入的分析一些细节
如上图所示, 在底层的golang的网络通信类库Tcp socket接口与 上层的核心协议之间, 存在一个中间层
被称之为transport, 这一层的主要工作就是对于上层消息的编解码/加解密从而使得通信高效而安全。
在thereum 中 这一层的实现是通过rlpx 协议来完成。
第一阶段 密码学 握手协议
这一阶段主要用于协商后续所用共享secret
Rlpx 协议详解
rlpx 协议之中又可以分为3个层次:
- 首先是对上层协议的原始消息的编解码.编解码的协议是RLP。
- 主要目的是使得数据类型在传输中编解码的结果与平台无关.
- 其次是针对RLP编解码的结果进行压缩或者解压缩。这里采用的是snappy压缩算法
- ECIES(Elliptic Curve Integrated Encryption Scheme) 加/解密算法
- 对于压缩后的数据进行加密
- 或者对于网络栈上传的数据进行解密而后解压缩。
ECIES 加密算法
ECIES 算法是一种基于椭圆曲线的集成了密钥交换+对称加密+消息验证码的一套算法体系。
假设Alice 想和Bob建立安全的链路,同时Alice 知道 Bob的公钥。
基本流程&#x