币安ceo

OKEx币

了解区块链之前,必须知道的4个名词

关键词:了解区块链

描述:区块是区块链中的基本组成部份,每个区块链的数据结构、每个在结构内包含的元素(前一个区块的Hash值、加密运算方式、时间戳、签名等等)都与整个区块、甚至整个区块链息息相关,正因为这种巧妙设计,令到区块链可靠性、不可逆、无法篡改的特性更为突出。而深入地了解区块中各项的组成部份及相互之间的关系,将对接下来学习建立属于自己的区块链及应用,打下良好的基础。

  区块链(Blockchain) 可简单形象化地可理解为很多分散在世界各地的区块(Block)以"链"(Chain)的形式串连在一起,就犹如一串铁链一样,由很多小铁环串成一条铁链。这就是区块链的形象化概念。

  那么,区块链中的区块实际上是什么呢?以下以比特币(BitCoin)区块链中的区块为例:

  一、区块(Block)

了解区块链之前,必须知道的4个名词

了解区块链

  上述这张简化版的比特币区块链图中有三个区块Block 1, Block 2, Block 3.

  每个区块都包含两个部份:

  区块头(Block Header)

  区块体(Block Body)

  1. 区块头(Block Header)

  先看看区块头的数据结构

  币安

1 2 3 4 5 6 7 8

struct header_structure { uint32_t nVersion; // 4 bytes - Version uint8_t hashPrevBlock[32]; // 32 bytes - Previous block header hash uint8_t hashMerkleRoot[32]; // 32 bytes - Merkle root hash uint32_t nTime; // 4 bytes - Timestamp uint32_t nBits; // 4 bytes - Difficulty Target uint32_t nNonce; // 4 bytes Nonce };

?

  版本号(Version)

  前一个区块的Hash值

  能让当前区块与上一个区块形成一个连结,而且能确保区块的顺序及过去区块的准确性;

  当前区块的Hash值一定比这个Hash值小;

  Merkle Tree Root(Merkle树根节点的Hash值)

  Timestamp 时间戳

  Difficulty Target 困难值:

  这个困难值每2016个区块会调整一次;

比特币买卖平台

  Nonce 随机数

  表示当前区块工作量证明PoW演算法进行的随机数;

  总区块大小固定为80 Bytes

  2. 区块体(Block Body)

  包含了产生该区块的所有数据,以比特币区块链为例,这里数据即交易记录(Transactions),并以Merkle Tree形式表示;

  在比特币区块中,比特币支出和接收交易是一起记录的,整个收支记录包括很多笔记录,而每一笔记录都有自己的索引编号,方便查询。

  同时,每笔记录中还包含了生成时间、引用交易的Hash值、交易记录索引编号、比特币支出地址等等的数据。而每一笔收支交易记录都有一个Merkle 节点Hash值,这也是Merkle Tree的一部份,决定了每一个地址都不能够重复交易或被伪造。

  以上就是比特币区块链中区块(Block)的结构,那刚才一直说的Merkle Tree 又是怎么一回事呢?

  二、Merkle Tree

  Merkle Tree是一种用来表示Hash值的数据结构。它的基本结构就是Binary Tree(二元树),每一个非叶子节点(Node),都被标示一个Hash值。由于Merkle Tree的发明人是Ralph Merkle,当然这就是这个资料结构的名称由来。

  他是会把每一笔交易的TxID透过SHA256做加密

  HA=SHA256(SHA256(TxA))

  HB=SHA256(SHA256(TxB))

  HC=SHA256(SHA256(TxC))

  HD=SHA256(SHA256(TxD))

  如此类推,然后两两连接(Concat)在一起,再进行加密:

  HAB=SHA256(SHA256(HA+HB))

  HCD=SHA256(SHA256(HC+HD))

  直至出现Merkle 币安平台 Tree Root为止:

  HABCD=SHA256(SHA256(HAB+HCD))

  这样就得出与上图一样的Merkle Tree。

  而这里Merkle Tree Root 也就是上面提到的头块头中的 Merkle Tree Root 部份,而下面的部份就是所有的交易记录。

  三、创世区块Genesis Block

  创世区块Genesis Block 这个名字听起来很像很了不起的样子,实际上就是区块链的第一个区块,结构上与链中其他区块都没差别。

  那么区块链中的创世区块、区块、Mrekle Tree的关系是怎样的?

  在创建区块链时,首先要建立创世区块Genesis Block,此时,Genesis Block 就会有属于它的Hash值,然后使用演算法运算,得出第一个区块Block #1,那么,Block #1也会有属于它的Hash值,还记得区块头结构中有个叫"前一个区块的记录"(Hash Of Previous Block Header)吗?没错,Block #1 就会把Genesis Block的值放进这个位置,这样,就相当于连结到前一个Block,即创世区块Genesis Block ,如此类推,不断产生的区块都使用这种方式连接起来,这样,就形式大家耳熟能详的区块链Blockchain了。

  区块到底能做什么呢?每一个区块,都能用来「记帐」,整个区块链Blockchain 串接起来就是一本完整的帐册,所以说,区块链Blockchain 也叫做Distributed Ledger(分散式帐本)。

  慢着,上面一直在说的Hash值又是什么啊?

  四、Hash

  Hash值比较

  在工作量证明PoW时,到底是怎样比较Hash 值的大小?其实就是将Hash值先转换为big integer再比较。

  Hash值对区块的影响

  每个区块的Hash 都是不一样的,可以通过Hash 标识区块;

  如果区块的内容变了,它的Hash 一定会改变;

了解区块链之前,必须知道的4个名词

了解区块链

  Hash的不可修改性

  由于区块与Hash 是一一对应的,每个区块的Hash 都是针对"区块头"(Head)计算的。

  上面提到,区块头包含很多内容,其中有当前区块体的Hash(注意是"区块体"的Hash,而不是整个区块),还有上一个区块的Hash。这也意味着,如果当前区块的内容变了,或者上一个区块的Hash 变了,一定会引起当前区块的Hash 改变。

  这一点对区块链有重大意义。如果有人修改了一个区块,该区块的Hash 就变了。为了让后面的区块还能连到它,该人必须同时修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于Hash 的计算非常耗时,同时修改多个区块几乎不可能发生,除非有人掌握了全网51% 以上的计算能力。

  正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。

本文转载自互联网,如有侵权,联系删除

相关推荐

据TNW消息,近日,门罗币社区公开强烈谴责

  门罗币社区谴责恶意挖矿行为并建议设立自治志愿者抵御加密劫持  据TNW消息,近日,门罗币社区公开强烈谴责,某些进行恶意挖矿行为的个人,这些人窃取用户电脑的算力来进行门罗币...

新手入门 2021.05.13 7 6

关于燕姿的电影,有什么最新消息吗?

  不知道啊,最近很少有她的消息!孙燕姿北京签售又夭折今夏用个唱“补偿"继22日在长沙签售新专辑《未完成》时,场面失控而被迫取消后,昨天下午,孙燕姿北京的签售活动也由于...

新手入门 2021.05.13 5 4

红木价格现在暴涨?

价格是涨了很多,比2000年要翻了一番,不过巴西酸枝在酸枝木里不算名贵,所以价格也不是怎么太高,而且还要看你家具的具体情况来定,比如光泽和质量,是否有白标,也都会影响你的价格各类红木价格翻了5到8倍...

新手入门 2021.05.13 5 3

火币哪些能做空

火币哪些能做空

币贝的上风有哪些?币贝的城池与穿云箭要害词:币贝刻画:跟着入股商场的连接兴盛,各类假造钱币的买卖仍旧变成了合流,入股者们经过网上购置钱...

新手入门 2021.05.13 7 5

评论列表
  • 这篇文章我将向大家介绍OKEx的注册使用教

    2021-04-18 18:15:40 回复该评论
  • 关于OKEx交易所介绍,您可以看下面这篇文章

    2021-06-15 21:06:07 回复该评论
  • 关于OKEx交易所介绍,您可以看下面这篇文章

    2021-08-30 15:07:23 回复该评论
  • 这篇文章我将向大家介绍OKEx的注册使用教

    2021-08-14 03:04:03 回复该评论
  • 这篇文章我将向大家介绍OKEx的注册使用教

    2021-06-01 21:26:01 回复该评论
  • 这篇文章我将向大家介绍OKEx的注册使用教

    2021-07-21 22:47:28 回复该评论