拜占庭将军问题相关问题

1、拜占庭将军问题基本描述

问题

当我们讨论区块链共识时,为什么会讨论拜占庭将军问题?

区块链网络的本质是一个分布式系统,在存在恶意节点的情况下,希望
整个系统当中的善良节点能够对于重要的信息达成一致,这个机制通常
被称作共识机制(consensus)。

而上述问题的本质就是拜占庭将军问题。

解决方案区别

崩溃容错协议(CFT)和拜占庭容错协议(BFT)的区别

在分布式系统当中,依据系统对于故障组件的容错能力分为崩溃容错协议(crash fault tolerant,CFT)和拜占庭容错t协议(Byzantine fault tolerant,BFT)。

  • CFT:针对系统中存在故障节点的情况,常见协议有paxos,raft。
  • BFT:针对系统中存在恶意节点的情况,常见协议有PBFT,hotstuff。

恶意节点,就是存在篡改信息,错误信息。

上个图,致敬一下大神。

在这里插入图片描述

这个问题产生

拜占庭将军问题,是由莱斯利兰伯特(Leslie Lamport)在其1982年发表的同名论文当中提出的分布式对等网络通信容错问题

2、拜占庭容错算法的基本假设

需要对恶意节点的占比和网络的条件进行一个假设。

通常会假设恶意节点小于某一个固定的值,然后以此作为前提条件进行共识算法的设计。

  • 例如PoW假设恶意节点占比小于1/2 工作量证明。

  • PBFT假设恶意节点占比小于1/3。 拜占庭容错

网络模型

  • 同步模型(Synchronous Model))
  • 部分异步模型(Partial Asynchronous Model)
  • 异步模型(Asynchronous Model)
同步模型(上帝视角)

在一个同步网络的模型中,网络当中的传送消息的延迟小于某个确定的值,这个值可以被参与这个分布式系统的节点所知道。

部分异步模型

在一个部分异步的网络模型当中,网络当中传送的消息的延迟小于某一个值,但是这个值的是参与分布式系统的节点所不知道。

异步模型
  • 在一个异步的网络模型中,信息传送的时间可以无限大,只保证信息最终能够传送到。

  • 根据FLP不可能原理:在网络可靠、但允许节点失效(即便只有一个)的最小化异步模型系统中,不存在一个可以解决一致性问题的确定性共识算法(No completely asynchronous consensus protocol can tolerate even a single unannounced process death)。

  • 在这种网络模型当中的典型算法代表是:HoneyBadgerBFT。

3、解决拜占庭问题的共识算法

提出的方案

在存在恶意节点的情况下依然能够达成共识的特性叫做拜占庭容错(Byzantine Fault Tolerance).

从1982年这个问题提出以来有许许多多的共识算法被提出。

在这里插入图片描述

PBFT

Practical Byzantine Fault Tolerance

三阶段提交

恶意节点f

总节点数n

要求n>=3f+1

在这里插入图片描述

POW

这里介绍的是bitcoin当中的Proof of Work。
基本假设
1.网络当中的消息延迟小于某个确定的值。
2.密码学的工具的假设有效,如公私钥加密体系和哈希函数等满足条件。
3.节点中恶意节点的占比小于50%。

运行的流程:
在这里插入图片描述

运行的流程:
1)新交易向所有的节点广播。
2)每个节点将新的交易收集到一个区块中。
3)每个节点运行随机数生成函数为它的区块寻找一个工作量证明(使得区块达到要求)。
4)当一个节点找到了工作量证明(挖出的块满足了要求),就向所有的节点广播这个块。
5)节点在区块中所有的交易都是有效的且之前没有被支付的情况下接收这个区块。
6)节点通过使用这个区块的哈希值作为上一个区块在链中创建下一个区块的方式表示对于这个区块的接受。

主链的确定:以最长链作为共识的链
区块的确定(Block Finalization)依赖于一种概率性的保证,一个区块上链之后一般认为后面有T个区块就认为该区块已经加入共识组了。

