0基础学习区块链技术——推演猜想

在《0基础学习区块链技术——入门》一文中,我们结合可视化工具,直观地感受了下区块的结构,以及链式的前后关系。
本文我们将抛弃之前的知识,从0开始思考和推演,区块链技术可能是如何构思出来的。

去中心

在一般的思维中,我们在一个“中心”保存信息,这样即方便又高效。但是带来的问题是:篡改起来容易。因为只要攻克“中心”这样一个对象,就可以修改全部信息。(下图中:人脸表示用户,红色6角星表示攻击,红色方块表示被篡改的数据)
在这里插入图片描述
那怎么变得更加安全一点呢?一个朴素的想法就是——再加一个“中心”。
在这里插入图片描述
这样攻击者需要攻克两个“中心”才能达到修改历史数据的目的。
按照这个思路,如何做到更加安全呢?对的,增加更多的“中心”。这样攻击者需要攻克更多的“中心”才能修改数据。
随着“中心”的增多,它们就越来越显得不那么“中心”了。因为每个“中心”都对等,没谁权重高,没谁权重低,于是丧失了“中心”这个概念。这就是“去中心化”。

预防篡改

如何防止篡改历史数据?实际上,“防止”是不太可能。我们唯一能做的就是“提高篡改成本”。像上面增加“中心”数量一样,它并不能避免全部“中心”被攻克,只是提高了被攻克的难度。
那如何提高篡改成本呢?一种朴素的想法是:给数据加密。但是数据加密需要秘钥,这个秘钥如果被偷窃,会导致整个方案,或者某个数据中心的数据全部被攻克。
在这里插入图片描述

最关键的问题是:被篡改后,需要对比其他“中心”解密后的数据,才能感知该中心数据出现了问题。
在这里插入图片描述
如何可以快速感知数据变动?那就是指纹计算。即我们对数据计算出一个唯一性指纹。一旦数据有任何变动,之前的指纹都会失效。
在这里插入图片描述
这样如果篡改者修改了历史数据,历史数据所在的数据区域指纹就失效,这个时候篡改者就需要重新计算新的指纹。
在区块链技术中,指纹计算使用的Hash算法,有SHA-256等。不同算法算出来的数据(指纹)长度不一样,但是相同算法算出的长度是一致的。需要说明的是,目前的hash算法都存在碰撞的可能性(即不同的数据,算出相同的hash值),只是概率很低罢了。

付出代价

如果篡改者手速非常快,可以一下就算出Hash。那不就意味着我们这种方式很容易被攻克吗?怎么办?增加算法的难度。因为Hash算法不具备可预测性,也不可逆。我们只能使用“暴力”计算的方式。这样我可以提出一些规则,比如要求Hash出来的值需要符合某些条件。但是由于数据到Hash值存在一一对应的关系,如果要求Hash值改变,则需要原始数据也改变。于是我们就引入Nonce这个概念,它会成为原始数据的一部分,从而让Hash值可以随着它改变而改变。但是这种改变是不可预测的,即我们不知道Nonce为什么值时,算出的Hash符合某种规律。我们唯一能做的就是算出来,然后查看该值是否符合规律。
一种比较容易想到的规则,就是要求算出的的Hash值前面或者后面几位为0。
在《0基础学习区块链技术——入门》中,我们看到例子中有5种规则,实际规则会更复杂,要求的暴力计算时间也越长。
在这里插入图片描述

方便存储

如果我们将数据保存到一个加密区域,则新增数据时需要解密原始数据,然后把新数据加入后再加密。
在这里插入图片描述
这个过程略显繁琐。
有没有更简单的方式?可以一条数据加密一次,不和历史数据掺和到一起。但是在预防篡改这块,这个方案显得无能为力。
这样我们就又回到指纹的方案。
那么是对全部数据进行指纹?还是对单条数据进行指纹?(实际两者都不是)
如果对全部数据进行指纹计算,就会面对一个“以有限对抗无限”的问题。因为随着数据量的增加,要将全部数据每次都计算一次,将变得越来越难以实现。比如现在比特币交易数据有几百G,如果每次有新的数据进来,都要对着几百G数据进行Hash,则机器资源消耗会更大。
那么对单条数据进行指纹?这似乎只能在检查单个数据时,可以发现被篡改(因为数据的Hash因为数据被篡改而改变),但是不能快速发现整体数据都变得不可信了。
于是,基于一些计算机数据结构的思想,可以将数据通过链式关系关联起来。起到“铰链”作用的就是前一个区块的Hash。
https://img-blog.csdnimg.cn/direct/47cdfd582eb94866bd7b07544b0b8ac6.png
如果链中某个区块数据变了,它的Hash也会改变,而它后面的区块的Pre hash还是指向原始值,这样区块链的链式关系就断开了,该链就出现问题了。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/22459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回溯算法之组合总和2

题目: 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示例 1: 输入: candi…

浅谈配置元件之随机变量

浅谈配置元件之随机变量 1.概述 为了增强测试的真实性和多样性,JMeter 提供了多种配置元件来生成动态数据,其中“随机变量”(Random Variable) 就是一种常用的配置元件,用于生成随机数值、字符串等,以模拟不同用户请求中的变化参…

认识meta

目录 认识meta camera_metadata的存储结构 camera_metadata的基本操作 申请camera_metadata 增加entry 查找entry 更新entry 删除entry 对tag的查找操作 vendor_tag_ops和vendor_cache_ops是Andriod提供的接口 propertyID Camxhal3metadatautil.cpp文件理解 Initia…

Redisson 分布式锁 - RLock、RReadWriteLock、RSemaphore、RCountDownLatch(配置、使用、原理)

