写了几篇区块链的学习笔记,今天来写写比特币中的区块链。比特币中区块链是由包含交易信息的区块从后向前有序链接起来的数据结构。每个区块从后向前有序地链接在这个链条里,每个区块都指向前一个区块。

区块结构

区块是一种数据结构,存放了多组交易,并且块与块之间相互连接,每个块都指向前一个区块。为了提高性能,一组交易确认打包成块,下面就是区块的结构

区块头中由版本,父区块哈希值,Merkle根,时间戳,难度目标,Nonce。Nonce、难度目标和时间戳会用于挖矿过程。

每个区块通过SHA256算法对区块头进行二次哈希计算而得到一个哈希值叫做区块哈希值,不过只有区块头进行了哈希计算。区块哈希值可以唯一的表示一个区块。还可以用区块高度表示区块,第一个区块高度为0,第二个区块为1,之后的区块依次增加。但区块高度并不能唯一的表示一个区块,若区块链出现分叉就有可能出现两个区块的高度相同。而一个区块中的区块头内储存着它上一个区块的哈希值的引用,而上一个区块的区块头内又有再上一个的区块的哈希值的引用。这样就将各区块组成了区块链。

该区块中的所有交易都是用Merkle树表示的,在区块头中就储存了Merkle树的根。关于Merkle树这个博客讲的是相当详细https://blog.csdn.net/wo541075754/article/details/54632929

有兴趣的可以去看看。

Merkle树,通常也被称作Hash树,树中的节点储存的都是哈希值,叶子节点储存着交易。Merkle树是自底向上构建的。有A,B,C,D四个交易,先将四个交易进行两次哈希运算。

HA = SHA256(SHA256(交易A))

HB = SHA256(SHA256(交易B))

HC = SHA256(SHA256(交易C))

HD = SHA256(SHA256(交易D))

分别得到四个哈希值HA,HB,HC.HD作为叶子节点,子节点A和子节点B的两个32字节的哈希值将被串联成64字节的字符串。子节点C和子节点D串联得到一个64字节的字符串。随后将字符串进行两次哈希来产生父节点的哈希值,

HAB = SHA256(SHA256(HA + HB))

HCD =SHA256(SHA256(HA + HB))

接着再继续相同的操作,将HAB和HCD串联就可以得到Merkle树的根

Merkle树是二叉树,所以它需要偶数个叶子节点。如果仅有奇数个交易,那最后的交易就会被复制一份以构成偶数个叶子节点。有了Merkle树对于SPV节点只需下载区块头,而不需要下载每笔交易和区块。

转载于:https://www.cnblogs.com/mambakb/p/9688161.html

区块链学习(6)区块链相关推荐

  1. 区块链学习:区块链分类

    网络 公有链 没有认证.权限限制. 数据公开透明. 节点数量.状态不可控. 私有链 认证.权限限制. 数据对内公开透明. 节点数量和状态可控. 联盟链 处于公有链和私有链之间. 认证.权限限制.需要提 ...

  2. 区块链学习之区块链思想的诞生(一)

    区块链最早出现在比特币开元项目中.比特币在诞生和发展过程中,借鉴了来自数字货币.密码学.博弈论.分布式系统.控制论等多个领域的技术成果,作为核心支撑结构的区块链技术大放异彩. 从实体货币到数字货币 区 ...

  3. 区块链学习2——区块链浏览器的搭建

    目录 1.环境准备 2.下载区块链浏览器并部署 3.部署项目 5.配置4个节点 6.合约配置 7.区块链信息-预览 1.环境准备 一键部署模式,采用的是同机部署. Java jdk1.8.0_121及 ...

  4. 区块链学习路线及资料索引

    2019独角兽企业重金招聘Python工程师标准>>> 一.学习目标 比特币发展历史,挖矿,分叉以及相关应用 区块链底层技术,如共识算法, 侧链技术, 密码学知识等,理解PKI基本知 ...

  5. 剑英的区块链学习手记(二)

    孙子说,知己知彼,百战不殆. 咱是通过小蚁学习区块链技术的. 开工之前,先了解一下小蚁的资料家族. 小蚁网站 https://www.antshares.org/ 小蚁源码 https://githu ...

  6. 美化UI合约区块链学习版系统+交易大厅

    简介: 美化UI合约区块链学习版系统+交易大厅 亲测环境:Win+宝塔+Apache+php5.6+mysql5.5 数据库配置文件:/APP/Conf/config.php 设置TP伪静态 后台地址 ...

  7. 区块链学习笔记:D03 区块链在各行业领域的应用(一)

    今天主要是学习了区块链在金融和供应链领域的应用,重点体现了区块链多方参与.透明可信.防篡改防抵赖的技术优势 区块链的应用场景最早是在金融行业应用较多,后续逐步扩展到传统行业,如:供应链.政务服务.物联 ...

  8. 月薪 100K?还不来看看区块链学习清单?字字都是 Money!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! CSDN粉丝今日专属购书福利:全场书籍优惠,满100减50!仅限当日使用. 初春乍寒,又到了 ...

  9. 区块链学习笔记23——ETH反思

    区块链学习笔记23--ETH反思 学习视频:北京大学肖臻老师<区块链技术与应用> 笔记参考:北京大学肖臻老师<区块链技术与应用>公开课系列笔记--目录导航页 智能合约真的智能吗 ...

最新文章

  1. AjaxPro.2.dll在VS2005使用中的基本使用
  2. 【C/C++】C语言复习笔记-17种小算法-解决实际问题
  3. odata连接现有数据库
  4. QML基础类型之palette
  5. 调试实战 | 通过转储文件分析程序无响应之使用 windbg + IDA 逆向篇
  6. 2018 ACM-ICPC World Finals - Beijing
  7. 数组中查找並返回数组_剑指 Offer 04. 二维数组中的查找
  8. 乐视网董事长刘淑青辞职 选举刘延峰为新任董事长
  9. pcb天线和纯铜天线_蓝牙模块采用陶瓷天线和PCB天线的区别
  10. Word:不显示图片 + 清空“最近使用的文档”列表
  11. 西门子V90 PN控制FB284块的个人理解
  12. 安装AutoCAD 2015提示net 4.5错误的解决方法
  13. python paramiko包 ssh报错No existing session 调试记录
  14. Mac OS 名称问题及修改方法(修改终端中显示的hostname(主机名称) / 电脑名称 / 管理员名称 / LocalHostName(本地主机名称))
  15. Android9自带的游戏怎么玩,[Android]手机也能玩电脑游戏,PC游戏模拟器ED302-9最新版及详细使用帮助 | 樱花庄...
  16. Spring boot 日志分档基于log4j2.yml 配置文件
  17. c语言iota怎么用,常量及iota的简单用法
  18. 看得懂的猪周期,牧原们却不一定跨得过
  19. 渐变:线性渐变、径向渐变
  20. 如何提高团队管理能力?

热门文章

  1. 2018.08.04 cogs2633. [HZOI 2016]数列操作e(线段树)
  2. OSI模型和TCP/IP模型
  3. shell 解析 json
  4. 中文乱码各个浏览器的处理
  5. Microsoft Dynamics CRM 2011 相关-摘自网络
  6. Android 动态Tab分页效果实现
  7. GNU ARM汇编--(二)汇编编译链接与运行
  8. 一个请求方法是一个线程吗?不是!
  9. C#中多线程 委托的使用
  10. delegate、Lambda表达式、Func委托和Expression(TDelegate)表达式目录树