什么是区块链
区块链(block chain)的本质就是一个特殊的分布式数据库。他没有中心,任何一个节点都是平等的,每个节点都保有着整个数据库的所有信息。任何人都可以架设服务器加入这个分布式数据库中,成为其中的一个节点。每次写入数据,最后所有的数据节点都会同步这个数据,最终保持所有节点的一致性。
特点
既然说区块链是一种特殊的分布式数据库,他肯定有自己独特的特性使其有别于常见的其他分布式数据库。
其最大的特点就是 彻底去中心化。区块链任何一个节点都是平等的,不存在中心管理员,任何人无法控制和篡改其中的数据。
什么是区块
区块链的核心数据结构为区块(block),区块好比数据库中的记录,每次数据写入,就会生成一条记录,也就是产生一个区块。每一个区块首尾相连就构成了区块链。
每个block有两个部分,Header和Body,其中Header存储了这个区块的所有特征,即可以标识这个区块的信息;Body保存了这个区块的真正需要存储的数据值;
而对于Header中保存的各种特征中,两个hash值是至关重要的。
hash特性值
每一个区块的头部中保存着上一个区块的Hash值,这个Hash值是通过将上一个区块头部所有特征进行Hash得到的,而其头部的也保存着自己body的hash值。
这样子,保证了如果一个区块的内容被篡改了,其头部的hash必然发生改变,而头部变化,边然引起其hash值得变化,下一个区块的头部也会发生变化;这个特性决定了区块链很难被篡改,因为如果修改了其中的某一个区块,为了保证后面的区块还能够连接到他,必须依次修改后面的所有的区块,否则被改掉的区块就脱离了区块链。
这里存在一个问题,区块链要求所有的节点必须同步所有的数据,因此,当产生一个新的block时,所有的节点必须承认并同步该节点,如果产生新的block的速度很快,那样刚刚同步完新的区块,正要去计算新的区块,此时其他节点已经生成,不得不放弃当前的计算而去同步其他节点产生的新的区块;
为了解决这个问题,区块链的做法是增加计算现有节点hash的难度,通过设置海量计算的方式,使得经过一定的时间才能计算出下一个区块,而一旦某一个节点生成了新的区块,就会广播给所有的节点,其他节点放弃当前的计算,而去同步该区块。
与此同时,还有一个问题未解决,那就是即使增加了计算的难度,也可能出现两个节点同时计算出有效hash的情况,他们同时生成了新的区块,例如两个节点分别同时计算得到A和B两个区块,那么哪个节点是有效的呢 ?块链规定最快达到6个区块为标准,也就是说,在A、B的基础上谁先生成6个新的区块,那么就承认它所在的那个分支为唯一的分支,所有节点同步该分支的信息。