0基础学习区块链技术——分叉

news2024/12/27 12:59:22

区块链是一种分布式存储技术。一谈到分布式服务,就会提及CAP原则。
CAP原则是以下三个单词的首字母:

  • Consistency(一致性):系统在执行某项操作后,仍然处于一致的状态。在分布式系统中,更新操作执行成功后,所有的用户都应该读取到最新的值,这样的系统被认为具有一致性。
  • Availability(可用性):每一个操作总是能够在一定的时间内返回结果。这里需要注意的是“一定时间内”和“返回结果”,也就是说系统的结果必须在给定的时间内返回,若超时,则被认为是不可用的。
  • Partition Tolerance(分区容错性):系统存在网络分区的情况下,仍然可以接受请求(即满足一致性和可用性)。网络分区指的是由于某种原因网络被分成若干个孤立的区域,而区域之间互不相通。分区容错性可理解为系统对结点动态加入和离开的处理能力,因为结点的加入和离开可认为是集群内部的网络分区。

它是分布式系统设计中的一个基本原则。这个原则指出,在一个分布式系统中,这三个要素最多只能同时满足两个,即不可能同时达到三者兼顾的状态。

一般情况下,在这三者之中,我们往往选择保留AP,即Availability(可用性)和Partition Tolerance(分区容错性),而战术性放弃Consistency(一致性)。
这是因为如果分布式服务不可用,那这个服务还有什么存在的意义?所以一定要保证Availability(可用性)。
Partition Tolerance(分区容错性)则在系统各节点之间网络出现问题时,单个分区还是可用的特性。如果不具备分区容错性,一个分区出现脑裂,则需要停止服务直到它同步完其他分区的数据。这个也是不能接受的。
但是Consistency(一致性)可以要求不是那么高,因为我们还有其他手段来补救。所以这儿谈的Consistency(一致性)我们可以称之为“强一致性”。在现实中,我们可以通过后续日志计算等方式,解决因为“弱一致性”导致的数据不同步的问题。

在区块链这样的分布式系统中,放弃的也是Consistency(一致性),即强一致性。这意味着,在区块链网络中,可能同时存在不同的链——它们还都是合法的。只是随着时间推移,这些链又会归于统一。但是又会在某个时间,再次分叉。

分叉

通过上面的分析,我们可以知道区块链分叉的原因主要是CAP原则。
我们可以将场景具体化,以方便大家理解分叉的原因。
转账发起方将转账记录发给验证节点后,验证节点会把它们发送给矿工节点。矿工节点将这些转账记录缓存起来,然后在其中挑选它认为有价值的转账记录(比如支付的手续费比较高的)打包到区块中。这意味着,不是每个矿工选择的转账记录都是一样的。进而可以推导出,不同矿工算出来的区块也是不一样的——虽然它们都是合法的。
矿工在暴力计算出区块后,会在全网广播,而由于网络距离或者抖动等问题,每个负责上链的节点收到的区块时间也会不同。
比如下图,甲矿工和乙矿工几乎同时算出来区块。
甲将区块最快速度发送给了上面的链,上面的链确认3这个区块合法,于是上链成功。后面收到的乙发来的区块,由于网络原因太晚了,就会被上面的链抛弃。
乙将区块最快速度发送给了下面的链,下面的链确认3’这个区块合法,于是上链成功。后面收到的甲发来的区块,由于网络原因太晚了,就会被下面的链抛弃。
甲乙相互发送各自最后一个区块给对方,发现它们区块高度相同(即区块的索引),则彼此什么都不做。
这样就慢慢演化成两条链。
在这里插入图片描述

最长链原则

