标准定足数交集

定义和背景

  1. 系统模型:

    • 系统中有 \(n\) 个节点,其中最多 \(f\) 个节点可能是拜占庭故障节点(恶意节点)。
    • 为了保证容忍 \(f\) 个拜占庭节点,系统通常需要至少 \(3f + 1\) 个节点。
  2. Quorum(定足数):

    • 一个定足数(quorum)是一个足够大的节点子集,能够代表整个系统做出决定。在拜占庭容错模型中,一个常用的定足数大小是 \(2f + 1\) 个节点。
  3. 标准多数交集特性(Quorum Intersection Property):

    • 定足数交集特性要求任意两个定足数集合之间至少有一个共同节点。这个共同节点确保信息的一致性,即便存在恶意节点。

数学依据

考虑一个系统中总共有 \(n = 3f + 1\) 个节点,其中最多 \(f\) 个节点可能是拜占庭故障节点。为确保共识的正确性和安全性,我们需要以下条件:

  1. Quorum Size:

    • 每个定足数(quorum)包含至少 \(2f + 1\) 个节点。
  2. Intersection Property:

    • 任意两个定足数集合之间至少有一个公共节点。假设有两个定足数 \(Q_1\) 和 \(Q_2\),其中 \(Q_1\) 和 \(Q_2\) 均包含 \(2f + 1\) 个节点。我们需要证明 \(Q_1\) 和 \(Q_2\) 之间至少有一个节点是公共的。

证明

我们有总共 \(n = 3f + 1\) 个节点:

  1. 假设不相交:

    • 如果假设 \(Q_1\) 和 \(Q_2\) 没有交集,那么 \(Q_1\) 和 \(Q_2\) 的节点总数将会是 \((2f + 1) + (2f + 1) = 4f + 2\)。
  2. 矛盾:

    • 由于总体只有 \(3f + 1\) 个节点,而 \(4f + 2\) 大于 \(3f + 1\),这与总节点数冲突,因此 \(Q_1\) 和 \(Q_2\) 必然至少有一个公共节点。
  3. 结论:

    • 因此,任意两个包含 \(2f + 1\) 个节点的定足数必然至少有一个公共节点。这就是标准多数交集特性的核心。

应用场景

  1. 共识算法(例如拜占庭容错共识算法,如 PBFT、Tendermint):

    • 在这些共识算法中,参与者必须就某一事务(如交易、状态更改)达成一致。标准多数交集特性确保即使部分节点是恶意的,只要诚实节点占多数(\(2f + 1\)),系统能够达成安全的一致性。
  2. 分布式数据库

    • 在分布式数据库中,更新和查询需要通过多数集合来确保数据的强一致性和可用性。
  3. 可靠性和容错性

    • 通过确保定足数之间的交集特性,系统能够有效地防止数据一致性问题,即便存在网络分区或节点故障。

Standard Quorum Intersection的更多相关文章

  1. Paper Reading_Distributed System

    最近(以及预感接下来的一年)会读很多很多的paper......不如开个帖子记录一下读paper心得 Mark一个上海交通大学东岳网络工作室的paper notebook Mark一个大神的笔记 Ed ...

  2. Gym 100952J&&2015 HIAST Collegiate Programming Contest J. Polygons Intersection【计算几何求解两个凸多边形的相交面积板子题】

    J. Polygons Intersection time limit per test:2 seconds memory limit per test:64 megabytes input:stan ...

  3. Introducing XAML Standard and .NET Standard 2.0

    XAML Standard We are pleased to announce XAML Standard, which is a standards-based effort to unify X ...

  4. Codeforces Round #506 (Div. 3) C. Maximal Intersection

    C. Maximal Intersection time limit per test 3 seconds memory limit per test 256 megabytes input stan ...

  5. 一篇很好的解释了.Net Core, .Net Framework, .Net standard library, Xamarin 之间关系的文章 (转载)

    Introducing .NET Standard In my last post, I talked about how we want to make porting to .NET Core e ...

  6. codeforces D. Area of Two Circles' Intersection 计算几何

    D. Area of Two Circles' Intersection time limit per test 2 seconds memory limit per test 256 megabyt ...

  7. CF1029C Maximal Intersection 暴力枚举

    Maximal Intersection time limit per test 3 seconds memory limit per test 256 megabytes input standar ...

  8. 理解 .NET Platform Standard

    相关博文:ASP.NET 5 Target framework dnx451 and dnxcore50 .NET Platform Standard:https://github.com/dotne ...

  9. [LeetCode] Intersection of Two Arrays II 两个数组相交之二

    Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...

  10. [LeetCode] Intersection of Two Arrays 两个数组相交

    Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...

随机推荐

  1. 【基础整理】Mapping representation 机器人所用地图种类及相关介绍

    参考与前言 本文主要介绍 建图 Mapping 方面的一些 基础知识介绍与相关下游任务使用 涉及知识较为基础,SLAM大佬们可以提前退出了 主要针对应用为移动机器人与物流无人驾驶车:提前申明:大部分文 ...

  2. OPC 详解 第一篇 基础概念

    一 .概述 OPC 的全称是OPC(OLE for Process Control), 用于过程控制的OLE,OLE(Object Linking and Embedding)大家都知道是对象连接与嵌 ...

  3. Python性能测试框架:Locust实战教程

    01认识Locust Locust是一个比较容易上手的分布式用户负载测试工具.它旨在对网站(或其他系统)进行负载测试,并确定系统可以处理多少个并发用户,Locust 在英文中是 蝗虫 的意思:作者的想 ...

  4. vulnhub - LAMPSECURITY: CTF5

    vulnhub - LAMPSECURITY: CTF5 信息收集 端口扫描 nmap -sT --min-rate 10000 -p- 192.168.157.164 详细扫描 sudo nmap ...

  5. 敏捷开发(Scrum)

    ​ 一.敏捷的背景与动机 1.1 软件危机及软件工程的出现 速度是企业竞争致胜的关键因素,软件项目的最大挑战在于,一方面要应付变动中的需求,一方面要在紧缩的时程内完成项目,传统的软件工程难以满足这些要 ...

  6. Java-记住上一次访问时间案例

    记住上一次访问时间 1.需求: 1.访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问 2.如果不是第一次访问,则提示:欢迎回来,您上次访问的时间为:显示字符串 2.分析 1.可以 ...

  7. 使用gzexe加密shell脚本

    使用 gzexe 加密 shell 脚本是一个相对简单的过程.以下是具体的步骤: 编写你的 shell 脚本:首先,你需要有一个 shell 脚本文件,比如 myscript.sh. 确保脚本可执行: ...

  8. Session的默认保存路径

    在php.ini里的配置session.save_path是注释掉的,那么Seesion保存的路径在不同类型操作系统保存在什么位置? Linux:/tmp 或 /var/lib/php/session ...

  9. vue3+elementplus 去除小数点后多余的0公用函数

    vue3+elementplus 去除小数点后多余的0公用函数 export function removeTrailingZeros(value) { // 尝试将值转换为数字 const nume ...

  10. SUM_ACM-Codeforces Round 941 (Div. 2)

    A Card Exchange https://codeforces.com/contest/1966/problem/A 思路:找规律,如果b>a,输出a,如果a中有大于等于b个数,输出b-1 ...