【自学区块链】笔记 01:什么是区块链


区块链的概念

时间戳服务器对以区块(Block)形式存在的一组数据实施随机散列并加上时间戳,然后将该随机散列进行广播,就像在新闻或世界性新闻组网络(Usenet)的发帖一样。显然,该时间戳能够证实特定数据于某特定时间是的确存在的,因为只有在该时刻存在了才能获取相应的随机散列值。每个时间戳应当将前一个时间戳纳入其随机散列值中,每一个随后的时间戳都对之前的一个时间戳进行增强(Reinforcing),这样就形成了一个链条(Chain),即区块链,如图所示:

构成区块链的区块是基于密码学生成的,每一个区块包含了前一个区块的哈希值(由加密算法生成的)、对应的时间戳记录以及交易数据等信息(对区块结构的详细介绍参见下一节相应内容)。本质上,区块链是包含这些交易记录的分布式系统,类似于一个账本。所以,区块链也被称为分布式账本系统。
不过,分布式账本系统是区块链狭义上的含义。广义上来说,区块链是一个统称,除了基于区块链结构的分布式账本系统,它还包括共识机制、智能合约、点对点网络、自治社区等一系列和分布式账本相关的功能。可以将区块链看作是很多个技术的组合。

区块的概念

1. 区块的含义

区块是区块链的组成单元,区块链就是由一个个区块组成的。
从本质上说,区块链中的区块是由一系列特征值和一段时间内的交易记录组成的一个数据结构。

2. 区块的结构

区块的数据结构由区块头和区块体组成。区块头包含了当前区块的特征值,区块体中包含的是实际的交易记录数据。

  • 区块头的组成

    字段 含义 长度(字节) 说明
    ver 版本 4 区块版本号
    pre_block 父区块哈希值 32 前一区块的哈希值
    mrkl_root Merkle根 32 该区块中交易的Merkle树根的哈希值
    time 时间戳 4 该区块产生的近似时间,精确到秒的UNIX时间戳,必须严格大于前11个区块时间的中值,同时全节点也会拒绝那些超出自己两个小时时间戳的区块
    bits 目标难度 4 该区块工作量证明算法的难度目标,已经使用特定算法编码
    nonce Nonce 4 为了找到满足难度目标所设定的随机数,为了解决32位随机数在算力飞升的情况下不够用的问题,规定时间戳和coinbase交易信息均可更改,以此扩展nonce的位数
  • 区块体
    区块体主要包括交易数量(n_tx)、区块大小(size)和长度不定的交易记录(tx字段包含的交易列表)等信息。但这只是比特币中的区块体结构,实际上区块体中可以包括任何内容,比如以太坊中的区块体中除了交易数据还包含智能合约。