通过上面的分析,我们可以知道理论上,区块链网络上可能同时存在多个高度一样的链,且它们都是合法的。但是这不是一种稳定态。为什么呢?
假如我们认为网络是稳定态,即某节点到某节点就是多长时间,那么是否意味着整个区块链就是稳定态?毕竟网络导致了分区。
但是我们忽视了一个重要问题,就是矿工计算区块的时间——它比网络时间要长很多。
在比特币中,矿工暴力计算出一个区块是分钟级别的长度,而网络通信是秒级别的。这样即使网络是稳态,那么它在整个区块产生和上链以及传播的过程中,占比是很低的。这就意味着,导致分区最重要的因素并不是网络通信的时差,而是区块产生的时间太过接近。
那么计算能力是否是稳态呢?是否牛X的计算能力一定会一直抢到区块上链的权力呢?计算能力当然是确定的,GPU什么配置,能产生多大的计算能力就是确定的。但是这并不意味着它一定每次都能抢到区块上链权。因为Hash算法是不可预测的,而且每个矿工可能选择的交易记录不一样,那么可能某个矿工运气特别好,它选择的记录组合花了很少的计算代价就暴力出来了合法的区块。
正因为每个矿工打包的交易记录不一样,而Hash算法存在不可预测性,这两个特性的叠加,导致区块链在生产过程中无法处于一种稳态。
如下图所示,一开始时可能比较多的区块链选择的是1 2 3’ 4’';而随着时间推移,大部分都统一到1 2 3 4 5 6 7这样的链。而后可能又出现分叉。
在这里插入图片描述
这就引出一个问题,假如有笔转账记录在3’中存在,而不存在于3 4 5 6 7 8。那么这笔转账记录是否生效?答案是它曾经生效过,但是它最终没生效。所以转账记录是否生效,不能只看它是否已经上链了,而是要看它上链多久的。越久的话,所包含它的区块被替换成其他区块的概率越低,越能说明它生效的概率大。在比特币中,一般认为“6次确认”,即包含它的区块后面还有5个区块在链上,才认为转账成功。

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

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

相关文章

10分钟就会用的3D编辑器,帮你轻松实现Web3D交互自由!

近两年,AIGC技术可谓是在各行各业大放异彩,从AI绘画到AI写作,如今AI建模技术也悄然而至,只要输入文本就能直接AI生成3D模型。 △例:当输入“一个坐在睡莲上的蓝色箭毒蛙”这样的提示词时,对应的3D模型就会生…

多客陪玩系统-开源陪玩系统平台源码-支持游戏线上陪玩家政线下预约等多场景应用支持H5+小程序+APP

多客陪玩系统-开源陪玩系统平台源码-支持游戏线上陪玩家政按摩线下预约等多场景应用支持H5小程序APP 软件架构 前端:Uniapp-vue2.0 后端:Thinkphp6 前后端分离 前端支持: H5小程序双端APP(安卓苹果) 安装教程 【商业…

线性模型-分类

一、线性判别分析LDA 线性判别分析是一种经典的线性学习方法,在二分类问题上最早是Fisher提出的,亦称为Fisher判别分析。 Fisher判别分析是一种用于降维和分类的统计方法,旨在找到可以最好区分不同类别的特征。它基于类内方差和类间方差的比…

OCP 安装 OceanBase集群(企业版3.2.4.1)

创建集群 登录OCP界面 1.点击左侧工具栏中的集群 2.进入集群页面后 点击 右上角的创建集群 集群设置 进入 创建集群 页面,进行 目标集群 配置 集群种类 根据 生产环境 选择 分布式 或者 单机集中式,第一次安装 集群类型 选择 主集群。 注意&#xf…

图片格式怎么转成pdf,简单的方法

在现代数字化时代,图片格式转换成PDF已经成为许多人的日常需求。无论是为了存档、分享还是打印,将图片转换为PDF都是一项非常实用的技能。本文将详细介绍如何将图片格式转换成PDF的方法。 用浏览器打开 "轻云处理pdf官网,上传图片。 图…

HarmonyOS(32) @Link标签使用指南

Link 前言Link简介State和Link的同步场景使用示例参考资料 前言 之前写过Link的使用,最新的API有点变化,在此做个记录。 Link简介 子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。。子组件变量发生变化,父组件也会随…

VMware Workstation虚拟机安装 CentOS 7.9 后ping ip地址出现错误:Network is unreachable

VMware Workstation虚拟机安装 CentOS 7.9 后ping ip地址出现错误:Network is unreachable 解决步骤: 进入目录 进入/etc/sysconfig/network-scripts/, cd /etc/sysconfig/network-scripts/修改文件 vi ifcfg-ens33变更项 ONBOOTyes保存…

如何理解与学习数学分析——第二部分——数学分析中的基本概念——第7章——连续性

