一种基于多线程管道技术的比特币节点探测方法技术

技术编号:35176719 阅读:18 留言:0更新日期:2022-10-12 17:43
本发明专利技术公开了一种基于多线程管道技术的比特币节点探测方法,设计了高效的多线程程序运行框架,开发了具备比特币协议编解码功能的可插拔管道,提出了“存储

【技术实现步骤摘要】
一种基于多线程管道技术的比特币节点探测方法


[0001]本专利技术属于区块链的
,具体涉及一种基于多线程管道技术的比特币节点探测方法。

技术介绍

[0002]比特币在全球蓬勃发展,当前已成为交易支付、投资理财、资本流动的重要手段。比特币网络层采用P2P架构,没有中央机构及信任中心,所有网络节点彼此对等,共同提供网络服务。探测发现比特币节点对加强比特币网络的研究和监管有着重要价值。
[0003]近几年,很多研究者开展了对比特币节点的探测研究。2013年,Joan等人在3个月中收集到87.2万个比特币节点地址。2016年,Fadhil等人在一周时间内收集到近32万个节点地址。2018年,Sehyun Park等人在37天内采集到超过100万个节点地址。以上研究都采用了仿冒比特币客户端的方法,与其它节点建立通信,并不断获取新的节点地址。
[0004]多线程技术是通过计算机软硬件实现多个相同程序(或功能)并发执行的技术,可以显著提高单机程序运行效率。管道是一种双向通信模块,具有独立、灵活、可插拔的特点,在程序中随时增加、删除,可以提升网络通信中的并行数据处理能力。本专利技术将多线程管道技术应用于比特币节点探测中,大大提升了单机探测程序的运行效率,实现了对比特币节点的高效采集和存储。
[0005]现有方法的主要缺点是探测效率低。现有方法的工作原理是:仿冒比特币客户端,入网后与其它网络节点建立连接,不断接收其它节点发来的PING、VERSION、ADDR、INV等交互消息,从中提取节点地址信息。同时,不断尝试与新节点建立连接,获取更多节点地址,循环往复从而完成地址信息的积累。现有方法主要依靠程序长时间运行来完成节点地址的积累,如花费3个月时间只收集到87.2万个节点地址,花费37天时间只收集到100万个节点地址,总体效率都比较低。

技术实现思路

[0006]有鉴于此,本专利技术提供了一种基于多线程管道技术的比特币节点探测方法,能够大大提升单机探测程序的运行效率,实现对比特币节点的高效采集和存储。
[0007]实现本专利技术的技术方案如下:
[0008]一种基于多线程管道技术的比特币节点探测方法,包括以下步骤:
[0009]步骤一、探测程序从DNSSEED获取当前正在稳定运行的比特币网络活跃节点地址;
[0010]步骤二、设计用于存储所有的比特币节点地址的队列,探测程序获取新地址后,在队尾依次存储不重复的地址,这看作是“储蓄”的过程;而读取队首地址进行探测,看作是“消费”的过程,消费后的地址的布尔值被标记为“1”;
[0011]步骤三、探测程序模拟比特币客户端,从队列中“消费”节点地址,尝试同时与目标节点建立并行多线程TCP连接;
[0012]每个TCP连接对应一条独立“管道”,在“管道”中完成消息编码、解码工作,与目标
节点进行握手交互;发送消息时,管道调用编码模块,采用Socket技术将消息发送至设定IP及端口;接收消息时,管道调用解码模块,将不同消息按格式进行分类解码;
[0013]步骤四、探测程序与目标节点建立连接后,向目标节点发送GETADDR消息,请求对方返回新节点地址;探测程序接收到返回的ADDR消息后,在各独立管道中完成解码,再将提取出的地址尝试存入步骤二的队列中,不重复的地址成功存入队列,重复地址予以丢弃;
[0014]步骤五、重复步骤二~步骤四,直至不再有新地址存入队列(全网比特币地址已全部存入);这时,判断队列中的现存地址是否全部“消费”完毕(布尔值为1),如地址已全部消费,探测结束;如地址尚未全部消费,重复步骤二的“消费”操作。
[0015]进一步地,使用DNS Lookup方法,从DNSSEED获取当前正在稳定运行的比特币网络活跃节点地址。
[0016]进一步地,所述队列具有如下特点:1)先入先出;2)所有队列元素不重复,对于重复输入的IP地址,队列将予以丢弃;3)元素标记功能,对于已输出过的地址,队列设置其布尔值为“1”进行标记。
[0017]有益效果:
[0018]本专利技术将“储蓄

