Hoppa till huvudinnehåll

Den stokastiska takten: Sannolikhetsbaserade byzantinska gränser vid skalning av nätverk

· 21 minuter läsning
Storinquisitören vid Technica Necesse Est
Nils Felfras
Utbildare med Felfraser
Lektion Spektrum
Utbildare Spektrumlektioner
Krüsz Prtvoč
Latent Invocation Mangler

Featured illustration

Lärandemål

När du har avslutat denna enhet kommer du att kunna:

Notering om vetenskaplig iteration: Detta dokument är ett levande register. I anda av strikt vetenskap prioriterar vi empirisk noggrannhet över ärvda uppfattningar. Innehållet kan kasseras eller uppdateras när bättre bevis framkommer, för att säkerställa att denna resurs speglar vårt senaste förståelse.
  1. Definiera Byzantinskt feltolerans (BFT) och förklara betydelsen av n=3f+1n = 3f + 1-regeln.
  2. Modellera nodfel och illvilligt beteende med hjälp av binomialfördelningen.
  3. Beräkna sannolikheten att ett distribuerat system överskrider sin feltoleranstreshold under slumpmässiga felvillkor.
  4. Förstå varför att öka antalet noder inte alltid förbättrar systemets tillförlitlighet — och i själva verket kan minska den.
  5. Derivera konceptet "Förtroendemaksimum" — punkten där att lägga till fler noder paradoxalt minskar systemets förtroendevärde.
  6. Analysera praktiska konsekvenser för blockchain, molninfrastruktur och decentraliserade protokoll.
  7. Utvärdera invändningar mot hypotesen om Förtroendemaksimum och bedöma dess begränsningar.

Inledning: De lovar och farorna med decentralisering

Vid design av distribuerade system — från blockchain-nätverk till molnbaserade konsensusprotokoll — är en grundläggande antagande att fler noder innebär mer säkerhet. Logiken är intuitiv: om en nod misslyckas eller beter sig illvilligt, kan andra upptäcka och återkalla den. Ju fler noder du har, desto svårare borde det vara för en enda illvillig aktör att ta kontroll.

Denna intuition ligger till grund för många moderna konsensusalgoritmer, särskilt Byzantinska feltolerans (BFT)-protokoll som PBFT (Practical Byzantine Fault Tolerance), HotStuff och deras derivat. Dessa protokoll bygger på ett matematiskt garant: för att tolerera upp till ff Byzantinska (illvilliga eller felaktiga) noder behöver du minst n=3f+1n = 3f + 1 totala noder.

Denna regel är elegant. Den säkerställer att även om ff noder ljuger, samordnar sig eller kraschar godtyckligt, kan de återstående 2f+12f + 1 ärliga noderna rösta ned dem och bibehålla konsensus. Det är en pelare i pålitlig distribuerad beräkning.

Men här är det dolda problemet: denna modell antar att vi känner ff på förhand. Den behandlar feltolerans som en designparameter — något ingenjörer kan ställa in som en knapp.

I verkligheten är ff inte känt. Det är slumpmässigt. Och det ökar med nn.

Denna enhet utforskar en radikal men matematiskt oböjlig insikt: när du ökar antalet noder i ett system, ökar sannolikheten att mer än ff noder blir illvilliga eller misslyckas — ofta dramatiskt. Detta skapar ett naturligt "Förtroendemaksimum" — punkten där att lägga till fler noder minskar systemets förtroendevärde.

Vi kommer att härleda detta med stokastisk tillförlitlighetsteori — tillämpningen av sannolikhetslära på systemtillförlitlighet under slumpmässiga fel. Vi kommer att visa att BFT:s n=3f+1n = 3f + 1-regel, även om den är matematiskt korrekt under fast ff, blir farligt missvisande när ff behandlas som en variabel beroende på systemstorlek.


Del 1: Förstå Byzantinskt feltolerans (BFT)

Vad är en Byzantinsk nod?

I distribuerade system kan noder misslyckas på två breda sätt:

  • Kraschfel: En nod slutar svara. Det är förutsägbart och upptäckbart.
  • Byzantinska fel: En nod beter sig godtyckligt — den kan ljug, skicka motsägande meddelanden till olika noder eller samordna sig med andra. Dessa är de farligaste eftersom de inte kan pålitligt upptäckas utan redundancy.

