区块链P2P学习

区块链P2P学习

P2P基础

如何构造一个简易的P2P节点端(主要是可以发送消息的节点端),通过查看一些公链的源码,总结出一些一般逻辑规律。

P2P发送消息四步走

  • 确定peer节点地址格式
  • 构建P2P节点逻辑
  • 构建P2P消息
  • 将节点地址与节点发送消息的方式结合起来

0x01 确定peer节点地址格式

peer节点地址可以和互联网中的IP地址类比,一般是一个特定的地址。这个地址一般会结合已有的tcp/ip,视情况增加一些自定义的部分。

下面列举一些例子

序号地址说明
1dnsseed.bitcoin.dashjr.orgBitcoin DNS 种子节点
281fa361d25f157cd421c60dcc28d8dac5ef6a89476633339c5df30287474520caca09627da18543d9079b5b288698b542d56167aa5c09111e55acdbbdf2ef799@10.0.1.16:30303ETH
3/ip4/47.75.42.25/tcp/3389/ipfs/12D3KooWScGKxdJwgtSU6ShUaiS4nuad73z7wUbUcHEUVQNzomhgIOST

地址一般包括节点IP节点ID,每条链的表现格式不同,对应解析地址的方式也不同。

0x02 构建P2P节点逻辑

这里主要是通过查看源码,节点的启动逻辑,如何创建P2P节点,P2P节点如何同步的部分源码来实现。
一般包括

  • 节点构建准备(产生节点私钥,进行net底层一些配置)
  • 调用net底层的函数库产生一个host(类似于服务端),设置服务端对请求的处理函数服务,启动服务
  • 启动节点

而在节点作为服务端的时候会对其他节点发送过来的请求进行响应,这个响应的过程也会构建一个P2P msg并且发送出去。

由于不同的链构建P2P节点的过程具体实现和使用的库是不同的,所以通过源码理解具体构建逻辑是很重要的,不必重复造轮子,可以适当的进行代码复用。

在理解源码的时候,特别关注地址管理部分和发送消息的部分

0x03 构建P2P消息

P2P消息分为很多类别。一般是以json形式,可以自己定义具体payload,然后发送出去。这里构建主要是为了发送正常包和非正常包,如果P2P节点处理不当的话,处理不了非正常包,可能会崩溃。关键是找到如newP2PMessage()的方法,然后弄清楚需要构建的参数和固定常量

0x04 将节点地址与节点发送消息的方式结合起来

这一步是put everything together的环节。找到P2P节点发送消息的方式,然后把0x01中的地址配置进去,把0x03构建的消息发送出去。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值