0基础学习区块链技术——51%攻击和双花

news2024/12/26 11:11:43

在《0基础学习区块链技术——分叉》一文中,讲解了区块链分叉相关的原因。这种分叉是CAP原则的结果,大部分分布式系统都会优先保证Availability(可用性)和Partition Tolerance(分区容错性)。而对于Consistency(一致性)则相对宽松。也就是说并不要求无时无刻保持强一致性,可以容忍在相对短的时间内出现不一致的情况。之后通过后续的其他策略进行补偿,从而达到最终的一致性。
在这篇文章中我们还看到了:一条被部分人认可的主链并不一定会成为最终的主链。因为最长链原则的存在,导致区块链网络中某条链在某种原因下率先新增了一个区块,从而导致他比其他区块的高度更高。这样其他区块就会同步该区块链全部区块。它也就进化成为主链了。
在这里插入图片描述
比如上图,链高度是4时,1 2 3’ 4’‘被多数链采纳;
之后最上面一条链最先完成了上区块,同时最下面一条链也完成了上区块。而中间三条链都没有上区块,导致它们的高度比最上和最下两条链都要短。这个时候中间三条链会选择某条链进行同步。上图中它们同步了最上面一条链,即1 2 3 4’ 5’。
最后一条链在后面上区块6时和第一条链又同时发生。但是此时中间三条链由于种种原因,也没抢先上链,于是它们又要选择同步某条链。此时它们选择了同步最下面一条链,即1 2 3 4 5 6。
后面的4条链中某条链上了区块7,且早于其他链上区块。于是全网的区块链在此时达到一个短暂的一致性,即1 2 3 4 5 6 7。
后面新增区块8时,又由于种种原因,出现了分叉。
所以我们看到区块链网络中,统一和分叉是一直在进行和发展的。这就引出一个问题:历史上在区块上的交易记录,可能在某个时间点就不不存在了。因为包含它的那些链,因为后续有其他链比它们长,而被替换掉了。
理解了上述可能存在的现象,我们就可以想象如何利用这个原理做点坏事。
这也就是本文要讲的51%攻击和双花问题。
什么是51%攻击?很多文章的解释是:掌握了51%的算力。这个解释有点抽象,是“黑客”掌握了全网51%的机器资源吗?那它又是如何做到入侵这么多机器资源的呢?实际情况远没有这么复杂,我们通过一个案例来介绍它和双花。
在这里插入图片描述

参与区块链网络

黑客将自己的计算机和自己特殊定制的软件加入到区块链网络,并充当全节点。这个时候它需要和其他全节点通信,以获取全部区块数据。
在这里插入图片描述

购买资产、控制一条链

黑客转账购买资产,花费了500万。这条交易记录被全网广播,并被其他矿工打包进入主链。
但是黑客控制的区块链会过滤掉这条交易记录,但是会接受验证节点发送的其他交易记录,并依据这些记录打包出自己的区块。这条被控制的区块链在收到其他区块链通知同步数据时什么都不做,它只是专注于黑客自己控制的矿机挖掘的区块,并将这样的区块上的自己的链上。这个区块链不包含自己的交易记录。
在这里插入图片描述

转移资产

黑客此时要把购买的资产转移到安全的地方,因为等下它就要发起攻击了。
这一步非常重要,它牵扯到信任机制。
因为有分叉的存在,所以即使交易记录上链也不能意味着这笔交易最终被确认,因为未来的某个时间点,可能因为最长链原则,包含这笔交易的区块被其他更长的链替代。难道我们就要无穷无尽的等下去吗?实则不是。现实中大家一般认为经过6次确认,或者说包含交易的区块之后上链了5个其他区块,那这笔交易基本可以认为是确认了。因为理论上来说,这样的链是不容易被整体替换的了。
但是只是“不容易”,实则还可以。但是大部分人因为现实原因,选择相信“不容易”就是“不可以”。
这样商家在查看到交易被“确认”后,就放心的把客户购买的资产给兑现了。
在这里插入图片描述

51%攻击

攻击者自己维护的链上是没有自己交易记录的,这点非常重要。
在计算区块6的时候,全网矿工和黑客控制的矿工在竞赛,看他们谁先产出第一个区块。
假如黑客的矿工这次优先产生了区块,它会在上链后,快速告知全网,让全网的节点来同步自己的区块链。假如全网都同步了它的完整区块链,那么它之前发起的交易会全部抹掉。这样现实中它套现了1000W,而区块链网络上自己的1000W还存在。这就是双花,即一笔钱可以花两次。
假如黑客的矿工这次没有优先产出区块,则它继续保持缄默,持续挖下去,一直到它抢到第一个区块为止。
所以这个过程是黑客的矿机和全网其他“诚实”矿机比拼的过程。所以51%只是一种代称,即表示黑客在此次的计算结果更快。而不是它入侵了51%的矿机。
在这里插入图片描述

