五分钟,看懂区块链架构之数据层
市面上可见的区块链技术应用场景大致可分为这三类:
·数字货币(数字人民币、加密货币)
·通证(即“token”,暂且理解为一种代币)
·区块链+行业(溯源链、供应链金融、存证链.......)
那么,它们都是如何实现的呢?
换汤不换药,其实任何的区块链应用场景,都是基于区块链架构,由底层技术开发到应用层,进行层层嵌套、封装实现的。
(区块链基础架构)
今天,我们来认真分析一下区块链的数据层。
数据层
数据层是最底层技术,它包含两块功能:数据存储、账户和交易的实现与安全。
前面的内容咱们讲清了哈希函数、非对称加密技术、时间戳,接下来讲讲数据区块、链式结构、Merkle树,以及它们之间的关系。
(了解哈希函数&非对称加密技术,请参考以往《如何通俗易懂的理解区块链》一文)
(了解时间戳,请参考以往《区块链的时间戳承担什么样的角色》一文)
Merkle树
Merkle树(默克尔树、也称哈希树),由根节点、中间节点、叶节点组成。它的形状是这样的:
此处参考前面我们提到的一个公式:哈希函数H接受任意但有限大小的消息x并输出固定大小的哈希值h,即h=H(x)。
x1=A转账10块钱给B h1=a3fc27b01sakhsg
x2=A转账了10块钱给B h2=c6804n57s3p8dh
叶节点表示存储的信息,即x;
中间节点表示存储的信息的哈希值,即H(x);
根节点是将所有中间节点的哈希值的哈希值。
老样子,仍旧以转账为例:
X1=A转账10块钱给B 哈希值记为h1
X2=B转账10块钱给C 哈希值记为h2
X3=C转账10块钱给D 哈希值记为h3
X4=D转账10块钱给E 哈希值记为h4
那么用Merkle树怎么存储这一块的数据信息呢?先把h1、h2当做一个存储的信息Xa,再把h3、h4当做一个存储的信息Xb。
Xa=h1&h2 哈希值记为Ha
Xb=h3&h4 哈希值记为Hb
再把Ha、Hb当做一个存储的信息Xn。
Xn=Ha&Hb 哈希值记为Hn
如果有无数个信息需要储存呢?那么就按这种方法以此类推。或许,有的朋友可能产生疑问了,为什么是两块两块的信息进行存储,三块行不行?四块行不行?.......
或许可以,但存储数据的目的不仅在于防篡改,还为了便于查询。
Merkle树采用的是二叉树的结构,你只需要知道,这种结构确定存储路径,查询数据非常方便。说完Merkle树,再来谈谈数据区块、链式结构
数据区块与链式结构
数据区块就简单的认为是区块链中的“区块”部分,只是把它数据化了,数据区块由区块头和区块身组成,区块头包含前一区块的哈希值,以及连接前一个区块和后一个区块的数据信息。
链式结构就是将每一个保存了上一个区块哈希值的数据区块进行链接。
结构图参考如下:
这里面的目标哈希、随机数又怎么理解呢?
目标哈希,就是这一区块的存储信息的哈希值,你可以把它当成参考值。
试想一下,如果有人篡改了Merkle树上的数据,它的Merkle根就会发生变化,这与目标哈希值不符,可以轻而易举看到数据的篡改。
随机数,先理解为防篡改随机生成的一个数据,后面我们遇到具体案例再做详细说明。
本文 投糖网 原创,转载保留链接!网址:https://www.toutang.net/xiangmufenxi/677.html
1.投糖网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
