011 比特币的主心骨:网络节点 (nodes)

我是马克周,一个对数字加密货币和区块链深感兴趣的撰稿人;热衷编程学习和币价技术分析。

你可以在这里找到我

LinkedIn:www.linkedin.com/in/mark-zhou-ab01b637

TradingView:www.tradingview.com/u/xiucat

011 比特币的主心骨:网络节点 (nodes)_第1张图片

作为整个生态链的一环,网络节点一直担任着交易确认和广播的工作。

网络节点有很多种,但也有不同的分类方法。按照最常见的一种分法,网络节点有三种:

第一种叫做完整节点 (Full node);

第二种是完整节点的变体,叫做修剪节点 (Pruning node);

第三种则不是完整节点,通常被称作 SPV 节点,也称轻量节点 (Lightweight node)。

这种分类方式基于两点差异:一是这个节点是否下载了最新最完整的比特币区块链;第二个区别,也是更为重要的一点,是该节点能否独立验证比特币的转账交易,即能否独立实现作为一个节点的基本功能。

在细说这三种节点前,有一个前提需要明确,那就是任何一种比特币节点,都需要遵守比特币的共识规则 (Consensus rules)。分散共识机制 (Distributed Consensus) 是比特币的根基之一,是所有节点必须遵守的,共识规则的细则有不少,比如下面这些:

每个区块仅能产生特定数量的比特币 (当前是 12.5 比特币/区块)。Blocks may onlycreatea certain number of bitcoins. (Currently 12.5 BTC per block.)

在一条区块链内,任意一笔转账都不能够被二次转出 (双花,Double-spending)。Within a single block chain, a transaction output cannot be double-spent.

来源:

https://en.bitcoin.it/wiki/Full_node



011 比特币的主心骨:网络节点 (nodes)_第2张图片
(上图:全球比特币完整节点的数量,截止到2017年10月30日)

接下来我们详细介绍一下这三种节点。

先来看看第一种完整节点。顾名思义,完整的比特币节点就是那些下全了最新区块链的计算设备。完整节点是比特币网络的主心骨。因为可以独立完成交易确认和广播,它是支撑着比特币转账交易的核心力量。如果没有人运行完整节点了,比特币网络便会瞬间崩塌。使用完整节点的主要包括两类人,一是独立挖矿的矿工,二是那些使用默认设置运行比特币软件 (Bitcoin core) 的用户 (比特币软件同时也是一个钱包,因此运行比特币软件的个人用户里,有不少也会用它存储比特币)。

独立挖矿的矿工需要完整的区块链账本,以便随时验证新交易。比特币软件默认会自行同步当前完整的区块链。

011 比特币的主心骨:网络节点 (nodes)_第3张图片

最近两天,我终于把比特币软件装好,开始同步区块链了。这时候,很多跟我一样使用个人电脑运行完整节点的人,会遇到一个共同的问题,那就是硬盘容量不够大。目前比特币的区块链已经超过了 150 GB。随着比特币交易不断增加,这个数字会越来越大。面对这样的情况,从 0.12.0 版本开始,Bitcoin core 软件增加了一个 “修剪 (Pruning)” 功能,用来减少本地硬盘使用量。



前面提到的第二种修剪节点,就是启用了 “修剪” 功能的完整节点。修剪节点同样可以独立完成比特币转账的确认,但是它并没把整个区块链都下载到本地。尽管没有图形化的开启/关闭按钮,启用修剪功能也不麻烦:在第一次启动 Bitcoin core 软件时,软件会要求用户选择存放区块链的文件夹位置 (可以理解为迅雷存放下载文件的位置)。用户只需在这个文件夹的根目录下,自行创建一个名为 “bitcoin.conf” 的设置文档,并且写入 prune=N 这行代码即可。其中,N 便是本地存储的区块链大小,N=0 意味着不设限制,完整下载;若需设限,最小可用值为 550 。N 的单位是 MB。

011 比特币的主心骨:网络节点 (nodes)_第4张图片

如果打算启用 “修剪” 功能,或者因为其他原因,需要修改 bitcoin.conf 文档,推荐大家使用这个 Github 上的开源工具进行相应操作。这个工具设计了图形化设置选项,更改某项后,会自动生成对应的代码,避免因为代码错误而造成不必要的麻烦。

链接地址:

https://jlopp.github.io/bitcoin-core-config-generator/



第三种节点叫做 SPV 节点,或称轻量节点。如果你在自己的手机上安装了比特币钱包 APP,你的手机便成为一个 SPV 节点。在这些移动计算设备上,由于容量限制,以及对于便携性的高要求,人们通常不会下载区块链到本地。因此,钱包的运营者会通过 SPV (Simple payment verification) 协议,将每个用户钱包中的转账与网上的完整区块链进行核对与确认。

比特币开发者通常会建议用户使用完整节点或者修剪节点作为比特币钱包,即使不把它们当做钱包来用,也不妨运行一个完整节点。从整个比特币生态的角度来看,运行完整节点是对比特币网络很好的支持,完整节点越多,比特币网络就越安全。从个人使用的角度来看,使用完整节点作为钱包,可以避开信任问题:无需将自己的比特币托付给第三方钱包软件,自己的软件就可以独立验证和确认交易。可以这样说,运行完整节点,是比特币创立之初所推崇的去中心化原则的体现。



- [ THE END ] -

你可以在这里找到我

LinkedIn:www.linkedin.com/in/mark-zhou-ab01b637

TradingView:www.tradingview.com/u/xiucat

你可能感兴趣的:(011 比特币的主心骨:网络节点 (nodes))