分叉在“双花”中的其他用处

比较有意思是,由于分叉一直存在,所以即使双花产生了,也可能有某个隐秘的区块链没有同步,而是自己衍生出一条链,这条链就包含了黑客历史交易记录。于是我们可以通过这条链来找到攻击前原来的样子。
如下图,No.6的链就记录了之前大部分区块链认可的历史。
但是随着时间推移,在无认为干预的情况下,No.6要对抗全网算力,最后它还是会被其他链覆盖。到时候整个区块链网络上就找不到黑客发起的攻击记录了。
在这里插入图片描述

完整图片

在这里插入图片描述

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

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

相关文章

【spring】第二篇 bean实例化

对象已经能交给Spring的IOC容器来创建了,但是容器是如何来创建对象的呢? 就需要研究下bean的实例化过程,在这块内容中主要解决两部分内容,分别是 bean是如何创建的 实例化bean的三种方式,构造方法,静态工厂和实例工厂 在讲解这…

[flutter]一键将YAPI生成的api.json文件转为需要的Dart Model类的脚本

目的: 根据YAPI接口平台生成的api.json接口文件,将接口数据转化为model类,生成对应的接口值类型文件。 发现: api.json文件导出: YAPi是一个接口管理平台,登录账号打开项目后,在点击数据管理…

DVWA-File Upload

Low 后端代码没有对上传的文件做任何过滤&#xff0c;所以可以上传一句话木马。 <?phpif( isset( $_POST[ Upload ] ) ) {// Where are we going to be writing to?$target_path DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";$target_path . basename( $_F…

安装MongoDB单副本说明

参考&#xff1a;https://blog.csdn.net/weixin_43464076/article/details/126509254 https://driverzhang.github.io/post/mongo%E5%BC%80%E5%90%AF%E4%BA%8B%E5%8A%A1%E4%B9%8B%E5%89%AF%E6%9C%AC%E9%9B%86%E9%87%87%E5%9D%91/ https://dev.to/alexalvess/getting-started-wi…

【CMake系列】05-静态库与动态库编译

在各种项目类型中&#xff0c;可能我们的项目就是一个 库 项目&#xff0c;向其他人提供 我们开发好的 库 (windows下的 dll /lib &#xff1b; linux下的 .a / .so)&#xff1b;有时候在一个项目中&#xff0c;我们对部分功能 打包成 库&#xff0c;方便在不同地方进行调用 静…

[Linux] 软链接使用绝对路径的重要性

文章目录 软链接使用绝对路径的重要性软链接路径复制软链接查看文件类型 软链接使用绝对路径的重要性 软链接路径 软链接必须指定绝对路径&#xff0c;否则复制软链接后&#xff0c;由于软链接的相对路径是从软链接所处位置开始解析的&#xff0c;因此使用相对路径的软链接可…

pip(3) install,完美解决 externally-managed-environment

前言 现象 在 Manjaro 22、Ubuntu 23.04、Fedora 38 等最新的linux发行版中运行pip install时&#xff0c;通常会收到一个错误提示&#xff1a;error: externally-managed-environment&#xff0c;即“外部管理环境”错误&#xff0c;但这不是一个 bug。 如果您想阅读&#x…

ISSCC论文详解-ISSCC.34.1 适用于高精度 AI 应用的 28nm 83.23TFLOPS/W POSIT

0 前言 本文将对存内计算前沿论文——ISSCC 2024 34.1进行分享介绍&#xff0c;包括背景介绍、解决方案和架构、主要创新点、最终结果对比四部分内容。 1 背景介绍 题目&#xff1a;《A 28nm 83.23TFLOPS/W POSIT-Based Compute-in-Memory Macro for High-Accuracy AI Appli…

【UML用户指南】-08-对基本结构建模-图

目录 1、41视图 2、术语和概念 3、结构图 &#xff08;1&#xff09;类图&#xff08;class diagram&#xff09;&#xff1a; &#xff08;2&#xff09;构件图&#xff1a;&#xff08;component diagram&#xff09; &#xff08;3&#xff09;组合结构图&#xff1a;…

掌握ChatGPT的正确打开方式

