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.rhkb.cn/news/342653.html

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

相关文章

暑期来临,AI智能视频分析方案筑牢防溺水安全屏障

随着夏季暑期的来临,未成年人溺水事故频发。传统的防溺水方式往往依赖于人工巡逻和警示标识的设置,但这种方式存在人力不足、反应速度慢等局限性。近年来,随着视频监控智能分析技术的不断发展,其在夏季防溺水中的应用也日益凸显出…

Vue3——实现word,pdf上传之后,预览功能(实测有效)

vue-office/pdf - npm支持多种文件(**docx、excel、pdf**)预览的vue组件库,支持vue2/3。也支持非Vue框架的预览。. Latest version: 2.0.2, last published: a month ago. Start using vue-office/pdf in your project by running npm i vue-office/pdf. There are …

kafka安装流程

安装kafka前需要安装zookeeper zookeeper安装教程 1.新建一个logs文件夹 2.修改配置文件 3.修改listeners参数 4.以管理员身份启动kafka服务 .\bin\windows\kafka-server-start.bat .\config\server.properties 如果报 输入行太长。 命令语法不正确。 解决方案如下&#x…

力扣 503. 下一个更大元素 II

题目来源:https://leetcode.cn/problems/next-greater-element-ii/description/ C题解:因为是循环数组,所以对数组进行了两次遍历,相当于循环。使用了栈,一个存放元素,一个存放索引,用来更新res…

智能仪表通过Modbus转Profinet网关与PLC通讯方案

一、功能及优势:Modbus转Profinet网关(XD-MDPN100/300)的主要功能是实现Modbus协议和Profinet协议之间的转换和通信。Modbus转Profinet网关集成了Modbus和Profinet两种协议,支持Modbus RTU主站/从站,并可以与RS485接口…

STL:list

文章目录 标准库中的listlist的构造list的迭代器list的容量list的访问list的修改 list的迭代器失效list的反向迭代器list 与 vector的对比 标准库中的list list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双…

性能监控工具

性能是任何一款软件都需要关注的重要指标。除了软件的基本功 能,性能可以说是评价软件优劣的最重要的指标之一。我们该如何有 效地监控和诊断性能问题呢?本章基于实践,着重介绍一些针对系统 和Java虚拟机的监控和诊断工具,以帮助读者在实际开…

Promise总结

参考大佬 傻小胖的文章ES6 Promise用法小结-CSDN博客 一. 初识Promise Promise对象保存了异步调用的结果,如果正在调用,该对象的状态为 pending ;如果执行成功, 该对象的状态为 fulfilled;如果执行失败, 该对象的状态为 rejected 成功&…

企业在现代市场中的战略:通过数据可视化提升财务决策

新时代,财务规划团队不仅仅是企业内部的一个部门,更是帮助企业做出明智决策和设定战略目标的中坚力量。在当今瞬息万变的商业环境中,财务专业人士需要具备应对挑战并引导企业走向成功的角色职能。企业领导者时常面临着数据压力,需…

Ubuntu系统的k8s常见的错误和解决的问题

K8s配置的时候出现的常见问题 Q1: master节点kubectl get nodes 出现的错误 或者 解决方法&#xff1a; cat <<EOF >> /root/.bashrc export KUBECONFIG/etc/kubernetes/admin.conf EOFsource /root/.bashrc重新执行 kubectl get nodes 记得需要查看一下自己的…

树形表/树形数据接口的开发

数据表格式 需要返回的json格式 点击查看json数据 [{"childrenTreeNodes" : [{"childrenTreeNodes" : null,"id" : "1-1-1","isLeaf" : null,"isShow" : null,"label" : "HTML/CSS","na…

AWS EC2服务器开启root密码,SSH登录

1) EC2 Instance Connect连接&#xff0c;更改root密码 sudo passwd root 2&#xff09;接着切换到切换到 root 身份&#xff0c;编辑 SSH 配置文件 $ sudo -i$ vi /etc/ssh/sshd_configPasswordAuthentication no&#xff0c;把 no 改成 yes #PermitRootLogin prohibit-passw…

Java实现经纬度坐标转换

一、坐标系统简介 坐标系统&#xff0c;是描述物质存在的空间位置&#xff08;坐标&#xff09;的参照系&#xff0c;通过定义特定基准及其参数形式来实现。 坐标是描述位置的一组数值&#xff0c;按坐标的维度一般分为一维坐标&#xff08;公路里程碑&#xff09;和二维坐标…

微软Edge浏览器深度解析:功能、同步、隐私与安全

微软Edge浏览器是微软公司开发的一款网页浏览器,它基于Chromium内核,提供了快速、安全和兼容性良好的网页浏览体验。以下是关于微软Edge浏览器的详细信息和使用指南: 微软Edge浏览器的主要特点: 1. 基于Chromium内核: 渲染引擎:Chromium内核是基于开源项目Blink的,它…

任务3.7 开发名片管理系统

本实战项目以Java语言为基础&#xff0c;精心打造了一个功能全面的名片管理系统。系统采用面向对象的设计原则&#xff0c;通过Card类来封装每张名片的详细信息&#xff0c;如姓名、单位、职位和联系电话等&#xff0c;并提供了标准的访问器和修改器方法以确保数据的安全访问。…

解决 iOS 端小程序「saveVideoToPhotosAlbum:fail invalid video」问题

场景复现&#xff1a; const url https://mobvoi-digitalhuman-video-public.weta365.com/1788148372310446080.mp4uni.downloadFile({url,success: (res) > {uni.saveVideoToPhotosAlbum({filePath: res.tempFilePath,success: (res) > {console.log("res > &…

freertos初体验 - 在stm32上移植

1. 说明 freertos内核 非常精简&#xff0c;代码量也很少&#xff0c;官方也针对主流的编译器和内核准备好了移植文件&#xff0c;所以 freertos 的移植是非常简单的&#xff0c;很多工具&#xff08;例如CubeMX&#xff09;点点鼠标就可以生成一个 freertos 的工程&#xff0…

生成式AI时代已来,你是否做好了准备?

面对正在来临的生成式AI时代&#xff0c;从个人到企业&#xff0c;都应该为之做好充足的准备。 生成式AI时代的黎明已经来临 “生成式AI时代的黎明已经来临&#xff0c;它将会改变我们每个人的生活和工作方式、改变每一个行业。”在近日召开的2024亚马逊云科技中国峰会上&#…

Python 机器学习 基础 之 算法链与管道 【通用的管道接口/网格搜索预处理步骤与模型参数/网格搜索选择使用哪个模型】的简单说明

Python 机器学习 基础 之 算法链与管道 【通用的管道接口/网格搜索预处理步骤与模型参数/网格搜索选择使用哪个模型】的简单说明 目录 Python 机器学习 基础 之 算法链与管道 【通用的管道接口/网格搜索预处理步骤与模型参数/网格搜索选择使用哪个模型】的简单说明 一、简单介…

渗透测试报告生成工具

目录 1.前言 1.1 渗透测试报告是什么? 1.2 渗透测试报告的编写需要考虑以下几点&#xff1a; 1.3 一份优秀的渗透测试报告应该具备以下特点&#xff1a; 1.4 在编写渗透测试报告之前&#xff0c;需要进行一些准备工作&#xff1a; 1.5 渗透测试报告一般包括以下部分&…