第2 部分:数学分析中的基本概念 (Concepts in Analysis) 7. 连续性(Continuity) 本章首先讨论连续性的直观概念,并介绍与早期数学中常见的函数不同的函数。解释了连续性的定义,并演示了如何使用它来证明函数在一点上连续,以及证…

ABB velset 指令

VelSet 10,100;! v1000 情况下速度位1000*20% 最大速度位100 速度位 100

Unity3D测量距离实现方法(一)

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、Unity距离测量1-1 制作预制体1-2 编写测量的脚本 👉二、鼠标点击模型进行测量👉二、字体面向摄像机的方法👉二、最短距离测量方法👉三、壁纸分享…

vs code 导出插件 导入到新电脑上

1. 在 现在的电脑上 导出插件 在vscode 上执行 code --list-extensions > extensions.txt 然后项目的目录就有了一个文件 2. 将他复制到新电脑上,把文件放在项目的最外层(跟上面的目录一样) 执行命令 Get-Content extensions.txt | ForE…

快团团有货源的供货大团长如何给单个订单发货?

快团团团长给单个订单发货的步骤如下: 登录快团团商家后台:首先,你需要以团长的身份登录快团团的商家后台管理系统。 进入订单管理页面:登录后,在后台导航中找到并点击“订单管理”或类似的选项,进入订单列…

Python脚本自动填充数据和生成文档轻松办公

一,自动填充数据生成word文档 代码: from docx import Document# 创建一个新的Word文档对象 doc Document()# 添加标题 doc.add_heading(自动填充数据和生成文档, level1)# 添加段落 doc.add_paragraph(这是一个使用Python脚本自动填充数据并生成文档的…

SpringBoot 请求响应

SpringBoot 请求响应 来源于黑马程序员JavaWeb课程,总结笔记 1.ApiFox Apifox快速入门教程 2.基本参数 简单参数:在向服务器发起请求时,向服务器传递的是一些普通的请求数据。 //RequestController.java import jakarta.servlet.http.Htt…

Qt for Android 申请摄像头权限

步骤 1. 添加用户权限 AndroidManifest.xml 中新增&#xff08;不添加后面申请选项时不弹窗&#xff09; 或者再Qt Creator中直接添加 2. Qt代码申请权限 Qt自己封装好了一些常用的权限申请&#xff0c; 详情Qt Assistant文档搜索 QPermission查看 #include <QPermi…

层出不穷的大模型产品如何选

目录 1.概述 2.使用体验分享 2.1.功能情况 2.2.内容生成质量 2.3.隐私安全性 2.4.小结 3.独特优势和倾向选择 4.未来发展方向 4.1.技术创新 4.2.可持续可扩展性 4.3.用户体验 4.4.应用场景 4.5.政府赋能 4.6.小结 1.概述 目前市面上的大模型AIGC产品有很多&#…

【相关概念】经济金融中的Momentum

张张张三丰de思考与总结&#xff1a; 最近做的期货价格泡沫中&#xff0c;一直在说&#xff0c;momentum&#xff0c;momentum&#xff0c;momentum&#xff0c;那么究竟什么是momentum呢&#xff1f; 目前&#xff0c;在有关期货价格泡沫的研究文献中&#xff0c;一般都是研究…

创新科技,船舶岸电电源助力环保事业

岸电电源&#xff0c;也称为岸用变频电源或电子静止式岸电电源&#xff0c;是一种特别设计制造的大功率变频电源设备。这种设备主要针对船上、岸边码头等高温、高湿、高腐蚀性、大负荷冲击等恶劣使用环境&#xff0c;能够提供稳定的电源供应。它通常用于将岸边的工业用电&#…

蓝卓热电行业解决方案

能源是人类社会发展过程中的永恒话题,热电联产作为电能和热能同时生产的能源利用形式,相较传统的火力发电具有能源利用效率高等优点,可以高效解决能源及环境问题。目前&#xff0c;世界各国都将热电联产作为更高效、更环保的能源供给体系而有效措施大力推广。 如何降本增效、减…

root账号,cmd命令行能用ssh连上服务器,但是vscode连接报错Permission denied,please try again

☆ 问题描述 但是cmd能连接上 ★ 解决方案 点击 然后add到自己的配置文件下 重新选择 这个时候就会出现刚刚添加的&#xff0c;点击选择 输入密码 然后就ok了 ✅ 总结 只能说&#xff1a;玄学&#xff01;