我们来说说比特币网络。
P2P网络架构
比特币使用的是P2P网络,P2P(peer-to-peer)网络架构是一种每个节点都是对等的网络架构,不存在某个节点比其他节点“高级”的说法。在平时,访问某个网站时,都会有一个服务器作为服务端,如果服务器故障,网站将无法访问。在P2P的网络中,不会有这种问题,一个节点坏了,可以访问其他节点。每个节点在对外提供服务的同时也使用网络中其他节点所提供的服务。比特币被设计为一种点对点的数字现金系统,它的网络架构既是这种核心特性的反映,也是该特性的基石。去中心化控制是设计时的核心原则,它只能通过维持一种扁平化、去中心化的 P2P 共识网络来实现。比特币除了使用了 P2P 协议外,还使用了其他协议,例如 Stratum 协议就被应用于挖矿、以及轻量级或移动端比特币钱包之中。
节点类型及分工
虽然比特币网络中每个节点都是对等的,但每个节点的功能却不一定完全相同,例如矿工节点和轻量客户端节点就不同。一个完整的节点,会包括四项功能:路由、区块链数据库、挖矿、钱包服务。
每个节点都参与全网络的路由功能,同时也可能包含其他功能。有完整功能的节点称为全节点,可以独立验证所有交易。在比特币P2P协议中,除还有一些服务器及节点也在运行着其他协议,例如特殊矿池挖矿协议、轻量级客户端访问协议等。下图列举了比特币网络中的不同节点。
扩展的比特币网络
扩展比特币网络既包括了运行比特币P2P协议的网络,又包含运行特殊协议的网络节点。这些扩展的网络运行着矿池服务器,轻量客户端的服务器,边缘路由等等。
网络发现
当新的节点建立后,它必须至少发现1个节点并建立连接。新节点是如何发现网络中的对等节点的呢?虽然比特币网络中没有特殊节点,但是客户端会维持一个列表,那里列出了那些长期稳定运行的节点。或者你知道其他节点的地址进行手动连接。当建立一个或多个连接后,新节点将一条包含自身IP地址的addr消息发送给其相邻节点。相邻节点再将此条addr消息依次转发给它们各自的相邻节点,从而保证新节点信息被多个节点所接收、保证连接更稳定。另外,新接入的节点可以向它的相邻节点发送getaddr消息,要求它们返回其已知对等节点的IP地址列表。如果已建立的连接没有数据通信,所在的节点会定期发送信息以维持连接。如果节点持续某个连接长达90分钟没有任何通信,它会被认为已经从网络中断开,网络将开始查找一个新的对等节点。以上就是本系列科普的全部内容,观众朋友们有什么意见或建议可以留言,另祝周末愉快!关注战旗矿机公众号你将获得:每日一篇高质量干货科普,及时的行业资讯,全栈式的优质矿机产品服务。
领取专属 10元无门槛券
私享最新 技术干货