区块链是如何做到交易记录不可被篡改的

2023-10-26

区块链是如何做到交易记录不可被篡改的

96 星目 关注

2017.07.19 23:03* 字数 1912 阅读 1654评论 4喜欢 1

BlockChain

比特币前一阵子一度超过2万元一枚,而且长期来看这远远不是它的极限。假如你手里有比特币,而且知道你手里的比特币就像银行卡里的钱一样,邦定了你的卡号(比特币地址),只有你才能用手里的密码(比特币私钥)签名授权一笔交易。唯一与银行不同的是其他人能看见你所有的资产,不过其他人没有办法调动一丝一毫,除非拿到那个密码——私钥。

可是,既然区块链本质上是个公开的、人手都可以一册的大账本,如果有人篡改了我的某个交易怎么办?如果有人改掉了我的25天前那笔支付给我25比特币,找零回去0.25比特币的交易,改成了支付给我0.25比特币,找零25比特币,那我岂不是要损失好几十万?

这个担心一定很多人都有,目前却一次都没有发生,而且越研究比特币的区块链技术你就会越不担心这件事。

那么,区块链这项技术是如何做到把一个账本明明白白摆在所有人面前,却没人能能够修改里面哪怕一个标点符号的呢?

要想理解区块链为什么无法被篡改,首先要先了解下面两个与区块链相关的非常重要的概念:
SHA256
一种国际公认的优秀加密算法,输入是任意长度的数据,输出总是256位的值,这个值通常我们称之为哈希值,输入值的任何微小的变化都会产生不同的输出。
举个例子,比如说这个256位的哈希值大小代表你跟某样东西之间的距离。原始的哈希值是你跟前面那颗树的距离,你小小的修改了一笔交易的数据,把划给你的值增加了1聪,也就是10的负8次方那么小,结果新生成的哈希值会变成你跟土星环上一颗陨石之间那么远。实际上这个变动会更夸张,弄不好要跨越整个银河系。

:当下文提到”某某的哈希“时,指的是以某某为输入,经过SHA256算法后生成的256位哈希值。

梅克尔树
一种树状数据结构,比特币的区块链使用了二叉树,具体结构可以去看下《精通比特币 第七章 区块链》
这个二叉树的每个节点都对应一个哈希值:最底层的节点是每笔交易的哈希,第二层的每个节点都是它下方两个哈希拼接后经过SHA256算法后生成的哈希,依次类推直到最顶端只剩一个节点,我们称这个节点为梅克尔根。
回顾下SHA256算法的特性,任何微小的输入变动都会引起输出值剧烈的变化。也就是说,交易记录中的任何变化,哪怕只把输出值增加了1聪,都会引起那次交易哈希翻天覆地的变化,这个变化会影响到第二级的哈希,进而一级一级顺着梅克尔树传递到梅克尔根。

为什么会说篡改很难?

首先,从数据结构上看。

区块的详细结构可以参考《精通比特币 第七章 区块链》

大致上一个区块包含了区块大小、区块头、交易数量、交易数据四个部分。其中交易数据被组织成了梅克尔树结构,区块头中包含了上一个区块的区块头部哈希和本区块中的梅克尔根。

由于区块拥有了这样的组织结构,区块内部的任何交易信息的改动,总会引起梅克尔树根的哈希值变化,进而包含了梅克尔根的区块头会发生变化,最终导致区块头的哈希发生变化。

如果进行了篡改,下一个区块中包含的前一个区块哈希将会跟篡改后的值不匹配。为了不让人发觉本区块的篡改,他必须修改掉后一个区块的头部信息。后一个的后一个头部信息也将需要修改,依次类推,一旦修改了某个区块,后续所有的区块都需要修改才能确保修改的不会被发现。

每一个区块的修改都是是一个非常艰巨的过程,因为区块的生成还需要一个非常特别的东西:工作量证明

什么意思呢?就是说区块的生成是要消耗工作量才能完成的,实际上这个消耗非常巨大。

那么这个工作量证明到底是怎么回事?

