主页 > imtoken钱包app下载 > 《精通比特币》研究:比特币网络《P2P网络架构》

《精通比特币》研究:比特币网络《P2P网络架构》

imtoken钱包app下载 2023-11-12 05:07:25

1、P2P网络架构:

对于比特币,大家听得最多的就是去中心化和分布式。简单理解就是比特币网络是一个分布式网络,网络中的节点是点对点的通信,没有中心节点,也就是P2P网络。对于拥有多年技术背景和互联网行业经验的我来说,P2P协议对我来说并不陌生。在区块链兴起之前,P2P已经出局多年,但一直不温不火,最著名的应该是早期的电驴和迅雷,主要用于分布式文件共享和下载。相信很多人都用电驴下载过日本电影。P2P的另一个重要特点是单个文件也可以分布式存储。例如,一部电影可能分散在多个人的计算机中。下载时,它将从多台计算机下载。种子越多,下载速度越快。

比特币网络是在比特币 P2P 协议下运行的节点集合,也称为主网络。除了 P2P 协议之外,比特币网络还包括其他协议,例如 Stratum,用于挖矿和比特币钱包。例如,Stratum 服务器通过 Stratum 协议将所有 Stratum 挖矿节点连接到比特币主网,并将 Stratum 协议桥接到比特币 P2P 协议。我们使用术语“扩展比特币网络”来指代所有的整体网络结构,包括比特币 P2P 协议、矿池挖矿协议、Stratum 协议以及与连接比特币系统组件相关的其他协议。

2、比特币网络节点:

比特币网络中的每个节点都是独立平等的,但每个节点并不完全相同,分工和角色也不同。最完整的节点应该有四个功能,如下图所示:

矿池连接不上终极方案

《精通比特币》学习:比特币网络“P2P网络架构”

一个具备四个完整功能的比特币网络节点:钱包、矿工、全区块链、网络路由节点

但并不是每个节点都需要如此完整的功能。例如,一些只挖掘和扩展比特币网络中最常见的节点类型,如下图所示:

矿池连接不上终极方案

《精通比特币》学习:比特币网络“P2P网络架构”

3、比特币主网和扩展比特币网络

比特币主网由运行不同版本的比特币核心客户端(Bitcoin Core)的大约7,000-10,000个监听节点,以及运行各种比特币P2P协议(如BitcoinJ、Libbitcoin、btcd等)的数百个应用节点组成。主网上的少数节点也是挖矿节点,但更多的挖矿节点是通过矿池挖矿协议连接到主网上的矿池服务器连接的挖矿节点。

矿池连接不上终极方案

简单理解:主要网络节点通过运行P2P协议相互连接。主网节点主要是核心客户端、全节点客户端和轻量级钱包等节点。另外,矿池服务器和Stratum服务器通过P2P协议桥接主网,然后矿池节点通过矿池挖矿协议接入矿池服务器,Stratum挖矿节点和轻量级Stratum钱包节点通过 Stratum 协议连接到 Stratum 服务器,从而形成一个完整的比特币网络,也称为扩展比特币网络。

4、边缘路由器

主网中有很多全区块链节点,这些节点有全区块链和网络路由节点,但没有钱包和挖矿功能矿池连接不上终极方案,这些节点是网络中的边缘路由器。那么这些节点既不能用来挖矿赚钱,也不能转移交易矿池连接不上终极方案,那它们能做什么呢?这些节点都是大公司运营的节点。通过它们可以搭建其他的服务,比如交易所、钱包、区块浏览器、商户交易处理等等,你看到交易所的眼睛亮了吗?

矿池连接不上终极方案

使用多种节点类型、网关和协议扩展比特币网络

5、网络发现节点:

当一个新节点启动时,它必须发现并连接到网络中至少一个现有节点。由于节点可以随时加入和离开,节点之间的通信路径是不可靠的,因此节点必须继续执行两个任务:一是在节点连接丢失时发现新节点,二是在其他节点连接丢失时创建新节点。节点启动。提供帮助。

矿池连接不上终极方案

6、完成缺失的方块:

一个完整的区块链节点连接到对等节点后,第一步就是构建一个完整的区块链。新节点需要从创世块开始下载数十万个块的全部内容。新节点和对等点交换包含其本地区块链顶部块哈希的信息,如果对等点发现它收到的哈希不是顶部块,它会告诉它自己的本地区块链比其他对等点长。拥有较长区块链的节点可以识别出哪些区块由其他节点补充,前500个可供共享的区块通过使用INV消息传播这些区块哈希,缺少这些区块的节点通过getdata消息请求完整的区块信息. 新节点收到对等节点的inv消息后,

7、简单支付验证(SPV)节点

并非所有节点都有能力存储完整的区块链账本,例如手机。对于此类设备节点,SPV 允许它们工作而无需存储完整的区块链节点。SPV节点只下载区块头,不下载区块中的交易信息,得到的区块链大小仅为全区块链大小的1/1000。SPV 节点在验证交易时需要依赖完整的区块链节点。一个完整的区块链节点就像一个拥有完整城市地图的游客,而一个SPV节点就像一个只知道当前道路名称的游客,虽然两个游戏都可以验证当前街道是否不是。它存在,但是没有地图的游客不知道当前街道是唯一的街道还是他正在寻找的街道,所以他只能向足够多的陌生人问路,希望别人不要抢劫他。SPV 节点使用 getheaders 消息而不是 getblocks 消息来获取块头。响应的对等方将在单个标头消息中发送多达 2000 个块标头。

8、SPV 节点的隐私风险

由于 SPV 节点需要读取特定交易来选择性地验证交易,因此会出现另一个隐私风险。与收集每个区块内所有交易的全区块链节点不同,SPV 节点对特定数据的请求可能会无意中泄露钱包中的地址信息。例如,监控网络的第三方可以跟踪 SPV 节点上的钱包请求的所有交易信息,并使用这些交易信息将比特币地址与钱包的用户相关联,从而损害用户的隐私。比特币开发人员添加了一个新功能:Bloom 过滤器来解决 SPV 节点的隐私风险。布隆过滤器允许 SPV 节点通过概率而不是固定模式过滤机制仅接收交易信息的子集,