-
8.1 比特币网络-Part1
-
8.1 P2P网络架构
比特币采用了基于国际互联网(Internet)的P2P(peer-to-peer)网络架构。P2P是指位于同一网络中的每台计算机都彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点。每个网络节点以“扁平(flat)”的拓扑结构相互连通。 在P2P网络中不存在任何服务端(server)、中央化的服务、以及层级结构。P2P网络的节点之间交互运作、协同处理:每个节点在对外提供服务的同时也使用网络中其他节点所提供的服务。P2P网络也因此具有可靠性、去中心化,以 及开放性。早期的国际互联网就是P2P网络架构的一个典型用例:IP网络中的各个节点完全平等。当今的互联网架构具有分层架构,但是IP协议仍然保留了扁平拓扑的结构。在比特币之外,规模最大也最成功的P2P技术应用是在文件分享 领域:Napster是该领域的先锋,BitTorrent是其架构的最新演变。
比特币所采用的P2P网络架构不仅仅是选择拓扑结构这样简单。比特币被设计为一种点对点的数字现金系统,它的网络架构既是这种核心特性的反映,也是该特性的基石。去中心化控制是设计时的核心原则,它只能通过维持一种扁平化、 去中心化的P2P共识网络来实现。
“比特币网络”是按照比特币P2P协议运行的一系列节点的集合。除了比特币P2P协议之外,比特币网络中也包含其他协议。例如Stratum协议就被应用于挖矿、以及轻量级或移动端比特币钱包之中。网关(gateway)路由服务器提供这些协 议,使用比特币P2P协议接入比特币网络,并把网络拓展到运行其他协议的各个节点。例如,Stratum服务器通过 Stratum协议将所有的Stratum挖矿节点连接至比特币主网络、并将Stratum协议桥接(bridge)至比特币P2P协议之 上。我们使用“扩展比特币网络(extended bitcoin network)”指代所有包含比特币P2P协议、矿池挖矿协议、Stratum 协议以及其他连接比特币系统组件相关协议的整体网络结构。
8.2 节点类型及角色
尽管比特币P2P网络中的各个节点相互对等,但是根据所提供的功能不同,各节点可能具有不同的角色。每个比特币节点都是路由、区块链数据库、挖矿、钱包服务的功能集合。一个全节点(full node)包括如图8-1所示的四个功能:
图8-1比特币网络节点,具有所有四个功能:钱包,矿工,完整的区块链数据库和网络路由
每个节点都参与全网络的路由功能,同时也可能包含其他功能。每个节点都参与验证并传播交易及区块信息,发现并维持与对等节点的连接。在图8-1所示的全节点用例中,名为“网络路由节点”的橙色圆圈字母‘N’即表示该路由功能。
一些节点保有一份完整的、最新的区块链拷贝,这样的节点被称为“全节点”。全节点能够独立自主地校验所有交易,而不需借由任何外部参照。另外还有一些节点只保留了区块链的一部分,它们通过一种名为“简易支付验证(SPV)”的方 式来完成交易验证。这样的节点被称为“SPV节点”,又叫“轻量级节点”。在如上图所示的全节点用例中,名为完整区块链的蓝色圆圈字母“B”即表示了全节点区块链数据库功能。在图8-3中,SPV节点没有此蓝色圆圈,以示它们没有区块链的完整拷贝。
挖矿节点通过运行在特殊硬件设备上的工作量证明(proof-of-work)算法,以相互竞争的方式创建新的区块。一些挖矿 节点同时也是全节点,保有区块链的完整拷贝;还有一些参与矿池挖矿的节点是轻量级节点,它们必须依赖矿池服务器维护的全节点进行工作。在全节点用例中,挖矿功能如图中名为“矿工”的黑色圆圈字母“M”所示。
用户钱包也可以作为全节点的一部分,这在桌面比特币客户端中比较常见。当前,越来越多的用户钱包都是SPV节点, 尤其是运行于诸如智能手机等资源受限设备上的比特币钱包应用;而这正变得越来越普遍。在图8-1中,名为“钱包”的绿色圆圈字母“W”代表钱包功能。
在比特币P2P协议中,除了这些主要的节点类型之外,还有一些服务器及节点也在运行着其他协议,例如特殊矿池挖矿 协议、轻量级客户端访问协议等。
8.3 扩展比特币网络
运行比特币P2P协议的比特币主网络由大约5000-8000个运行着不同版本比特币核心客户端(Bitcoin Core)的监听节 点、以及几百个运行着各类比特币P2P协议的应用(例如Bitcoin Classic, Bitcoin Unlimited, BitcoinJ, Libbitcoin, btcd, and bcoin等)的节点组成。比特币P2P网络中的一小部分节点也是挖矿节点,它们竞争挖矿、验证交易、并创建新的区块。许多连接到比特币网络的大型公司运行 着基于Bitcoin核心客户端的全节点客户端,它们具有区块链的完整拷贝及网络节点,但不具备挖矿及钱包功能。这些节点是网络中的边缘路由器(edge routers),通过它们可以搭建其他服务,例如交易所、钱包、区块浏览器、商家支付处理(merchant payment processing)等。
如前文所述,扩展比特币网络既包括了运行比特币P2P协议的网络,又包含运行特殊协议的网络节点。比特币P2P主网络上连接着许多矿池服务器以及协议网关,它们把运行其他协议的节点连接起来。这些节点通常都是矿池挖矿节点(参见挖矿章节)以及轻量级钱包客户端,它们通常不具备区块链的完整备份。
图8-3描述了扩展比特币网络,它包括了多种类型的节点、网关服务器、边缘路由器、钱包客户端以及它们相互连接所 需的各类协议。
图8-3 显示各种节点类型,网关和协议的扩展比特币网络
8.4比特币传播网络
虽然比特币P2P网络服务于各种各样的节点类型的一般需求,但是对于比特币挖掘节点的专门需求,它显示出太高的网络延迟。
比特币矿业公司正在进行时间敏感的竞争,以解决工作证明问题,并扩大区块链(参见[挖矿]章节)。在参加比赛时,比特币矿工必须最大限度地缩短获胜块的传播与下一轮比赛开始之间的时间。在采矿方面,网络延迟与利润率直接相关。
比特币传播网络是一种尝试最小化矿工之间传输块的延迟的网络。原始的比特币传播网络是由核心开发商Matt Corallo于2015年创建的,以便能够以非常低的延迟在矿工之间快速同步块。该网络由世界各地的亚马逊Web服务基础架构上托管的几个专门的节点组成,并且连接大多数矿工和采矿池。
原始的比特币传播网络在2016年被替换为Fast Internet Bitcoin Relay Engine or FIBRE,也由核心开发商Matt Corallo创建。 FIBER是一种基于UDP的中继网络,可以中继节点网络内的块。 FIBER实现了compact block,以进一步减少传输的数据量和网络延迟。
康奈尔大学研究的另一个中继网络(仍在提案阶段)是 Falcon。 Falcon使用“直通路由”而不是“存储转发”来减少延迟,通过传播块的部分,而不是等待直到接收到完整的块。
传播网络不是比特币的P2P网络的替代品。相反,它们是覆盖网络,在具有特殊需求的节点之间提供额外的连接像高速公路不是农村道路的替代品,而是交通繁忙的两点之间的快捷方式,您仍然需要小路连接高速公路。
- 留下你的读书笔记
- 你还没登录,点击这里
-
用户笔记留言