比特币代码分析4 节点发现机制
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,当程序第一启动时,它并不知道任何活跃节点的ip地址。为了发现一些全节点的ip地址,他们会查询硬编码在比特币内核或BitCoinJ中的,一个或多个DNS域名,在返回的结果中应该包含一个或多个DNS A记
千家信息网最后更新 2025年12月01日比特币代码分析4 节点发现机制
当程序第一启动时,它并不知道任何活跃节点的ip地址。为了发现一些全节点的ip地址,他们会查询硬编码在比特币内核或BitCoinJ中的,一个或多个DNS域名,在返回的结果中应该包含一个或多个DNS A记录,里面有一些可接受新连接的全节点的ip地址。
DNS 种子由比特币社区成员维护。其中一部分提供动态DNS种子服务器,它通过扫描比特币网络,自动获取活动节点的ip地址;其他的提供一些静态DNS种子,这需要手动更新,不过他们很有可能提供不活跃节点的ip地址。不管是动态的,还是静态的DNS种子,如果节点在主网上运行在端口号8333,或在测试网络运行在端口号18333,就会被加入到DNS种子。
DNS种子结果没有被授权,一个恶意的DNS种子运营者或网络中间人能返回仅被自己控制的节点的ip地址,在自己的网络中,孤立节点,并给他们假的交易,区块数据。因为这个原因,程序不应该只依赖一个DNS种子。
然而,节点通常会离开网络或者改变ip地址,这样程序在启动时,在需要多次尝试才有可能连接到比特币网络。这了会增加连接到比特币网络的延迟时间,使得用户在发送交易或检查支付状态前,不得不等待一段时间。
为避免这种延迟,BitcoinJ总是使用动态DNS种子,来获取那些被确定为活跃节点的IP地址。比特币处内核也尝试在降低延迟,避免使用不必要的DNS节点中权衡。如果比特币内核在它的节点数据库中有记录,它就会用11秒时间去连接至少其中一个节点,失败后,才使用DNS节点获取ip地址;如果在11秒内成功建立连接,则不在向DNS种子查询。
节点
种子
地址
网络
内核
动态
时间
程序
延迟
口号
多个
数据
结果
静态
交易
尝试
查询
运行
成功
中间人
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
西安网络技术是什么
mc如何制作有简介的服务器
网络安全工具goby
数据库可视化交互开发工具
原神特效用什么软件开发
浦口区智能化软件开发售后服务
安徽钉云网络技术
网络安全的歌谣25字图片
理解软件开发语言中的高级语言
湖南丝路贵人网络技术
数据库能查多个记录吗
四个中文数据库各有什么特点
网络安全 自检表
mysql数据库入侵
职业资格证网络安全
软件开发如何入分录
互联网有科技吗
蜀门连接服务器列表失败
怎样将数据写入数据库
影之刃3不同服务器能一起玩吗
sql数据库 不等于 符号
pi实时数据库 api
上海埃森哲对日软件开发面试
网络安全演讲感想
岳阳哪些软件开发培训学校
杭州嵌入式软件开发定制费用
服务器上存在同名的备份文件
网络技术行业数据
周口erp软件开发
影之刃3不同服务器能一起玩吗