北京大学肖臻老师《区块链技术与应用》公开课 03-BTC-数据结构
- 哈希指针(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-数据结构相关推荐
- 肖臻老师区块链公开课笔记
前段时间,区块链大火,出现了很多种基于区块链技术的政务应用.之前通过零散的网页信息和讲座,自我感觉理解了block chain原理,当看到各种区块链技术广泛应用时,自己以技术理解,反而对之不屑.当然, ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记8——BTC挖矿篇
北京大学肖臻老师<区块链技术与应用>公开课笔记 比特币挖矿篇,对应肖老师视频:click here 全系列笔记请见:全系列笔记请见:click here About Me:点击进入我的Pe ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记23——ETH挖矿难度调整篇
北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊挖矿难度调整,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Persona ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记:以太坊原理(一):以太坊概述、账户、状态树、交易树和收据树
1.ETH-以太坊概述 比特币和以太坊是两种最主要的加密货币,比特币被称为区块链1.0,以太坊被称为区块链2.0 以太坊在系统设计上针对比特币运行过程中出现的问题进行了改进,比如: 出块时间,比特币的 ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记17——ETH数据结构篇1(状态树1)
北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊数据结构篇1--状态树1,对应肖老师视频:click here 全系列笔记请见:click here 以太坊数据结构篇1--状态树2请 ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记:以太坊(四):The DAO、反思、美链、总结
10.ETH-The DAO 1).The DAO 比特币实现了去中心化的货币,以太坊实现了去中心化的合约,有人想既然去中心化这么好,为什么不把所有的东西都改成去中心化呢?有人提出口号:let's d ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记15——ETH概述篇
北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊概述篇,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Personal P ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记25——ETH智能合约篇1
北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊智能合约,对应肖老师视频:click here 全系列笔记请见:click here 智能合约是以太坊的精髓所在,也是其与比特币系统最 ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记26——ETH智能合约篇2
北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊智能合约,对应肖老师视频:click here 全系列笔记请见:click here 智能合约是以太坊的精髓所在,也是其与比特币系统最 ...
- 北京大学肖臻老师《区块链技术与应用》公开课笔记16——ETH账户篇
北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊账户篇,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Personal P ...
最新文章
- 腾讯开源框架Angel推出3.0版本:全栈机器学习平台
- 【Kotlin】Kotlin 类的继承 三 ( super 关键字使用 | super@ 外部调用父类方法 | 子类选择性调用 父类 / 接口 方法 super )
- 简易promise的实现(二)
- 如何保护电路不被烧毁?
- Maximum sum(poj 2479)
- datetimepicker 更新值无效_文献阅读之Voronoi图的生成与更新
- 智慧环卫、智慧公厕、智能抽样、综合指挥中心、质量监察、指挥调度、车辆监管、收运计划、垃圾中转站、考核管理、垃圾收运、机械化保洁作业、环卫作业、油耗空驶、环卫设施、人工保洁作业、稽查扣分、Axure
- 战地5离线bot模式_战地系列、烂橘子平台下载更新慢咋办?我这里有两个亲测有有效的方式。...
- oracle数据迁移过程中,把表中数据导出为txt文件的三种方法
- Java 集合-Arrays工具类的介绍
- python MySQLdb安装和使用
- 安装Spyder IDE
- 树莓派 智能小车 语音控制系统
- 微信小程序测试应该注意的事项
- 长期不使用计算机会损坏吗,电脑长时间存放不用会不会影响硬件寿命
- 网络上的罗刚·心灵之约
- 一篇關於Android layout研究的文章[轉 from:http://blog.csdn.net/archimedes_zht/article/details/5333120]...
- 全球首款iOS模拟器出炉!在违法的边缘疯狂试探
- ES中如何实现随机抽样查询
- 记一次带宽跑满服务器卡死事故处理
热门文章
- 代数小课堂:向量代数(通过向量夹角理解不同的维度)
- js离焦事件_jquery 获得焦点和失去焦点事件
- deep nostalgia怎么用?Deep nostalgia操作方法步骤(图文教程)
- 计算机毕业设计之java+ssm土家风景文化管理平台-旅游景点攻略网站
- Centos6.5源码安装MySQL
- 洛谷P1801 黑匣子
- C语言编程>第二周 ⑤ 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- android桌面图标摆放位置改变、将网址做成做成快捷键放在桌面上
- 搞笑走进校园,B站用户争相点赞
- DHCP(动态主机配置协议)