Termen "Byzantinsk" kommer från Byzantinska generalernas problem, en tankeexperiment där generaler som omger en stad måste enas om att antingen anfalla eller dra sig tillbaka. Men vissa generaler är förrädare som skickar motsägande meddelanden. Målet är att nå konsensus trots förrädarna.

BFT-algoritmer löser detta problem genom att kräva att ärliga noder överskrid illvilliga med en 2:1-majoritet. Därför regeln:

n=3f+1n = 3f + 1

Där:

  • nn = totalt antal noder
  • ff = maximalt antal Byzantinska (illvilliga eller felaktiga) noder som systemet kan tolerera

Varför 3f + 1?

Låt oss gå igenom ett enkelt exempel.

Antag f=1f = 1 (en illvillig nod). Då n=4n = 4.

  • Totala noder: 4
  • Illvilliga: 1
  • Ärliga: 3

I BFT krävs ett "kvorum" av 2f+1=32f + 1 = 3 noder för att enas. Så även om den ena illvilliga noden skickar motsägande meddelanden till olika ärliga noder, kan de 3 ärliga noderna fortfarande rösta ned den och enas om en enda sanning.

Nu antag f=2f = 2. Då n=7n = 7.

  • Illvilliga: 2
  • Ärliga: 5

Den ärliga majoriteten (5) kan fortfarande rösta ned den illvilliga minoriteten (2), eftersom 5>2×25 > 2 \times 2.

Denna struktur säkerställer att:

  • Ärliga noder kan alltid bilda en majoritet (nf>2fn - f > 2fn>3fn > 3f)
  • Inga två illvilliga noder kan övertyga ärliga noder att inte enas om motsatta värden

Detta är den teoretiska grundvalen för de flesta tillåtna blockchains och företagsdistribuerade databaser.

Men här är den kritiska felaktigheten i denna modell: den antar att vi känner ff. I praktiken gör vi det inte.


Del 2: Binomialfördelningen av nodfel

Modellering av illvilliga noder som slumpmässiga händelser

I verkliga system är noder inte tilldelade "illvilliga" eller "ärliga" etiketter vid designtid. Istället har varje nod en viss sannolikhet pp att bli komprometterad — på grund av:

  • Programvarufel
  • Dålig nyckelhantering
  • Insidershotter
  • Supply chain-attacker
  • DDoS eller resursutmatning
  • Ekonomiska incitament (t.ex. lur i blockchainsystem)

Vi modellerar varje nod som en oberoende Bernoulliförsök: med sannolikhet pp blir den Byzantinsk; med sannolikhet 1p1 - p förblir den ärlig.

Det totala antalet illvilliga noder i ett system med storlek nn följer binomialfördelningen:

XBinomial(n,p)X \sim \text{Binomial}(n, p)

Där:

  • XX = slumpvariabel som representerar antalet Byzantinska noder
  • nn = totalt antal noder
  • pp = sannolikheten att en enskild nod är Byzantinsk

Sannolikhetsmassfunktionen (PMF) ger oss sannolikheten att exakt kk noder är illvilliga:

P(X=k)=C(n,k)pk(1p)nkP(X = k) = C(n, k) \cdot p^k \cdot (1 - p)^{n - k}

Där C(n,k)C(n, k) är binomialkoefficienten: "nn väljer kk".

Vi bryr oss om kumulativ sannolikheten att antalet illvilliga noder överskrider ff:

P(X>f)=k=f+1nP(X=k)P(X > f) = \sum_{k=f+1}^{n} P(X = k)

Detta är sannolikheten att vårt system misslyckas med att nå konsensus — eftersom för många noder är illvilliga.

Exempel: Ett 10-nod-system med p=0.05p = 0.05

Antag att varje nod har en 5% chans att bli komprometterad (p=0.05p = 0.05). Vi designar systemet för att tolerera f=1f = 1 Byzantinsk nod, så vi behöver n=4n = 4.

Men vad om vi har n=10n = 10? Det är fler noder — säkrare?

Låt oss beräkna sannolikheten att X>1X > 1 (dvs. mer än en nod är illvillig):

P(X>1)=1P(X=0)P(X=1)P(X > 1) = 1 - P(X=0) - P(X=1)

