关于节点的定义,很多情况下是不尽相同的。当涉及到计算机或者通讯网络时,节点往往指的是一个再分发点或者通讯终端。通常,一个节点是由物理网络设备构成的,但是虚拟的节点则大不相同。
简而言之,一个网络节点可以产生,接收或传输信息。据此,我们将要讨论不同类型的比特币网络节点:全节点,超级节点,挖矿节点和SPV用户。
通过对区块链文章的深入研究 -- 由于它的分布式系统特征 -- 计算机网络的节点使得比特币能够像一个去中心化的点对点(P2P)数字货币运作。同样的,比特币也是免审查的,用户之间的转账不需要任何中间商来提供担保(无论用户相距多远)。
因此,区块链的节点就像是一个发挥着不同功能的通讯节点一样。任何连接到比特币网络的计算机或其他设备,都可以被视为是比特币网络的节点,这些节点之间也进行着相互的交流,同时它们也能够通过比特币的点对点协议来传输交易和区块的信息。然而,每一个计算机节点都是根据它的特定功能来定义的,所以,比特币网络中存在多种不同类型的节点。
全节点是那些真正支持和保护比特币网络的节点,它们相对于网络来说是独立的。它们也会参与到交易信息和区块信息的确认工作当中,同样的,全节点也能够将新的区块信息加到区块链网络当中。
通常,一个全节点会下载一个完整的比特币区块链网络信息的副本,但这并不是一个硬性的要求(有时候也会下载一个缩减版的副本)。
一个比特币的全节点的建立可以通过多种不同软件的安装来完成,但是最常用的软件是比特币核心(Bitcoin Core),以下是运行一个比特币核心全节点的基本要求:
很多志愿机构和用户运行作为比特币网络的全节点来帮助比特币的生态发展。像2018年,大约有9700多个公开的节点在比特币网络上运行。注意,这个数字仅仅是公开的节点,也就是那些可见的节点。
除了公开的节点,还有许多隐藏的节点是不可见的,这些节点通常是经过像Tor的隐藏协议,或者仅仅因为它们配置不可公告,便只在防火墙后运行。
本质上来说,一个公开节点或者一个超级节点都是一个可见的全节点。它与其他的节点之间进行数据的交流和传输,因此,一个超级节点就是一个再分发点,它扮演着一个数据来源和交流桥梁的角色。
一个可靠的超级节点通常是7x24小时不停地将区块链的历史信息和交易数据传输给全世界的节点。基于这个原因,相较于一个隐藏的全节点,一个超级节点需要更多的算力和更好的网络连接。
为了能够在竞争日益激烈的环境中挖到比特币,就必须投资特殊的挖矿硬件和程序。这些挖矿程序(软件)并不是直接关联到Bitcoin Core上的,它们是与Bitcoin Core并行来挖矿的。一个矿工既可以选择自己挖矿,也可以选择加入矿池。
个人矿工的全节点使用的是他们自己的区块数据副本,矿池的矿工们则是共同协作的,每一个人能够贡献自己的算力。在一个矿池中,只有矿池的管理员才被要求以一个全节点的身份运行 -- 可以被看作是整个矿池的全节点。
也被称为简单支付验证(SPV)用户,这些轻量级用户使用比特币网络但并不是全节点。SPV用户没有为网络安全贡献力量,因为他们不会保存区块链信息的副本,也不会加入到交易信息的验证工作中。
简单来说,SPV就是一种不用下载整个区块链信息副本,就可以查看交易信息的一种方式,因此,SPV用户依赖其他全节点(超级节点)来提供信息。这些轻量级的用户就像是通讯终端一样,也被众多的数字货币钱包所使用。
值得一提的是,运行一个全节点和运行一个全挖矿节点是不同的。只需要投资特殊的挖矿硬件和软件,任何人都可以成为一个全挖矿节点。
在尝试挖一个区块之前,一名矿工需要收集之前被全节点确认过的交易信息。接着,就需要创造一个备选区块(有一组交易信息), 同时尝试进行挖矿。如果一名矿工成功找到了这个备选区块的哈希值,他就向全网公布,这样其他的节点就可以验证其真实性。因此,这种共识的规则的准确性和安全性是由全网的节点共同维护的,并不只是矿工。
比特币节点之间的相互交流是通过比特币的点对点网络协议进行的,它们通过这种方式来验证系统的完整性。如果一个节点想要传播一些错误的信息,就会被那些忠实的节点快速识别出来并将其从网络中断开。
运行一个全节点不会获得任何经济上的奖励,但是该行为依然值得强烈推崇,因为它会为用户们提供诚信,安全和私密性。全节点保障规则的顺利执行,它们保护着区块链不被攻击,除此之外,一个全节点不需要信任其他人,它使得用户能够百分百掌控自己的财产。