Tendermint之P2P

P2P在区块链中是最基础的角色,它负责把节点带入网络、消息传递,驱动整个网络正常运转。

之前有介绍比特币和以太坊的P2P模块,那么Tendermint的P2P是怎样的呢


P2P连入网络需要seed,比特币和以太网坊是写在代码里的,tendermint需要参数传递,可能从官网或者什么地方可以拿到。

节点连接分为inbound和outbound

inbound的意思是别的节点连入自己

outbound的意思是自己主动连接别的节点

outbound的连接有两种:

1 节点启动的时候指定seeds,启动的时候会尝试连接所有的seed

2 初始化的时候有pex reactor(peer exchange),会启动goroutine定期检测outbound的数量,如果少于10个,就从本地保存的节点连接

那么本地保存的节点是哪里来的呢

outbound节点连接成功后,pex reactor发现本地保存的节点小于1000个会向对端节点获取节点,然后保存在本地

inbound的连接只有一种:

节点启动的时候监听connection,有连接连入的时候会判断目前是否有50个连接,如果够了就忽略新的连接

所以一般情况下节点的outbound数量至少为10,总的连接数量为50个(可能会有多于50个的情况,比如刚开始指定过多的seeds)

消息通讯

P2P模块初始化的时候,也会初始化mempool reactor、blockchain reactor、consensus reactor、evidence reactor(还有上面讲述的pex reactor),然后add到p2p模块,不同的reactor带不同的channel id

当mempool、blockchain、consensus、evidence模块发送消息的时候,调用p2p模块的send,参数有channel id

对端节点p2p模块收到消息后,会根据channel id把消息转发给对应的模块


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值