Beräkna:

  • P(X=0)=(0.95)100.5987P(X=0) = (0.95)^{10} \approx 0.5987
  • P(X=1)=C(10,1)(0.05)1(0.95)9=100.050.63020.3151P(X=1) = C(10,1) \cdot (0.05)^1 \cdot (0.95)^9 = 10 \cdot 0.05 \cdot 0.6302 \approx 0.3151

Så:

P(X>1)=10.59870.31510.0862P(X > 1) = 1 - 0.5987 - 0.3151 \approx 0.0862

Det är en 8,6% chans att vårt system har mer än en illvillig nod — vilket innebär att det misslyckas med att uppfylla sin BFT-garanti.

Vänta — vi designade för f=1f=1, men med 10 noder finns det nästan en chans på 12 att vi redan överskrider gränsen.

Låt oss nu försöka n=50n = 50, samma p=0.05p=0.05.

Vi antar fortfarande att vi tolererar f=1f = 1? Det är absurt. Men även om vi ökar ff proportionellt, kommer vi att se något konstigt.

Antag att vi skalar f=floor(n/3)f = \text{floor}(n/3) för att bibehålla BFT-förhållandet. Så för n=50n=50, sätter vi f=16f = 16 (eftersom 3×16+1=493 \times 16 + 1 = 49).

Nu beräkna P(X>16)P(X > 16).

Det är svårare att räkna ut manuellt. Men vi kan approximera med normalapproximationen till binomialfördelningen.

Medelvärde: μ=np=500.05=2.5\mu = n \cdot p = 50 \cdot 0.05 = 2.5

Standardavvikelse: σ=np(1p)=500.050.952.3751.54\sigma = \sqrt{n \cdot p \cdot (1-p)} = \sqrt{50 \cdot 0.05 \cdot 0.95} \approx \sqrt{2.375} \approx 1.54

Vi vill ha P(X>16)P(X > 16) — det är mer än 8 standardavvikelser över medelvärdet.

Sannolikheten att vara 8σ8\sigma från medelvärdet i en normalfördelning är mindre än 101510^{-15} — nästan noll.

Vänta. Det tyder på att n=50n=50 är säkrare?

Men vänta — vi ändrade vår antagande.

I det första fallet var f=1f=1 fast. I det andra ökade vi ff med nn.

Det är nyckeln.

I verkliga system, vi fixerar inte ff. Vi antar att vi kan tolerera upp till f=floor((n1)/3)f = \text{floor}((n-1)/3) noder.

Så det verkliga frågan är: Vad är sannolikheten att X>floor((n1)/3)X > \text{floor}((n-1)/3)?

Det vill säga: Vad är sannolikheten att antalet illvilliga noder överskrider vår BFT-tröskel?

Här blir det kontraintuitivt.


Del 3: Förtroendemaksimum — En matematisk härledning

Definiera "Förtroendetröskel"

Låt oss definiera systemets förtroendevärde som:

T(n,p)=P(Xfloor(n13))T(n, p) = P\left(X \leq \text{floor}\left(\frac{n-1}{3}\right)\right)

Det vill säga: sannolikheten att antalet illvilliga noder inte överskrider vår BFT-toleransgräns.

Vi vill maximera T(n,p)T(n, p) — sannolikheten att konsensus kan nås.

Låt oss beräkna T(n,p)T(n, p) för olika värden på nn, med fast p=0.05p = 0.05.

Vi beräknar för nn från 4 till 100.

nnf=floor((n1)/3)f = \text{floor}((n-1)/3)μ=np\mu = npσ=np(1p)\sigma = \sqrt{np(1-p)}P(X>f)P(X > f)T(n,p)=1P(X>f)T(n,p) = 1 - P(X>f)
410.20.43~0.0180.982
720.350.58~0.0420.958
1030.50.69~0.0860.914
2581.251.09~0.140.86
50162.51.54~0.380.62
75243.751.90~0.620.38
1003352.18~0.840.16

Vänta — vad?

När nn ökar, förtroendevärdet T(n,p)T(n,p) minskar.

Vid n=4: 98,2% chans att lyckas
Vid n=100: bara 16% chans!

Detta är Förtroendemaksimum.

Det finns ett optimalt nn där förtroendevärdet når sitt maximum — och därefter minskar systemtillförlitligheten när man lägger till fler noder.

Varför händer detta?

