区块、链

准备

Hash

  1. Hash也称散列、哈希。基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出(更多解释见知乎arrow-up-right

  2. 特点是:相同的输入一定得到相同的输出,不同的输入大概率得到不同的输出

  3. 举例:用shell命令行下的md5sum 来计算任意的字符的MD5哈希

    $ md5sum <<< haha
    7494ab07987ba112bd5c4f9857ccfb3f  -
    $ md5sum <<< hehe
    e4439267203fb5277d347e6cd6e440b5  -
    $ md5sum <<< hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
    6f2362c812dcfd693da2e3ae537cfb41  -
  4. 常见的hash算法:

    • 文件防篡改:MD5

    • 比特币挖矿:SHA256

    • 证明数据片段:Merkle root

    • 文本去重:SimHash

区块

区块(block)由区块头(block header)和交易列表(transaction list,tx list)组成,block之间通过block header的hash连接成了一个链表结构。

block header

  1. 比特币的block header(Githubarrow-up-right

  1. 以太坊的block header(Githubarrow-up-right

  1. 当前我们只需要关注其中两个字段(其他字段会在后续课程中解释)

    • hashPrevBlock /ParentHash,上一个block header的hash

    • hashMerkleRoot/TxHash,tx list的hash

block body

block body

  1. block body就是tx list,block header通过TxHash指向唯一的tx list

  2. 从tx hash list得到TxHash的hash算法叫做默克尔树(Merkle tree),相比其他的hash算法有特殊的性质(可以简洁地证明tx存在其中)

  1. block header通过ParentHash指向唯一的上个block header,并最终形成一条链

    1. 高度为0的block称之为Genesis,即创世区块

      1. 写死在程序里(Githubarrow-up-right

      2. 也可以在btc.comarrow-up-right上看到比特币的创世区块,以及中本聪留下的那句话

        比特币创世区块上记录的报纸头条文章标题

        比特币创世区块上记录的报纸头条文章标题

    2. 高度最高的block称之为Tip,即最新区块

    3. 可以在etherscanarrow-up-right上观察以太坊链的情况

  2. TxHashParentHash相结合,赋予了区块链不可篡改的特性

最后更新于

这有帮助吗?