去中心化存储定义
去中心化存储项目包括,以硬盘空间作为算力证明挖矿的POC共识项目,和以分布式储存为算力挖矿的储存服务项目。数据存储就是将一定量的数据通过不同的存储架构存储到不同的存储介质当中。现在的商业生态,数据存储是建立在中心化的服务器和存储硬盘上,而在区块链网络上,数据的交互操作如:记账、一次性验证、计算、同步等,主要靠各个分布式节点网络的共同确认来促进信任、验证身份,保证了信息的透明、不被篡改伪造。
-------
下载比特币客户端的电脑可以理解为一个节点,而众多节点就构成了比特币网络。
节点和比特币网络
其概念与中心化相对,中心化是指所有交易都由一个中心来进行记录以及存储,而去中心化则是每个人都拥有完整的交易记录,所以不需要中心的存在。在比特币网络中每一个节点都保存了完整的交易记录,同时节点也都有平等的记账权利。
中心化和去中心化
计算机保存数据都会存储在数据库软件里,而比特币网络中,每个节点保存交易记录的数据库用的就是区块链架构,所以区块链是比特币网络应用的一种底层技术。如果把区块链看作一个完整的账本,每个区块就是账本中的一页,节点想要记账就需要把交易记录打包进一个新的区块当中,然后把这个区块挂到区块链的末尾。
区块链简单图解
有两种含义,第一种指代的是一串字符形式的地址,这个地址类似银行账号,交易双方需要知道地址才可以进行转账操作;第二个含义指代一种软件,它的作用是帮助用户发起交易,并将交易内容广播到比特币网络中,收到交易的节点就会把新的交易记录在区块链中。
比特币钱包的两种含义
解释了这些术语后还是有一个关键问题没有解答,那就是为什么要用区块链架构的数据库进行存储操作呢?核心原因还是为了实现去中心化,去中心化需要两个前提,一是每个节点都拥有平等的存储权利,这一点很容易做到,每个节点都保存完整的交易记录就好,而第二点是每个节点都拥有平等的记录权利,这一点很难做到。整个比特币网络中有大量的节点,新的交易发起后并不能在一瞬间通知到所有的节点,而是通过一个节点向周围的节点扩散,需要一段时间才可以通知到全部节点,而同一时间总有大量的交易发起,并且都通知到不同的节点上,那么就无法保证每个节点记录的内容都一样了,A节点可能记录了张三和李四的交易,B节点可能记录了玉田和长贵的交易,这样就导致账本就不一样了,那我们该怎么办呢?区块链架构就是为了解决这个问题而设计的,接下来我们再引入几个新的概念:
全称是Proof Of Work,是各个节点通过算力来竞争记账权利的一种机制,可以简单理解为在一段时间内只有一个节点拥有记账权利。由于只有一个节点记账,完成后再广播给其它节点,这样就保证了所有节点中交易记录的一致性。那么POW与区块链有什么关系呢?POW的算力竞争就是基于区块链的架构来进行的,我们接着往下看。
挖矿是一种非常形象的比喻,针对各节点竞争记账权利这个过程。这个过程可以简单理解为,各个节点收到交易信息后便开始计算一道很有难度的计算题,第一个计算出来的节点就获得了记账权利,而记账成功后就会得到系统奖励的一定数值的比特币,所以这一过程被比喻为挖矿,同时这也是比特币的发行过程。在一定时间内,只有竞争胜利者才能完成一轮记账,并向其他节点同步新增账本信息,这个过程就是区块产生的过程。由于只有一个人记账,完成后再广播给所有节点,所以保证了所有账目信息的统一,解决了去中心化的第二个问题,平等的记账权利,这就是为什么要用区块链架构的数据库来存储交易信息的原因。
每个节点挖矿时需要做的题目就是哈希运算。哈希(Hash)是把任意长度的输入,变换成固定长度的输出。
哈希举例
节点记账需要将交易数据打包进新的区块,而产生新的区块要做的就是生成新区块的哈希值,这就需要把上一个区块的哈希值、时间戳、要打包的交易以及Nonce值当作输入进行哈希运算来生成新区块的哈希值,而新生成的哈希值需要满足某个标准才算成功,这里的Nonce值是唯一的变量,所谓计算就是不断代入不同的Nonce值,直到得出符合要求的哈希值为止与其说叫计算不如叫猜更准确一些。所以算力更强的节点可以在同等时间内代入更多的数值,算出正确结果的概率也会更高一些。
区块内的数据
以上理解一定有很多不到位的地方,希望各位可以加以指正。我还会继续丰富相关内容,希望感兴趣的小伙伴可以与我多多交流。