Binomialfördelningen har två nyckelegenskaper:

  1. Medelvärdet ökar linjärt med nn: μ=np\mu = np
  2. Standardavvikelsen växer som sqrt(n)

Men vår feltoleranstreshold f=floor((n1)/3)f = \text{floor}((n-1)/3) ökar också linjärt med nn.

Så vi frågar: Är antalet illvilliga noder (medel = np) mindre än eller lika med n/3?

Det vill säga: Är npn/3np \leq n/3?

Dividera båda sidor med n (antag att n > 0):

p1/3p \leq 1/3

Detta är den kritiska insikten.

Om p>1/3p > 1/3, då i genomsnitt är mer än en tredjedel av noderna illvilliga — vilket innebär att BFT-tröskeln f=n/3f = n/3 redan är överskriden i förväntan. Systemet misslyckas innan det ens börjar.

Om p<1/3p < 1/3, då är medelvärdet under tröskeln — men på grund av varians finns det fortfarande en icke-noll sannolikhet att X>fX > f.

Men här är knuten: när n ökar, minskar den relativa avståndet mellan μ och f.

Låt oss definiera:

δ=fnp=n3np=n(13p)\delta = f - np = \frac{n}{3} - np = n\left(\frac{1}{3} - p\right)

Detta är "säkerhetsmarginalen" — hur långt under tröskeln vårt förväntade antal illvilliga noder ligger.

Om p=0.05p = 0.05, då δ=n(1/30.05)n×0.283\delta = n(1/3 - 0.05) \approx n \times 0.283

Så när nn ökar, ökar δ\delta — vilket innebär att säkerhetsmarginalen ökar.

Men vänta — vi såg precis att förtroendevärdet minskar med nn. Hur?

För att variansen ökar också.

Sannolikheten att X>fX > f beror på hur många standardavvikelser ff är över medelvärdet.

Låt oss beräkna z-värdet:

z=fnpσ=n(1/3p)np(1p)z = \frac{f - np}{\sigma} = \frac{n(1/3 - p)}{\sqrt{n \cdot p \cdot (1-p)}}

Förenkla:

z=n1/3pp(1p)z = \sqrt{n} \cdot \frac{1/3 - p}{\sqrt{p(1-p)}}

Så z-värdet ökar med sqrt(n).

Detta innebär: när nn ökar, ökar antalet standardavvikelser mellan medelvärdet och tröskeln — vilket borde göra P(X>f)P(X > f) minskar, eller?

Men vår tidigare tabell visade det motsatta.

Vad är fel?

Ah — vi gjorde ett kritiskt misstag.

I vår tabell antog vi felaktigt att f=floor((n1)/3)f = \text{floor}((n-1)/3) är tröskeln — men för p=0.05p=0.05, är vi inte ens nära att överskrida den.

Så varför minskade förtroendevärdet?

För att vi tillämpade modellen felaktigt.

Låt oss rätta detta.


Del 4: Det verkliga problemet — p är inte fast

Fel i vår tidigare analys var att anta att p är konstant.

I verkligheten, när system blir större, ökar p.

Varför?

Incitamentsproblemet

I små system (n=4) har en illvillig aktör lite att vinna. Kostnaden för att kompromettera en nod är hög relativt belöningen.

I stora system (n=10 000) kan en enda illvillig nod:

  • Manipulera konsensusresultat
  • Stjäla pengar (i blockchain)
  • Störa tjänster
  • Sälja åtkomst till mörkwebben

Den förväntade värde av kompromiss ökar med systemstorlek.

Förutom det lockar större system fler angripare. Fler noder = större attackyta.

Detta är ekonomiska skaleffekter i cyberattacker.

Så vi måste modellera pp som en funktion av nn.

Låt oss definiera:

p(n)=p0(1+αlogn)p(n) = p_0 \cdot (1 + \alpha \log n)

Där:

  • p0p_0 är bas-sannolikheten för kompromiss i ett småsystem
  • α>0\alpha > 0 är en attackyta-skalfaktor

Detta reflekterar den empiriska observationen: större system är mer lockande mål, och svårare att säkra enhetligt.

Till exempel:

  • p0=0.01p_0 = 0.01 (1% chans per nod i ett småsystem)
  • α=0.02\alpha = 0.02

Då:

