区块链技术之哈希指针

2023-11-14

hello,大家好,我们第三期的区块链技术分享来啦,那么话不多说,我们开始吧。

提起区块链,大家可能都会提到:不可篡改。但是为什么区块链不可篡改呢?

图片

 

先给出答案,这与区块链的数据结构哈希指针和默克尔树有关。那么我们今天先分享哈希指针相关的内容。

1. 那些年学过的链表

区块链,顾名思义也是链,学过计算机数据结构的朋友都知道,数据结构里面有一种就是链表。那么区块链是什么链表?

结构体和链表属于计算机专业的基础课程。但是工作久了,提起来可能大家反应都是:

图片

要理解链表,我们用一个简单的例子来说明,假设你在北京、西安、上海、杭州分别有一套房。

图片

 

但是你只有北京房子的地址,剩下房子的地址分别在其他房间中放着。

图片

你根据北京房子的地址找到北京的房子,知道了北京房子的情况,而且里面有一张条,放着上海房子的地址;同样,你根据这个地址,找到上海的房子,也看到了上海房子的情况,并且还有一张条,放着西安房间的地址;以此类推,直到你找到了杭州的房子,是你的最后一套房子,那么存地址的那张条上就为空。

上面的例子就是链表中单链表的例子。

链表通过指针在不连续的内存空间进行跳转,以此实现可动态扩展的特性。

在上面的例子里面,存储下一个房子地址的纸条就是指针,代表下一个房子所在的地址;

不连续的空间大家很好理解,就像你的房子在北京、上海、西安、杭州一样,地理位置是不连续的。

链表不可随机访问,只能顺序访问。

从上面的例子也能看到,你只能从北京的房间开始访问,因为你手里只有北京的地址。

普通的指针,指向的是结构体在内存中的地址。

那么区块链中用到的哈希指针是什么意思呢?既然是指针,肯定是地址,那么哈希指针除了要保存结构体的位置之外,还要保存结构体的哈希值。

如果不了解哈希,可以看一下这篇文你的密码安全吗? | 区块链技术之哈希

2.哈希指针和哈希链表

那么为什么要使用哈希指针呢?

最主要的作用,除了能找结构体,还能够防止被指向地址内的数据被篡改

用哈希指针连接的链表,叫哈希链表(hash list)。

还是用你的那四套房举例子。北京、上海、西安、杭州。

图片

图片

比如一个正常的哈希链表就好比上面这张图,由四个节点组成。

节点4的地址可以是随便的,因为他后面已经没有节点了,

节点4也就是杭州房子的节点跟数据组合后,计算出哈希值,把这个哈希值就赋值给节点3即西安的房子,这样西安房子节点中的地址就指向了节点4杭州的房子;

同样节点3也就是西安房子的节点跟数据组合后,计算出哈希值,把这个哈希值就赋值给节点2即上海的房子,这样上海房子节点中的地址就指向了节点3西安的房子;

同理节点2也一样;

接着,节点1跟数据组合后,再计算出哈希值,把这个哈希值赋值给北京房子的地址,北京房子的地址就指向了节点1。

这样子北京房子的地址作为入口被公布出去,以后想知道自己的亿万家产,只要拿到北京房子的地址就可以了。

图片

 

由于你太有钱了,有坏人想利用你记性不好的特点,把你某个房子的信息篡改了。

图片

1. 改了节点3西安房子的数据:西安改为阿拉伯,我们把节点3中被篡改的数据标识出来,


2. 因为之前的节点2中西安房子的地址是通过节点3跟没有被篡改过的数据计算出来的,那数据改了后,为了让节点2中西安房子的地址再指向节点3,就需要再次计算节点2中西安房子的地址,这样西安房子的地址就发生变化了,我们把西安房子的地址标识出来;

3. 以此类推节点1中上海房子的地址也发生了变化,我们也标识出来;


4. 上海房子的地址发生变化后,因为旧的北京房子的地址是通过老的上海房子的地址和节点1数据计算出来的,那 上海房子的地址发生变化了,为了让北京房子的地址能指向节点1,就需要再次计算北京房子的地址,这样北京房子的地址也发生变化了,我们把北京房子的地址标识出来。


