《区块链技术与应用》学习笔记2——BTC数据结构

2023-11-06

Hash pointer(哈希指针)

  • 指针
        在程序运行过程中,需要用到数据。最简单的是直接获取数据,但当数据本身较大,需要占用较大空间时,明显会造成一定麻烦。因此可以引用指针,每次获取相应的数据即可。
        实际使用中,指针实际上存储的是逻辑地址更多
  • 哈希指针
        如下图对于该节点,我们可以看到有两个指针指向这个节点(实际上为一个),其中P为该节点的地址,H()为该节点的哈希值,该值与节点中内容有关。当节点(区块)中内容发生改变,该哈希值也会发生改变,从而保证了区块内容不能被篡改。区块链节点
在比特币中,其最基本的数据结构便是一个个区块形成的区块链。
  • 区块链与链表的区别:哈希指针代替普通指针
        每个区块根据自己的区块内容生成自己的哈希值,此外,每个区块(除创世纪块)都保存有前一个区块的哈希值。需要注意的是,本区块哈希生成依赖于本区块内容,而本区块内容中又包含有前一个区块的哈希值。从而保证了区块内容不被篡改。
    在这里插入图片描述
在实际应用中,一整条链可能会被切断分开保存在多个地方。若用户仅仅具有其中一段,
当用到前面部分区块数据时,直接问系统中其他节点要即可,当要到之后,
仅仅通过计算要到的最后一个哈希值和自己保存哈希值是否一致,
可以判断所给内容是否确实为区块链上真实的内容。

Markel Tree(默尔克树)

  • Markel Tree用哈希指针代替了普通指针
    在这里插入图片描述
    上图为一个Markel Tree,其中A、B、C、D为数据块。可见A和B各有一个哈希值,将其合并放在一个节点中,C和D同样操作。C和D同样操作,而后,针对得到的两个节点分别取哈希,又可以得到两个新的哈希值,即为图中根节点。实际中,在区块块头中存储的是根节点的哈希值(对其再取一次哈希)。
  • 该数据结构的优点在于:只要记住了Root Hash(根哈希值),便可以检测出对树中任何部位的修改。
在比特币系统中,不同区块通过哈希值指针连接,在同一个区块中的多个交易(数据块),
则通过Markle Tree的形式组织在一起。区块本身分为两部分(块头和块身),
在块头中存在有根哈希值(没有交易的具体信息),块身中存在交易列表。
  • Markel Tree的实际用途
    Markel Tree可以用于提供Markel Proof。
        
    比特币中节点分为轻节点和全节点。全节点保存整个区块的所有内容,而轻节点仅仅保存区块的块头信息。因为硬件的局限。一个区块大小为1MB,对于移动便携设备来说,如果存储区块的所有内容,则所需空间过大,而这是不现实的。所以轻节点只需要存储区块块头信息,全节点存储区块所有内容即可。

    
    当需要向轻节点证明某条交易是否被写入区块链,便需要用到Markle proof。我们将交易到根节点这一条路径称为Markle proof,全节点将整个Markle proof发送给轻节点(如下图所示),轻节点即可根据其算出根哈希值,和自己保存的对比,从而验证该交易是否被写入区块链。只要沿着该路径,所有哈希值都正确,说明内容没有被修改过。

    
    
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《区块链技术与应用》学习笔记2——BTC数据结构 的相关文章

  • caffe源码追踪--syncedmem

    首先来看看caffe include caffe syncedmem hpp ifndef CAFFE SYNCEDMEM HPP define CAFFE SYNCEDMEM HPP include
  • 深度学习之 python pandas

    在数据科学领域 pandas是非常有用的工具 在数据科学细分领域大数据 通常和深度学习有关 这部分 本篇博客从pandas重要函数开始 到数据变换以及数据分析 pandas提供了数据变换 数据清理 数据可视化以及数据提取等主要数据处理功能
  • tar -xf_linux 解压缩命令tar

    linux环境下常见的压缩文件格式 tar tar gz tar bz2 tar xz 参数 c create create a new archive 创建文件 x extract get extract files from an ar