4、BFT在区块链当中的应用

区块链共识本身是在有一定比例的恶意节点的情况下,在区块链系统当中的节点要达成一致的过程。本身就是一个拜占庭容错问题。
现在的区块链共识算法可以分为两大派别,第一派是在工作量证明的基础上进行各种改进,例如某些权益证明(Proof of Stake)的方案。
另一派是在经典的拜占庭容错算法的基础上进行一定的改进。例如会首先在众多的节点当中选举出少量的委员会节点,之后在委员会节点当中运行一些PBFT算法。

上述两种派别并没有一个明确的划分。

更进一步的推荐,经典的拜占庭算法在区块链当中的演变和应用。
algorand 基于pos

stellar 经典拜占庭的创新 rfba

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python语言基础与应用-北京大学-陈斌-P40-39-基本扩展模块/上机练习:计时和文件处理-给算法计时-上机代码

Python语言基础与应用-北京大学-陈斌-P40-39-基本扩展模块/上机练习:计时和文件处理-给算法计时-上机代码 上机代码: # 基本扩展模块训练 给算法计时 def factorial(number): # 自定义一个计算阶乘的函数i 1result 1 # 变量 result 用来存储每个数的阶…

第十三篇:复习Java面向对象

文章目录 一、面向对象的概念二、类和对象1. 如何定义/使用类2. 定义类的补充注意事项 三、面向对象三大特征1. 封装2. 继承2.1 例子2.2 继承类型2.3 继承的特性2.4 继承中的关键字2.4.1 extend2.4.2 implements2.4.3 super/this2.4.4 final 3. 多态4. 抽象类4.1 抽象类4.2 抽象…

微信小程序关闭首页广告

由于之前微信小程序默认开启了首页广告位。导致很多老人误入广告页的内容,所以想着怎么屏蔽广告。好家伙,搜索一圈,要么是用户版本的屏蔽广告,或者是以下一个模棱两可的答案,要开发者设置一下什么参数的,如…

ZK vs FHE

1. 引言 近期ZAMA获得7300万美金的投资,使得FHE获得更多关注。FHE仍处于萌芽阶段,是未来隐私游戏规则的改变者。FHE需与ZK和MPC一起结合,以发挥最大效用。如: Threshold FHE:将FHE与MPC结合,实现信任最小…

Kafka MQ 生产者

Kafka MQ 生产者 生产者概览 尽管生产者 API 使用起来很简单,但消息的发送过程还是有点复杂的。图 3-1 展示了向 Kafka 发送消息的主要步骤。 我们从创建一个 ProducerRecord 对象开始,ProducerRecord 对象需要包含目标主题和要发送的内容。我们还可以…

Python基础(七)之数值类型集合

Python基础(七)之数值类型集合 1、简介 集合,英文set。 集合(set)是由一个或多个元素组成,是一个无序且不可重复的序列。 集合(set)只存储不可变的数据类型,如Number、…

高德 Android 地图SDK 去除logo