所以看到因为改了节点3中的数据,导致西安房子的地址,上海房子的地址北京房子的地址都发生了变化。

这样子新的北京房子的地址作为入口被公布出去,你发现新的地址跟你之前的地址不一样了,那么事大了,你的信息被篡改了。

这就是哈希链表。

3. 区块链的数据结构

区块链就是用哈希指针链接起来不同的区块组成的链。

图片

接第二部分,上图是一个小型的区块链,第一个区块是由系统产生的,叫做创世纪块。第一个区块链中有前一个区块的地址H(0),第二个区块中前一个区块的地址H(1),指向区块1,第三个区块是最新产生的区块,里面有指向区块2的地址H(2),同样,区块3的地址也会存在系统中。


根据第二部分的哈希指针的特点,当某一个区块中的信息被篡改了,那么其后所有区块都要被修改。

但其实每个区块的信息远比上面要复杂。

图片

 

每个区块由区块头(head)区块主体(body)组成。

区块头存储结构化的数据,大小是80字节;

而区块主体利用一种神奇的树状结构,记录区块挖出的这段时间里所有交易信息,所需空间比较大。

平均来讲,假设一个区块内有400笔交易信息,区块主体可能比区块头大1000倍以上。

图片

把每个区块展开表示,那么区块的信息如上图:

版本号:用来标识参照的规则的。软件系统都是不断迭代和进化的,就像我们的Android和iOS系统的版本号一样。

前一区块哈希值:也称“父区块哈希值”,这个哈希值通过对前一个区块的区块头数据进行哈希计算(SHA256算法)得出,它的意义在于:每个新挖出的区块都按秩序接在前一个区块的后面。

默克尔根:在区块主体中,所有交易信息先进行两个一组的哈希计算,这种结构叫做Merkle树(Merkle Tree),而且是一棵倒挂的树。叶子节点存储的是交易,往上都存储的是哈希值。

时间戳:记录这个区块生成的时间,精确到秒。每诞生一个新的区块,就会被盖上相应的时间戳,这样就能保证整条链上的区块都按照时间顺序进行排列。

难度值:挖出该区块的难度目标。中本聪设计比特币时,加入挖矿难度调整机制是为了使得比特币出块时间能理想的恒定在 10 分钟左右

比特币协议规定每隔 2016 个区块,将根据过去最近 2016 个区块出块总时间调整,自动调整下一个 2016 个区块的挖矿难度。理想情况下 2016 个块需要两周(2016*10s)时间,如果实际用时不到两周则增加难度,如果超过两周就降低难度。

随机数:挖矿就是找到一个随机数(Nonce)参与哈希运算Hash(Block Header),使得最后得到的哈希值符合难度要求。

比特币通过挖矿的方式,来竞争新区块的记账权。谁拿到新区块的记账权,它创建的新区块就合法。挖矿的目的就是赢取记账权,确认新区块和交易。

图片

 

 

今天的关键词主要是链表、指针、哈希指针、哈希链表,区块链。下期我们分享默克尔树,也就是merkle tree。

图片

 如果你也对区块链感兴趣,搜索微信公众号“Candy链上笔记”,我们一起前行。

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

