比特币学习之-P2P网络

 
  

比特币的网络采用了基于国际互联网(Internet)的P2P网络架构。英文是peer to peer,所以也叫对等网络。顾名思义也就是网络中的每台计算机是对等的,各个节点共同提供网络服务,不存在任何“特殊”节点。在 P2P 网络中不存在任何服务端(server)、中央化的服务、以及层级结构。这也是比特币网络或者说区块链的一个重要特征——去中心化。 这样网络中的任何一台机器出现问题都不会影响其他节点,保证网络的正常运行。

p2p网络

一。尽管比特币P2P网络中的各个节点相互对等,但是根据所提供的功能不同,各节点可能具有不同的分工。

1。全结点 

全结点

这种结点就是包含了钱包,挖矿,区块链,网络路由功能的一个集合结点。全节点能够独立自主地校验所有交易,而不需借由任何外部参照。

2。SPV结点

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

     当前节点区块链的区块高度

作者:ttblack 链接:http://www.jianshu.com/p/ad47595e7e4f 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(比特币学习之-P2P网络)