主页 > 官网imtoken钱包苹果版下载 > 比特币网络中的节点是如何连接的?
比特币网络中的节点是如何连接的?
今天,我们从上一期继续一起阅读《精通比特币》。今天的内容主要分为两个部分:比特币交易和比特币网络。
一、比特币交易
二、比特币网络
一、比特币交易
比特币交易是比特币系统中最重要的部分。根据比特币系统的设计原则,系统的任何其他部分都旨在确保比特币交易能够在比特币网络中产生、传播和验证,并最终加入比特币交易的全球账本(即比特币区块链) )。
—1.比特币交易的生命周期—
比特币交易的生命周期包括:
1)事务生成
2)签名和加密
3)全网广播
4)全网节点验证接受
5)挖矿节点验证并加入区块
6)由足够多的后续块验证
—2. 交易遍布网络 —
每个比特币节点都与其他一些节点相连,形成一个巨大的网络结构。每个节点收到交易后都会对其进行验证。如果有效,就会传播到其他节点。如果无效,将被拒绝并退回。一个有效的交易可以在几秒钟内传遍整个网络。
比特币网络具有以下特点:
1)没有中心,所有节点的状态都是平等的;
2)传播灵活高效,抗攻击;
3)每个节点将在传播之前独立验证交易,提高可靠性。
——3.什么是UTXO?—
UTXO的全称是Unspent Transaction Output,翻译过来就是“未使用的交易输出”,一种用来快速计算你有多少数字资产余额的设计。
要知道,在比特币的世界里,既没有账户,也没有余额,只有分散在区块链中的 UTXO。
欲知更多详情,请点击以下链接:
中本聪的又一伟大发明,专攻数学不好
—4.比特币交易费—
大多数交易都需要支付交易费用,这是为了补偿比特币矿工的网络安全。交易费用主要是交易的大小,以千字节为单位,而不是比特币的价值。一般来说,交易费用基于市场设置并在比特币网络上生效。
交易手续费可以作为矿工确认区块的奖励。交易费用的多少会影响处理的优先级。有足够费用的交易会更早的被包含在下一个挖出的区块中如何运行比特币节点,并且会更早的被确认和验证。. 在大多数情况下,钱包程序会自动为您计算交易费用。
二、比特币网络
—1. P2P 网络架构 —
看到P2P,不知道大家会不会想到金融界的P2P借贷和借贷。P2P的英文全称是:peer to peer。翻译是:点对点。所以任何点对点的关系都可以使用P2P的概念。
比特币采用的网络架构其实很简单,就是大家熟知的P2P网络架构。当然,除了 P2P 网络,比特币网络中还包含其他协议。例如,Stratum 协议用于采矿、轻量级或移动比特币钱包。
P2P的含义是指比特币网络中的每一台计算机都是平等的,每个节点共同提供网络服务,没有“特殊”节点。关键是每个节点都是完全相等的。每个节点都对外提供服务,并使用其他节点提供的服务。如果说人人生而平等是一件需要努力的事情,那么比特币网络上的节点生而平等,不需要努力。
比特币网络是指按照比特币 P2P 协议运行的一系列节点的集合。下图可以清楚地表示各个计算机节点的对等关系:
——2.节点类型及分工——
虽然每个节点的价值或地位完全相等如何运行比特币节点,但它们的功能确实不同,每个节点的分工也不同。
一个全节点包括四个功能:网络路由节点、完整的区块链、矿工和钱包。
“每个节点都参与了整个网络的路由功能,还可能包含其他功能。每个节点都参与验证和传播交易和区块信息,以及发现和维护与点对点网络的连接。”
这里所说的路由功能,其实就是每个节点都会主动连接自己的ordering节点,为全网服务。这四种功能的任意组合都会产生不同的节点。也就是说,很多节点都不是全节点。比如我们常说的钱包,并不具备全节点的所有功能。
—3. 扩展比特币网络 —
比特币网络本身是遵循比特币协议的节点的组合。但是比特币协议本身的一些功能是无法实现的,比如挖矿、钱包等功能。如果需要实现该功能,则需要扩展比特币网络协议。例如:很多接入比特币网络的大公司基于Bitcoin Core客户端运行全节点客户端,拥有区块链和网络节点的完整副本,但不具备挖矿和钱包能力。
为了具备这些功能,这些网络公司会在原有的比特币网络协议中加入一些特殊的协议,用于增加上述功能。扩展的比特币网络包括多种类型的节点、网关服务器、边缘路由器、钱包客户端以及将它们相互连接所需的各种协议。这些扩展协议的存在,让整个比特币网络拥有了更多的功能。
—4. 网络发现—
比特币网络中的节点存在于一个复杂的网络中。每个新节点出现后,为了与整个区块链网络中的节点进行合作,节点必须主动联系现有节点。只有这样,我们才能加入比特币网络这个大家庭。新节点与现有节点之间建立联系的过程称为网络发现。
这个发现的目的是:找到自己的对等点。网络发现的过程可以类比为:移动后寻找邻居(家庭地址为IP地址)。
我们来看看新节点是如何找到它对应的节点并建立连接的。
区块链中有许多网络节点。当一个新节点第一次开始寻找邻居时,很难立即找到它自己的对等节点。为了提高网络发现的效率,整个网络中有一种特殊的节点,这种节点称为:种子节点。如果为新节点寻找对应节点的过程是搬家找邻居,那么种子节点就是你要去的社区居委会的阿姨。作为居委会阿姨的种子节点,它会尽力帮你找到能与你对应的邻居节点。当你找到对应的邻居节点时,阿姨就不会关心你了。
下一步是在自己和邻居之间建立更深层次的联系。你会主动向邻居节点发送自己的地址信息(即IP地址)。你的邻居节点是另一个好心人,他会主动把你的地址信息分享给他的邻居节点。你邻居的邻居也会是个善良的人,会主动帮你把你的地址信息再传给他的邻居。这个过程不断重复。最终整个社区都会知道您的地址信息,并且很容易找到您。
此外,您还可以向您的邻居节点发送请求,以获取您邻居知道的其他邻居节点的地址信息。这样,作为一个新节点,全网所有节点都会知道你的地址,你也会知道全网每个节点的地址。至此,就可以完全找到自己的对等节点,完成网络发现的目标。
最后会出现一种特殊情况,即:节点与整个比特币网络失去联系,即离开网络。例如,如果你有一段时间不上班,突然不想干了,也就是你离开了整个比特币网络。每个节点都有随时加入和离开网络的自由,就像你生活在一个社区里一样,只要你想移动,你就可以随时移动。在这种情况下,节点之间的通信地址通常是不可靠的。因此,比特币网络发明了自己的机制来处理这种情况。
比特币网络中的每个节点必须不断做两件事:在失去现有邻居节点时发现新的邻居节点,并在找到新的邻居节点时提供帮助。
注意:上述网络发现实际上是节点之间主动帮助的结果。
接下来,让我们看看一个节点是如何知道它的邻居节点是否已经移动的。
事实证明,需要定期发送信息来维持节点之间的连接。和人一样,如果你很长时间不给朋友打电话或聊天,你会觉得这个朋友已经离开了你的朋友圈。节点之间也是如此。如果两个节点之间90分钟没有消息发送,则任一节点都可以确定其邻居节点已经与网络断开连接,此时可以去寻找新的邻居节点。这样的机制保证了整个比特币网络可以自行动态调整节点大小的增减。
—5. SPV 简单支付验证节点 —
上一期提到,只有全节点才有全网区块链的完整副本,也只有全节点才有独立验证的能力。许多节点不具备独立验证所有节点的能力。因此,将使用一种称为 SPV 的验证方法。
SPV的英文全称是Simplified Payment Verification,翻译过来就是“Simple Payment Verification”。这是一种相对简单的验证付款的方法。
你只需要把你的交易ID交给离你最近的持有完整账本的矿工,让他在完整账本中找到交易所在的区块,验证交易是否存在。
此外,SPV 节点不保存所有交易,也不下载整个区块,只下载区块头。这样,下载任务比下载整个区块链账本要容易得多。要知道比特币中每个区块的容量是1Mb,而区块头的大小只有80Kb。
SPV的验证方式是参考区块链中交易的深度,而不是高度来验证交易。简单地说,检查一个块上面是否有 6 个块。如果是,请证明交易确实发生了。
欲知更多详情,请点击以下链接:
【区块链世界的“谷歌”】专攻转账纠纷