一、概念
区块链本质上是一个特殊的分布式数据库,主要用来存储数据。区块链里面没有中心节点,每个节点都是平等的地位,都保存这整个数据库。因此任何人都可以搭建服务器,加入区块链,成为其中一个节点。
区块链的最大特点就是它没中心,没有管理员。
二、区块
区块链由一个个区块组成,每次新建数据时就创建一个区块,区块一个个前后连接,这样就组成了区块链。
区块主要包含两个部分:
- 区块头:记录当前区块的特征值
-
区块体:包含实际的数据
区块
区块链的hash值是256位的,主要由区块头来生成,区块头里包含了上一个区块的hash值,也包含了区块体的hash值,这些特征结合起来计算出一个256位的hash值就代表这个区块。
三、Hash 的不可修改性
由区块的特性和生成的规则来看,有下面两个推论:
- 每个区块的hash值都不一样,可以用hash值来代表这个区块。
- 如果区块的内容变了,区块的hash值肯定会变,因为区块头中有一个区块体的hash值。
看到这边可能会有一个疑问,区块链技术没有管理员,所有人都可以使用,都可以保存自己的数据,那么怎么保证数据的安全性,自己的数据不被更改????
上面提到,区块头中保存着上一个区块的hash值,因此当这个区块的数据被修改时,不仅要让其他节点同步这个数据,也要一次修改关联的下游区块,hash的计算非常耗时,短时间内修改多个区块几乎不可能发生,除非有人掌握了全网51%以上的计算能力。
正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。
四、Hash计算的复杂性
通过上面我们知道了一个结论,区块链的数据很安全,几乎不会被篡改,理由是hash的计算相当复杂,现在的计算机计算能力很恐怖,为什么hash的计算会这么复杂????
主要原因是找到区块合适的hash值很难,大部分计算的hash值都不符合区块的要求。为啥呢???
(未完待续)
参考:
[1] http://www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
[2]https://charlesliuyx.github.io/2017/09/24/%E4%B8%80%E6%96%87%E5%BC%84%E6%87%82%E5%8C%BA%E5%9D%97%E9%93%BE-%E4%BB%A5%E6%AF%94%E7%89%B9%E5%B8%81%E4%B8%BA%E4%BE%8B/
[3] http://www.ruanyifeng.com/blog/2018/01/bitcoin-tutorial.html
[4] https://mp.weixin.qq.com/s/hoRLBOGfDOe57dEzdNzMoQ
网友评论