Genesis Block
Merkle tree 是一种 hash tree,用来表示 hash 值的资料结构。Merkle tree 的发明人是 Ralph Merkle,当然这就是这个资料结构的名称由来。
Merkle tree 的基本结构是binary tree(二元树),每一个non-leaf 的节点(node),都被标示一个hash 值。
图 1:就是一个 binary Merkle Tree 的结构。其中,Top hash 的部份,就是 Merkle Root。
图1:Merkle Tree
学习Merkle tree 资料结构,可以说是「Blockchain 系统开发者」的第1 堂课。为什么这么说呢?
以图2 来看,分散(Distributed)在世界各地的所有Block 之间,以一个链(Chain)的关系串连在一起,这就是Blockchain(区块链)的概念与名称由来。
图2:Block 与Chain
Block #0
这些分散在世界各地的Block,都会有一个编号,如图3。这个编号就是区块产生的「顺序」。
图3:Block #0
这其中,就一定会有编号为0 的第一个区块,这个区块就称之为Genesis Block(创世区块),学习如何建立Genesis Block 就是Blockchain 系统开发者的第2 堂课。
而区块的产生「方式」,则可以由Blockchain 的系统开发者来设计。以Nakamoto Blockchain 来说(Bitcoin 的Blockchain 系统),区块的产生过程,就称为「挖矿」。
Blockchain 与Merkle Tree
那Merkle Tree 与Blockchain 的关系倒底是什么呢?将Blockchain、Genesis block 与Merkle tree 放在一起讨论时,它们的关系就是图4。
图4:Blockchain、Genesis block 与Merkle tree
如果我发展一个叫做Cui's Blockchain 系统时,一个粗略的起步应该就是:
-
建立Genesis block,genesis block 会有自已的一个hash 值,这个值是经由hash 算法产生,因此也叫做hash ID
-
利用算法,经过一段困难的算法运算,产生Block #1
-
Block #1 也会有自已的 hash ID,同时, Block #1 要使用 PreviousHash 栏位,串接到前一个 Block,它的前一个 Block 就是 Genesis block(Block #0)
-
同理,产生 Block #2 与更多 Blocks,这些 block 之间都用 PreviousHash 栏位串接,这条链就是 Block chain
到这边,还是很好奇 Merkle tree 的用途啊?回顾图 4 发现,每个 Block 裡面都会有 Merkle Root 栏位,这个栏位就是一颗 Merkle tree。
区块倒底能做什么呢?每一个区块,都能用来「记帐」,整个Blockchain 串接起来就是一本完整的帐本,所以说,Blockchain 也叫做distributed ledger(分布式帐本)。
更深入技术来看,区块里的Merkle tree 就是负责记帐的栏位。
本文链接地址:https://www.wwsww.cn/qkl/9464.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。