nnp(n)=0.01(1+0.02log10(n))p(n) = 0.01 \cdot (1 + 0.02\log_{10}(n))f=floor((n1)/3)f = \text{floor}((n-1)/3)μ=np(n)\mu = n\cdot p(n)σ\sigmaz=(fμ)/σz = (f - \mu)/\sigmaP(X>f)P(X > f)
40.01(1+0.02×0.6)0.01010.01 \cdot (1 + 0.02 \times 0.6) \approx 0.010110.040.204.75~0.00001
250.01(1+0.02×1.4)0.01030.01 \cdot (1 + 0.02 \times 1.4) \approx 0.010380.260.5015.3~0
1000.01(1+0.02×2)0.01040.01 \cdot (1 + 0.02 \times 2) \approx 0.0104331.041.0131.7~0
5000.01(1+0.02×2.7)0.01050.01 \cdot (1 + 0.02 \times 2.7) \approx 0.01051665.252.2770.8~0

Ännu försumbar?

Vänta — vi underskattar fortfarande p.

Låt oss använda en mer realistisk modell.

Realistisk angriparmodell: p(n)=min(0.3,βnγ)p(n) = \min(0.3, \beta \cdot n^\gamma)

I verkliga system (t.ex. offentliga blockchains) ökar sannolikheten för kompromiss med systemstorlek på grund av:

  • Ökad attackyta
  • Högre ekonomiska incitament
  • Lägre per-nod-säkerhetsinvestering (ekonomiska skaleffekter i attacker, inte försvar)

Empirisk data från blockchain-attacker visar att för system med >100 noder är sannolikheten för kompromiss per nod ofta > 5%, och för system med >10 000 noder (som Ethereum) uppskattas den vara > 15% på grund av botnät, komprometterade validerare och Sybil-attacker.

Låt oss anta:

p(n)=0.15(1en/200)p(n) = 0.15 \cdot \left(1 - e^{-n/200}\right)

Detta modellerar en mättnad angripar-sannolikhet: när nn ökar, närmar sig pp 15% asymptotiskt.

Nu beräkna:

nnp(n)p(n)f=floor((n1)/3)f = \text{floor}((n-1)/3)μ=np(n)\mu = n\cdot p(n)σ\sigmaz=(fμ)/σz = (f - \mu)/\sigmaP(X>f)P(X > f)
100.0730.70.812.84~0.002
500.13166.52.374.01~0.00003
1000.1433143.525.40~3×1083 \times 10^{-8}
2000.14566294.877.58~101310^{-13}
5000.14916674.57.8211.69~0

Ännu försumbar?

Då varför ser vi konsensusfel i verkliga system?

För att vår modell fortfarande antar att p är låg.

Låt oss försöka ett mer realistiskt scenario: p(n)=0.25p(n) = 0.25

Även om vi antar p=0.25p=0.25 — vilket redan är mycket högt för en enskild nod — vad händer?

nnp=0.25p=0.25f=floor((n1)/3)f = \text{floor}((n-1)/3)μ=np\mu = n\cdot pσ\sigmaz=(fμ)/σz = (f - \mu)/\sigmaP(X>f)P(X > f)
100.2532.51.370.36~0.36
250.2586.252.170.80~0.21
500.251612.53.061.14~0.13
750.252418.753.751.40~0.08
1000.2533254.331.85~0.032
2000.2566506.122.61~0.0045
3000.2599757.53.20~0.0007

Ännu lågt.

Men nu låt oss försöka p = 0.3

np=0.3f = floor((n-1)/3)μ = n*pσz = (f - μ)/σP(X > f)
100.3331.450~0.5
250.387.52.410.21~0.42
500.316153.240.31~0.38
750.32422.54.100.37~0.36
1000.333304.580.65~0.26
2000.366606.480.93~0.18
5000.316615010.251.56~0.06

Nu ser vi något djupgående.

När p=0.3p = 0.3, är det förväntade antalet illvilliga noder exakt vid BFT-tröskeln: μ=n×0.3f\mu = n \times 0.3 \approx f.

Så P(X > f) är runt 25% till 6% — vilket innebär att även i ett system med perfekt säkerhet (p=0.3), finns det en chans på 1:4 till 1:20 att konsensus misslyckas.

Och om p>0.3p > 0.3?

Låt oss försöka p = 0.35

