区块链基础

1、区块链的数据结构:

 

        由包含交易信息的区块按照从远及近的顺序有序链接起来
的。它可以被存储为平面文件(flat file),或是存储在一个简单数据库中。比特
币核心客户端
使用Google 的LevelDB 数据库存储区块链元数据。区块被从远及近
有序地链接在这个链条里,每个区块都指向前一个区块。区块链经常被视为一个
垂直的栈,第一个区块作为栈底的首区块,随后每个区块都被放置在之前的区块
之上。

2 、区块结构
        区块是一种被包含在公开账簿(区块链)里的聚合了交易信息的容器数据结构。
它由一个包含元数据的区块头和紧跟其后的构成区块主体一长串交易列表
成。区块头是80 字节,而平均每个交易至少是250 字节,而且平均每个区块至
少包含超过500 个交易
。因此,一个包含所有交易的完整区块比区块头大1000
倍。

3、区块头

       由三组区块元数据组成。首先是一组引用父区块哈希值的数据,这组元数
据用于将该区块与区块链中前一区块相连接。第二组元数据,即难度、时间戳和
nonce
,与挖矿竞争相关,详见挖矿章节。第三组元数据是merkle 树根。

区块链基础_第1张图片

最后一个字段是nonce,初始值为0。
区块头完成全部的字段填充后,挖矿就可以开始进行了。挖矿的目标是找到一
个使区块头哈希值小于难度目标的nonce。挖矿节点通常需要尝试数十亿甚至数
万亿个不同的nonce 取值,直到找到一个满足条件的nonce 值。

4、区块标识符:区块头哈希值和区块高度
       区块主标识符是它的加密哈希值,一个通过SHA256 算法区块头进行二次哈希
计算而得到的数字指纹。


5、默克尔树

默克尔树是一种树形的数据结构,一般是二叉树,具有树结构的所有特点。

默克尔树的生成过程如下:

    将一个大数据拆分成更多的数据小块,然后对每个数据块进行哈希运算,得到所有数据块的哈希值之后,获得一个哈希列表。接下来根据列表元素个数的奇偶性重新再计算出哈希值,,如果是偶数,则两两合并再计算哈希值,获得新的列表;如果是奇数,则前面两两计算哈希值,最后一个单独计算哈希值。重复上面的过程,最终得到一个哈希值,被称为根哈希。

默克尔树逐层记录哈希值的特点,使得他具有对数据修改敏感的特征。它有一些比较典型的应用场景。

① 快速比较大量数据。叶子节点数据的细微改动,都会导致根节点发生变化,可以用根节点来判断是否发生修改。

② 快速定位数据块的修改。根据树德 特性,从根节点到叶子节点只需要通过O(logn)便可定位到实际发生改变的数据块。

③零知识证明。为了证明某个论断是否正确,通常外卖需要将数据发送给验证者。默克尔树提供了一种方法,可以证明某方拥有数据,而不需要将原始数据发送给对方。

你可能感兴趣的:(区块链,区块链,比特币,big,data)