主页 > 怎么安装imtoken > 区块链技术笔记第二期公报(BTC)

区块链技术笔记第二期公报(BTC)

怎么安装imtoken 2023-03-15 07:55:59

区块链技术笔记(BTC)网络结构的第二弹——即继共识机制之后的又一大核心拓扑

在中本聪的设计下,比特币采用点对点的 P2P 去分布式网络架构。 P2P网络是指同一网络中的每一台计算机都是平等的,各个节点共同提供网络服务。 没有“特殊”的节点,每个网络节点以扁平(flat)的拓扑结构相互连接。 与中心化网络相比,P2P 网络中没有服务器或中心化服务。

P2P 网络的节点是交互连接和协调的。 每个节点在对外提供服务的同时,也使用网络中其他节点提供的服务。 每个节点既是服务器又是客户端。 除了应用于比特币网络的P2P网络模型外,广泛使用的BT下载也是基于P2P网络。 P2P网络不仅消除了中心化的风险(中心化可能作恶),还提高了传输效率。 (中心化网络也可以有优势)

下图显示了经典的 P2P 网络拓扑。

莱特币和比特币是通用货币吗_以下哪种是比特币运用的p2p协议_路印协议兑比特币价格行情

图 2.3.1

每个网络节点都是平等的(指的是节点在网络层面是平等的,但是每个节点在功能上可以有不同的分工,比如钱包节点、挖矿节点等),不存在“特殊” 中央节点。

发现节点

在中心化网络中,新加入的节点只要连接到一个“特殊”的中心节点就可以加入网络。

为了能够加入比特币网络,比特币客户端会做几件事:

1、节点会记住最近连接成功的网络节点,重启后可以快速重新建立与之前对端节点网络的连接。

2. 节点在失去现有连接时会尝试发现新节点。

3. 当一个或多个连接建立时,该节点向其邻居发送一条包含自己IP地址的消息。 相邻节点再将此消息依次转发给各自的相邻节点,以保证节点信息被多个节点接收到,连接更稳定。

4. 新加入的节点可以向其邻居发送getaddr 消息,要求它们返回已知对等点的IP 地址列表。 节点可以找到要连接的对等点。

5. 节点启动时,可以为节点指定一个活动节点IP。 如果不是,客户端还维护一个列表以下哪种是比特币运用的p2p协议,列出那些已经稳定运行了很长时间的节点。 这样的节点也称为种子节点(其实和BT下载的种子文件是一样的),通过种子节点可以快速发现网络中的其他节点。

握手协议

当一个节点与对等节点建立连接时,首先要做的就是握手。 过程如下:

节点向对端发送版本消息以开始握手。 此消息包含以下内容:

PROTOCOL_VERSION:当前节点的比特币P2P协议版本号;

nLocalServices:节点支持的本地服务列表,目前只支持NODE_NETWORK;

nTime:当前时间;

addrYou:当前节点可见的远程节点的IP地址;

addrMe:本节点发现的本地IP地址;

subver:当前节点运行的软件类型的subversion号;

baseHeight:区块链在当前节点上的高度。

peer节点收到version消息后,会回复verack确认并建立连接。 有时peer之间可能需要交换连接并回连到起始节点,此时peer也会发送该节点的version消息。

莱特币和比特币是通用货币吗_以下哪种是比特币运用的p2p协议_路印协议兑比特币价格行情

图 2.3.2

完成握手协议后,新节点会向对端发送包含自己IP地址的addr消息,对端收到后会向与其相连的相邻节点发送addr消息,这样新节点的ip地址就会在 P2P 网络中广播。 另外以下哪种是比特币运用的p2p协议,新节点也可以发送getaddr消息,要求对端发送自己知道的节点的IP地址。 通过这种方式,新节点可以找到他们需要连接的对等点。 如下所示:

莱特币和比特币是通用货币吗_以下哪种是比特币运用的p2p协议_路印协议兑比特币价格行情

图 2.3.3

节点必须连接到几个不同的对等节点,以便在比特币网络中建立到比特币网络的各种路径。 由于节点可以随时加入和离开,因此通信路径不可靠。 因此,节点必须不断地做两项工作:当它们失去现有连接时发现新节点,并在其他节点出现时帮助它们。 一个节点启动只需要一个连接,因为第一个节点可以将它引用给它的对等节点,而这些节点又提供进一步的引用。 如果一个节点连接到大量其他对等节点,这既没有必要也不浪费网络资源。 启动完成后,节点会记住它最近成功连接的对等点; 因此,在重新启动时,它可以快速重新建立与先前对等网络的连接。 如果前一个网络的对等节点没有响应连接请求,该节点可以使用种子节点重新启动。

用户可以通过提供-connect=选项指定一个或多个IP地址,从而达到覆盖自动节点管理功能和指定IP地址列表的目的。 如果采用此选项,节点只会连接到这些选定的节点 IP 地址,而不是自动发现和维护对等节点之间的连接。

如果已建立的连接没有数据通信,则其所在的节点将周期性地发送信息以维持连接。 如果一个节点在没有任何通信的情况下持续连接 90 分钟,则认为它已与网络断开连接,并且网络开始寻找新的对等点。 因此,比特币网络会根据不断变化的节点和网络问题随时进行动态调整,无需中心化控制即可进行规模增减的有机调整。

至此,p2p网络基本形成,可以发现和维护自己的节点。 详情请参考源码实现。