CN115174493A - 一种基于多线程管道技术的比特币节点探测方法 - Google Patents
一种基于多线程管道技术的比特币节点探测方法 Download PDFInfo
- Publication number
- CN115174493A CN115174493A CN202210381927.9A CN202210381927A CN115174493A CN 115174493 A CN115174493 A CN 115174493A CN 202210381927 A CN202210381927 A CN 202210381927A CN 115174493 A CN115174493 A CN 115174493A
- Authority
- CN
- China
- Prior art keywords
- address
- queue
- node
- pipeline
- addresses
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6245—Modifications to standard FIFO or LIFO
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/14—Multichannel or multilink protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于多线程管道技术的比特币节点探测方法,设计了高效的多线程程序运行框架,开发了具备比特币协议编解码功能的可插拔管道,提出了“存储‑消费”式节点地址管理技术,大大提升了程序探测效率。
Description
技术领域
本发明属于区块链的技术领域,具体涉及一种基于多线程管道技术的比特币节点探测方法。
背景技术
比特币在全球蓬勃发展,当前已成为交易支付、投资理财、资本流动的重要手段。比特币网络层采用P2P架构,没有中央机构及信任中心,所有网络节点彼此对等,共同提供网络服务。探测发现比特币节点对加强比特币网络的研究和监管有着重要价值。
近几年,很多研究者开展了对比特币节点的探测研究。2013年,Joan等人在3个月中收集到87.2万个比特币节点地址。2016年,Fadhil等人在一周时间内收集到近32万个节点地址。2018年,Sehyun Park等人在37天内采集到超过100万个节点地址。以上研究都采用了仿冒比特币客户端的方法,与其它节点建立通信,并不断获取新的节点地址。
多线程技术是通过计算机软硬件实现多个相同程序(或功能)并发执行的技术,可以显著提高单机程序运行效率。管道是一种双向通信模块,具有独立、灵活、可插拔的特点,在程序中随时增加、删除,可以提升网络通信中的并行数据处理能力。本发明将多线程管道技术应用于比特币节点探测中,大大提升了单机探测程序的运行效率,实现了对比特币节点的高效采集和存储。
现有方法的主要缺点是探测效率低。现有方法的工作原理是:仿冒比特币客户端,入网后与其它网络节点建立连接,不断接收其它节点发来的PING、VERSION、ADDR、INV等交互消息,从中提取节点地址信息。同时,不断尝试与新节点建立连接,获取更多节点地址,循环往复从而完成地址信息的积累。现有方法主要依靠程序长时间运行来完成节点地址的积累,如花费3个月时间只收集到87.2万个节点地址,花费37天时间只收集到100万个节点地址,总体效率都比较低。
发明内容
有鉴于此,本发明提供了一种基于多线程管道技术的比特币节点探测方法,能够大大提升单机探测程序的运行效率,实现对比特币节点的高效采集和存储。
实现本发明的技术方案如下:
一种基于多线程管道技术的比特币节点探测方法,包括以下步骤:
步骤一、探测程序从DNSSEED获取当前正在稳定运行的比特币网络活跃节点地址;
步骤二、设计用于存储所有的比特币节点地址的队列,探测程序获取新地址后,在队尾依次存储不重复的地址,这看作是“储蓄”的过程;而读取队首地址进行探测,看作是“消费”的过程,消费后的地址的布尔值被标记为“1”;
步骤三、探测程序模拟比特币客户端,从队列中“消费”节点地址,尝试同时与目标节点建立并行多线程TCP连接;
每个TCP连接对应一条独立“管道”,在“管道”中完成消息编码、解码工作,与目标节点进行握手交互;发送消息时,管道调用编码模块,采用Socket技术将消息发送至设定IP及端口;接收消息时,管道调用解码模块,将不同消息按格式进行分类解码;
步骤四、探测程序与目标节点建立连接后,向目标节点发送GETADDR消息,请求对方返回新节点地址;探测程序接收到返回的ADDR消息后,在各独立管道中完成解码,再将提取出的地址尝试存入步骤二的队列中,不重复的地址成功存入队列,重复地址予以丢弃;
步骤五、重复步骤二~步骤四,直至不再有新地址存入队列(全网比特币地址已全部存入);这时,判断队列中的现存地址是否全部“消费”完毕(布尔值为1),如地址已全部消费,探测结束;如地址尚未全部消费,重复步骤二的“消费”操作。
进一步地,使用DNS Lookup方法,从DNSSEED获取当前正在稳定运行的比特币网络活跃节点地址。
进一步地,所述队列具有如下特点:1)先入先出;2)所有队列元素不重复,对于重复输入的IP地址,队列将予以丢弃;3)元素标记功能,对于已输出过的地址,队列设置其布尔值为“1”进行标记。
有益效果:
本发明将“储蓄-消费”式地址管理技术、高效的多线程管道技术应用于比特币节点探测中,大大提升了探测效率。在某次实验中,完成一轮探测耗时仅1.5小时,共采集到414万个节点地址,探测效率远高于之前方法。本发明取得良好效果具体表现为:
1、“储蓄-消费”式地址管理技术:通过合理设置队列数据结构,丢弃每次返回的重复数据,巧妙设计了利用布尔值对元素进行标记的“消费”机制,避免了浪费程序资源对相同节点的重复探测,大大提高了探测效率。
2、高效的多线程管道技术:采用高效的并行通信框架,可以同时建立高达数千个线程的TCP连接,与数千个目标节点建立通信交互。在独立的管道内完成比特币协议编解码,简化了对比特币消息的分析处理,在高达数千个并行的通信中避免了请求的碰撞和数据的拥塞,保证了程序的高效执行,提升了程序探测效率。
附图说明
图1为本发明探测方法流程图。
图2为本发明多线程管道框架模型示意图。
图3为本发明探测系统结构示意图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提出一种基于多线程管道技术的比特币节点探测方法,设计了高效的多线程程序运行框架,开发了具备比特币协议编解码功能的可插拔管道,提出了“存储-消费”式节点地址管理技术,大大提升了程序探测效率。本发明解决的主要技术问题为:
1、“储蓄-消费”式地址管理技术
2、高效的多线程管道技术
实现本发明的基本思路是从种子节点DNSSEED获取初始地址,依次与这些地址建立连接,通过GETADDR-ADDR机制获取大量地址,接着利用多线程框架同时尝试与高达数千个节点建立连接,利用GETADDR-ADDR机制获取更多新地址。如此循环往复,可以在很短时间内获取网络空间中接近全部节点地址。
如图1所示,本发明主要分为以下5个步骤:
步骤一、获取初始地址
探测程序从DNSSEED获取初始节点地址。DNSSEED是由比特币社区维护、并硬编码至客户端软件的比特币网络种子节点。它们可以自动扫描网络中活跃、稳定的节点,向请求者返回IP地址,并进行动态更新。目前比特币DNSSEED列表如下表1。
表1DNSSEED列表
Domain Name | IP | |
1 | seed.bitcoin.sipa.be | 52.195.14.155 |
2 | dnsseed.bluematt.me | 81.177.196.122 |
3 | dnsseed.bitcoin.dashjr.org | 34.64.101.4 |
4 | seed.bitcoinstats.com | 83.76.247.25 |
5 | seed.bitcoin.jonasschnelli.ch | 97.123.93.185 |
6 | seed.btc.petertodd.org | 54.92.14.235 |
使用DNS Lookup方法,即可从DNSSEED获取当前正在稳定运行的比特币网络活跃节点IP地址,开始网络探测。
步骤二、地址管理
高效的比特币节点地址管理机制是提升探测效率的基础。本发明设计了一种队列,用以存储所有的比特币节点地址。该队列具有如下特点:1)先入先出。2)所有队列元素不重复。对重复输入的IP地址,队列将予以丢弃。3)元素标记功能。对于已输出过的地址,队列设置其布尔值为“1”进行标记。
探测程序获取新地址后,在队尾依次存储不重复的地址,这可以看作是“储蓄”的过程;而读取队首地址进行探测,可以看作是“消费”的过程。消费后地址的布尔值被标记为“1”。当队列中所有地址被“消费”后,探测结束。
我们把以上地址管理方法称为“储蓄-消费”式地址管理机制。该机制实现了对节点地址的有效管理,避免了对相同节点重复探测,很好地提高了探测效率。
步骤三、建立多线程连接
探测程序模拟比特币客户端,从队列中“消费”节点地址,尝试同时与目标节点建立并行多线程TCP连接。
每个TCP连接对应一条独立“管道”,在“管道”中完成消息编码、解码工作,与目标节点进行握手交互。发送消息时,管道调用编码模块,采用Socket技术将消息发送至设定IP及端口。接收消息时,管道调用解码模块,将不同消息按格式进行分类解码。管道机制的引用,降低了计算机分析协议时的资源消耗,避免了探测程序运行阻塞。多线程管道模型如下图2所示:
本发明的多线程通信框架,并发数量可高达数千个,大大提高了单机客户端程序与比特币网络节点的交互速度。
步骤四、接收返回消息
探测程序与目标节点建立连接后,向目标节点发送GETADDR消息,请求对方返回新节点地址。探测程序接收到返回的ADDR消息后,在各独立管道中完成解码,再将提取出的地址尝试存入步骤二的队列中。不重复的地址可以成功存入队列,重复地址予以丢弃。
步骤五、判断地址是否全部消费
重复步骤二~四大约数小时后,不再有新地址可以存入队列(全网比特币地址已全部存入)。这时,判断队列中的现存地址是否全部“消费”完毕(布尔值为1),如地址已全部消费,探测结束;如地址尚未全部消费,重复步骤二的“消费”操作。
本发明系统设计图如下图3所示。主程序是整个探测程序的核心部分,负责地址管理、多线程驱动、管道调用等重要功能。主程序批量调用IP数据库中的节点地址,通过多线程框架建立并行的多条TCP连接,每条连接建立时一个“管道”被建立。这样,程序将建立n条管道。所有消息由路由器发往外部互联网。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种基于多线程管道技术的比特币节点探测方法,其特征在于,包括以下步骤:
步骤一、探测程序从DNSSEED获取当前正在稳定运行的比特币网络活跃节点地址;
步骤二、设计用于存储所有的比特币节点地址的队列,探测程序获取新地址后,在队尾依次存储不重复的地址,这看作是“储蓄”的过程;而读取队首地址进行探测,看作是“消费”的过程,消费后的地址的布尔值被标记为“1”;
步骤三、探测程序模拟比特币客户端,从队列中“消费”节点地址,尝试同时与目标节点建立并行多线程TCP连接;
每个TCP连接对应一条独立“管道”,在“管道”中完成消息编码、解码工作,与目标节点进行握手交互;发送消息时,管道调用编码模块,采用Socket技术将消息发送至设定IP及端口;接收消息时,管道调用解码模块,将不同消息按格式进行分类解码;
步骤四、探测程序与目标节点建立连接后,向目标节点发送GETADDR消息,请求对方返回新节点地址;探测程序接收到返回的ADDR消息后,在各独立管道中完成解码,再将提取出的地址尝试存入步骤二的队列中,不重复的地址成功存入队列,重复地址予以丢弃;
步骤五、重复步骤二~步骤四,直至不再有新地址存入队列;这时,判断队列中的现存地址是否全部“消费”完毕,如地址已全部消费,探测结束;如地址尚未全部消费,重复步骤二的“消费”操作。
2.如权利要求1所述的一种基于多线程管道技术的比特币节点探测方法,其特征在于,使用DNS Lookup方法,从DNSSEED获取当前正在稳定运行的比特币网络活跃节点地址。
3.如权利要求1所述的一种基于多线程管道技术的比特币节点探测方法,其特征在于,所述队列具有如下特点:1)先入先出;2)所有队列元素不重复,对于重复输入的IP地址,队列将予以丢弃;3)元素标记功能,对于已输出过的地址,队列设置其布尔值为“1”进行标记。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210381927.9A CN115174493B (zh) | 2022-04-12 | 2022-04-12 | 一种基于多线程管道技术的比特币节点探测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210381927.9A CN115174493B (zh) | 2022-04-12 | 2022-04-12 | 一种基于多线程管道技术的比特币节点探测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115174493A true CN115174493A (zh) | 2022-10-11 |
CN115174493B CN115174493B (zh) | 2023-07-14 |
Family
ID=83483923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210381927.9A Active CN115174493B (zh) | 2022-04-12 | 2022-04-12 | 一种基于多线程管道技术的比特币节点探测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115174493B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020105951A2 (ko) * | 2018-11-20 | 2020-05-28 | 계명대학교 산학협력단 | 블록체인 네트워크에서의 토폴로지 조사 시스템 및 방법 |
CN112134762A (zh) * | 2020-09-24 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 针对区块链网络结构的测试方法、装置、终端和存储介质 |
CN112235336A (zh) * | 2020-07-08 | 2021-01-15 | 国家计算机网络与信息安全管理中心 | 一种基于协议指纹的区块链节点主动发现方法 |
CN112801784A (zh) * | 2021-01-06 | 2021-05-14 | 中山大学 | 一种数字货币交易所的比特币地址挖掘方法及装置 |
CN113556396A (zh) * | 2021-07-21 | 2021-10-26 | 厦门莲隐科技有限公司 | 一种通过p2p协议对比特币节点网络进行监测的方法 |
US20210390519A1 (en) * | 2020-06-12 | 2021-12-16 | Fujitsu Limited | Storage medium, detection method, and detection device |
-
2022
- 2022-04-12 CN CN202210381927.9A patent/CN115174493B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020105951A2 (ko) * | 2018-11-20 | 2020-05-28 | 계명대학교 산학협력단 | 블록체인 네트워크에서의 토폴로지 조사 시스템 및 방법 |
US20210390519A1 (en) * | 2020-06-12 | 2021-12-16 | Fujitsu Limited | Storage medium, detection method, and detection device |
CN112235336A (zh) * | 2020-07-08 | 2021-01-15 | 国家计算机网络与信息安全管理中心 | 一种基于协议指纹的区块链节点主动发现方法 |
CN112134762A (zh) * | 2020-09-24 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 针对区块链网络结构的测试方法、装置、终端和存储介质 |
CN112801784A (zh) * | 2021-01-06 | 2021-05-14 | 中山大学 | 一种数字货币交易所的比特币地址挖掘方法及装置 |
CN113556396A (zh) * | 2021-07-21 | 2021-10-26 | 厦门莲隐科技有限公司 | 一种通过p2p协议对比特币节点网络进行监测的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115174493B (zh) | 2023-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105989539B (zh) | 一种金融交易行情获取系统以及获取方法 | |
US8904039B1 (en) | Large-scale network querying and reporting | |
CN109104373B (zh) | 网络拥塞的处理方法、装置及系统 | |
CN110012098A (zh) | 一种web高并发访问处理系统及方法 | |
CN101114273A (zh) | 在并行计算机上执行全收集操作的方法和系统 | |
CN111857734B (zh) | 一种分布式深度学习模型平台部署及使用方法 | |
CN109379303A (zh) | 基于提升万兆以太网性能的并行化处理框架系统和方法 | |
CN114884908B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN113626208B (zh) | 一种基于nio异步线程模型的服务器通信方法 | |
CN114710571B (zh) | 数据包处理系统 | |
CN102201992B (zh) | 面向流处理器并行环境的数据流通信系统及其通信方法 | |
Zhou et al. | TSEngine: Enable efficient communication overlay in distributed machine learning in WANs | |
CN115174493A (zh) | 一种基于多线程管道技术的比特币节点探测方法 | |
Zhao et al. | Design and implementation of software defined hardware counters for SDN | |
CN107147722A (zh) | 一种基于rdma通信机制的ib‑rti方法 | |
US20050204080A1 (en) | Method, system, and computer program product for dynamically selecting software buffers for aggregation according to current system characteristics | |
Zhang et al. | Cold-start aware cloud-native service function chain caching in resource-constrained edge: a reinforcement learning approach | |
CN110380991A (zh) | 一种IOCP机制及基于eFPGA和IOCP的物联网通信加速系统 | |
CN112398735A (zh) | 一种对报文进行批量处理的方法和装置 | |
Li | An integrated framework for wireless sensor web service and its performance analysis based on queue theory | |
CN118353776B (zh) | 通信方法、装置、设备、介质、计算机程序产品及系统 | |
CN115225694B (zh) | 数据流传输方法、装置、设备和介质 | |
CN114826929B (zh) | 基于多实体机环境的无中心随机梯度下降方法 | |
JP3488827B2 (ja) | ネットワークシステム及びその通信方法 | |
CN117407445B (zh) | 一种车联网数据平台数据存储方法、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |