区块链学习

不了解Blockchain中的内部零件,谈何认知

2018-02-25  本文已影响12人  也可以成长

前文研读了比特币白皮书,不知道你是否有所收获呢?

接下来我们将一起继续学习区块链相关知识:区块的组成、结构、交易及Merkle树。

正文共: 1541字 2图

预计阅读时间: 5分钟

本文由《也可以成长》公众号整理 欢迎转载

** 区块链的组成 **

之所以叫区块链(英文名Blockchain)是因为它由一个个区块以链式结构组成的。

那区块链中的区块都是怎么链接在一起的呢?

在区块的链条中每个区块都有一个唯一的区块哈希,区块头中有一个字段来存放父区块的哈希。

第二个区块的父哈希为第一个区块的哈希,第三个区块的父哈希为第二个区块的哈希,这样类推,就把一个个区块链接起来了,形成了一个前向的链表。

每个区块的头信息中都要存父区块的哈希,那么区块哈希是产生的呢?

区块哈希其实是对区块头信息做一个名为SHA256算法得到的值。

我们可以把SHA256想象为一个装置,姑且称之为翻译黑箱吧,你丢给他一句话,它会立马吐出另外一句翻译好的话,也就是哈希(这让我想起了图灵测试中的原理)。

要得到哈希就得知道翻译前包括哪里内容,具体到比特币里,就涉及到了区块具体的数据结构了。

image

图灵测试原理模型

**区块的结构 **

区块是聚合了交易信息的容器数据结构。

区块由以下几部分构成:

那么区块头是什么样的结构呢?

区块头主要由三组数据组成:

区块链中每个区块除了区块头就都是本区块收集的交易数据。

交易实体依次排列,而区块头里的交易树根就是把交易以Merkle树的形式排列并且进行哈希迭代生成的。

区块中的首个交易是Coinbase交易,Coinbase交易也叫创币交易。

创币交易仅仅用来创建新的比特币,没有输入,不消耗UTXO(也就是未花费的交易输出)。

这笔交易只有一笔输出,支付到矿工的比特币地址。

比特币交易的数据结构主要由以下部分组成:

Merkle树的主要作用是用来做“完整性校验”的,也就是检查一下数据有没有损坏。

完整性校验是通过对数据进行哈希,然后比对哈希值来实现的。

Merkle树是从底向上构建的,最底下的叶子节点表示每一个交易的哈希,向上每一层的值是下面两个子节点的哈希值合到一起后做了一个哈希。

这样一层层向上迭代,就得到了数目更少的新一级哈希,最终必然形成一棵倒挂的树。树根是根哈希,也就是存到区块头中的哈希值。

这种数据结构的优点是使用它可以单独拿出一个分支来对部分数据进行校验,速度很快。

当交易数量增加很快时,校验路径长度增长就很慢,并且有了Merkle树,一个节点仅需下载区块头的80个字节,然后通过从一个全节点回溯一条小的Merkle路径就能确认一笔交易的存在。

(未完待续……)

相关链接

小白也能看懂的区块链

研读比特币白皮书(上)

研读比特币白皮书(下)

如果你想拥有一套快捷生活的方法论,如果你想压缩自己的时间,提高自己工作的效率,欢迎你的加入,目前有40+爱学习的小伙伴已经加入,满50人后开始涨价

image
上一篇下一篇

猜你喜欢

热点阅读