主页 > 苹果手机imtoken下载 > 比特币的点对点网络和改进建议
比特币的点对点网络和改进建议
- 来源:-
本文旨在说明比特币点对点网络的工作原理。本文分为 3 个不同的部分,分别讨论比特币点对点网络的不同功能。
连接到网络中的一个节点
如果你在电脑上安装了比特币节点硬盘中找比特币,你会在配置文件中看到一些硬编码的比特币节点地址,即种子节点。种子节点是您在比特币网络中连接的第一个节点。
以下是其中一个种子节点的地址。您可以使用 dig 命令查看可连接的比特币节点 IP 地址列表。
$ dig seed.btc.petertodd.org
在连接到比特币网络中的远程节点之前,你的本地比特币节点会向你要连接的远程节点发送一个“PING”,然后收件人会回复“PONG”。但是,如果远程节点拒绝回复(由于被丢弃等原因),它将被“FIRED”,即断开连接。
在成功连接到网络中的一个比特币节点后,你执行一个初始的“握手”,即发起连接的本地节点发送它的版本消息,等待远程节点返回它的版本消息,然后本地节点发送其版本消息。发送“Verack”消息确认远程节点的版本,并等待远程节点返回相同的确认消息。
- 比特币节点的初始连接和握手-
在收到版本消息之前,远程节点不会发送任何消息。 “版本”消息包括您正在运行的比特币节点的版本。
检测网络中的其他节点
您可以发送“getaddr”消息来了解网络中的其他比特币节点。成功连接到远程节点后硬盘中找比特币,您可以向其发送“getaddr”消息,该消息将回复可用于连接的其他远程节点 IP 地址的示例列表。
此外,远程节点将继续向您发送它所连接的节点的 IP 地址。
- 比特币节点探测流-
接收交易或区块数据
在从属网络中当远程节点上的其他对等点收到块或交易时,远程节点会向连接的对等点发送“inv”消息,以检查它们是否已经存储了交易或块。不存储交易或区块的对等节点将回复“getdata”给远程节点,远程节点将返回交易或区块的详细信息。
-比特币数据请求流-
比特币点对点网络改进提案
为了提高比特币对等网络的性能,目前有几个比特币改进提案(BIP)。下面我们来看看其中的几个。
BIP 152 - 密集块
BIP 152 旨在减少比特币网络中节点之间转发块所占用的带宽。
该协议可以在“高带宽”和“低带宽”模式下使用,具体取决于可用的对等点和带宽。在低带宽模式下,对等方同时发送新块公告和 inv/块头公告。不支持密集块的节点仍然可以使用传统的块中继协议。
密集块包含普通块中事务 ID 的缩短版本。节点收到 cmpctblock 消息后,会计算其交易池(mempool)中所有交易的缩写 txid,然后根据缩写 txid 的匹配取回区块中包含的交易,从而构建一个完整的区块。如果找不到交易,则节点向发送 cmpctblock 消息的对等节点请求交易。这样,节点就可以在不发送区块所有数据的情况下完成区块中继。通常,区块中的大部分或全部交易都可以在节点的交易池中找到,然后进行区块重构。