这里是看阮一峰大佬的一篇文章的简单记录,只是搬运工。
一、区块链的本质
一句话,它是一种特殊的分布式数据库。
首先,区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。
二、区块链的最大特点
区块链没有管理员,它是彻底无中心的。
没有了管理员,人人都可以往里面写入数据,怎么才能宝成数据是可信的呢?被坏人改了怎么办?
三、区块
区块链由一一个个区块组成。区块很像数据库的记录,每次写入数据,就是创建一个区块。
区块包含两个部分:
1、去块头:记录当前区块的元信息
2、区块体:实际数据
什么是hash,要着重理解。所谓hash,就是计算机可以对任意内容,计算出一个长度相同的特征值。
两个重要推论:
推论1、每个区块的hash都是不一样的,可以通过hash标识区块。
推论2、如果区块的内容改变了,它的hash一定会改变。
四、hash的不可修改性
区块与hash是一一对应的,每个区块的hash都是针对“去块头”计算的。
一点很重要:
如果当前区块的内容改变了,或者上一个区块的hash变了,一定会引起当前区块的hash改变。
这一点即联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。
五、采矿
节点之间必须要保证同步,所以新区块的添加速度不能太快。大概十分钟产生一个区块。
那么是采矿呢,采矿就是通过极其大量的计算,得到当前区块的有效hash,从而把新区块添加到区块链,这个过程就叫采矿。计算hash的机器就叫做矿机,操作机器的人就叫做矿工。
六、难度系数
这里就不赘述了,总之一句话,计算出满足条件的hash特别难,需要极其大量的计算。
七、难度系数的动态调节
这一点怎么理解呢,中本聪在设计区块链的时候是十分钟产生一个区块,但是这个并不是就是说完全的10分钟产生一个区块,有个刚好10分钟,有可能五分钟一个,也有可能一个小时产生一个。所以需要动态的调节产生区块链的难度系数。中本聪规定,难度系数每两周调整一次。
八、区块链的分叉
同步问题,即同一个时刻,有两个区块加入,都连着前面一个区块,那么这样就形成了分叉,这时该如何选择呢?
六次确认:看哪个分叉在分叉点后面,先达到6个新区块。