消费”式地址管理技术、高效的多线程管道技术应用于比特币节点探测中,大大提升了探测效率。在某次实验中,完成一轮探测耗时仅1.5小时,共采集到414万个节点地址,探测效率远高于之前方法。本专利技术取得良好效果具体表现为:
[0019]1、“储蓄

消费”式地址管理技术:通过合理设置队列数据结构,丢弃每次返回的重复数据,巧妙设计了利用布尔值对元素进行标记的“消费”机制,避免了浪费程序资源对相同节点的重复探测,大大提高了探测效率。
[0020]2、高效的多线程管道技术:采用高效的并行通信框架,可以同时建立高达数千个线程的TCP连接,与数千个目标节点建立通信交互。在独立的管道内完成比特币协议编解码,简化了对比特币消息的分析处理,在高达数千个并行的通信中避免了请求的碰撞和数据的拥塞,保证了程序的高效执行,提升了程序探测效率。
附图说明
[0021]图1为本专利技术探测方法流程图。
[0022]图2为本专利技术多线程管道框架模型示意图。
[0023]图3为本专利技术探测系统结构示意图。
具体实施方式
[0024]下面结合附图并举实施例,对本专利技术进行详细描述。
[0025]本专利技术提出一种基于多线程管道技术的比特币节点探测方法,设计了高效的多线程程序运行框架,开发了具备比特币协议编解码功能的可插拔管道,提出了“存储

消费”式节点地址管理技术,大大提升了程序探测效率。本专利技术解决的主要技术问题为:
[0026]1、“储蓄

消费”式地址管理技术
[0027]2、高效的多线程管道技术
[0028]实现本专利技术的基本思路是从种子节点DNSSEED获取初始地址,依次与这些地址建立连接,通过GETADDR

ADDR机制获取大量地址,接着利用多线程框架同时尝试与高达数千
个节点建立连接,利用GETADDR

ADDR机制获取更多新地址。如此循环往复,可以在很短时间内获取网络空间中接近全部节点地址。
[0029]如图1所示,本专利技术主要分为以下5个步骤:
[0030]步骤一、获取初始地址
[0031]探测程序从DNSSEED获取初始节点地址。DNSSEED是由比特币社区维护、并硬编码至客户端软件的比特币网络种子节点。它们可以自动扫描网络中活跃、稳定的节点,向请求者返回IP地址,并进行动态更新。目前比特币DNSSEED列表如下表1。
[0032]表1DNSSEED列表
[0033] Domain NameIP1seed.bitcoin.sipa.be52.195.14.1552dnsseed.bluematt.me81.177.196.1223dnsseed.bitcoin.dashjr.org34.64.101.44seed本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多线程管道技术的比特币节点探测方法,其特征在于,包括以下步骤:步骤一、探测程序从DNSSEED获取当前正在稳定运行的比特币网络活跃节点地址;步骤二、设计用于存储所有的比特币节点地址的队列,探测程序获取新地址后,在队尾依次存储不重复的地址,这看作是“储蓄”的过程;而读取队首地址进行探测,看作是“消费”的过程,消费后的地址的布尔值被标记为“1”;步骤三、探测程序模拟比特币客户端,从队列中“消费”节点地址,尝试同时与目标节点建立并行多线程TCP连接;每个TCP连接对应一条独立“管道”,在“管道”中完成消息编码、解码工作,与目标节点进行握手交互;发送消息时,管道调用编码模块,采用Socket技术将消息发送至设定IP及端口;接收消息时,管道调用解码模块,将不同消息按格式进行分类解码;步骤四、探测程序与目标节点建立连接后,向目标节点发送GETADDR消息,请求对...

【专利技术属性】
技术研发人员:李锐光徐大伟吴阜东朱佳伟高家奇马璐严寒冰祝烈煌
申请(专利权)人:国家计算机网络与信息安全管理中心
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1