比特币的网络采用了基于国际互联网(Internet)的P2P网络架构。英文是peer to peer,所以也叫对等网络。顾名思义也就是网络中的每台计算机是对等的,各个节点共同提供网络服务,不存在任何“特殊”节点。在 P2P 网络中不存在任何服务端(server)、中央化的服务、以及层级结构。这也是比特币网络或者说区块链的一个重要特征——去中心化。 这样网络中的任何一台机器出现问题都不会影响其他节点,保证网络的正常运行。
p2p网络一。尽管比特币P2P网络中的各个节点相互对等,但是根据所提供的功能不同,各节点可能具有不同的分工。
1。全结点
全结点这种结点就是包含了钱包,挖矿,区块链,网络路由功能的一个集合结点。全节点能够独立自主地校验所有交易,而不需借由任何外部参照。
2。SPV结点
这种只保留了区块链的一部分(区块头),它们通过一种名为“简易支付验证(SPV)”的方式来完成交易验证。英文是Simplified Payment Verification。这样的节点被称为“SPV节点”,又叫“轻量级节点”。关于什么是SPV验证,简单来说就是通过这个区块头的信息通过网络到区块链里去验证。具体请参考Higher的文章:http://www.jianshu.com/p/39be41dfb5fa 。
3。挖矿结点。
这种结点,其实只要有独立矿工功能的结点都可以叫做挖矿结点。全结点其实就是一种挖矿结点。
带有矿池协议的挖矿结点 独立矿工挖矿节点通过运行在特殊硬件设备上的工作量证明(proof-of-work)算法,简称POW。以相互竞争的方式创建新的区块。一些挖矿节点同时也是全节点,保有区块链的完整拷贝;还有一些参与矿池挖矿的节点是轻量级节点,它们必须依赖矿池服务器维护的全节点进行工作。
如果网络既包含运行比特币P2P协议的网络,又包含运行上面不同协议的结点。这种网络也叫扩展比特币网络。
扩展比特币网络这种网络包括了多种类型的节点、网关服务器、边缘路由器、钱包客户端以及它们相互连接所需的各类协议。
二。网络发现。
当我们启动一个机器的时候,这个结点是如何发现其他的结点和被其它结点发现的呢,他们是如何连接的?至少与其它一个结点连接后才能够参与协同运作。
首先,每个结点通常与其他结点进行通讯的协议是TCP协议。端口号是8333(也可以是其它端口)。
这个网络发现的过程,我借用了销售行业的一个名词——转介绍。过程是这样的。
如果你来到一个全是陌生人的屋子里面,大家都不认识你,你很想加入他们这个圈子(网络),你这时先从离自己最近的人开始交换信息(握手),然后这个人开始对他旁边的介绍你,你也和他们进行握手。这样你就加入了他们这个网络。
这个转介绍的信息内容包括:
1。PROTOCOL_VERSION
常量,定义了客户端所“说出”的比特币 P2P 协议所采用的版本(例如:70002)
2。nLocalServices
一组该节点支持的本地服务列表,当前仅支持 NODE_NETWORK
3。nTime
当前时间
4。addrYou
当前节点可见的远程节点的 IP 地址
5。addrMe
本地节点所发现的本机 IP 地址
6。subver
指示当前节点运行的软件类型的子版本号(例如:”/Satoshi:0.9.2.1/”)
7。BaseHeight
当前节点区块链的区块高度
作者:区块链研习社比特币源码研读班,black
网友评论