区块链就像一个单向链表,一个数据块中保存着三个信息。
- 真正的数据。
- 自己的地址(或是 ID)。
- 前一个数据块的地址。
通过追溯前一个块的地址,把所有的数据块存成了一条链。所以,我们叫其 BlockChain。
每个数据块的“地址”的编码使用了hash算法
hash 算法主要有几个功能。
- 用来生成唯一标识一个数据块的 ID(身份证),这个 ID 几乎不能重复。
- 用来做数据的特征码。只要数据中一个 bit 的数据出现更改,那么整个 hash 值就完全不一样了。而且数据学上保证了,我们无法通过 hash 值反推回原数据。
区块链的协议格式
- Version:当前区块链协议的版本号,4 个字节。如果升级了,这个版本号会变。
- Previous Block Hash:前面那个区块的 hash 地址。32 个字节。
- Merkle Root:这个字段可以简单理解为是后面交易信息的 hash 值(后面具体说明一下) 。32 个字节。
- Timestamp:区块生成的时间。这个时间不能早于前面 11 个区块的中位时间,不能晚于 " 网络协调时间 "——你所连接的所有结点时间的中位数。4 个字节。
- Bits:也就是上图中的 Difficulty Tagrget,表明了当前的 hash 生成的难度(后面会说)。4 个字节。
- Nonce:一个随机值,用于找到满足某个条件的 hash 值。4 字节。
此文章为4月Day11学习笔记,内容来源于极客时间《左耳听风》,强烈推荐该课程!