你可能还记得区块头的哈希值这个概念,区块链技术对这个256位哈希值会有一个要求,就是这个值必须小于某个上限。回顾SHA256这个算法的概念,你会发现,输出的哈希值是非常随机的,如果需要把结果落入特定的范围,需要不停的修改输入进行尝试,直到输出满足要求。在区块链中,在区块的头部有一个32位的随机量可以修改,以完成调整最终哈希的目的。

当前,满足小于这个上限值要求的难度有多大呢?一个专用的顶级矿机(一种专门用来计算哈希的计算设备),需要平均工作14个月才能找到一个合适的目标哈希。每修改一个区块,中间消耗的电量和时间估计都会超出被修改的账单中的获益,更不用说还需要修改很多个。

甚至,这个修改完成后,还有一个更艰巨的任务,就是黑掉全世界51%以上的区块链备份电脑。否则,即使你的账本修改的很完美,但是跟其他大部分人的不一致,那这个修改也毫无作用。

那么,篡改交易信息的意义又是什么?

回顾

区块链技术的发明者中本聪非常天才的通过两个维度保证了区块链的安全性:

技术维度:利用强大的加密算法和巧妙的数据结构确保每个修改都会被检测到;
经济维度:利用工作量证明使得每次修改都需要付出巨大的经济成本。

这样的解决方案已经不仅仅适用于比特币一种应用了,现在非常

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

区块链是如何做到交易记录不可被篡改的 的相关文章

  • CSAPP malloclab实验

    书本配套实验地址 构造一个分配器是一件富有挑战的任务 设计空间很大 有多种块格式 空闲链表格式 以及放置 分割和合并策略可供选择 另一个挑战就是我们经常被迫在类型系统的安全和熟悉的限定之外编程 依赖于容易出错的指针强制类型转换和指针运算 这