引言 随着人工智能技术的飞速发展&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域取得了显著的突破。其中&#xff0c;聊天生成预训练变换器&#xff08;ChatGPT&#xff09;作为一种新型的对话式AI模型&#xff0c;引起了广泛关注。本文将详细介绍ChatGPT的正确使用…

更换 RT-DETR 主干网络为 【ResNet-18】【ResNet-34】| 已支持 18/34/50/101/152 全系列尺寸

本专栏内容均为博主独家全网首发,未经授权,任何形式的复制、转载、洗稿或传播行为均属违法侵权行为,一经发现将采取法律手段维护合法权益。我们对所有未经授权传播行为保留追究责任的权利。请尊重原创,支持创作者的努力,共同维护网络知识产权。 之前这篇文章写过了添加【R…

ChatGPT基本原理详细解说

ChatGPT基本原理详细解说 引言 在人工智能领域&#xff0c;自然语言处理&#xff08;NLP&#xff09;一直是研究的热点之一。随着技术的发展&#xff0c;我们见证了从简单的聊天机器人到复杂的语言模型的演变。其中&#xff0c;ChatGPT作为一项突破性技术&#xff0c;以其强大…

实战:Zig 编写高性能 Web 服务(2)

1.1 编写 HTTP server 我们从python -m http.server 8000启动得到灵感&#xff0c;先确定好目标&#xff1a; 编写一个HTTP/1.1 http serverzig version 0.12.0 使用zig init搭建项目的前置工作你先自行搭建好&#xff0c;不会的翻看前面铺垫的章节熟悉zig的项目结构。 关键…

小米用田忌赛马的方式,逼得苹果降价超2000元应对,确实厉害

苹果的iPhone15降价2300多元&#xff0c;成为618的大热门&#xff0c;之前不少人士认为迫使苹果如此大幅度降价的原因是因为另一家手机企业的竞争&#xff0c;而日前有人士认为是小米用田忌赛马的方式&#xff0c;迫使苹果降价应对。 小米这次大幅度降价的手机并非是最新款的小…

设计模式-策略模式(行为型)

行为型-策略模式 了解策略模式 策略模式是一种行为型设计模式&#xff0c;在策略模式中定义了一系列算法或者策略&#xff0c;并将这些策略封装到独立的类中&#xff0c;使得可以相互替换。在使用时&#xff0c;可以指定响应的策略使用。 角色 策略接口&#xff1a;对于某种…

【计算机网络】计算机网络的概念

计算机网络的概念 导读一、计算机网络的概念1.1 个人理解1.2 通信设备与线路1.2.1 集线器1.2.2 交换机1.2.3 路由器 1.3 计算机网络的进一步理解1.4 互联网1.5 网的不同含义 二、计算机网络的不同定义2.1 广义观点2.2 资源共享观点2.3 用户透明性观点 结语 导读 大家好&#x…

【机器学习】基于OpenCV和TensorFlow的MobileNetV2模型的物种识别与个体相似度分析

在计算机视觉领域&#xff0c;物种识别和图像相似度比较是两个重要的研究方向。本文通过结合深度学习和图像处理技术&#xff0c;基于OpenCV和TensorFlow的MobileNetV2的预训练模型模&#xff0c;实现物种识别和个体相似度分析。本文详细介绍该实验过程并提供相关代码。 一、名…

【Python】ERROR: Could not find a version that satisfies the requirement

成功解决“ERROR: Could not find a version that satisfies the requirement”错误的全面指南 一、引言 在Python开发中&#xff0c;经常需要通过pip工具来安装各种依赖包。然而&#xff0c;有时在尝试安装某个包时&#xff0c;可能会遇到“ERROR: Could not find a version …

批量提取 Word 文档中的全部图片

步骤 1、打开 WinRAR 任选一个现成的压缩包双击打开 WinRAR &#xff0c;或从开始菜单打开 WinRAR 2、直接把要提取图片的 Word 文档拖入 WinRAR 菜单区域 1 → 2 → 3&#xff0c;WinRAR 资源管理目录中的 media 就是该 Word 文档所要提取的全部图片所在文件夹 按住&#x…

python书上的动物是啥

Python的创始人为Guido van Rossum。1989年圣诞节期间&#xff0c;在阿姆斯特丹&#xff0c;Guido为了打发圣诞节的无趣&#xff0c;决心开发一个新的脚本解释程序&#xff0c;做为ABC语言的一种继承。之所以选中Python作为程序的名字&#xff0c;是因为他是一个叫Monty Python…