FISCO-BCOS链节点黑名单对共识的影响

news2024/11/23 17:18:31

目录

  • 一、前言
  • 二、测试过程
  • 三、PBFT

一、前言

目的:在fisco-bcos(v2.8.0)环境下,测试黑名单对节点共识的影响。

部署搭建四节点的链,并部署console:

https://fisco-bcos-documentation.readthedocs.io/zh_CN/release-2.8.0/docs/installation.html

getPeers获取某节点所连接的p2p连接列表。
getSealerList获取共识节点列表。

CA黑名单介绍:

https://fisco-bcos-documentation.readthedocs.io/zh_CN/release-2.8.0/docs/design/security_control/certificate_list.html

配置CA黑名单:

https://fisco-bcos-documentation.readthedocs.io/zh_CN/release-2.8.0/docs/manual/certificate_list.html

二、测试过程

通过console每次连接一个节点nodeX,依次通过该nodeX节点的黑名单功能逐个添加其他某个节点,达到逐个断开p2p网络连接的目的,直到节点nodeX在console上无法发送交易,再切换到下一个节点。

具体地,以下过程将从node0开始,console只连node0,逐渐在node0的黑名单中逐个配置node3、node2、node1,node0的黑名单配置到node1时,node0彻底与其他节点彼此断开p2p连接;这时console不再连接node0,而手动切换到node1,对node1节点的黑名单做重复的操作,直到最终console连接每个节点都无法形成共识,无法发送交易。

p2p网络

