区块链一个重要特征是分布式存储,那么什么是分布式存储?相对于传统存储,分布式存储的特点如何?账本、节点又是什么?厘清这些概念,可以深刻理解区块链。
分布式存储/Distributed Data Store/DDS
传统上的分布式存储本质上是一个中心化的系统 ,是将数据分散存储在多台独立的设备上,采用可扩展的系统结构、利用多台存储服务器分担存储负荷、利用位置服务器定位存储信息。而基于P2P网络的分布式存储是区块链的核心技术,是将数据存储于区块上并通过开放节点的存储空间建立的一种分布式数据库,解决传统分布式存储的问题。
P2P存储/Peer -to-Peer Storage/P2P Storage P2P
存储是一一种不存在中心化控制机制的存储技术。P2P存储通过开放节点的存储空间,以提高网络的运作效率,解决传统分布式存储的服务器瓶颈、带宽而带来的访问不便等问题。
账本/Ledger
账本是指包括区块链的数据结构、所有的交易信息和当前状态的数字记录。分布式账本/Distributed ledger Technology/DLT分布式账本是指一种在网络成员之间共享、 复制和同步的数据库,分布式账本在区块链中是一个通过共识机制建立的数字记录,区块链网络中的参与者可以获得-一个唯一、真实账本的副本 ,因此难以对分布式账本进行篡改。更改记录的方式非常困难,技术非常安全。
节点node
节点是区块链分布式系统中的网络节点,是通过网络连接的服务器、计算机电话等,对不同性质的区块链,成为节点的方式也会有所不同。以比特币为例,参与交易或挖矿即构成一个节点,在全网记账的过程中,每个节点在里面起到的作用都至关重要。节点与节点间除了可以进行交易广播以外,节点还可以进行记账。简单来说,节点分为以下几种:
1.全节点:这种节点会将历史上所有的区块数据(包含所有交易)都下载下来,因此,这种节点可以独立的进行比特币地址的余额验证、交易有效性验证、历史交易验证等工作。由于全节点需要保留比特币网络上所有的交易数据,因此它会根据网络上广播的新区块信息,不断的新增最新的数据,保证区块链数据处于最新的状态。由于上述原因,全节点对此特币交易的脸证是最安全的。我自己安装的就是这种节点类型的客户端。但是这种节点的缺点也很明显,由于需要下载历史上所有交易数据,这种节点显得特别笨重。根据我自己的经验, 2013年时全节点大小在几十个G,最近( 2017.8)全节点大小已经达到130G左右。
2.SPV节点:由于移动设备的飞K速发展,在手机Pad等便携设备上进行比特币交易的需求越来越旺盛。显然在存储空间有限的便携设备上,无法安装“全节点”。因此比特币系统支持种轻量级的节点客户端。这种客户端只会下载区块的关键数据,比如区块的Hash值, Nonce数值等数据~通过这些数据就可以知道区块链概况。这些关键数据只有区块全量数据的1/1000,因此客户端会显得很轻便。但SPV节点的问题是,在进行交易验证时,必须通过网络从全节点处获取验证所需的信息,才可以进行验证。如果你身边有黑客建立的伪节点(如受到Sybil攻击) ,可能会干扰你的验证过程。因此,要保证万无一失的安全性,最可靠的方法还是建立一个“全节点”。C.矿工节点:前面讲到,部分节点要通过大量、不停歇的计算,去争取组装区块及发起全网记账的权利(上面提到过,这个过程叫工作量证明PoW).这样的工作不是每个节点都要做的,而只有矿工节点才会去做。为什么叫做”矿工”节点呢?因为每次这类节点算出谜题并争取到组包记账的权利时,比特币系统会给这个节点奖励一定数量的比特币。这个过程非常像是一一个矿工在很费力的挖矿,奖励的比特币就是这个矿工挖到的矿。这也是为什么,有的文章说“挖到1个block,就可以得到XXX个比特币” ,其实它的实际意思是:矿工节点通过不停运算,争取到组装1个新block并发起全网记账的权利后,可以得到XXX个比特币的奖励。讲到这里,你也该明白:实职要控制了51%的矿工节点就可能发起51%攻击。
注:可能你会好奇,奖励的比特币怎么打入矿工的账户的呢?其实简单来讲,奖励的比特币也是一笔交易 ,但这笔特殊的交易没有输入( inputs ) , 只有输出( outputs )。outputs 里记录的就是矿工节点上登记的公钥地址,所以挖出的比特币只有矿工节点所有者用自己的私钥才可以解锁,这样就实现了对矿工的奖励。上面介绍的是最典型的几类节点,在比特币网络上还有矿池节点等其它一些节点 ,就不做过多介绍了。当然上面几类节点的功能完全可以搭建在同-个节点上,这取决于节点搭建者具体想用节点来做什么。
添加BSN运营微信号或关注BSN研习社公众号,一手干货,技术交流,等待着你来发掘......