随机推荐

  • 静态资源上传七牛云

    一 七牛云SDK function 请参考demo的index js中的initQiniu 方法 若在使用处对options进行了赋值 则此处config不需要赋默认值 init options 即updateConfigWithOptio
  • Python爬虫实战(五) :下载百度贴吧帖子里的所有图片

    准备工作 目标网址 https tieba baidu com p 5113603072 目的 下载该页面上的所有楼层里的照片 第一步 分析网页源码 火狐浏览器 gt 在该页面上右击 查看页面源代码 会打开一个新的标签页 第二步 查找图片源
  • ue4蓝图中的customevent和function的细微差别。

    在调用第三方库时 我用customEvent时 可以调用LowEntryHttpRequest中的 Executes the request This blueprint can NOT execute several HTTP Reque
  • 记录一下浏览器缩放和移动端缩放的区别,其实两者是有很大的不同的,之前一直搞不明白。

    直接问AI它们之间的区别的话 是这么回答的 浏览器缩放和移动端缩放是两种不同的概念 它们涉及到用户在不同设备上改变网页内容大小的方式 以下是它们的主要区别 浏览器缩放 Desktop Browser Zoom 浏览器缩放是指在桌面计算机浏览
  • 以太坊学习计划1

    1 如果链接远程链 需要上链才可以 打开服务才可以 2 开启本地geth 服务 下载https geth ethereum org downloads 默认启动geth服务 不启动rpc服务 手动用命令行启动 geth rpc 代码端调用
  • C++的使用小教程8——多态与接口

    C 的使用小教程8 多态与接口 1 什么是多态与接口 2 实现方式 3 应用实例 学习好幸苦 1 什么是多态与接口 C 多态意味着调用成员函数时 会根据调用函数的对象的类型来执行不同的函数 接口描述了类的行为和功能 而不需要完成类的特定实现
  • Qgis国际化

    参考文章 QT实现多国语言 几点需要注意的 1 pro文件生成方法 2 ts文件生成方法 输入命令 lupdate f code QT Code QtApplication2 QtApplication2 QtApplication pro
  • Vit,DeiT,DeepViT,CaiT,CPVT,CVT,CeiT简介

    Vit 最基础的 就是将transformer的encoder取出来 输入图像大小维度 B C H W 将图片不重叠地划分为H patch height w patch weight个patch 每个patch为patch height p
  • Spark相关问题

    Spark相关问题 Hadoop FileFormat接口问题 Hadoop FileOutputFormat在写入数据的时候先写到临时目录 最后写入最终目录 临时目录到最终目录的过程中需要做文件树合并 合并过程中有大量Rename操作 F
  • Hash函数

    概述 Hash函数 散列函数 是一种将任意长度的数据映射到有限长度的域上 通俗来讲 就是将一串任意长度的数据进行打乱混合 转换为一段固定长度的数据输出 这段数据便成为输入数据的一个 指纹 特征 Hash函数的首要目标是保证数据的完整性 而不
  • css连续的纯数字或字母强制换行

    white space normal word break break all
  • 一些网站1

    N1BOOK平台 Nu1L Team Nu1L Team 0004 Median of Two Sorted Arrays LeetCode Cookbook 题库 力扣 LeetCode 全球极客挚爱的技术成长平台
  • 解决shell断开后java进程被结束

    偶尔会碰到用SecureCRT在shell启动java进程并后台运行 命令最后加 的时候 因为断电死机等原因断开shell 然后进程被结束了 运维大佬也说用他们的工具启动进程后一断开连接进程就结束了 后来查到是因为shell在断开的时候会向
  • 漫谈数据挖掘从入门到进阶

    做数据挖掘也有些年头了 写这篇文一方面是写篇文 给有个朋友作为数据挖掘方面的参考 另一方面也是有抛砖引玉之意 希望能够和一些大牛交流 相互促进 让大家见笑了 入门 数据挖掘入门的书籍 中文的大体有这些 Jiawei Han的 数据挖掘概念与
  • Day_1 Part_4 Structures of R

    1 Vector Matrix Array 1 1 What are they Collection of observations Vector 1 dimensional Matrix 2 dimensional Array 3 dim
  • 常见web漏洞及防范(转)

    单个漏洞 需要进行排查与整改 借着别人的智慧 做一个简单的收集 最好能够将常见漏洞 不限于web类的 进行一个统一的整理 这是今年的任务 进行漏洞的工具的收集 为未来的工作做好基础 一 SQL注入漏洞 SQL注入攻击 SQL Injecti
  • MMDetection 3.x中的PackDetInputs

    MMDetection 3 X 里面对pipeline有一个重点修改是新增了 PackDetInputs 有利于统一 进行检测 语义分割 全景分割任务 从配置文件中我们可以看出包含LoadImageFromFile LoadAnnotati
  • electron在BrowserWindow中禁止右键菜单

    最近使用 electron vite solid js 做一个网络流量实时监控的小工具 其中需要禁止用户在获取 BrowserWindow 焦点后弹出默认右键菜单 解决方案 在 new BrowserWindow 后中添加以下代码 禁止右键
  • 静默执行bat文件

    让bat隐藏运行需要用vbs文件才能实现 方式一 使用vbs文件 新建一个 文本文档后缀改为 vbs 可以这样写 set ws WScript CreateObject WScript Shell ws Run d yy bat 0 其中d
  • 《区块链技术与应用》学习笔记2——BTC数据结构

    Hash pointer 哈希指针 指针 在程序运行过程中 需要用到数据 最简单的是直接获取数据 但当数据本身较大 需要占用较大空间时 明显会造成一定麻烦 因此可以引用指针 每次获取相应的数据即可 实际使用中 指针实际上存储的是逻辑地址更多