美文网首页区块链区块链大学区块链研习社
区块链中的一些重要概念(必懂)

区块链中的一些重要概念(必懂)

作者: 清扬先生 | 来源:发表于2018-01-22 16:48 被阅读182次
    区块链中的一些重要概念(必懂)

    1.区块

    区块是一种被包含在公开账簿(区块链)里的聚合了交易信息的容器数据结构。它由一个包含元数据的区块头和紧 跟其后的构成区块主体的一长串交易列表组成。区块头是80字节,而平均每个交易至少是250字节,而且平均每个区块至少包含超过500个交易。因此,一个包含所有交易的完整区块比区块头大1000倍。

    2.区块头

    区块头由三组区块元数据组成。首先是一组引用父区块哈希值的数据,这组元数据用于将该区块与区块链中前一区 块相连接。第二组元数据,即难度、时间戳和nonce,与挖矿竞争相关,详见挖矿章节。第三组元数据是merkle树根(一种用来有效地总结区块中所有交易的数据结构)。

    3.区块标识符:区块头哈希值和区块高度

    区块主标识符是它的加密哈希值,一个通过SHA256算法对区块头进行二次哈希计算而得到的数字指纹。产生的32 字节哈希值被称为区块哈希值,但是更准确的名称是:区块头哈希值,因为只有区块头被用于计算。例如:000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f是第一个比特币区块的区块哈希值。区块哈希值可以唯一、明确地标识一个区块,并且任何节点通过简单地对区块头进行哈希计算都可以独立地获取该区块哈希值。

    请注意,区块哈希值实际上并不包含在区块的数据结构里,不管是该区块在网络上传输时,或是它作为区块链的一部分被存储在某节点的永久性存储设备上时。相反,区块哈希值是当该区块从网络被接收时由每个节点计算出来的。区块的哈希值可能会作为区块元数据的一部分被存储在一个独立的数据库表中,以便于索引和更快地从磁盘检

    索区块。

    第二种识别区块的方式是通过该区块在区块链中的位置,即“区块高度”。第一个区块,其区块高度为 0,和之前哈希值000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f所引用的区块为同一 个区块。因此,区块可以通过两种方式被识别:区块哈希值或者区块高度。每一个随后被存储在第一个区块之上的区块在区块链中都比前一区块“高”出一个位置,就像箱子一样,一个接一个堆叠在其他箱子之上。2017年 1月1日的区块高度大约是 446,000,说明已经有446,000个区块被堆叠在2009年1月创建的第一个区块之上。

    和区块哈希值不同的是,区块高度并不是唯一的标识符。虽然一个单一的区块总是会有一个明确的、固定的区块高 度, 但反过来却并不成立,一个区块高度并不总是识别一个单一的区块。两个或两个以上的区块可能有相同的区块 高度,在区块链里争夺同一位置。这种情况在“区块链分叉”一节中有详细讨论。区块高度也不是区块数据结构的一 部分, 它并不被存储在区块里。当节点接收来自比特币网络的区块时,会动态地识别该区块在区块链里的位置(区 块高度)。 区块高度也可作为元数据存储在一个索引数据库表中以便快速检索。

    提示一个区块的区块哈希值总是能唯一地识别出一个特定区块。一个区块也总是有特定的区块高度。但是,一 个特 定的区块高度并不一定总是能唯一地识别出一个特定区块。更确切地说,两个或者更多数量的区块也许会为了区块 链中的一个位置而竞争。

    5.创世区块

    区块链里的第一个区块创建于2009年,被称为创世区块。它是区块链里面所有区块的共同祖先,这意味着你从任 一区块,循链向后回溯,最终都将到达创世区块。因为创世区块被编入到比特币客户端软件里,所以每一个节点都始于至少包含一个区块的区块链,这能确保创世区块不会被改变。每一个节点都“知道”创世区块的哈希值、结构、被创建的时间和里面的一个交易。因此,每个节点都把该区块作为区块链的首区块,从而构建了一个安全的、可信的区块链。在chainparams.cpp里可以看到创世区块被编入到比特币核心客户端里。

    创世区块的哈希值为:

    0000000000 19d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

    你可以在任何区块浏览网站搜索这个区块哈希值,如blockchain.info,你会发现一个描述这一区块内容的页面,该

    页面的链接包含了这个区块哈希值:

    https://blockchain.info/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

    https://blockexplorer.com/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce2

    6f

    在命令行使用比特币核心客户端:

    $ bitcoin-cli getblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

    { "hash" : "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f",

    "confirmations" : 308321,

    "size" : 285,

    "height" : 0,

    "version" : 1,

    "merkleroot" : "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",

    "tx" : [ "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b" ],

    "time" : 1231006505,

    "nonce" : 2083236893,

    "bits" : "1d00ffff",

    "difficulty" : 1.00000000,

    "nextblockhash" : "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048"}

    创世区块包含一个隐藏的信息。在其Coinbase交易的输入中包含这样一句话“The Times 03/Jan/2009 Chancelloron brink of second bailout forbanks.”这句话是泰晤士报当天的头版文章标题,引用这句话,既是对该区块产生时间的说明,也可视为半开玩笑地提醒人们一个独立的货币制度的重要性,同时告诉人们随着比特币的发展,一场前所未有的世界性货币革命将要发生。该消息是由比特币的创立者中本聪嵌入创世区块中。

    区块链中的一些重要概念(必懂)

    相关文章

      网友评论

        本文标题:区块链中的一些重要概念(必懂)

        本文链接:https://www.haomeiwen.com/subject/wkxraxtx.html