首页 > 世链号 > 「区块链从入门到精通」:区块链的存储结构 | 第4讲
链内资讯  

「区块链从入门到精通」:区块链的存储结构 | 第4讲

摘要:区块头的结构说起来比较复杂。它包含了当前版本号、父区块哈希值、当前区块哈希值、时间戳、随机数、难度、梅克尔树等等一堆计算机术语

在第3讲中,我们学习了比特币网络中交易转账的流程,学习了公钥和私钥和UTXO模型的相关知识。在比特币网络中,每一笔转账交易、时间戳等信息都会存储在账本上。那么,在这个账本上,存储有哪些交易相关的信息呢?各个交易之间又是如何进行关联的呢?这就涉及到了区块链的存储结构的知识啦。

这节课,我们就来一起学习一下区块链的存储结构。

还记得第一节课中,我们聊到《崔杼弑君》的故事吗?在那一讲中,我们通过史官冒死记录史书的故事引出了区块链。区块链就是全世界的账本,是交易的集合,记录了区块链网络中发生的所有交易。史书也是一个账本,不过它记录的不仅仅是交易,而是历史上的一个个鲜活的故事。二者虽然在机制上有很多不同,但在形式上却有很多相似之处。

我们这节课再拿史书来类比区块链的账本,来帮助你更好的理解区块链的存储结构。

我们都知道,史书按照编排方式的不同,大致可以划分为编年体、国别体和纪传体。

所谓编年体,就是按照年月日的时间顺序来记录历史。像第一节中提到的《左传》,我们耳熟能详的《资治通鉴》,就是这一类史书。

国别体呢,就是按照国家的不同来分开编撰史书。秦国的历史是一本,齐国的、魏国的历史又是另外两本。经典的《战国策》就是国别体类型的史书。

至于纪传体,一说《史记》大家肯定就知道了,当年司马迁忍辱负重写《史记》的故事如今还“分布式”地被记录在无数学生的考试作文里。《史记》就是一本纪传体的史书,它是以人物为中心来记录历史的。每个著名的历史人物,都有独立的章节来记录他的故事,比如《史记·廉颇蔺相如列传》。

我们了解了不同的史书体裁,你可能就要问了:这和区块链账本有什么关系?区块链账本不就是简单的记录交易信息么,哪用得着这么复杂呢?其实这里面关系可大啦。

在区块链的世界中,可不仅仅只有比特币一条区块链,还有以太坊莱特币EOS等等成百上千条不同的区块链,每一条区块链都有一个自己的账本。如果我们把所有的区块链账本看成一部大的史书,那这一条条链,不就是另一种形式的诸侯国么?这本大史书就是区块链版的《战国策》。

聚焦到某一条区块链上,咱们就拿比特币区块链说事吧。比特币的账本就是把交易信息根据交易发生的先后顺序,一条一条地记录在这个大的账本上的。这就是一本编年体的史书,而这本史书的每一页,就是一个区块。每一页按照时间顺序井然有序地装订起来,就成为了史书。比特币网络还在不断的产生新区快,就像一本还在继续编写的史书,不断地往后加入新的一页。

那么史书中都是怎样记录历史信息的呢?我们来读一读最经典的一段史书,来找一找它和区块有哪些共同点。

孔子编写的《春秋》是我国现存的最早的一部编年体史书了。在《春秋》的第一章《隐公·隐公元年》里,开头记载到:

元年春王正月。三月,公及邾仪父盟于蔑。夏五月,郑伯克段于鄢。秋七月,天王使宰咺来归惠公、仲子之赗。九月,及宋人盟于宿。冬十有二月,祭伯来。夏五月,郑伯克段于鄢。这句话是不是有点耳熟呢?哈哈,相信不少朋友在自己的中学课本中曾经见过这篇文言文。我们来仔细看看这句话,这句话里记录了四个信息:什么时候、什么人在什么地点做了什么事。而上面这一整段话里一共记录了五件历史事件。

