新生大学2018年10月份推出了区块链技术系列课程之《树哥解读以太坊》,由树哥主讲。本简书文集记录我的学习笔记。
一、区块头的由来
交易数据的公开、可溯源、不可篡改是让区块链与中心化系统相比的最大优势。
区块链由一个个区块组成,每个区块相当于一个小账本。要保障这些小账本的安全,需按照严格顺序排列,并保存到成千上万台电脑上。如何保障这些小账本的顺序,就需要在区块中设置一些参数。这些参数放在一起就组成了小账本的扉页,这就是区块头。
二、区块头的内容
2.1 区块头中有代表区块严格顺序的参数信息
这类有三个参数:区块编号(高度),生成时间,父区块哈希值。
区块编号:按照区块出生日期确定,且是唯一的。例子:2000,2001,2002
生成时间:生成区块的时间,如,2019-01-21 20:19:40
父区块哈希值:上一个区块的数字指纹。2000号区块存着1999号区块的哈希值。
2.2 区块头中有保障数据不可篡改及快速定位交易的参数信息
仅仅确定顺序,还不能保障信息不被篡改。区块链还需要“数字指纹”技术来保障区块信息的不可篡改。
数字指纹的特点是简洁、敏感。数字指纹除了用在父区块哈希值,还用在默克尔树中。
默克尔树可实现快速定位交易。关于默克尔树参见→《默克尔树》这篇文章。
比特币的区块头汇总如下:
数据项 | 目的 | 更新时间 | 大小(字节) |
---|---|---|---|
Version(版本) | 区块版本号 | 更新软件后,它指定了一个新的版本号 | 4 |
hashPrevBlock(前一区块的Hash) | 前一区块的256位Hash值 | 新的区块进来时 | 32 |
hashMerkleRoot Merkle(根节点Hash值) | 基于一个区块中所有交易的256位Hash值 | 接受一个交易时 | 32 |
Time(时间戳) | 从1970-01-01 00:00 UTC开始到现在,以秒为单位的当前时间戳 | 每几秒就更新 | 4 |
Bits(当前目标的Hash值) | 压缩格式的当前目标Hash值 | 当挖矿难度调整时 | 4 |
Nonce(随机数) | 从0开始的32位随机数 | 产生Hash时(每次产生Hash随机数时都要增长) | 4 |
以太坊中还保存着用户状态和事件记录的根哈希值。
2.3 区块头中还有支持区块链其它功能的一些信息
如,以太坊中的GAS。
小结。
- 区块头中的参数信息规定每一个小账本在一条链的具体位置,让一个个没有关系的小账本组成了一个先后顺序严格确定、不可篡改、不断生长的区块链。
默克尔树的根哈希存储方式,既让区块链可以快速发现信息被篡改,又可以快速定位到具体的交易信息。 - 区块链的众多功能都在区块头的参数里得意体现。要想透彻了解一条区块链,就需要仔细研究分析它的区块头中的信息。
|
|
|
|
|
|
|
|
|
|
|
吉祥
2019年01月21日22:07:36