java实现拜占庭将军_什么是拜占庭将军问题(一)
如果你刚接触区块链,会发现经常被一堆PoW,PoS搞得头晕晕的,特别是哪个项目对应哪个机制的时候,就会处于一种懵逼ing状态。
要了解PoW,PoS,那就要从拜占庭将军问题说起。
拜占庭将军问题是Leslie Lamport(论文排版系统 LaTeX 的开发者。2013年的图灵讲得主)用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子。
这个例子大意是这样的:
拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。这10支军队在分开的包围状态下同时***。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队(一半以上)同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵骑马相互通信来协商进攻意向及进攻时间。
困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间,来破坏行动。
简化一下问题,就是,如何能在有叛徒的情况下,所有忠诚的将军都能让别的将军收到自己的真实意图,最终保持正确的一致行动。
问题的重点的并不是“进攻”、“撤退”的发送,而是“消息1”、“消息2”、“消息3”等信息的发送。
分布式计算中,不同的计算机通过通讯交换信息达成共识而按照同一套协作策略行动。但有時候,系统中的成员计算机可能出错而发送错误的信息,用于传递信息的通讯网络也可能导致信息损坏,使得网络中不同的成员关于全体协作的策略得出不同结论,从而破坏系统一致性。
所以说:拜占庭将军问题被认为是容错性问题中最难的问题类型之一。
这个问题的根本是“一致性”和“正确性”的算法问题。算法针对的是忠诚的将军们,干扰因素是叛徒(叛徒可以做出任何超出约定的判断)。
所以我们需要在有叛徒干扰的情况下,找到抗干扰算法,解决这个问题。
嗨,你还在看吗?
java实现拜占庭将军_什么是拜占庭将军问题(一)相关推荐
- Java Review - 并发编程_ 回环屏障CyclicBarrier原理源码剖析
文章目录 Pre 小Demo 类图结构 CyclicBarrier核心方法源码解读 int await() int await(long timeout, TimeUnit unit) int dow ...
- Java Review - 并发编程_读写锁ReentrantReadWriteLock的原理源码剖析
文章目录 ReentrantLock VS ReentrantReadWriteLock 类图结构 非公平的读写锁实现 写锁的获取与释放 void lock() void lockInterrupti ...
- Java Review - 并发编程_原子操作类LongAdder LongAccumulator剖析
文章目录 概述 小Demo 源码分析 重要的方法 long sum() reset sumThenReset longValue() add(long x) longAccumulate(long x ...
- Java web小项目_个人主页(2)—— 边缘加速原理与实现
摘自:Java web小项目_个人主页(2)-- 边缘加速原理与实现 作者:丶PURSUING 发布时间: 2021-03-27 14:44:40 网址:https://blog.csdn.net/w ...
- Java web小项目_个人主页(1)—— 云环境搭建与项目部署
摘自:Java web小项目_个人主页(1)-- 云环境搭建与项目部署 作者:丶PURSUING 发布时间: 2021-03-26 23:59:39 网址:https://blog.csdn.net/ ...
- java项目----教务管理系统_基于Java的教务管理系统
java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...
- java.lang.IllegalArgumentException: 字符[_]在域名中永远无效。 at
[http-nio-8080-exec-1] org.apache.coyote.AbstractProcessor.parseHost [xxx_tomcat] 是无效主机注意:更多的请求解析错误将 ...
- 什么是非拜占庭错误?什么是拜占庭错误?
一般地,把出现故障( crash 或 fail-stop,即不响应)但不会伪造信息的情况称为"非拜 占庭错误"( non-byzantine fault)或"故障错误&q ...
- java基于OpenCv图像处理_读取_保存图片
java基于openCv图像处理_读取_保存图片 本文使用javaCV封装后的OpenCv <dependency><groupId>org.bytedeco</grou ...
最新文章
- R Learnilng 十八讲7-12
- 双目立体视觉系统精度分析
- Linux echo命令和查看环境变量实例
- Leetcode215数组中第k大的数-最小堆
- CString::Format
- HBase Error IllegalStateException when starting Master: hsync
- java二维数组两个框代表什么_在java语言中,二维数组的两个中括号[][]分别表示()和()。...
- angular4自定义组件非input元素实现ngModel双向数据绑定(转载)
- 谈谈JS的全局变量跟局部变量
- http 响应消息解码_响应生成所需的解码策略
- can't resolve symbol 'R' ...
- 【软考】系统集成项目管理工程师(一)信息化知识
- 转:: 刺鸟:用python来开发webgame服务端(1)
- java学习 遇到的基本错误
- pytorch中的normalize应用
- Excel 删除一行的快捷键
- C++统计代码执行耗时
- android recovery分区内刷镜像,Android手机Recovery模式取证方法研究.pdf
- 如何用laragon框架运行php文件
- 蚂蚁金服区块链切入新场景,支付宝首创公积金黑名单及缴存证明