比特币入门-网络

网络

在钱包的前提下,我们可以创建安全可证明的交易了,现在如何将交易通知给其他人呢

p2p网络

p2p 及 peer to peer,这个peer中文翻译就是对等、对等者、伙伴、对端的意思。所以P2P网络一般叫做对等网络,其确切定义:网络中每个参与节点共享节点所拥有的一部分计算能力、存储能力、网络连接能力,这些能力或者称为共享资源通过网络提供的服务和内容,可被对等节点直接访问,访问过程中不需要再经过中间实体,所以每个节点既是资源和服务的使用者、又是整个资源和服务的提供者。P2P网络中各个节点都是出于一个对等的地位,没有主、从的区分,联系实际环境,你目前在操作的一台电脑终端既可以作为服务器。又可以作为终端去获取对等节点的资源。整个网络中不存在中心节点,每个节点都可对任意对等节点做出响应,提供资源,包括计算资源、存储资源等。

节点类型

尽管比特币网络中的节点相互对等,但是根据提供功能的不同可能具有不同的分工。一个全节点可能具有:钱包、完整区块链、矿工、路由器四个功能,全节点能够独立自主的验证所有交易而不需要任何外部参考,通过组合这四大功能可能会有提供不同功能的节点类型,但是无论是哪种节点,只要连入比特币网络,就必须提供路由功能

网络发现

当新的网络节点启动后,至少要连接到一个比特币网络中的节点。节点通常采用 TCP 协议,使用 8333 端口

SPV节点

SPV节点,即,简易支付验证节点

并非所有的节点都有能力存储完整的区块链,如果产生一笔新的交易,全节点可以通过对整个区块链中的数据进行检索验证是否会双重支付(即一笔输出被两次用于输入),而简易节点并没有存储完整的区块链信息,它只存储了区块头

简易支付验证是参考交易区块在区块链中的深度,来验证他们。当有新的交易,SPV节点并不着急承认交易,等到其他节点传来信息,该交易所在区块之后又生成了六个区块,再承认该交易。其实就是自己不验证,交给全节点验证,自己只验证后来生成的区块的工作量证明,等到后面生成一定数量的区块,则代表该交易被其他全节点验证过了,没问题。

为了防止单个节点的欺骗,通常不会只信任一个节点,而是随机连接到多个节点,增加可靠节点的概率。即使第一个区块是被欺骗的,而后发出欺骗的节点必须再生成六个区块,才能成功欺骗,这个难度过大,除非超过了50%的算力。

实际上我们不必等待六个区块,通常一个或两个区块就足以证明交易的有效性。如果追求绝对安全,可以等待累加六个区块

交易池

比特币网络中几乎每个节点都会维护一份未确认交易的临时列表,被称为内存池或交易池,用于存储那些被网络所知晓但是尚未被写入区块的交易,等待逐一验证。对于全节点,需要接收所有未确认的交易,而 SPV 只需要存储和自己相关的交易。当一个交易被添加在交易池中,它也会去验证孤立交易池,如果该交易是孤立交易池的父交易,将会递归的验证孤立交易池中的交易并拿出放在交易池中

猜你喜欢

转载自blog.csdn.net/weixin_39653200/article/details/81812251