首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基础课程第十八课 区块链网络

第18课 区块链网络

一、P2P网络架构

比特币采用了基于互联网(Internet)的P2P(peer-to-peer)网络架构。早期的国际互联网就是P2P网络架构的一个典型用例:IP网络中的各个节点完全平等。当今的互联网架构具有分层架构,但是IP协议仍然保留了扁平拓扑的结构。

(1)中心化网络

为了更好的理解P2P网络,我们先来看看传统的中心化模型。

这是一种典型的星型(“中心化”)结构,我们常见B/S及C/S网络架构就是这种模型,C1 、C2 、C3等之间没法直接的连接,C节点如果要连接必须要通过中心化S节点做为桥梁。

中心化节点充当服务者、中介的作用,从上面的模型中,我可可以看出没有办法把资金直接从一个人转移给另一个人,而必须通过银行这个中介。

(2)P2P网络

与传统中心化模型不同,P2P网络是指位于同一网络中的每台计算机都彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点,每个网络节点以扁平(flat)的拓扑结构相互连通。

在P2P网络中不存在任何服务端(server)、中央化的服务、以及层级结构。P2P网络的节点之间交互运作、协同处理,每个节点在对外提供服务的同时也使用网络中其他节点所提供的服务。P2P网络也因此具有可靠性、去中心化以及开放性。

二、节点类型及分工

尽管比特币P2P网络中的各个节点相互对等,但是根据所提供的功能不同,各节点可能具有不同的分工。每个比特币节点都是路由、区块链数据库、挖矿、钱包服务的功能集合。

根据所包含的功能不同,网络节点可以分为三种:

第一种是包含所有功能和数据的节点,叫做全节点。全节点保有一份完整的、最新的区块链拷贝,能够独立自主的校验所有交易,而不需借由任何外部参照。并且全节点包含四个完整功能:钱包、矿工、完整区块链、网络路由节点。

第二种是指保留一部分区块链,通过“简易支付验证(SPV)”的方式来完成交易的验证工作,叫做SPV 节点,也称轻量节点;

并非所有的节点都有能力储存完整的区块链。许多比特币客户端被设计成运行在空间和功率受限的设备上,如智能电话、平板电脑、嵌入式系统等。对于这样的设备,通过简化的支付验证(SPV)的方式可以使它们在不必存储完整区块链的情况下进行工作。这种类型的客端被称为SPV客户端或轻量级客户端。随着比特币的使用热潮,SPV节点逐渐变成比特币节点(尤其是比特币钱包)所采用的最常见的形式。

第三种是完成某项专门功能的节点,叫做功能节点 (Pruning node)。

例如,专门为矿工所准备的挖矿节点,不需要钱包的功能,只需要保留其它三项功能即可。

基于以上这三种节点,共同的组成了整个区块链网络。

三、对等节点发现

为了能够加入到比特币网络,比特币客户端会做以下几件事情:

a、节点会记住它最近成功连接的网络节点,当重新启动后它可以迅速与先前的对等节点网络重新建立连接。

b、节点会在失去已有连接时尝试发现新节点。

c、当建立一个或多个连接后,节点将一条包含自身IP地址消息发送给其相邻节点。相邻节点再将此消息依次转发给它们各自的相邻节点,从而保证节点信息被多个节点所接收、保证连接更稳定。

d、新接入的节点可以向它的相邻节点发送获取地址getaddr消息,要求它们返回其已知对等节点的IP地址列表。节点可以找到需连接到的对等节点。

e、在节点启动时,可以给节点指定一个正活跃节点IP, 如果没有,客户端也维持一个列表,列出了那些长期稳定运行的节点。这样的节点也被称为种子节点(其实和BT下载的种子文件道理是一样的),就可以通过种子节点来快速发现网络中的其他节点。

四、节点通信协议

比特币节点通常采用TCP协议、使用8333端口与相邻节点建立连接, 建立连接时也会有认证“握手”的通信过程,用来确定协议版本,软件版本,节点IP,区块高度等。

当节点连接到相邻节点后,接着就开始跟相邻节点同步区块链数据(轻量级钱包应用其实不会同步所有区块数据),节点们会交换一个getblocks消息,它包含本地区块链最顶端的哈希值。如果某个节点识别出它接收到的哈希值并不属于顶端区块,而是属于一个非顶端区块的旧区块,就说其自身的本地区块链比其他节点的区块链更长,并告诉其他节点需要补充区块,其他节点发送getdata消息来请求区块,验证后更新到本地区块链中。

区块链小学堂

一起分享区块链世界的点滴~

微信公众号ID :区块链小学堂

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180926G1AJTP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券