联邦拜占庭共识算法的工作流程
1 前言
联邦拜占庭共识算法(Federated Byzantine Agreement,简称FBA)是一种解决分布式系统中拜占庭问题的共识算法,是拜占庭容错共识算法里的其中一种,主要应用于区块链技术中。这种算法允许系统内部的各种节点自由进行组织,形成所谓的“信任节点”,并由这些信任节点进行共识的达成。
2 联邦拜占庭共识算法的工作流程
详细来说,FBA的工作流程可以粗略地分为以下几步:
2.1 建立信任网络
不同于比特币的 PoW(工作量证明)或者以太坊的 PoS(权益证明),FBA 算法采取的方法是让网络中的节点自由选择他们信任的其他节点,并形成一个“信任节点”的列表,这个过程也称作节点的“配对”。
每个节点的信任节点列表是由节点运营者根据各种因素自行确定的,这可能包括节点的行为,声誉,稳定性,历史记录,甚至可能包括地理位置,或者任何其他因素,只要节点运营者认为这些因素重要。每个节点的信任节点列表是动态的,可以随着时间的推移和节点行为的变化而进行更新。联邦拜占庭共识算法(FBA)是一种去中心化的共识算法,其主要创新之处在于它允许每个网络节点自由选择他们信任的其他节点。从而形成一个灵活的“联邦”。因此,FBA 里的“联邦”就是节点的信任列表。理论上,FBA 系统的联邦数量并没有限制。
2.2 节点投票
当网络需要对某个议题达成共识时,每个节点根据自己的信任节点列表进行投票,投票的结果以及自己的信任节点列表会被广播并公开。
2.3 扩散投票结果
收到投票结果的其他节点,会根据收到的投票结果以及自己的信任节点列表,再次进行投票,并继续广播。这样,节点的投票信息会在整个网络中不断的传播和更新。
2.4 投票收敛
经过多轮投票,如果某个节点发现自己的投票结果和大部分节点(通常为自己信任节点列表中的大部分节点)达到了一致,那么这个节点就会接受这个共识结果,并把这个结果继续扩散。定义“大部分节点”的标准(阈值)通常取决于具体的实施,并且可能会因情况而异。在经典的拜占庭共识算法中,通常需要至少 2/3(约67%)的投票达成一致才能将结果视为有效。然而,在反映节点数目或更复杂的拓扑的加权版本中,可能需要更高或更低的阈值。在Stellar区块链中使用的SCP(Stellar Consensus Protocol)版本的FBA中,具体值可以是任何超过50%的数值,但实际值可由每个节点自由设定。回到投票收敛过程,任何时候,只要一个节点发现它的投票和它的信任节点列表中的大部分节点相同,那么它将接收这一共识结果。然后,该节点会更新其自身的状态,并将新的共识结果广播至网络中。这个流程会一直持续,直到整个网络中的所有节点都达成一致,从而形成一个全局共识。
需要注意的是,FBA算法并不保证所有节点都能达成完全一致的共识。相反,算法只关注能形成“局部共识”的节点。只要这些局部共识的节点占据了整个网络的大部分,那么就可以说网络达到了共识。也就是可能会出现投票过程中,不同的联邦,投票结果不一致,那么这时候该如何处理呢?答案就是:尽管每个节点都可能有不同的信任列表,如果网络的大部分节点(超过网络总数的一部分阈值,比如 >67%的节点)能对某一议题达成一致,那么这个共识结果就可以在整个网络中传播并被大部分节点接受。这是由于,即使是在联盟结构中,还是存在一个全局的“联邦”。也就是说,在网络的大多数节点中,任何一个通过的提议都将受到足够多的支持,进而让整个网络达成共识。因此,从本质上来说,联邦拜占庭共识算法也是遵循“少数服从多数”的原则。
这种算法能有效地解决一些传统拜占庭共识算法(如PBFT)存在的问题,如节点的选举过程不公平、选举效率低、扩展性差等。它兼顾了去中心化和高效的特性,因此在实践中被广泛采用,如恒星协议(Stellar)就选用了 FBA 算法来达成网络共识。
3 使用联邦拜占庭共识算法的区块链项目
目前使用联邦拜占庭共识算法的区块链项目主要有2个:恒星Stellar,Pi Network
3.1恒星Stellar
恒星Stellar项目是使用恒星共识(Stellar Consensus)来实现的。恒星共识是基于联邦拜占庭共识(FBA)。恒星共识协议(SCP,Stellar Consensus Protocol)提供了一种不依赖闭合系统实现准确记录金融交易而达成共识的方法。
恒星共识协议(SCP) 具有一组可验证的安全属性,这些属性根据如何安全地保持活力而做了优化。一旦出现分区或不当行为节点,它将会终止网络过程,直至达成共识。SCP 同时具备四种属性:去中心控制、低延迟、灵活信任机制和渐进安全(Asymptotic security)。关于恒星项目的介绍,可以参考这篇文章:
Stellar恒星项目技术评测 | 码农网
恒星项目代码已经开源,github地址是:GitHub - stellar/stellar-core: stellar-core is the reference implementation for the peer to peer agent that manages the Stellar network,恒星项目从2014年上线,并运行至今。
3.2 Pi Network
目前比较火的免费手机挖矿项目Pi Network是基于恒星共识协议(SCP)的算法进行开发(官网 https://minepi.com/#download,邀请码 powervip )。关于Pi Network更多的资料可以参考这篇文章:
Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.
Pi Network区块链代码还没有开源,但开发者的sdk和demo已经开源。如果你会软件开发,可以参与Pi Network的生态应用开发,具体可以查阅官网。Pi Network封闭式主网已经在2021年12月29日上线,但开放式主网上线时间未定。
----------------------------------------------------------------------------------
我是powervip,区块链程序员
我的公 众 号 和 知 识 星 球:区块链战斗机
我的知乎:powervip - 知乎
我的学习笔记:www.0101.vip
原创作品,版权所有,侵权必究!商业转载请联系作者获得授权;非商业转载需保留作者署名信息,注明出处并保留原文链接。
写作不易,喜欢我写作内容的朋友,请帮忙点 “ 赞同 ” 按钮,谢谢!
你的鼓励,我的动力!
相关文章:
联邦拜占庭共识算法的工作流程
1 前言 联邦拜占庭共识算法(Federated Byzantine Agreement,简称FBA)是一种解决分布式系统中拜占庭问题的共识算法,是拜占庭容错共识算法里的其中一种,主要应用于区块链技术中。这种算法允许系统内部的各种节点自由进…...
国家开放大学形成性考核 统一考试 学习资料参考
试卷代号:11119 机械CAD/CAM 参考试题 一、单项选择题(从所给的四个选项中,找出你认为是正确的答案,将其编号填入括号内。每小题3分,共45分) 1.下述CAD/CAM过程的概念中,属于CAM范畴的是&am…...
2401C++,实现文件服务器和聊天室
文件服务器 使用yalantinglibs,几行代码开发静态文件服务器 最近的workshop上的一个任务,就是实现一个文件服务器,只要设置下载目录之后,就可下载目录里面的文件. 看看用yalantinglibs怎么实现一个静态文件服务器的吧. coro_http::coro_http_server server(1, 9001); server.…...
【ESP-NOW 入门(ESP32 with Arduino IDE)】
ESP-NOW 入门(ESP32 with Arduino IDE) 1. 前言2. Arduino集成开发环境3. ESP-NOW 简介3.1 ESP-NOW 支持以下功能:3.2 ESP-NOW 技术还存在以下局限性:4. ESP-NOW 单向通信4.1 一个 ESP32 开发板向另一个 ESP32 开发板发送数据4.2 一个“主”ESP32 向多个 ESP32“slave”发送…...

PHP序列化总结2--常见的魔术方法
魔术方法的概念 PHP的魔术方法是一种特殊的方法,用于覆盖PHP的默认操作。它们以双下划线(__)开头,后面跟着一些特定的字符串,如__construct()、__destruct()、__get()等。这些魔术方法在对象执行特定操作时被自动调用…...

Docker 入门 ------容器互通以及Dockerfile
1. 端口映射以及容器互联 Docker 除了通过网络访问,还提供了两种很方便的功能来满足服务访问的基本需求: 允许映射容器内应用的服务端口到本地宿主主机互联机制实现多个容器间通过容器名来快速访问 1.1 容器映射实现访问容器 1.1.1 从外部访问容器应…...

AI绘图模型不会写字的难题解决了
介绍 大家好,最近有个开源项目比较有意思,解决了图像中不支持带有中文的问题。 https://github.com/tyxsspa/AnyText。 为什么不能带有中文? 数据集局限 Stable Diffusion的训练数据集以英文数据为主,没有大量包含其他语言文本的…...

vue-cli创建项目时由esLint校验导致报错或警告的问题及解决
vue-cli创建项目时由esLint校验导致报错或警告的问题及解决 一、万能办法 一、万能办法 //就是在报错的JS文件中第一行写上 /* eslint-disable */链接: https://www.yii666.com/blog/288808.html 其它的方法我遇见了再补充...

uniapp:实现手机端APP登录强制更新,从本地服务器下载新的apk更新,并使用WebSocket,实时强制在线用户更新
实现登录即更新,或实时监听更新 本文介绍的是在App打开启动的时候调用更新,点击下方链接,查看使用WebSocket实现实时通知在线用户更新。 uniapp:全局消息是推送,实现app在线更新,WebSocket,ap…...

设计循环队列——oj题622
. 个人主页:晓风飞 专栏:LeetCode刷题|数据结构|Linux 路漫漫其修远兮,吾将上下而求索 文章目录 题目要求:应该支持如下操作:示例:提示: 结构体定义队列的创建基本操作判断队列是否为空…...

阿里后端实习一面面经
阿里后端实习一面面经 项目中使用到了es,es的作用? elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 es中的重要概念? 群集:一个或多个节点…...

element-ui组件DatePicker日期选择器移动端兼容
element-ui组件DatePicker日期选择器移动端兼容 css /** 移动端展示 **/ media screen and (max-width: 500px) {.el-picker-panel__sidebar {width: 100%;}.el-picker-panel {width: 400px!important;}.el-picker-panel__content {width: 100%;}.el-picker-panel__body{marg…...

burpsuite 爆破
靶场搭建:phpstudy的安装与靶场搭建 - junlin623 - 博客园 (cnblogs.com) 账号字典:XXTK: 一些弱口令、fuzz字典 (gitee.com) 网盘链接:https://pan.baidu.com/s/1v5pAwaTwoeCnJgkUXf3iLQ?pwd=mllm 提取码:mllm --来自百度网盘超级会员V2的分享 一、暴力破解 - 基于…...

SparkSQL基础解析(三)
1、 Spark SQL概述 1.1什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了2个编程抽象:DataFrame和 DataSet,并且作为分布式SQL查询引擎的作用。 我们已经学习了Hive,它是将Hive SQL转换成MapReduce然后提…...

gz-hamonic 安装提示缺少许多依赖无法安装
在软件更新源中增加gz-hamonic的软件源, 点击添加,在输入框中填入如下语句: deb http://packages.osrfoundation.org/ubuntu jammy main 如图所示: 然后执行 sudo apt -get install gz-hamonic即可安装。 如下图 在终端中输入…...
新版Edge卸载
新版Edge卸载:步骤与注意事项 随着Windows 10的发布,微软推出了新版Edge浏览器。虽然新版Edge浏览器具有许多优秀的新功能和改进,但有时您可能希望卸载它并使用其他浏览器。在本文中,我们将向您介绍如何卸载新版Edge浏览器&#…...
Ansibe自动化基础
目录 一.Ansibe自动化概述 1.特点 2.工作特性 3.应用场合 二.ansibe安装即相关文件说明 1.安装 2.相关文件 3.主配置文件内容详解 4.ansibe运行机制 三.ansibe管理节点命令 1.Ansibe 四.主机组配置 1.基本配置 第一种: 第二种: 2.设置SSH…...

2023 年中国高校大数据挑战赛赛题B DNA 存储中的序列聚类与比对-解析与参考代码
题目背景:目前往往需要对测序后的序列进行聚类与比对。其中聚类指的是将测序序列聚类以判断原始序列有多少条,聚类后相同类的序列定义为一个簇。比对则是指在聚类基础上对一个簇内的序列进行比对进而输出一条最有 可能的正确序列。通过聚类与比对将会极大…...

决策树--分类决策树
1、介绍 ① 定义 分类决策树通过树形结构来模拟决策过程,决策树由结点和有向边组成。结点有两种类型:内部结 点和叶结点。内部结点表示一个特征或属性,叶子节点表示一个类。 ② 生成过程 用决策树分类,从根结点开始ÿ…...
【2024/1/5】
2024/1/5周报 本周开展工作下周工作计划 本周开展工作 首先的话就是跟大家汇报一下上一个项目的进度,那因为一些我这边的不可控的因素暂时进行搁置,随后的话还是需要在进行做的。 因此我们最近在做一个web端的项目,这个项目的具体的就不汇报…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...