目录 前言 Redisson 分布式锁 环境配置 1)版本说明 2)依赖如下 3)配置文件如下 4)项目配置 RLock 1)使用方式 2)加锁解释 3)加锁时手动设置时间 4)加锁时,到…

DALL-E 2详细介绍

DALL-E 2是由美国人工智能研究公司OpenAI推出的一款文本生成图像系统,它是DALL-E的后续版本,具有更强大的功能和更高的图像质量。以下是关于DALL-E 2的详细解释: 一、主要功能特点 文本到图像生成:DALL-E 2能够根据用户提供的文…

揭秘FL Studio21.2.8中文版一键解锁音乐创作新境界!

在音乐制作的广阔天地里,随着技术的不断进步和数字音频工作站(DAW)软件的普及,越来越多的音乐爱好者和专业制作人开始涉足音乐创作的奇妙旅程。其中,FL Studio以其强大的功能、直观的操作界面和丰富的音色资源&#xf…

vue+Django接入钉钉登录

前端处理 dingtalkLogin() {let url https://login.dingtalk.com/oauth2/auth?redirect_uri${this.dingRedirectUrl}&response_typecode&client_id${this.appKey}&scopeopenid&stateSTATE&promptconsentwindow.location.href url;},后端处理 def dingt…

Nginx:怎么携带参数重定向

在NGINX中,可以使用location指令和rewrite指令来携带参数进行重定向。 首先,可以使用location指令根据请求的URL匹配到一个特定的位置块。然后,在位置块中使用rewrite指令将请求重定向到另一个URL,并携带参数。 下面是一个示例配…

LED驱动IC:HC2106,1W升压型DC/DC白光LED驱动器HC2106系列,供应给大功率白光LED灯提供能源、恒流源

LED驱动IC: HC2106:1W升压型DC/DC白光LED驱动器HC2106系列 概述:HC2106系列芯片是针对LED应用设计的PFM 控制模式的开关型DC/DC 升压恒流芯片,通过外接电阻可使输出电流值恒定在0mA~500mA。 HC2106可以给一个、多个…

基于语音识别的智能电子病历(其他)签名的处理

签名业务流程的说明 概述 签名是医生对完成的报告的确认操作,是医生对报告完成状况的认可。 一般情况下一份报告对应一个录音,而一个录音对应一个病人的一次诊疗过程,因此只有那些参与了录音或诊疗过程的医生,才能具有对报告的签…

java实现jpg转png

在Java中,你可以使用javax.imageio.ImageIO类来实现JPG到PNG的转换。以下是一个简单的方法,它接受JPG文件的路径,读取该文件,转换成PNG格式,并保存到指定的输出路径。 以下是实现代码: import javax.image…

LeetCode刷题第3题(C#)

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。 法一: 这道题用到的其实是滑动窗口。 滑动窗口算法是在特定窗口大小的数组或字符串上执行要求的操作。它可以将一部分问题中的嵌套循环转变为一个单循环,以此减少时间复…

【Docker学习】docker push简述

docker push是docker pull的反向操作。我们将镜像上传到公共或私有镜像仓库就需要用到这个命令。 命令: docker image push 描述: 上传一个镜像到注册表。 用法: docker image push [OPTIONS] NAME[:TAG] 别名: docker pu…

实验名称:面向对象练习

门门都精通,头发去无踪。 目录 一、实验目的 二、实验环境 三、实验步骤 四、实验结果 1.设计一个圆类(Cirle),该类中包含圆心位置、半径、颜色等属性,还包括构造函数和计算圆的周长、面积的方法,设计完成后,测试…

算法004:盛水最多的容器

这道题比较简单,使用双指针。 要求的是最大面积,对于一个水桶(水杯来说),面积的算法是固定的,就是底乘以高。 在这个题中,我们把左边的位置设为left,右边的位置设为right&#xff…

一个月飙升 9k star!打破常规的 git 客户端

作为一名程序员,想必大家每天都要使用 git 来管理自己的代码吧。有些大佬喜欢使用命令行来进行 git 的操作,有些新入门的小白程序员则比较喜欢使用各种 git 客户端来可视化的管理代码,而有些程序员则喜欢使用 IDE 中集成的 git 功能来做代码的…

XXE漏洞介绍

XXE(XML External Entity)漏洞是一种安全漏洞,它发生在应用程序解析XML输入时。如果应用程序没有正确地限制对外部实体的引用,攻击者可以利用XXE漏洞执行各种恶意操作,例如访问敏感文件、执行远程服务请求、甚至可能导…

1、企业会计准则--基本准则

根据《国务院关于〈企业财务通则〉、〈企业会计准则〉的批复》(国函[1992]178号)的规定,财政部对《企业会计准则》(财政部令第5号)进行了修订,修订后的《企业会计准则--基本准则》已经部务会议讨论通过,现予公布,自2007年1月1日起施行。 二○○六年二月十五日 企业会计…

云计算导论(3)---分布式文件系统

文章目录 1. 概述2. 基本架构3. GFS和HDFS4. 云存储 1. 概述 1. 文件系统是操作系统用来组织磁盘文件的方法和数据结构。  传统的文件系统指各种UNIX平台的文件系统,包括UFS等,它们管理本地的磁盘存储资源,提供文件到存储位置的映射&#xf…

鸿蒙开发接口定制管理:【@ohos.enterpriseDeviceManager (企业设备管理)】

企业设备管理 说明: 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import enterpriseDeviceManager from ohos.enterpriseDeviceManager;enterpriseDeviceManager.activateAdmin activate…