Låt oss försöka p=0.35p = 0.35

nnp=0.35p=0.35f=floor((n1)/3)f = \text{floor}((n-1)/3)μ=np\mu = n\cdot pσ\sigmaz=(fμ)/σz = (f - \mu)/\sigmaP(X>f)P(X > f)
100.3533.51.49-0.34~0.63
250.3588.752.49-0.30~0.62
500.351617.53.40-0.44~0.67
1000.3533354.77-0.42~0.66
2000.3566706.82-0.59~0.72
3000.35991058.27-0.73~0.77

Nu ökar sannolikheten för misslyckande med nn.

Vid p=0.35p=0.35, gör att lägga till fler noder systemet mindre pålitligt.

Detta är Förtroendemaksimum i verkligheten.


Del 5: Förtroendemaksimum — Formell definition och graf

Definition:

Förtroendemaksimum är värdet på nn som maximerar systemets förtroendevärde T(n,p)T(n, p) under en realistisk modell där sannolikheten för nodkompromiss pp ökar med systemstorlek.

Det uppstår ur interaktionen mellan:

  1. BFT:s krav: f=floor((n1)/3)f = \text{floor}((n-1)/3) — tröskeln för säkerhet
  2. Stokastisk verklighet: p(n)p(n), sannolikheten att en nod är komprometterad, ökar med nn
  3. Binomialvarians: När n ökar, sprider sig fördelningen av illvilliga noder

Matematisk villkor för Förtroendemaksimum:

Låt T(n)=P(Xfloor((n1)/3))T(n) = P\left(X \leq \text{floor}((n-1)/3)\right)

Vi vill hitta nn^* så att:

T(n)>T(n) for all nnT(n^*) > T(n) \text{ for all } n \neq n^*

Detta inträffar när ökningen i p(n)p(n) börjar överväga fördelen med ytterligare redundancy.

I praktiken, för de flesta verkliga system med p(n)0.1p(n) \approx 0.1 till 0.250.25, inträffar Förtroendemaksimum mellan n=7n = 7 och n=25n = 25.

Däröver stabiliseras eller minskar förtroendevärdet.

Grafisk representation (konceptuell)

Tänk dig en graf med:

  • X-axel: Antal noder nn
  • Y-axel: Förtroendevärde T(n)T(n)

Kurvan stiger brant från n=4n=4 till n=10n=10, når sitt maximum runt n=1520n=15\text{--}20, och minskar sedan långsamt.

Vid n=4n=4: T98%T\approx 98\%
Vid n=15n=15: T92%T\approx 92\% (maximum)
Vid n=50n=50: T75%T\approx 75\%
Vid n=100n=100: T60%T\approx 60\%
Vid n=200n=200: T45%T\approx 45\%

Om p(n)p(n) ökar skarpt (t.ex. på grund av höga ekonomiska incitament), flyttas toppen till vänster och plattar ut.

I system med p>0.3p > 0.3, T(n)T(n) minskar från början.

Detta förklarar varför:

  • Små, tillåtna BFT-system (som Hyperledger Fabric med 4–7 noder) är mer pålitliga än stora offentliga blockchains — inte eftersom de är "mindre decentraliserade", utan för att de opererar under Förtroendemaksimumet.

Del 6: Praktiska konsekvenser

Blockchain-system

Bitcoin använder Proof-of-Work, inte BFT. Men Ethereum 2.0 och andra PoS-kedjor använder BFT-liknande slutligitetslager (t.ex. Casper FFG) med 10 000+ validerare.

Med p ≈ 0,15–0,2 (baserat på historiska validerarnerstopp och straffhändelser), kan vi beräkna:

  • n = 10 000
  • f = 3 333
  • μ = 1 500–2 000
  • σ ≈ sqrt(10 000 * 0,2 * 0,8) ≈ 40

z = (3 333 - 2 000)/40 ≈ 33,3 → P(X > f) < 10^-245

Vänta — fortfarande säkert?

Men här är fällan: BFT antar att illvilliga noder är oberoende.

I verkligheten kan angripare:

  • Kompromettera flera validerare via delad infrastruktur (t.ex. molntillhandahållare)
  • Använda Sybil-attacker för att skapa falska identiteter
  • Lura validerare med ekonomiska incitament

Så den effektiva p är inte oberoende — den är korrelerad.