区块链技术之哈希指针 的相关文章

  • 区块链数字签名、验签,以及椭圆曲线算法JS库—elliptic的使用

    目录 一 简介 二 椭圆曲线密码elliptic 1 安装elliptic和js sha3 2 Keccak256 3 签名过程 一 简介 数字签名是一种将类似现实世界中物理签名 盖章
  • 为什么要使用零知识证明来开发跨链协议

    用户需要什么样的跨链服务 在过去的几年当中出现了各种各样的独立公链以及以太坊 Layer 2 由于在安全性 低成本 快速交易以及开发者和用户社区差异等方面 不同链都具有各自不同的优势 用户在不同链之间切换使用的行为是很常见的 比起以太坊链
  • 在区块链世界中的token到底是什么?

    token的概念很广泛 在计算机领域中 无论是基础的网络架构还是服务系统的身份验证等 都有涉及到token的概念 然而在这里我想阐述的是在区块链世界中的token是什么 相信对区块链有些了解的朋友 都或多或少的听过或者看过关于token的描
  • 2018年区块链人才趋势:降温、调节、蓄势待发

    2018年 戊戌年 是一个不平静的年份 自960年前的戊戌年王安石变法 到最近两百年的四个戊戌年 其间发生的大事无不与 变革 息息相关 年初 从科技圈 金融圈里 引爆出一个叫 区块链 的公众热点 从技术角度而言 这并非新生事物 但因其巨大的
  • 期货开户手续费的组成和收费模式

    期货公司的费用 公开透明 不会私自提高费率 A级别的期货公司 不会私自提高期货投资者的交易费率 不会私自提高期货投资者的保证金比例 说一下投资者最关系的费率问题 期货投资交易的手续费是由两部分组成 1 交易所手续费 这个是固定标准也是市场上
  • 首个数字银行卡明年发行,广州出台区块链措施支持大湾区

    锌链接作为首个提出产业区块链的机构媒体 一直积极推动产业区块链落地 通过深度报道直戳行业痛点 通过分享会聆听行业声音 通过周报呈现行业大观 通过评论展现独特产业观察视角 本周 广州出台66条措施支持粤港澳大湾区金融发展 其中多项与区块链有关
  • 区块链技术是如何应用到版权维护上?

    随着视频和音乐行业的迅速发展 数字出版已经形成完整的产业链 带来一些可观的收入 但是也伴随侵权的现象发生 那么区块链技术怎么运用到作品版权保护上呢 1 时间戳 我们知道区块链有一个 时间戳 这个可信时间戳由权威机构签发 能证明数据电文在一个
  • 阿里巴巴都害怕的区块链电商到底是什么?

    近日 区块链权威机构中国通信工业协会区块链专业委员会 CCIAPCB 发出倡议 联合各界将中共中央政治局10月24日集体学习区块链主席讲话日作为 区块链中国日 此次中央将区块链技术放在了国家战略层面高度上 让区块链一时间成了全民热点 特别是
  • 区块链的安全性与去中心化特点:深入探讨区块链技术的安全性和去中心化特点

    摘要 本文将深入探讨区块链技术的两个核心特点 安全性和去中心化 区块链作为一种分布式账本技术 通过其独特的安全性和去中心化特点 在许多领域引起了广泛关注 我们将分析区块链的安全性原理和其与去中心化的关系 以及区块链技术在保护数据安全和提供信
  • 区块链数据的存储和更新

    目录 1 引言 2 主要流程 2 1数据库读取 2 1 1 从数据库加载块数据 2 1 2从数据库读取账户信息 2 2 区块链数据更新与回滚 2 2 1 交易数据 2 2 2 块数据 1 引言 在第一篇文章里我们从静态的角度讲解了以太坊的数
  • 如何使用区块链技术保护个人隐私和数据安全

    区块链技术是一种分布式账本技术 它具有不可篡改 去中心化 透明度高等特点 区块链技术能够实现数据的可信存证 隐私保护和交易安全 并且能够通过智能合约的自动执行 因此被广泛应用于金融 电商 物流 社交网络等领域 区块链技术的核心是 分布式账本
  • 交易的本质 什么样的信仰,决定什么样的交易人生

    什么样的信仰 决定什么样的生活 同样 什么样的理念 也决定了什么样的交易 多数的交易员都把能否在交易市场稳定化盈利归结于自己从事这个行业的时间 通常很多人会说五年入门 十年小成等等 好像只要坚持个五年十年就能够在交易市场找到自己的位置 你信
  • 以太坊执行miner.start返回null( 转载)

    博文地址 http blog csdn net wo541075754 article details 78735711
  • 近千万EOS被盗事件回顾,大家请保护好自己的EOS私钥

    最近有伙伴被盗了价值近千万的EOS 于是查看了这次被盗活动账号记录 这次分享出来 一是有可能大家有线索 二是也让大家意识到数字货币私钥安全的重要性 事件回顾 受害人在7 9号被偷盗人通过update auth更换了账号授权公私钥 紧接着被转
  • 区块链中的哈希算法

    区块链中的密码学 密码学在区块链中的应用主要有两个 哈希算法与非对称加密算法 这次主要对哈希算法进行详细的说明 哈希算法 哈希算法的特点有 1 输入可以为任意大小的字符串 2 产生固定大小的输出 3 可以在合理的时间内算出输出值 若要满足密
  • 工业互联网会是制造业数字化发展的未来吗?

    新工业革命正逐步形成 你认为工业互联网会是制造业数字化发展的未来吗 从这几年的工业互联网发展政策措施 就能看到答案 早在近三年前 工业互联网创新发展行动计划 2021 2023年 就提出了五方面 11项重点行动和10大重点工程 着力解决工业
  • 一文了解Substrate

    Substrate是用于构建特定类型区块链的工具箱 它本身并不是一个区块链 而是开发者用来创建独特而强大的区块链的一套工具 Substrate允许开发者可以自己创建所需所想功能的区块链 无需受限于现有的设计 Substrate使用FRAME
  • NFTScan | 01.01~01.07 NFT 市场热点汇总

    欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总 周期 2024 01 01 2024 01 07 NFT Hot News 01 空投 Mint Blockchain 将于 2024 年 1 月 10 号
  • 申泰勇教练的独家人物化身系列即将登陆 The Sandbox

    申泰勇 Shin Tae yong 教练是足球界的传奇人物 他来到 The Sandbox 推出了自己的专属人物化身系列 作为前 K 联赛中场球员和印尼队取得历史性成就的幕后教练 他的传奇经历现在已经影响到了虚拟世界 向过去 现在和未来致敬
  • 你的服务器还安全吗?用户数据是否面临泄露风险?

    一系列严重的网络安全事件引起了广泛关注 多家知名公司的服务器遭到黑客挟持 用户的个人数据和敏感信息面临泄露的风险 这些事件揭示了网络安全的脆弱性和黑客攻击的威胁性 提醒着企业和个人加强对网络安全的重视 一 入侵案例 1 1 蔚来数据泄露 1