我们回到区块上来,比特币区块链中的区块由四个部分组成,分别是:区块头、交易详情、交易计数器和区块大小。如果用上面这段《春秋》做对比,可以很容易的理解这几个概念。

交易详情,就是指谁在什么时间转给了谁多少钱。举个例子:小明2018年12月1日8点33分付了5元钱给包子铺老板娘。这句话这就是交易详情,包含了时间,转入方、转出方和金额。这就是区块链上的“夏五月,郑伯克段于鄢”。当然,区块里的交易详情不需要记录地点,发生的事件也仅仅是交易这一种而已,不会像史书上那么丰富和精彩。更重要的是,由于区块链网络的匿名性,事实上交易详情记录的不是真实的谁转账给了谁,而是某个钱包地址转账给了另一个钱包地址。

交易详情很容易理解,那么交易计数器呢?顾名思义,交易计数器就是指这一个区块里记录了多少笔交易信息。就好比上面那一段《隐公元年》的史料里记录了五件历史事件,这个数量五,就类似于区块中交易计数器。

那么区块大小又应该怎么理解呢?

当年孔子编写《春秋》时候,还没有纸张,那时候的文字,大多是记录在一卷一卷的竹简上的。毕竟发明造纸术的蔡伦,五百多年后才出生呢。而每一卷竹简上的字是有上限的,因为一卷竹简只有那么大。区块也是一样的,2008年中本聪在设计比特币网络时,把每个区块的大小限定在了1M,这也就意味着每个区块里能存储的信息最多也只有1M。那么区块大小,就是指这个区块里面存储的信息,有多少个字节。可以把它理解成记载史书的竹简上有多少个字。但是这个数量是有上限的。

通过史书的类比,相信你应该很好地理解了区块中交易详情,交易计数器和区块大小。说到这里,你可能又要提出疑问了,区块头又是怎么一回事呢?

区块头的结构说起来比较复杂。它包含了当前版本号、父区块哈希值、当前区块哈希值、时间戳、随机数、难度、梅克尔树等等一堆计算机术语。我猜你可能要懵了,一堆专业名词真让人头大。

这一讲我主要来讲一下这里面两个核心的数据:父区块哈希值与当前区块哈希值。这是使得区块与区块之间有序连接的重要因素。

我先来讲一讲哈希值,关于哈希的技术解释,感兴趣的同学可以上网查一查相关的资料,我就不在课程中讲的太复杂了。简单来说,哈希值就是区块的数字指纹。我们都知道,世界上没有两片相同的树叶,也没有两个相同的指纹。指纹可以作为一个人独一无二的标识符,而哈希值可以作为区块的身份证,每一个区块都有一个独一无二的哈希值。

在每一个区块的区块头中,都会包含着父区块——也就是前一个区块的哈希值,用来指向前一个区块。这样可以使得每一个区块的上一个区块之间都是唯一的,而当前区块的哈希值,又会成为下一个区块的父区块哈希值,这样一块连着一块,就形成了一条区块链。

说到识别特定区块的方式呀,除了区块的数字指纹——哈希值,还有一种方式:区块高度。

区块高度是指什么呢?它就相当于史书的页码。我们经常看到史书的目录:卷一、卷二、卷三……这里的卷几能够帮助我们准确的定位具体的某一卷史书。区块高度就是区块的页码,方便我们知道这个区块在整条链上的位置。我们把第一个挖出来的区块的区块高度定为0,往后每产生一个新的区块,高度就加一。每一个区块都会有一个独一无二的区块高度。

刚刚我们说了区块链账本中的国别体和编年体,那么纪传体的区块链账本又长啥样呢,这里就涉及到轻钱包的知识了,后面的课程咱们再细聊。

好了,通过今天的课程,我相信你对区块链的存储结构有了一个清晰的认识。下一讲,我们来聊一聊区块链的三大特性。

                                                                                                     来源:区块链从入门到精通

Tags:
免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:trr3544。