区块链笔记
一、区块链
1、区块链:分布式数据库
1、最大特点:没有管理员,彻底无中心的。
2、区块链由一个个区块(block)组成,每次往区块链写入数据就是创建一个区块。
3、每个区块包含两个部分:
区块头(Head):记录当前区块的元信息
区块体(Body):实际数据
4、区块头包含当前区块的多项元信息:
① 生成时间
② 实际数据(即区块体)的Hash
③ 上一个区块的Hash
④ ……
5、区块链的Hash长度是265位二进制数据。
推论1:每个区块的Hash都是不一样的,可以通过Hash标识区块。
推论2:如果区块的内容变了,它的Hash一定会改变。
6、区块与Hash是一一对应的,每个区块的Hash都是针对“区块头”(Head)计算的。
7、因为某一区块包含上一个区块的Hash,所以如果要修改这个区块,这个区块的Hash就会改变,同时引起上一个区块的改变,进而造成整个区块链的改变。如果有人要恶意篡改区块的信息,必须修改整个区块链,但这种情况几乎不可能发生,除非有人掌握了全网51%以上的计算能力。所以,数据一旦被写入,就无法修改。
二、采矿:
1、中本聪故意让添加新区块变得很困难。平均10分钟一个。计算Hash的机器叫做矿机,操作矿的人叫做矿工。
三、难度系数:
1、只有满足条件的Hash才会被区块链接受。区块头包含一个难度系数(difficulty),这个值决定了计算Hash的难度。区块链协议规定,使用一个常量除以难度系数,可以得到目标值(target)。显然,难度系数越大,目标值就越小。只有小于目标值的Hash才是有效的。由于目标值非常小,Hash小于该值的机会极其渺茫,所以采矿会很慢。
2、区块头里面还有一个Nonce值,记录了Hash重算的次数。
3、难度系数会动态调节,为了将难度系数恒定在10分钟。
四、区块的分叉:
1、如果两个人同时向区块链写入数据,采取的规则是:
新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区快(成为“六次确认”)。由于新区快的生成速度由计算能力决定,所以这条规矩就是说,拥有大多数计算能力的那条分支,就是正宗的比特链。
- 本文作者: Hbin
- 本文链接: https:/hbinfree.github.io/2021/01/10/区块链笔记/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!