区块链

93 阅读1分钟

区块链就像一个单向链表,一个数据块中保存着三个信息。

  • 真正的数据。
  • 自己的地址(或是 ID)。
  • 前一个数据块的地址。

通过追溯前一个块的地址,把所有的数据块存成了一条链。所以,我们叫其 BlockChain。

image.png

每个数据块的“地址”的编码使用了hash算法

hash 算法主要有几个功能。

  • 用来生成唯一标识一个数据块的 ID(身份证),这个 ID 几乎不能重复。
  • 用来做数据的特征码。只要数据中一个 bit 的数据出现更改,那么整个 hash 值就完全不一样了。而且数据学上保证了,我们无法通过 hash 值反推回原数据。

区块链的协议格式

image.png

  • Version:当前区块链协议的版本号,4 个字节。如果升级了,这个版本号会变。
  • Previous Block Hash:前面那个区块的 hash 地址。32 个字节。
  • Merkle Root:这个字段可以简单理解为是后面交易信息的 hash 值(后面具体说明一下) 。32 个字节。
  • Timestamp:区块生成的时间。这个时间不能早于前面 11 个区块的中位时间,不能晚于 " 网络协调时间 "——你所连接的所有结点时间的中位数。4 个字节。
  • Bits:也就是上图中的 Difficulty Tagrget,表明了当前的 hash 生成的难度(后面会说)。4 个字节。
  • Nonce:一个随机值,用于找到满足某个条件的 hash 值。4 字节。

此文章为4月Day11学习笔记,内容来源于极客时间《左耳听风》,强烈推荐该课程!