随机推荐

  • FreeRTOS记录(五、FreeRTOS任务通知)

    在前面几篇文章我们已经对FreeRTOS任务API和任务调度原理进行了相对深入的分析 这篇文章主要针对任务与任务之间的交互 信息传递相关的API组件进行分析 目录 一 任务通知基本介绍 1 FreeRTOS 任务通知函数 2 CMSIS封装
  • Android调用打印机

    打印机其实和Android没有什么大的关系 和linux内核关联才是比较强的 最终的结果是要在Android实现驱动打印机 但是一般调试一个新的驱动的流程是这样的 1 先在linux PC上进行测试 2 在标准嵌入式linux上进行调试 3
  • MFC原理与方法(二)

    MFC原理与方法 二 一 前言 二 类向导的使用 三 MFC消息管理 1 MFC消息映射机制 2 消息处理 四 结语 一 前言 时间过得好快啊 又是一个星期过去了 我又回来啦 每个星期保持写博客的习惯 及时消化上课的知识 不仅仅对我有帮助和
  • MySQL进阶篇之存储过程(procedure)

    04 视图 存储过程 触发器 4 1 视图 view 4 2 存储过程 procedure 4 2 1 介绍 1 介绍 存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合 调用存储过程可以简化应用开发人员的很多工作 减少数据在数据
  • 异常处理的返回

    异常处理的返回 异常可以分为四类 中断 interrupt 陷阱 trap 故障 fault 和终止 abort 这几种异常处理之后又有不同的返回方式 总的来讲 类别 原因 异步 同步 返回行为 中断 来自I O设备的信号 异步 总是返回到
  • 面试3个月拿下多家大厂的P7技术专家Offer,来看我面试复盘!

    一 概述 之前写过两篇文章 工作10年我面试过上百个程序员 真想对他们说 在公司里写代码天天摸鱼偷懒 出去面试又该怎么写简历 通过这两篇文章 我们给大家聊了聊国内中大型互联网公司 在Java面试时一些高频的技术问题 本文我们通过一篇真实的一
  • 【状态估计】用于非标量系统估计的最优卡尔曼滤波(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 考虑了最优卡尔曼滤波的例子 假设一些非标量
  • vscode运行命令是报错:标记“&&”不是此版本中的有效语句分隔符。

    问题截图 问题原因 这个问题的原因和你运行的什么脚本语言没关系 即与 py c cpp无关 和你在那个终端运行的有关 解决方法 第一步 点击向下箭头 并选择 选择默认配置文件 第二步 选择 Windows PowerShell 第三步 关闭
  • 数字IC手撕代码-边沿检测(上升沿、下降沿、双边沿)

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • 2021羊城杯CTF wp

    2021羊城杯 部分 wp Web web1 only 4 web2 EasyCurl web3 Checkin Go web4 Cross The Side Re Pwn BabyRop Crypto Miss bigrsa Misc M
  • FISCO-BCOS如何把WEBASE部署通过的合约方法由api在前端调用

    参考文章 fisco bcos官方文档第五章部分 通过POST请求 数据格式要为json 调用hello合约中的get方法 按要求填写需要的信息
  • 决策树的学习

    决策树 从名字上看 就知道其模型的结构为树结构 决策树既可以用于分类 也可以用于回归之中 在分类问题中 我们可以认为其是if then规则的集合 也可以认为是定义在特征空间与类空间上的条件概率分布 在学习过程中 利用训练数据和损失函数最小化
  • 因果推理的do算子

    在因果推理中 我们一般都需要首先构建一个因果图 这是后续进行因果分析的基础 但是在现阶段笔者的知识看来 因果图的构建其实是一个比较主观的过程 但偏偏又是后续分析的基础 所以略感头疼 在构建因果图前 我们有必要明白 什么是因果关系 通俗来说
  • 【JUC并发编程】

    本笔记内容为狂神说JUC并发编程部分 目录 一 什么是JUC 二 线程和进程 1 概述 2 并发 并行 3 线程有几个状态 4 wait sleep 区别 三 Lock锁 重点 四 生产者和消费者问题 五 八锁现象 六 集合类不安全 七 C
  • 统计字符串中,中文字符、英文字符和数字字符的数量

    package com suanfa public class ZYSTotal 统计字符串中 中文字符 英文字符和数字字符的数量 public static void main String args int englishCount 0
  • 指针和数组的相关练习题

    目录 一 一维数组 二 字符数组 三 二维数组 注意 假设本练习题所用的VS编译器是64位平台下的 首先要明白数组名的意义 1 sizeof 数组名 这里的数组名表示整个数组 计算的是整个数组的大小 2 数组名 这里的数组名表示整个数组 取
  • 帆软之图表详解

    帆软之图表详解 饼图 饼图 玫瑰图 玫瑰图和饼图类似 仅选择不同的图例即可 多分类饼图 注 标题居中不是直接显示标题居中 而是隐藏标题偶按照下面的方法将标题加上去 柱状图 柱状图设置柱子宽度 boby 样式 系列 固定柱宽 注意事项 问题描
  • 4.3寸串口屏在智能炒菜机上应用分享

    现代人追求高效品质生活的美好愿望以及社会科技的不断发展持续推动着一种新兴经济形态的出现 即懒人经济 懒人经济的崛起也成为智能家电行业新的增长引擎 自动炒菜机便是这一经济形态下的产物 对于很多居住于快节奏生活的一二线城市人来说 在辛苦工作一整
  • vue3 递归无限分类树型菜单+搜索功能

    我们先来看一下大致实现效果 数据可以无限向下增加 搜索关键字会自动展开数据 vue3树形结构菜单 搜索 首先我这个需要自己设计数据源 一定要先搞清楚数据是什么结构才能顺利开展下一步 有接口的同学可以忽略这一步 其中children顾名思义
  • 区块链是如何做到交易记录不可被篡改的

    区块链是如何做到交易记录不可被篡改的 星目 关注 2017 07 19 23 03 字数 1912 阅读 1654评论 4喜欢 1 BlockChain 比特币前一阵子一度超过2万元一枚 而且长期来看这远远不是它的极限 假如你手里有比特币