02-BTC-数据结构
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
二、区块链
三、Merkel tree
总结
前言
今天看了北大肖臻老师《区块链技术与应用》公开课,有很大收获,在此写博客以做笔记,加深印象,若有不当之处,欢迎斧正。
一、比特币中的数据结构是什么?
比特币中的数据结构一个是区块链另一个是存在于区块中的 Merkel tree。
二、区块链
- 比特币中的区块链由一个个区块组成,每一个区块分为 区块头和区块体两部分。
- 区块链中第一个区块为创世块(genesis block),最近的一个区块为 most recent block。
- 区块之间由哈希指针链接,每一个区块的区块头都保存了指向上一个区块的哈希指针,最后一个区块的哈希值保存在系统中。
- 哈希指针有两部分,既保存了指向该结构体的地址,也保存了该结构体的哈希值。
- 由于哈希指针的存在,区块链拥有了防篡改的性质,例如:攻击者篡改了第55号区块,则需要改动包括第55号区块一直到 most recent block 区块的所有哈希值,最后一个区块的哈希值改动后,先不说速度上达不达得到,该哈希值与系统中保存的原来的哈希值不一样,系统即可检测出存在攻击者恶意修改区块。
三、Merkel tree
- Merkel tree 存在于区块体中,它分为数据块(data block)和哈希指针块(hash pointers),Merkel tree 的结构为二叉树形式。
- 数据块在区块中储存的一个个的交易,每一个哈希指针块都保存着下一层两个区块的两个哈希值。由根节点的两个哈希值算出来的哈希值为根哈希值(root hash)保存在区块头中。
- 比特币的节点有全节点和轻节点,全节点保存区块链中每一个区块的所有内容,而轻节点则只保存最近几千个区块的区块头。
- 若轻节点要证明某个交易,则向全节点发出请求,全节点给与轻节点与该交易相关的 Merkle proof ,轻节点使用该交易的哈希值与 Merkle proof 进行验证,若最后算出来的哈希值与保存的区块头中的根哈希值不一样,则该交易证明失败。
总结
主要梳理了课程中肖臻老师对于比特币数据结构的讲解。
02-BTC-数据结构相关推荐
- JVM【带着问题去学习 02】数据结构栈+本地方法栈+虚拟机栈+JVM栈运行原理
1.数据结构栈 栈是一种比较简单的数据结构,后进先出.栈本身是一个线性表,但是这个表中只有一端允许数据的进出.栈的常用操作包括入栈push和出栈pop,对应于数据的压入和弹出.由于栈后进先出的特性,常 ...
- Visualizations:一个数据结构和算法的可视化展示网站
" 美国旧金山大学计算机科学系网站里,提供了演示多种数据结构和算法的可视化演示,可以自由访问,也可以打包下载到本地." 偶然的机会,发现了这个网站,里面有常用的数据结构与算法的演示 ...
- 猎豹网校JAVA语言数据结构与算法视教程
-------------------课程目录------------------- 01.NetBeans_下载和安装.mp4 02.JavaDS_数据结构和算法的概述.mp4 03.JavaD ...
- 猎豹怎么运行java_猎豹网校 数据结构与算法 Java语言 JAVA语言视频教程(火评)...
01.NetBeans_下载和安装.mp4 02.JavaDS_数据结构和算法的概述.mp4 03.JavaDS_数组基础知识.mp4 04.JavaDS_有序数组和二分查找.mp4 05.Java ...
- 慕课网:C++ 数据结构
课程链接:james_yuan的课程 这部分太枯燥了,如果教材难度稍大,根本就学不下去,所以就先看看通俗的视频吧. 课程目录 1.C++远征之起航篇 - C++亮点尽在其中 2.C++远征之离港篇 - ...
- 唤醒手腕Python全栈工程师学习笔记(网络爬虫篇)
唤醒手腕Python爬虫学习笔记,喜欢的同学们可以收藏下,谢谢支持. 01.基础语法知识点 字符串的分割 webString = 'www.baidu.com' print(webString.spl ...
- 元宇宙是个啥?送4本科普好书
VOL 350 22 2022-01 今天是2022年第22天 这是ITester软件测试小栈第350次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 ...
- 快速从入门到精通!mysql删除语句姓李的语句
第一部分必读系列: 01.学习算法和刷题的思路指南 02.学习数据结构和算法读什么书 03.动态规划解题套路框架 04.动态规划答疑篇 05.动态规划答疑篇 06.回溯算法解题套路框架 07.二分查找 ...
- c语言程序设计 滴水视频,编程达人滴水中级班视频教程
Java视频教程详情描述: <编程达人滴水中级班视频教程>编程达人来了,N部视频教程让你成为真正的编程达人,融会贯通将是本套视频最大的目的. Java视频教程目录: ├─APC机制 │ ...
- 保证金,杠杆和风险限额委托种类
1.保证金 保证金由用户的杠杆率决定,例如:50倍杠杆,仓位1BTC的合约,所需的保证金就是(1/50=0.02)BTC+订单手续费, 在这里, 有两个保证金类型需要用户关心 起始保证金:即开仓所需的 ...
最新文章
- 微信 小程序 常见错误
- Flutter ScrollView 滑动组件
- Struts2中Result类型介绍
- 兼容性测试之VMware
- java selenium firefox启动报错大调查
- pandas 作图 统计_pandas数据作图方法
- Java动态代理之InvocationHandler最简单的入门教程 1
- c语言对n个数选择排序_选择排序_C语言「抄作业」
- boost python错误_Ubuntu-链接boost.python-致命错误:找不到pyconfig
- oracle10g rac导出ocr,Oracle RAC OCR磁盘故障快速恢复方法
- 慕课PDF下载扩展--再也不用担心慕课不给PDF了
- php支付sdk接入网站教程,laravel 5.5 接入蚂蚁金服官方SDK(支付宝APP支付为例)开发步骤...
- 程序员常见10大口头禅
- 费城交响乐团与上海爱乐乐团联合举行费城首届中国新年音乐会
- 点云旋转平移(三)—python open3d点云旋转
- 开源的.Net IDE :SharpDevelop
- 漫话:什么是平衡(AVL)树?这应该是把AVL树讲的最好的文章了
- python--pandas统计分析基础
- 基于Python操作Word
- 凯撒密码 (20 分)
热门文章
- 如何在 Sublime 文本编辑器中使用终端?
- D. Playoff
- 第十二章 初识Linux三剑客
- 视频会议的发展趋势---移动视频会议
- AutoCAD .NET: EntityJig – Dynamic Dimension and Line Jig
- 强化学习在京东618大促流量调控中的落地应用
- 逻辑回归(Logistic Regression, LR)简介
- 错题本——数据库系统工程师 2012
- 全网详细的路由协议解释:OSPF、EIGRP、RIPv2、IS-IS、BGP
- 一边深耕场景化应用一边构建DUI生态,AI生态这盘棋思必驰要怎么下?