拜占庭将军问题相关问题

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

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

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

相关文章

2024年3月18日 十二生肖 今日运势

小运播报:2024年3月18日,星期一,农历二月初九 (甲辰年丁卯月辛巳日),法定工作日。 红榜生肖:牛、鸡、猴 需要注意:鼠、虎、猪 喜神方位:西南方 财神方位:…

分数相加减(C语言)

一、流程图&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int fenmu 2;int result 1;int fuhao 1;//执行循环&#xff1b;while (fenmu < 100){//运算&#xff1b;fuhao (-1…

mvnd 安装和配置

mvnd 是 maven 的增强工具&#xff0c;在执行速度方面优于 maven 下载安装&#xff1a; https://github.com/apache/maven-mvnd/releases/ 根据不同的系统下载不同的安装包 配置环境变量 Path 新增 mvnd 安装路径下的 bin 目录 E:\maven-mvnd-1.0-m8-m39-windows-amd64\b…

HCIA——30奈奎斯特定理、香农定理

学习目标&#xff1a; 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议&#xff0c;了解典型网络设备的组成和特点&#xff0c;理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

leetcode猜数字大小

猜数字游戏的规则如下&#xff1a; 每轮游戏&#xff0c;我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。如果你猜错了&#xff0c;我会告诉你&#xff0c;你猜测的数字比我选出的数字是大了还是小了。 你可以通过调用一个预先定义好的接口 int guess(int num)…

MySQL语法分类 DQL(4)聚合函数

为了更好的学习这里给出基本表数据用于查询操作 create table student (id int, name varchar(20), age int, sex varchar(5),address varchar(100),math int,english int );insert into student (id,name,age,sex,address,math,english) values (1,马云,55,男,杭州,66,78),…

四级缓存实现

CommandLineRunner接口的run方法 什么是多级缓存? 多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Server端的压力,提升服务性能。 一级缓存:1.CDN:内容分发网络 二级缓存:2.NGINX+Lua脚本+OpenResty服务器 负载均衡反向代理【静态和转发】 三级缓存:J…

数据结构之顺序表(C语言版)

顺序表是数据结构中最基本的一种线性表&#xff0c;它以一段连续的存储空间来存储数据元素&#xff0c;元素之间的顺序由它们在内存中的位置来决定。在C语言中&#xff0c;我们通常使用数组来实现顺序表。 目录 顺序表的结构定义 顺序表的基本操作 应用实例 顺序表的结构定义…

图解Transformer——注意力计算原理

文章目录 1、输入序列怎样传入注意力模块 2、进入注意力模块的矩阵的每一行&#xff0c;都是源序列中的一个词 3、每一行&#xff0c;都会经过一系列可学习的变换操作 4、如何得到注意力分数 5、Query、Key、Value的作用 6、点积&#xff1a;衡量向量之间的相似度 7、Transform…

php的伪协议详解

在 PHP 中&#xff0c;伪协议&#xff08;pseudo-protocols&#xff09;是一种特殊的语法&#xff0c;用于访问各种资源&#xff0c;如文件、网络、输入/输出流等。伪协议实际上并不是真正的协议&#xff0c;而是一种简便的语法&#xff0c;用于访问不同的资源类型。 以下是一…

在webapp中手动发布一个应用

部署应用前&#xff0c;我们需要下载Tomcat。 下载官网: Apache Tomcat - Welcome! 1、下载 第一步 : 找到Download目录下的Tomcat8 第二步:选择下载第一个zip链接 2、下载完成后&#xff0c;解压并打开Tomcat文件 3、找到并点击webapp文件 创建一个文件夹 在创建的文件中…

浅谈C/C++的常量const、指针和引用问题

今天我们来探讨C/C中const、指针和引用的相关问题。这些概念是编程中的重要组成部分&#xff0c;它们的正确使用对于代码的可读性和可维护性至关重要。通过深入了解const的不可变性、指针的灵活性以及引用的简洁性&#xff0c;我们能够更好地掌握编程的精髓&#xff0c;并写出更…

Jupyter Notebook 怎么在虚拟环境之间切换

前提已经在虚拟环境 venv01 中安装并配置好了 Jupyter Notebook 要在新的虚拟环境 venv02 中使用之前安装的 Jupyter Notebook 并将其切换到这个环境&#xff0c;你可以按照以下步骤操作&#xff1a; 激活新的虚拟环境&#xff1a; 打开命令行或终端&#xff0c;激活你的新虚拟…

产品推荐 - 基于FPGA XC7K325T+DSP TMS320C6678的双目交汇视觉图像处理平台

一、产品概述 TES601是一款基于FPGA与DSP协同处理架构的双目交汇视觉图像处理系统平台&#xff0c;该平台采用1片TI的KeyStone系列多核浮点/定点DSP TMS320C6678作为核心处理单元&#xff0c;来完成视觉图像处理算法&#xff0c;采用1片Xilinx的Kintex-7系列FPGA XC7K325T作为视…

【定向合作计划】学生时期学习资源同步-全栈开发基础学习书单

原创作者&#xff1a;田超凡&#xff08;程序员田宝宝&#xff09; 版权所有&#xff0c;引用请注明原作者&#xff0c;严禁复制转载 【定向合作计划】以下为本人在学生时期2015-2017学习全栈开发基础的书单&#xff0c;因为资料太多&#xff0c;外接硬盘一共大概10个T&…

vue项目中使用highcharts记录(甘特图)

使用npm添加到项目中&#xff1a; npm install highcharts npm install highcharts-vue// 我在实际使用时用上面两条命令安装后&#xff0c;引入时会报错 // 所以按照下面的示例中的版本安装的指定版本(vue版本为2.6.14)npm install highcharts7.1.3 npm install highchart…

串的模式匹配(简单匹配、KMP以及手工算next/nextval)

简单模式匹配 思路&#xff1a;主串和字串进行匹配&#xff0c;设置i、j、k&#xff08;主串、子串和匹配起始下标&#xff09;主串和子串一开始都是从第一个位置&#xff08;k i&#xff09;&#xff0c;若当前主串和子串匹配成功那么i、j&#xff0c;若匹配不成功k、j 1&am…

叶顺舟:手机SoC音频趋势洞察与端侧AI技术探讨 | 演讲嘉宾公布

后续将陆续揭秘更多演讲嘉宾&#xff01; 请持续关注&#xff01; 2024中国国际音频产业大会(GAS)将于2024年3.27 - 28日在上海张江科学会堂举办。大会将以“音无界&#xff0c;未来&#xff08;Audio&#xff0c; Future&#xff09;”为主题。大会由中国电子音响行业协会、上…

Python中的变量是什么类型?

一、 Python中的变量是什么类型&#xff1f; 在Python中&#xff0c;变量本身是没有类型的&#xff0c;变量可以指向任何类型的数据对象。这意味着你可以将一个整数赋值给一个变量&#xff0c;稍后又可以将一个字符串赋值给同一个变量。Python是一种动态类型语言&#xff0c;它…

利用卷积神经网络进行人脸识别

利用卷积神经网络&#xff08;Convolutional Neural Networks, CNNs&#xff09;进行人脸识别是计算机视觉领域的一个热门话题。下面是一个简化的指南&#xff0c;涵盖了从理论基础到实际应用的各个方面&#xff0c;可以作为你博文的基础内容。 理论基础 卷积神经网络简介&am…