四节点环境下,

  • 最开始,不配任何黑名单。console连到node0,可以成功发交易;所有节点日志均持续打印“[CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=28”共识日志;getPeers结果是3个;sealerList是node0-node3。
  • 接下来,给node0黑名单中配node3,重启node0。console连到node0,可以成功发交易;所有节点日志均持续打印共识日志;getPeers结果是2个;sealerList是node0-node3。
  • 接着,继续给node0黑名单中再配node2,重启node0。console连到node0,可以成功发交易;所有节点日志均持续打印共识日志;getPeers结果是1个;sealerList是node0-node3。
  • 继续,给node0黑名单中再配node1,重启node0。(1)console连到node0,发交易超时;node0不再打印共识日志,其他节点接着打印之前的共识日志;getPeers结果是空;sealerList是node0-node3。(2)console连到node1,可以成功发交易。
  • 继续,给node1黑名单中再配node2,重启node1。console连到node1,可以成功发交易;node1-node3均持续打印共识日志;getPeers结果是1个;sealerList是node0-node3。
  • 继续,给node1黑名单中再配node3,重启node1。(1)console连到node1,发交易超时;所有节点均不再打印共识日志;getPeers结果是空;sealerList仍是node0-node3。(2)console连到node2,发交易超时。此时不满足pbft共识要求,整体共识故障。

初步结论:

  • 根据上面步骤初步分析,黑名单控制的p2p连接,不影响getSealerList的结果(除非主动调用consensus指令),但可能会影响整体共识条件,最终导致共识不可用。
  • 4挂1时,正常运行的三个节点之间,不一定需要两两互联(如上面第5幅图),也可以成功发交易。
  • 当最终的节点p2p连接环境,不满足pbft共识条件,则整体集群共识挂掉。

三、PBFT

PBFT(Practical Byzantine Fault Tolerance)实用的拜占庭容错系统。
相比拜占庭容错,运行复杂度从指数级降低到了多项式级别,使拜占庭协议在分布式系统中应用成为可能。
PBFT适合需要节点准入机制的私有链或联盟链,不适合公有链,因为PBFT不能防止女巫攻击。女巫攻击大概是一个恶意用户可以创建足够多的账户,比如达到51%的意思,来影响全局的共识。
PBFT中,总节点数为3f+1时,有效节点数要不小于2f+1,才可以形成共识。也就是说,允许出错的节点数最多为f。比如,像上面四节点的例子,3f+1=4,计算出容错数f=1,那么p2p网络中允许断开连接的节点数最多为1个,正常节点数不能少于2f+1=3个。所以第6幅图中仅剩2个节点有p2p连接,是无论如何也不能够形成共识的。

. ...- . .-. -.-- - .... .. -. --.    .-- .. .-.. .-..    -... .    --- -.-

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

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

相关文章

3 个自定义防抖 Hooks 的实现原理

前言— 本文通过实现 useDebounceFn、useDebounce、useDebounceEffect 3 种自定义防抖 Hooks,来介绍在日常开发过程中自定义 Hooks 的思路及实现,帮助大家完成通用 Hooks 来提高开发效率。 防抖— 防抖的概念已经司空见惯了,这里稍作简单介…

00后也太卷了吧!进厂起薪18K,原来面试时候都说了这些......

都说00后躺平了,但是有一说一,该牛的还是牛。 这不,前段时间公司来了个00后,工作都没两年,跳槽起薪18K。本来还以为是个年少有为的技术大牛呢,结果相处一个月下来发现技术也就那样。 问起他是如何做到和老…

Java Web学习路线

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:Java Web ⭐如果觉得文章写的不错,欢迎点个关注一键三连😉有写的不好的地方也欢迎指正&a…

(四)栈—中缀表达式转后缀表达式

一、基本介绍 二、应用实例 将中缀表达式"1((23)x4)-5" 转换为 后缀表达式"1 2 3 4 x 5 -" 思路: 1.初始化两个栈:运算符栈s1和存储中间结果的栈s2; 2.从左至右扫描中缀表达式&#x…

【c++初阶】第九篇:vector(常用接口的使用 + 模拟实现)

文章目录vector介绍vector的使用vector的定义vector iterator(迭代器) 的使用begin和endrbegin和rendvector 空间增长问题size和capacityreserve和resize(重点)测试vector的默认扩容机制emptyvector的增删查改push_back和pop_backinsert和erasefindswapo…

GPT-4创造者:第二次改变AI浪潮的方向

OneFlow编译 翻译|贾川、杨婷、徐佳渝 编辑|王金许 一朝成名天下知。ChatGPT/GPT-4相关的新闻接二连三刷屏朋友圈,如今,这些模型背后的公司OpenAI的知名度不亚于任何科技巨头。 不过,就在ChatGPT问世前,Ope…

Verilog Tutorial(10)如何实现可复用的设计?

写在前面在自己准备写verilog教程之前,参考了许多资料----FPGA Tutorial网站的这套verilog教程即是其一。这套教程写得不错,只是没有中文,在下只好斗胆翻译过来(加了自己的理解)分享给大家。这是网站原文:h…

【敬伟ps教程】平移、缩放、移动、选区

文章目录平移抓手工具旋转抓手缩放工具移动工具详解选区选区工具详解平移 抓手工具 当打开一张大图时,可以通过修改底部的百分比或使用抓手工具(H或在任何时候按住空格键来使用抓手工具)来查看更多细节 使用抓手工具时滚动所有打开的文档&…

几何的显式表示 - 曲线和曲面

点云:list of points(x, y, z) 将点云变成多边形的面,从而在计算机中输出多边形网格:Polygon Mesh 就是 拆成小三角 贝塞尔曲线 定义曲线只要满足起止点即可,P1,P2决定了它要往哪个方向弯 de Ca…

STM32 HAL库PID控制电机 第三章 PID控制双电机

STM32 HAL库PID控制电机 第三章 PID控制双电机 注:本文含全部PID控制代码,保证可以运行,如不能运行可以留言回复 1 基础配置 1.1 编码器电路图及配置 引脚定时器通道PA0TIM2_CH1PA1TIM2_CH2PB6TIM4_CH1PB7TIM4_CH2因此需要把TIM2、TIM4配置为编码器模式。在STM32CubeMX中…

如何在react中处理报错

本文为 360 奇舞团前端工程师翻译 原文地址:https://www.developerway.com/posts/how-to-handle-errors-in-react我们都希望我们的应用能稳定、完美运行,并且能够考虑到每一个边缘情况。但是现实情况是,我们是人,是人就会犯错&…

【区块链】走进web3的世界-DApp如何快速接入wall

在web3中,wall是您进入区块链的一个标识,每个用户使用的wall都不近相同,因此接入更多的wall是很有必要的,从用户角度来说,非必要情况下,我是不愿意去额外下载wall的。因此今天我们来聊一下,DApp…

手把手教你搭建 Docker API 未授权漏洞环境

环境:ubuntu 16.04 我是在虚拟机中安装了ubuntu 16.04的环境,里面暂时没有docker、ssh远程、vim等。 1. 更换国内源 直接输入docker 这里没有安装,那安装下 sudo apt install docker.io 开始安装 因为我没有修改源,所以这个速…

数据的表示和存储1

目录 数制和编码 信息的二进制编码 数值数据的表示 进制计数制 定点数和浮点数 定点数的编码表示 原码表示 补码表示 求特殊数的补码 求真值的补码 求补码的真值 移码表示Excess (biased) notiion C语言中的整数 无符号整数(unsigned integer) 带符号整数&#xff0…

QT sql查询模型,视图显示

SQL模型定义定义sql查询模型查询设置格式创建视图并显示setHeaderData() 函数定义 SQL 查询模型(QSqlQueryModel)是 Qt 提供的一种数据模型,用于执行 SQL 查询并返回结果集。它继承自 QSqlTableModel 类,可以使用 QSqlQuery 对象执…

【eXtplorer】本地搭建免费在线文件管理器并实现在外远程登录

文章目录1. 前言2. eXtplorer网站搭建2.1 eXtplorer下载和安装2.2 eXtplorer网页测试2.3 cpolar的安装和注册3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置4.公网访问测试5.结语1. 前言 通过互联网传输文件,是互联网最重要的应用之一,无论是网上…

springboot学习2

一、spring boot自动装配原理 pom.xml spring-boot-dependencies 核心依赖在父工程中 在写或者引入一些spring boot依赖的时候&#xff0c;不需要指定版本&#xff0c;因为有这些版本仓库启动器 <dependency><groupId>org.springframework.boot</groupId>&…

使用golang实现日志收集系统的logagent

整体架构 参考 七米老师的日志收集项目 主要用go实现logagent的部分&#xff0c;logagent的作用主要是实时监控日志追加的变化&#xff0c;并将变化发送到kafka中。 之前我们已经实现了 用go连接kafka并向其中发送数据&#xff0c;也实现了使用tail库监控日志追加操作。 我们…

【Java基础】反射详述简单模拟SpringMVC

&#x1f6a9; 本文已收录至专栏&#xff1a;JAVA基础 &#x1f44d;希望能对你有所帮助 一.概述 反射是指对于任何一个Class类&#xff0c;在运行的时候都可以直接得到这个类全部成分&#xff0c;使得我们可以动态操作Java代码&#xff0c;同时反射也破坏了Java的封装性。 例…

如何清理电脑缓存,分享4个简单方法!

案例&#xff1a;如何清理电脑缓存 【朋友们&#xff01;我感觉我电脑的内存已经严重不足了&#xff0c;想清理下电脑的缓存释放空间&#xff0c;却不知如何清理&#xff0c;大家有什么好的方法吗&#xff1f;】 经常使用电脑的朋友可能都会发现&#xff0c;好像我们没下载什…