美文网首页
7.区块链 - 精通比特币笔记

7.区块链 - 精通比特币笔记

作者: Abububiu | 来源:发表于2018-06-09 21:57 被阅读0次

简介

区块链是由包含交易信息的区块从后向前有序链接起来的数据结构。比特币核心采用Google的LevelDB数据库存储区块数据。

对每个区块头进行SHA256加密哈希,可以生成一个哈希值,通过这个哈希值可以识别出不同区块。同时,区块中包含上一个区块(父级区块)的哈希值,可以通过父级区块的哈希值找到父级区块,以此类推,形成一个链状的数据结构。

虽然没个区块只有一个父区块,但可以暂时拥有多个子区块,这就是“区块分叉”。区块分叉只是暂时的,最终只有一个子区块会成为区块链的一部分。

由于区块头里包含父级区块的哈希值,所以当前区块的哈希值也受到父区块哈希值的影响。如果父区块发生变化,自区块的哈希值也会变化,以此类推,一旦一个区块发生变化,整个区块链的数据都会发生变化,而改变这个区块链的数据需要耗费巨大的计算量,所以区块链越长,越安全。

区块结构

一个区块由区块大小(4字节),区块头(80字节),交易计数器(1-9,可变整数),交易(可变的)构成。一个正常区块中包含的交易通常超过500个,每个交易的大小至少是250个字节,所以区块内容还是比较大的。

区块头

区块头有6个字段,分别是版本号,父区块哈希值,Merkle树根节点,时间戳,难度目标,nonce。父区块的哈希值指向了父级区块,用于连接区块。难度,时间戳,nonce用于挖矿。Merkle树根用于记录交易数据。


image.png

区块标识符:区块头哈希值和区块高度

区块头哈希值是通过对哈希头进行SHA256算法进行二次哈希计算得到的数字指纹,大小为32字节。区块头哈希并没有存储在区块中,而是临时计算出来的。也有可能存储在另外一张数据表中,用于索引区块。区块的哈希值可以唯一标识一个区块。
第二种识别区块的方式是通过区块在区块链中的位置来识别,即通过“区块高度”识别。创世块的区块高度为0,第二个为1,以此类推。区块的高度不一定能唯一标识一个区块,在挖矿过程中,可能有多个区块处在同一区块高度,后面会解释为什么同一区块高度可能有多个区块存在。

创始区块

创始区块是被写入到比特币客户端里的,以此保证每个人运行比特币客户端都会有相同的创世块,也就保证了创世块不会被改变。这里可以理解成为链表头,一个链表必须知道链表头相同,才能确保不同节点读取的是同一个链表。

区块的连接

区块通过保存父区块哈希值来连接两个区块,以此类推,所有区块都能连接在一起。这个可以理解成常用数据结构链表中的*pre,指向上一个区块的指针。

Merkle树

区块中包含的交易都以Merkle树的方式存储。Merkle是一种哈希二叉树,它的结构是这样的,假设我们有A,B,C,D四笔交易,Merkle树是自底向上构建的,首先计算4笔交易的哈希值HA,HB,HC和HD,再对HA,HB计算哈希HAB,对HC,HD计算哈希HCD,最后对HAB和HCD进行哈希,得到HABCD,最终4笔交易的哈希归纳为一个哈希HABCD,这个哈希就是Merkle树根。这种存储方式能达到2Log2(N)的搜索效率,非常高效。

Merkle树和简单支付验证(SPV)

简单支付验证只保存区块头,通过验证Merkle树的路径(也就是上面提到的ABCD的那些哈希值)来验证交易是否存在于区块中。

相关文章

  • 7.区块链 - 精通比特币笔记

    简介 区块链是由包含交易信息的区块从后向前有序链接起来的数据结构。比特币核心采用Google的LevelDB数据库...

  • 抓住区块链世界里的机会

    说到区块链,一定离不开比特币,比特币是区块链世界里第一个成功的区块链应用,一开始我也没有当回事,直到看到《精通比特...

  • 币圈学习指南

    币圈学习指南 第一阶段:《比特币基础知识》《区块链投资的秘密》《精通区块链》《拜占庭共识算法》《区块链革命》《no...

  • 精通比特币把握数字货币投资机会

    如何实现20周精通比特币? 区块链研习社,云天明联合推出 行动方案 1、主题阅读《精通比特币第二版》2、互动讨论,...

  • 区块链开发资源_同步更新中

    1.区块链入门资源 Github区块链中文资源集合精通比特币 入门首选各取所需 2.区块链开发工具 Golang ...

  • 比特币白皮书解读

    没有比特币就没有区块链,没有区块链就没有比特币。 可见,比特币是区块链是多么的密切相关,而且比特币也可以说是区块链...

  • 《精通比特币》解读 Chapter 1-9 完整版

    以下为金马老师《精通比特币》解读的文稿整理。 第一章 介绍 1.1 什么是比特币 (1)比特币是一个区块链实现 (...

  • 解读“区块链”

    区块链和比特币的关系 比特币与区块链,更像是鸡与蛋的关系。 比特币是区块链技术的第一个应用,区块链技术也是由比特币...

  • 火币创始人李林的区块链BAT梦

    原创: 刘怡嘉 白话区块链 今天 白话区块链 从入门到精通,看我就够了! 导读:在比特币十岁生日之际,白话区块链进...

  • 区块链开源学习项目推荐

    Love-Ethereum 区块链开源学习项目 Mastering Bitcoin(精通比特币—英文版) Mast...

网友评论

      本文标题:7.区块链 - 精通比特币笔记

      本文链接:https://www.haomeiwen.com/subject/iwntjftx.html