问题 高德 Android 地图SDK 去除logo 详细问题 笔者进行Android 项目开发,接入高德地图SDK。但是默认在地图左下角有高德地图logo,现需要去除该logo 期望效果 解决方案 import com.amap.api.maps.UiSettings; UiSettings settingsmMapView.getMap(…

CSS-DAY3

CSS-DAY3 2024/2/7 盒子模型 页面布局要学习三大核心, 盒子模型, 浮动 和 定位. 学习好盒子模型能非常好的帮助我们布局页面 1.1 看透网页布局的本质 网页布局过程: 先准备好相关的网页元素,网页元素基本都是盒子 Box 。利用 CSS 设置好盒子样式&a…

c++之旅第七弹——继承

大家好啊,这里是c之旅第七弹,跟随我的步伐来开始这一篇的学习吧! 如果有知识性错误,欢迎各位指正!!一起加油!! 创作不易,希望大家多多支持哦! 一.继承和派生…

夜间8点到12点能干点啥副业?

们放松和追求个人兴趣的时候,也是一段时间可以用来开展副业的机会。以下是一些适合晚上从事的副业的建议。 1.【千金宝库】软件做任务赚钱 【千金宝库】任务平台是为那些没有资源和人脉的人准备的。它非常适合那些没有时间限制、没有门槛的学生,平时玩…

以太网传输图片工程出现的问题总结(含源码)

本文对以太网传输图片的工程曾经出现过的问题及解决思路进行整理,便于日后出现类似问题能够快速处理。也指出为什么前文在FIFO IP设计时为啥强调深度的重要性。 1、问题 当工程综合完毕之后,下载到板子,连接以太网口,相关硬件如下…

0G联合创始人MICHAEL HEINRICH确认出席Hack.Summit() 2024区块链开发者大会

随着区块链技术的不断发展和应用,全球开发者瞩目的Hack.Summit() 2024区块链开发者大会即将于2024年4月9日至10日在香港数码港盛大举行。此次大会由Hack VC主办,并得到AltLayer和Berachain的协办,同时汇聚了Solana、The Graph、Blockchain Ac…

Vue | 使用 ECharts 绘制折线图

目录 一、安装和引入 ECharts 二、使用 ECharts 2.1 新增 div 盒子 2.2 编写画图函数 2.3 完整代码结构 三、各种小问题 3.1 函数调用问题 3.2 数据格式问题 3.3 坐标轴标签问题 3.4 间隔显示标签 参考博客:Vue —— ECharts实现折线图 本文是在上…

jvm 内存泄露、内存溢出、栈溢出区别

JVM(Java虚拟机)是负责执行Java程序的运行环境。以下是对内存泄露、内存溢出和栈溢出这几个概念的解释: 内存泄露(Memory Leak): 内存泄露指的是程序中分配的内存空间在不再被使用时没有被释放的情况。这可…

【DFS深度优先搜索专题】【蓝桥杯备考训练】:迷宫、奶牛选美、树的重心、大臣的旅费、扫雷【已更新完成】

目录 1、迷宫(《信息学奥赛一本通》) 2、奶牛选美(USACO 2011 November Contest Bronze Division) 3、树的重心(模板) 4、大臣的旅费(第四届蓝桥杯省赛Java & C A组) 5、扫…

git的下载与安装

下载 首先,打开您的浏览器,并输入Git的官方网站地址 点击图标进行下载 下载页面会列出不同操作系统和平台的Git安装包。根据您的操作系统(Windows、macOS、Linux等)和位数(32位或64位),选择适…

面试经典-33-反转链表 II

题目 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1a…

【渗透测试】redis漏洞利用

redis安装及配置 wget http://download.redis.io/releases/redis-3.2.0.tar.gz tar xzf redis-3.2.0.tar.gz cd redis-3.2.0 make cp /root/redis-6.2.6/redis.conf /usr/local/redis/bin/ cd /usr/local/redis/bin/ vi redis.conf #修改内容如下&#xff1a; #protected-mode …

【消息队列开发】 实现MemoryDataCenter类——管理内存数据

文章目录 &#x1f343;前言&#x1f334;数据格式的准备&#x1f332;内存操作&#x1f6a9;对于交换机&#x1f6a9;对于队列&#x1f6a9;对于绑定&#x1f6a9;对于单个消息&#x1f6a9;对于队列与消息链表&#x1f6a9;对于未确认消息&#x1f6a9;从硬盘上读取数据 ⭕总…

【数据结构】栈与队列的“双向奔赴”

目录 前言 1.使用“栈”检查符号是否成对出现 2.使用“栈”实现字符串反转 3.使用“队列”实现“栈” 4.使用“栈”实现“队列” 前言 什么是栈&#xff1f; 栈&#xff08;stack&#xff09;是一种特殊的线性数据集合&#xff0c;只允许在栈顶按照后进先出LIFO&#xff…