什么是区块链
区块链是一个没有管理员,每个节点都拥有全部数据,高可用的分布式存储系统。
通常的存储系统是怎样的?
通常的存储系统,诸如mysql,sqlserver,都是一块空间存储数据,一个软件管理数据,以及提供写入接口。但这样的存储系统会有什么问题呢?一般会出现,数据不安全性单点控制。
不过,通常工业上会给出相应的解决方案,针对问题一,经常会进行存储系统的集群,但是这样的话,也会衍生出一系列的问题,最常见的就是,读写是否一致。而针对单点控制这个问题的话,现在的解决方案就是多从读写。不过,多点控制写入之后,当数据不一致的时候,往往需要有一个算法来协商如何处理不一致的数据。
那区块链到底是一个什么样的存储系统呢?
、区块是一块存储空间,可以存储数据。
、区块链有很多节点,每个节点都可以保存了全部的数据,所以它是高可用的。
、每一个中心节点都可以生成区块,并写入数据,所以每一个节点都是中心节点,或者说区块链是去中心化的,要想控制整个系统,必须控制一半以上的节点,才能控制投票,于是这个系统没有管理员。
不过也正是区块链的节点太多,数据需要保持一致,导致系统的写入效率很低。
综上,区块链就是一个由很多存储系统组成的,并且存储相同数据,每个存储系统在整个系统中地位相同的一个存储系统组合。
二、什么是挖矿?
挖矿就是生成一个区块,链入区块链的过程。
区块分为,区块头和区块体。区块头存储了和这个区块,以及区块链相关的元数据,常见的三个属性有:前一个区块的哈希值、区块生成的时间、随机数。其中区块头中的哈希值是唯一区块标志。区块体是用来存储数据的,相当于小型数据库。区块头和区块体的关系相当于key-value关系。整个区块链的形成就是通过区块之间,下一块区块存储上一块区块的哈希,将所有区块形成一条链,这与数据结构中链表形成异曲同工。
那挖矿是不是很简单,生成区块,链入进去就可以吗?
显然不是得,这主要是因为区块链的三个特性决定的:
、历史生成的区块是无法改变的,不能像mysql一样对区块随机写。
、只能在最新的区块后面生成新区块。
、新区块的生成很难,必须满足一定条件的新块才有效。
三、区块链分叉
可能有人会问,都说区块链它的数据真实性很高,那它是怎么体现出来的呢?符合条件的区块,如果两个节点同时生产新区块,出现数据不一致,该怎么办?)
此时的话,这两个节点都会把自己挖到的矿链到自己本地的区块链上,同时这两个节点会将挖到的矿同步到全球其他节点,以便于其它节点同步完最新的数据后,这两个节点的数据会一步步的扩散传播,终究会在一个节点上汇集,然后,此时那个节点会判断此时哪条链的长度更长会以长度更长的区块链数据为准的。(这种处理方法有点类似于路由的ospf算法)。两个节点形成的不一致数据现象也叫区块链分叉。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。