Dapp服务节点即开启了RPC的以太坊节点,对于钱包来说,只需要能把用户签名的交易发送出来,自己搭建节点和使用别人的节点发送数据是一样的,目前不管是快速同步还是轻节点都需要好长时间才可以达到可用的要求,为此很有必要通过P2P网络查找可用的RPC节点。
此文主要介绍如何从分布式网络中获取节点,然后尝试RPC连接,连接上后做chainId和networkId判断,尝试获取多个和以太坊主网一致的节点做备用服务节点。
P2P
这两个模块最先接触到的是P2P,记的那时候对区块链只是了解皮毛,有个面试官问了我什么是KAD
,多节点连接的时候如何判断对方是否在线
。对于从未接触这方面内容的我,支支吾吾随便说了一些变走了。后来了解到他们是基于以太坊
二次开发的,而以太坊Devp2p中的节点发现使用了KAD,一种结构化的分布式网络,不过以太坊只利用KAD中节点距离做节点分类
,对获得数据并没有有效利用
。
ENODE
以太坊通过节点发现获得了很多邻居节点
,每个邻居节点的数据都以Enode
展示的,Enode
中含有公钥
+IP和端口
,p2p连接中会使用节点公钥做数据加密。
用法
p2p一般对系统安全性要求较高,涉及到节点的随机加密连接,网络中收到的信息都需要验证。目前网络中发布的有3类信息。
- 节点发现 <