主页 > imtoken官网安卓下载 > 比特币和区块链(8):节点加入比特币网络

比特币和区块链(8):节点加入比特币网络

imtoken官网安卓下载 2023-02-27 05:45:37

上次我们介绍了比特币的P2P拓扑网络结构。今天我们讨论比特币网络中的新节点如何加入网络。

新节点如何加入P2P网络,归根结底就是如何发现和联系现有P2P网络中的现有节点。对于每一个 P2P 网络来说,如何发现一个已经存在的节点是非常重要的。其实,如何找到现有的节点,世上只有几种常用的方法。比特币的P2P网络也不能免俗。

节点发现分为节点的第一次发现和节点的后续发现。前者是新手第一次下载比特币钱包软件,决定投身于比特币的伟大事业。这个时候的典型特征是穷白白,本地没有节点连接到任何比特币网络,所以无法谈处理上次连接的节点。后者是比特币网络的加入和退出。以先验知识重新进入。

对于这些 DNS 种子节点,每个下载的钱包通常都会附带一些。比特币软件启动时,会通过DNS查询找到这些域名对应的IP地址。这样,比特币软件就可以通过这些IP地址加入比特币的P2P网络。

第二种方式称为硬编码 IP 地址连接。在比特币的代码中,一些地址被强制硬编码。如果通过DNS查询域名方式失败,比特币软件会尝试连接这些种子节点。

对比两种方式,前者使用成熟的DNS查询,IP地址可变,而后者是硬编码,容易被蓄意组织封杀,不易更改IP地址。因此,DNS种子节点的连接方式是首选。硬编码的 IP 地址连接是一种无奈的回退方式。既不灵活也不可靠。同时我们可以看到,如果是第一次运行比特币软件,接入比特币P2P网络的方式不外乎这两种方式,每个程序员应该都能想出。

比特币节点接入比特币网络后,会逐渐获取一些相邻节点。这些相邻节点是与该节点直接接触并经常通信的节点。每次比特币软件退出时,这些节点都会被保存。当节点再次启动时,它会首先尝试连接这些节点。如果这些节点连接失败,它们将尝试连接到 DNS 种子节点,如果再次失败,它们将连接到硬编码节点。

考虑到当前比特币网络非常庞大且活跃,上次连接的相邻节点完全不连接的可能性会比较小。因此,在大多数情况下,对于已经连接到比特币网络的节点,无需访问 DNS 种子节点或硬编码节点。

比特币网络中相邻节点的处理比较随意,没有使用成熟的节点链表协议,比如分布式哈希表(或简称DHT),这很让人意外。 因为使用 DHT 作为相邻节点的连接方式,几乎已经成为比特币之前每个成熟 P2P 项目的标准。当然,这个协议也成为了比特币以外的后来者连接相邻节点的一种方式,比如以太坊。由于 DHT 的细节与比特币网络无关,我们不再展开。大家可以自己找合适的教材学习。

比特币网络作为互联网上的 P2P 网络,不可避免地会遇到来自恶意 IP 地址的攻击。所以在比特币代码中,允许用户手动添加两类节点:可疑节点和可信节点。前者是黑名单加入比特币的流程,后者是白名单。这也是应对比特币P2P网络攻击的一种方式。

说到比特币的P2P网络,我们不禁要提到P2P网络中的一个通病:如何让局域网中的机器连接到互联网的P2P网络。有电骡或者BT下载经验的一定要知道,如果不能直连内网,下载速度会很慢。解决这个问题的标准技术是:NAT技术和UPnP协议。 NAT技术是一种成熟的内外网映射方式。简单来说就是替换TCP包中的源地址,映射到内网地址。 UPnP是Universal Plug and Play的缩写,主要用于设备的智能互联。

比特币还使用 UPnP 协议作为局域网渗透工具。只要局域网内的路由设备支持NAT网关功能,支持UPnP协议,局域网内的比特币客户端就可以断开连接,映射到公网。

社区介绍:

极客社区:区块链极客社区起源于北美顶级工程师社区加入比特币的流程,核心成员来自各大科技公司和顶尖大学。社区以建设世界一流的区块链生态为目标,以推动区块链技术的普及为己任。希望与处于区块链时代前沿的用户分享最好的区块链资源!在这里,您将获得最权威的区块链教程、最新鲜的区块链资讯,以及接触顶级区块链生态的机会。

加入我们,与硅谷丹尼尔斯和常春藤名校一起,畅谈酒,畅谈链上;加入我们,拥抱区块链去中心化的朝阳,破旧立新,让思维碰撞,让智慧共享;

p>

加入我们,肩负区块链时代赋予我们的独特使命,不忘初心,砥砺前行!

不割韭菜,只谈技术,工程师社区专属!