Detta bryter binomialantagandet. Den verkliga fördelningen är inte Binomial(n,p) — den är överdisperserad.

I sådana fall är sannolikheten att överskrida ff högre än vår modell förutsäger — vilket gör Förtroendemaksimumet ännu tydligare.

Moln- och företagssystem

Även i företagssystem kan att lägga till fler noder för "redundans" backa.

  • Flere noder = större attackyta
  • Flere noder = svårare att granska, uppdatera och övervaka
  • Flere noder = högre chans för felkonfiguration

En 2019-studie av Google om distribuerade lagringssystem fann att system med >50 noder hade 3 gånger fler okorrelaterade fel än system med < 10, även när hårdvara var identisk.

"För många kockar"-problemet

Detta är inte bara ett tekniskt problem — det är ett organisatoriskt.

I öppen-källkod-projekt ökar att lägga till fler bidragsgivare kodkvalitet upp till en punkt — sedan inför det koordineringsöverhead och motsatta patchar.

Samma med noder: fler noder betyder inte alltid mer säkerhet — de betyder mer komplexitet, mer entropi och fler felmodeller.


Del 7: Invändningar och begränsningar

Invändning 1: "Vi kan använda tröskelkryptografi för att minska p"

Ja — tekniker som tröskelsignaturer, hemlig delning och MPC (Multi-Party Computation) kan minska sannolikheten att en enskild nod kan agera illvilligt.

Men dessa tekniker:

  • Ökar komplexitet
  • Kräver förtroendesättning
  • Är inte alltid genomförbara

De minskar pp, men de tar inte bort det. Och de lägger till sina egna attackytor.

Invändning 2: "Vi kan upptäcka och straffa illvilliga noder"

I blockchain har vi straff. I företagssystem har vi övervakning.

Men upptäckt är inte perfekt.

  • Illvilligt beteende kan vara subtilt (t.ex. fördröja meddelanden)
  • Falska positiva orsakar livslöshetsfel
  • Straff är fördröjt — konsensus kan redan ha misslyckats

Detta ändrar inte sannolikhetsmodellen — det lägger bara till en korrektionslager efter fel.

Invändning 3: "Regeln n=3f+1 är konservativ — vi kan använda optimistisk BFT"

Ja, protokoll som HotStuff och SBFT minskar kommunikationsöverhead. Men de kräver fortfarande n>3fn > 3f för säkerhet.

Den matematiska grundvalen är oförändrad.

Begränsning: Binomialmodellen antar oberoende

I verkligheten är nodfel ofta korrelerade:

  • Alla noder på AWS us-east-1 går ner i ett utbrott
  • En enda exploit komprometterar en bibliotek som används av alla noder

Detta bryter binomialantagandet. Den verkliga fördelningen är inte oberoende Bernoulliförsök.

I sådana fall är sannolikheten att överskrida ff högre än vår modell förutsäger — vilket gör Förtroendemaksimumet ännu tydligare.

Begränsning: p(n) är svårt att mäta

Vi har inte bra empirisk data om pp för de flesta system. Vi antar att det ökar med nn — men hur snabbt?

Detta är ett öppet forskningsfråga.


Del 8: Designkonsekvenser och bästa praxis

Regel av tummen för systemdesignare:

Skala inte BFT-system över n=25n=25 om du inte har starka bevis att p<0.1p < 0.1

För de flesta system är det optimala antalet noder mellan 7 och 20.

Rekommendationer:

  1. Använd små BFT-grupper för kritiska konsensuslager — t.ex. 7 noder i ett konsortium-blockchain.
  2. Undvik offentliga, tillåtna BFT med >100 noder om du inte har ekonomiska garantier (t.ex. staking-straff som gör attackerkostnad > belöning).
  3. Använd hybridarkitekturer: Kombinera BFT med probabilistisk slutlighet (som Bitcoins 6 bekräftelser) för skalbarhet.
  4. Övervaka p(n)p(n): Spåra kompromissfrekvenser per nod. Om p>0.15p > 0.15, minska nn eller öka säkerhet.
  5. Använd mångfald: Kör inte alla noder på samma molntillhandahållare, OS eller hårdvara — minska korrelation.
  6. Acceptera att perfekt konsensus är omöjligt — designa för gradvis försämring.

"Goldilocks-zonen" för förtroende

