首页 > 区块链 > 2走进区块链-区块链内部结构
中心科技  

2走进区块链-区块链内部结构

摘要:区块链的区块头主要包括区块链根据不同的应用场景分为应用于公众的公有链,需要授权使用的私有链和联盟链,还有在原有区块链基础上进行扩展的侧链、跨链等,随着区块链的发展,相信还会有其他形式的应用出现。在开始之前我们需要先了解什么是哈希(Hash),哈希又称哈希函数或散列算法,简单的说,哈希函数是用于将任意

区块链根据不同的应用场景分为应用于公众的公有链,需要授权使用的私有链和联盟链,还有在原有区块链基础上进行扩展的侧链、跨链等,随着区块链的发展,相信还会有其他形式的应用出现。在开始之前我们需要先了解什么是哈希(Hash),哈希又称哈希函数或散列算法,简单的说,哈希函数是用于将任意大小(输入)的数据映射到固定大小输出的任何函数。散列算法应用于数据输入,并且得到的固定长度输出称为散列。

区块 —— 区块链中最基本的数据单元,可以理解为容器数据结构,多个区块连接在一起组成了区块链。

下面以比特币为例,一个区块一般包括魔法数(Magic no)、区块大小(Blocksize)、区块头(Blockheader)、交易数量(Transaction counter)、交易(Transactions)五部分。

q 魔法数:固定4字节常量,作为识别码使用。

q 区块大小:到区块结束的字节长度。

q 区块头:包含区块链处理的重要信息。

q 交易数量:当前区块所包含的交易笔数。

q 交易:交易列表,记录了当前区块保存的所有交易信息(交易列表也被叫做区块体)。

一个区块的基本结构如图1-1所示,图中区块标识区域是计算出来的,实际的数据存储时并不包含这些内容。

2走进区块链-区块链内部结构

图1-1 区块基本结构

区块标识起到区分不同区块的作用,可以通过区块哈希或区块高度来识别区块。区块高度是从0开始的整数,每产生一个区块,区块高度就会加1。区块哈希使用SHA256算法对区块头进行二次哈希计算而得到的结果(SHA256(SHA256(区块头))),在区块链中每个区块头都不相同,经过哈希后的值也一定不同。由于存在分叉的问题,区块高度可能会重复,所以通常采用区块哈希来标识一个区块。

每个区块前80个字节是区块头,区块头中记录了父区块哈希、版本、时间戳、难度、随机数、Merkle根。需要注意的是,在区块链中会存在一个创世区块,创世区块是第一个产生的区块,对于创世区块来说,父区块哈希是同等位数的0。区块头在整个区块结构中起到非常重要的作用。区块头内容如表1-1所示。

表1-1 区块头内容

2走进区块链-区块链内部结构

交易(也被叫做区块体)是一段时间内经过验证的所有交易记录,每一笔交易都经过签名->验签并且在之前没有存在过才会被纳入区块中。维护这些交易采用了Merkle(默克尔) 树的树形数据结构。Merkle树也被称为二元哈希树,Merkle 树是包含密码哈希的二叉树,能够高效、安全地验证大型数据结构的内容。

Merkle 树通过散列机制来验证任意大的数据集的完整性。每个叶节点用数据块的哈希作为标签,每个非叶节点用其子节点标签的加密哈希作为标签。按图1-1交易区域所示,把所有交易各自Hash值作为叶子节点,两个叶子节点Hash值合起来又进行一次哈希计算,生成父节点。例如Hash1和Hash2分别是数据块交易1和交易2的散列值,Hash1&2是Hash1和Hash2串行的散列,直到最终的树根。树根Hash值就是Merkle根。当交易记录发生篡改,这个值就会不一致。

比特币的Merkle树的实现允许修剪区块以节省空间。 这是仅将根哈希存储在块头中的结果,因此,可以通过去除Merkle树的不必要分支来修剪旧块,同时仅保留Merkle证明所需的内容。所以比特币终端的SPV(简单支付验证)节点只需下载区块头而不用下载全部的区块数据来验证交易。

最终区块的数据示例如图1-2。

2走进区块链-区块链内部结构

图1-2 区块数据示例

区块链中第一个区块被称为创世区块,任何一个区块都可以逆向追溯到创世区块,创世区块采用静态编码,无法更改。

网络中的所有节点都在本地维护一个区块链的副本,当有新区块传入,会检查区块头中父区块哈希,如果父区块哈希和上一区块的区块头哈希值一致,则认为是合法扩展,就会把此区块添加到区块链的末尾。每增加一个区块便更新本地副本,通过父区块哈希指针向后延续,从而形成如图1-3所示的一个链表式数据结构。

2走进区块链-区块链内部结构

图1-3 链表式数据结构

这种链表式的数据结构可以保证数据安全和无法篡改,前面我们介绍过,区块哈希是对区块头的哈希计算的结果,如果区块数据被篡改,哈希结果也会不同,对应的哈希指针就会出错,因此一旦有恶意篡改就会被发现。

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