深入比特币原理(八)——比特币区块链

作者 Aaron 发表于 2018-02-28 09:52:48

文章来源:华为云社区

原文地址:https://bbs.huaweicloud.com/blogs/101384

 

比特币的出现使人们发现了一项具有巨大潜力的前沿技术——区块链,本节将讨论区块链在比特币中的工作原理。

我们先重温一下比特币白皮书中的一张图

深入比特币原理(八)——比特币区块链_第1张图片

当时我们说过这张图就是比特币区块链的雏形,比特币的区块一个一个按顺序连接在一起形成一根链条,被形象的称为区块链

区块是如何连接成区块链的?
首先我们看一下区块(Block)的结构

Size

Field Description
4 bytes Block      Size 区块大小,单位bytes
80 bytes Block      Header 区块头信息,详见下文
1–9 bytes (VarInt) Transaction      Counter 区块中交易的数量
Variable Transactions 区块中所有交易记录的数据 

区块的结构其实非常简单,下面我们再打开区块头(Block Header)的结构一看究竟

Size

Field Description
4 bytes Version 区块版本号,目前为2
32 bytes Previous      Block Hash 前置区块(父区块)的区块头Hash,Hash算法为double-SHA256
32 bytes Merkle      Root 区块中交易Merkle树根
4 bytes Timestamp 区块创建UNIX时间戳
4 bytes Difficulty      Target 工作量证明算法难度
4 bytes Nonce 通过变动该计数器来达成工作量证明要求的结果
  • 区块头的结构中包含一个字段Previous Block Hash,该字段包含父区块头Hash值。

  • 由于每一个区块头的Hash值都是唯一的,并且都会被包含在其子区块头中,所以区块的信息会影响其后面所有的区块。

  • 如果某一个区块被改变,区块头的Hash值就会改变,那该区块后面所有的区块都会需要重做,这需要耗费大量的工作量重新计算(工作量证明),从而保证了比特币区块链的稳定性和安全性。

     区块连接示意图:

深入比特币原理(八)——比特币区块链_第2张图片

区块的其他说明:

1.标识一个区块

  • 区块头哈希(Block Header Hash):区块头哈希有时也被称为区块哈希,它可以唯一的标识一个区块,该信息可以随时被计算,并存储在子区块的Previous Block Hash中。

  • 区块高度(Block Height):区块高度即区块在区块链中的位置(第几个区块),创世区块高度为0,每个区块对应一个唯一的高度,但同一高度下可能临时存在多个区块(这种分叉的情况我们在后面挖矿章节讨论)。早期区块高度不会存储在区块中,仅由每个节点自己动态维护,在比特币改进方案BIP-34中提出利用软分叉在coinbase的解锁脚本中添加块高度信息,并将块Version变为2,从227,835块之后全部块的Version已经为2,即包含块高度信息。


2.创世区块

  • 区块链的第一个区块被称为创世区块,比特币的创世区块在2009年创建,现在比特币的所有区块都可以反向追溯到创世区块。

  • 创世区块被静态植入比特币核心客户端中,不能被修改,所有比特币节点都将从创世区块开始构建区块链。

  • 创世区块的Hash:000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

  • 中本聪在创世区块中隐藏的植入一段文字:“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”(这是英国泰晤士报当天的头条新闻标题,一方面证明区块的创建真实时间,一方面暗讽中心化金融系统)

深入比特币原理(八)——比特币区块链_第3张图片

 

你可能感兴趣的:(区块链,比特币,区块链,比特币)