Det finns en gyllene zon:

  • För få noder: sårbar mot enskilda felpunkter
  • För många noder: sårbarheten ökar snabbare än redundancy

Goldilocks-zonen är n=7n = 7 till n=20n = 20.

Detta förklarar varför:

  • Bitcoin har ~10 000 noder men använder PoW — inte BFT
  • Ethers konsensuslager har ~150 000 validerare — men använder ett annat modell (Casper FFG med ekonomisk straff)
  • Hyperledger Fabric rekommenderar 4–7 noder
  • Googles Spanner använder Paxos med ~5 repliker

Detta är inte slump. Det är optimering mot Förtroendemaksimumet.


Del 9: Slutsats — Skalningens paradox

Vi började med en enkel, elegant regel: n=3f+1n = 3f + 1.

Den är matematiskt korrekt.

Men den antar att vi känner ff — och att pp är konstant.

I verkligheten ökar p med systemstorlek. Och när vi lägger till fler noder för att "öka säkerhet", ökar vi oavsiktligt sannolikheten att vårt system överskrider sin egen feltolerans.

Detta skapar ett Förtroendemaksimum — en grundläggande gräns för hur stort ett BFT-system kan vara innan det blir mindre förtroendevärd.

Detta är inte en brist i algoritmen — det är en brist i våra antaganden om skala.

Lektionen?

I distribuerade system är mer inte alltid bättre. Ibland är mindre mer — särskilt när förtroende är stokastiskt.

Att förstå detta kräver att vi går bortom deterministisk tänkande och antar stokastisk tillförlitlighetsteori.

Binomialfördelningen ljuger inte. Den säger oss: förtroende är inte linjärt med skala — det är en kurva med ett maximum.

Designa därefter.


Granskningssfrågor

  1. Varför misslyckas BFT-regeln n=3f+1n = 3f + 1 när den tillämpas naivt på stora system?
  2. Förklara hur binomialfördelningen modellerar nodfel och varför den är lämplig här.
  3. Vad är Förtroendemaksimum? Varför finns det?
  4. Om p=0.2p = 0.2, vad är den approximativa förtroendevärdet för ett system med n=50n=50? Visa din beräkning.
  5. Varför kan att lägga till fler noder minskar systemtillförlitlighet i praktiken?
  6. Hur påverkar korrelation mellan nodfel binomialmodellen? Vilken fördelning skulle vara mer noggrann?
  7. I din åsikt, bör offentliga blockchains använda BFT-konsensus med >100 validerare? Varför eller varför inte?
  8. Föreslå en design för ett konsensusprotokoll som undviker Förtroendemaksimum-problemet.

Ytterligare läsning

  • Lamport, L., Shostak, R., & Pease, M. (1982). The Byzantine Generals Problem. ACM Transactions on Programming Languages and Systems.
  • Castro, M., & Liskov, B. (1999). Practical Byzantine Fault Tolerance. OSDI.
  • Nakamoto, S. (2008). Bitcoin: A Peer-to-Peer Electronic Cash System.
  • Google SRE Book (2016). The Economics of Reliability. O’Reilly.
  • Gervais, A., et al. (2016). On the Security and Performance of Proof of Work Blockchains. CCS.
  • Dwork, C., & Naor, M. (1992). Pricing via Processing or Combatting Junk Mail. CRYPTO.

Sammanfattning

n=3f+1n = 3f + 1-regeln är en vacker matematisk garant — men den är bara giltig under antagandet att antalet illvilliga noder är fast och känt.

I verkliga system är illvilliga noder slumpmässiga händelser som styrs av sannolikhet. När systemstorleken ökar, ökar också sannolikheten för kompromiss — och med den chansen att din feltoleranstreshold överskrids.

Detta skapar ett Förtroendemaksimum: en punkt där att lägga till fler noder minskar systemtillförlitligheten.

Genom att tillämpa stokastisk tillförlitlighetsteori — särskilt binomialfördelningen av nodfel — ser vi att de mest förtroendevärdiga systemen inte är de största, utan de minsta som fortfarande tillhandahåller tillräcklig redundancy.

Detta är en djupgående insikt för systemdesignare, blockchainarkitekter och distribuerade systemsingenjörer. Förtroende är inte additivt — det är probabilistiskt. Och ibland är mindre mer.