• 哈希指针(hash pointers):存放结构体的起始地址哈希值
  • Block chain is a linked list using hash pointers:

  每一个区块都包含指向前一个区块的hash指针
  整个区块(含前一个区块的hash值)一起取hash值,然后存放到下一个区块中。
  上述方式可以实现tamper-erident log。只需保存最后一个hash值,即可检测出对区块链任何部位的修改。

  • Merkle tree:Merkle tree用hash指针代替了binary tree中的普通指针。可用于提供Merkle proof。

  只需保存根hash值,即可检测出对树中任意部位的修改。
  底部的data blocks区块包含了交易信息。

  • 比特币中区块有两种:
      1. 全节点:保存整个区块的内容,含有header和body。
        block header(存放了根hash值,无交易的具体内容)
        block body(存有交易的列表)
       2. 轻节点:只保存block header。

  • 比特币系统的区块链中,每个区块都有一个Merkle tree

区块结构

  • 如何向没有保存交易列表的轻节点证明交易已经完成?—— Merkle proof(proof of membership)
      找到待证明的交易区块tx,全节点向轻节点提供自交易节点往上到根节点过程中的部分hash值,轻节点SPV验证计算出的根hash与block header中的根hash是否相等。如果两者相等,则证明交易确实已经完成。整个过程构成了Merkle proof。

  不安全点:调整右边(红色H( ))不用验证的hash值,使得修改后左边(绿色H( ))的hash值与右边调整后的hash的hash保持不变。实际上不可行,哈希函数的collision resistance性质保证。

  • proof of non-membership 交易不存在证明
      1. 穷举搜素(向轻节点提供整个Merkle tree)
      2. Sorted Merkle tree

  计算需要验证交易的hash值,找到该hash值在hash序列中的排序位置,如图红色部分所示。
  这时提供的proof是第三个第四个叶节点都要往上到根节点。如果其中哈希值都是正确的,最后根节点算出的哈希值也是没有被改过的,说明第三、四个节点在原来的merkle tree里面,确实是相邻的点。通过验证图中黄色部分的两个交易在Sorted Merkle tree中是相邻的点,从而说明Merkle tree中无待验证的交易。

  • hash指针另一个用途:只要一个数据结构是无环的(非循环链表),都能用哈希指针代替普通指针。有环的哈希值没法计算,没法确定一个哈希值固定的区块。

北京大学肖臻老师《区块链技术与应用》公开课 03-BTC-数据结构相关推荐

  1. 肖臻老师区块链公开课笔记

    前段时间,区块链大火,出现了很多种基于区块链技术的政务应用.之前通过零散的网页信息和讲座,自我感觉理解了block chain原理,当看到各种区块链技术广泛应用时,自己以技术理解,反而对之不屑.当然, ...

  2. 北京大学肖臻老师《区块链技术与应用》公开课笔记8——BTC挖矿篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 比特币挖矿篇,对应肖老师视频:click here 全系列笔记请见:全系列笔记请见:click here About Me:点击进入我的Pe ...

  3. 北京大学肖臻老师《区块链技术与应用》公开课笔记23——ETH挖矿难度调整篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊挖矿难度调整,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Persona ...

  4. 北京大学肖臻老师《区块链技术与应用》公开课笔记:以太坊原理(一):以太坊概述、账户、状态树、交易树和收据树

    1.ETH-以太坊概述 比特币和以太坊是两种最主要的加密货币,比特币被称为区块链1.0,以太坊被称为区块链2.0 以太坊在系统设计上针对比特币运行过程中出现的问题进行了改进,比如: 出块时间,比特币的 ...

  5. 北京大学肖臻老师《区块链技术与应用》公开课笔记17——ETH数据结构篇1(状态树1)

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊数据结构篇1--状态树1,对应肖老师视频:click here 全系列笔记请见:click here 以太坊数据结构篇1--状态树2请 ...

  6. 北京大学肖臻老师《区块链技术与应用》公开课笔记:以太坊(四):The DAO、反思、美链、总结

    10.ETH-The DAO 1).The DAO 比特币实现了去中心化的货币,以太坊实现了去中心化的合约,有人想既然去中心化这么好,为什么不把所有的东西都改成去中心化呢?有人提出口号:let's d ...

  7. 北京大学肖臻老师《区块链技术与应用》公开课笔记15——ETH概述篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊概述篇,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Personal P ...

  8. 北京大学肖臻老师《区块链技术与应用》公开课笔记25——ETH智能合约篇1

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊智能合约,对应肖老师视频:click here 全系列笔记请见:click here 智能合约是以太坊的精髓所在,也是其与比特币系统最 ...

  9. 北京大学肖臻老师《区块链技术与应用》公开课笔记26——ETH智能合约篇2

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊智能合约,对应肖老师视频:click here 全系列笔记请见:click here 智能合约是以太坊的精髓所在,也是其与比特币系统最 ...

  10. 北京大学肖臻老师《区块链技术与应用》公开课笔记16——ETH账户篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊账户篇,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Personal P ...

最新文章

  1. 腾讯开源框架Angel推出3.0版本:全栈机器学习平台
  2. 【Kotlin】Kotlin 类的继承 三 ( super 关键字使用 | super@ 外部调用父类方法 | 子类选择性调用 父类 / 接口 方法 super )
  3. 简易promise的实现(二)
  4. 如何保护电路不被烧毁?
  5. Maximum sum(poj 2479)
  6. datetimepicker 更新值无效_文献阅读之Voronoi图的生成与更新
  7. 智慧环卫、智慧公厕、智能抽样、综合指挥中心、质量监察、指挥调度、车辆监管、收运计划、垃圾中转站、考核管理、垃圾收运、机械化保洁作业、环卫作业、油耗空驶、环卫设施、人工保洁作业、稽查扣分、Axure
  8. 战地5离线bot模式_战地系列、烂橘子平台下载更新慢咋办?我这里有两个亲测有有效的方式。...
  9. oracle数据迁移过程中,把表中数据导出为txt文件的三种方法
  10. Java 集合-Arrays工具类的介绍
  11. python MySQLdb安装和使用
  12. 安装Spyder IDE
  13. 树莓派 智能小车 语音控制系统
  14. 微信小程序测试应该注意的事项
  15. 长期不使用计算机会损坏吗,电脑长时间存放不用会不会影响硬件寿命
  16. 网络上的罗刚·心灵之约
  17. 一篇關於Android layout研究的文章[轉 from:http://blog.csdn.net/archimedes_zht/article/details/5333120]...
  18. 全球首款iOS模拟器出炉!在违法的边缘疯狂试探
  19. ES中如何实现随机抽样查询
  20. 记一次带宽跑满服务器卡死事故处理

热门文章

  1. 代数小课堂:向量代数(通过向量夹角理解不同的维度)
  2. js离焦事件_jquery 获得焦点和失去焦点事件
  3. deep nostalgia怎么用?Deep nostalgia操作方法步骤(图文教程)
  4. 计算机毕业设计之java+ssm土家风景文化管理平台-旅游景点攻略网站
  5. Centos6.5源码安装MySQL
  6. 洛谷P1801 黑匣子
  7. C语言编程>第二周 ⑤ 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
  8. android桌面图标摆放位置改变、将网址做成做成快捷键放在桌面上
  9. 搞笑走进校园,B站用户争相点赞
  10. DHCP(动态主机配置协议)