随机推荐

  • javaweb项目总结思路

    JAVAweb项目思路指南 本次项目所用技术 第一章 需求 系统用户模块 员工管理模块 系统权限功能 第二章 数据库设计 创建数据库 用户表 员工表 第三章 架构选择 第四章 搭建系统开发 搭建系统开发环境 编写实体类 编写user实体类
  • 类和对象【默认成员函数】

    全文目录 类的6个默认成员函数 构造函数 特性 析构函数 特性 拷贝构造函数 特性 赋值运算符重载 运算符重载 赋值运算符重载 前置 和 后置 const 成员 取地址及const取地址操作符重载 类的6个默认成员函数 每个类不管有没有内容
  • Java进阶01:Hibernate教程

    1 什么是Hibernate Hibernate是一个开放源码的ORM Object Relational Mapping 对象关系映射 框架 它对JDBC进行了轻量级的封装 使得Java开发人员可以使用面向对象的编程思想来操作数据库 2
  • FISCO BCOS 和 WeBASE-Front 搭建联盟链

    一丶环境依赖 安装ubuntu依赖sudo apt install y openssl curl 安装centos依赖sudo yum install y openssl openssl devel 二丶创建操作目录cd mkdir p f
  • HTML案例设计(用户信息提交表单)

    最近学习了HTML语法知识 详见内容请戳此次HTML基础知识 遂做了此前端界面 比较简略 但是算对Web开发有了初步的认识 先放效果图出来 你的三连就是我创作的动力 HTML代码 本次知识点将会不定期补充 div align center
  • 智能学习

    智能学习 MATLAB实现CS BP多变量时间序列预测 布谷鸟搜索算法优化BP神经网络 目录 智能学习 MATLAB实现CS BP多变量时间序列预测 布谷鸟搜索算法优化BP神经网络 预测效果 基本介绍 程序设计 参考资料 预测效果 基本介绍
  • HTML静态页面获取url参数和UserAgent

    目录 前言 原因 解决 1 静态页面获取url的参数 2 取useragent的值 3 测试页面 前言 接技术支持小伙伴信 有用户反馈app在华为设备上下载不了 以为是服务器覆盖的范围不够或服务器挂了 直到另一个客服同事发来一个录屏 基本知
  • 自己写ArrayList后的心得

    源码分析 ArrayList应该是Java工具类中最简单的一个 它的内部实现是一个数组 在首次加入元素时 ArrayList会创建一个默认大小的数组 之后的添加 删除 查询操作都是对该数组进行操作 而我自己写的ArrayList则是和Lin
  • 记录错误:FileNotFoundError: [WinError 3] 系统找不到指定的路径。: ‘E:\\CV_Paper_fuxian\\lesson\\B_VGG\\..\\Data\\tra

    撸代码发现错误 FileNotFoundError WinError 3 系统找不到指定的路径 E CV Paper fuxian lesson B VGG Data train 经过检查发现 是系统内文件夹名称设置错误 如果出现这样的错误
  • new与malloc

    1 属性 new delete是c 运算符 关键字 需要编译器支持 malloc free是库函数 需要头文件支持 2 参数 使用new操作符申请内存分配时无需指定内存块的大小 编译器会根据类型信息自行计算 而malloc需要显示的指出所需
  • java/php/net/python家庭财务管理系统设计

    本系统带文档lw万字以上 答辩PPT 查重 如果这个题目不合适 可以去我上传的资源里面找题目 找不到的话 评论留下题目 或者站内私信我 有时间看到机会给您发 管理员用例图 系统中的核心家庭是系统管理员 管理员登录后 通过管理员菜单来管理后台
  • 03. HTTP协议

    目录 HTTP协议 基本概念 请求 响应 请求头中最常见的 些重要内容 爬虫需要 响应头中 些重要的内容 请求方式 总结 HTTP协议 基本概念 协议 就是两个计算机之间为了能够流畅的进行沟通而设置的 个君子协定 常见的协议有TCP IP
  • firefly的使用

    https github com 9miao Firefly gitpython setup py install firefly admin py createproject myproject 就可以创建一个新的工程了 转载于 http
  • mac os 安装metasploit v5.0.23(msf)

    安装metasploit git clone https github com rapid7 metasploit framework git cd metasploit framework msfconsole 执行上面的命令时 报如下错
  • 台式机常见问题汇总

    1 第一步 必须安装硬盘 硬盘安装在中间 否则安装电源后 硬盘不好安装了 2 第二步 检查台式机的数据线 应该是给足的 3 开机启动后 电脑吱吱响 后来找到原因 硬盘四个固定角没有固定好 所以转起来震动噪音 4 硬盘安装时 用的螺丝是接触面
  • 太空狼人杀(Among US)只能QuickChat 更改年龄限制达到可以Free To chat方法

    Among us 不能自由聊天的解决方法 对于年龄数据被上传到服务器的账号 可能不适用 1 进入 C Users 你的账户名 AppData LocalLow InnerSloth Among Us playerPrefs 如果看不到App
  • centos 安装alien

    出处 http linux4you in install netapp oncommand system manger on centos 1 在root权限下执行命令 sudo su 2 安装alien需要的依赖包 yum y insta
  • springmvc源码学习(二十七)异步任务超时异常的执行流程

    目录 前言 一 示例 二 源码分析 总结 前言 本文分析异步任务出现超时及异常的情况时的处理流程 一 示例 设置超时时间为2s 但任务需要执行10s ApiOperation value test notes test GetMapping
  • zsh + oh-my-zsh 主题预览

    The Themes robbyrussell the default that Robby uses The rest of the themes in alphabetical order af magic afowler agnost
  • 区块链技术之哈希指针

    hello 大家好 我们第三期的区块链技术分享来啦 那么话不多说 我们开始吧 提起区块链 大家可能都会提到 不可篡改 但是为什么区块链不可篡改呢 先给出答案 这与区块链的数据结构哈希指针和默克尔树有关 那么我们今天先分享哈希指针相关的内容