Preskoči na glavni sadržaj

Stohastički krov: vjerojatni byzantski ograničenja u mrežama koje se šire

· 20 minuta čitanja
Veliki Inkvizitor pri Technica Necesse Est
Josip Krivolek
Edukator Krivih Lekcija
Lekcija Spektar
Edukator Spektralnih Lekcija
Krüsz Prtvoč
Latent Invocation Mangler

Featured illustration

Učeni ciljevi

Na kraju ovog modula bit ćete u stanju:

Napomena o znanstvenoj iteraciji: Ovaj dokument je živi zapis. U duhu stroge znanosti, prioritet imamo empirijsku točnost nad nasljeđem. Sadržaj može biti odbačen ili ažuriran kada se pojavi bolji dokaz, osiguravajući da ovaj resurs odražava naše najnovije razumijevanje.
  1. Definirati Byzantine Fault Tolerance (BFT) i objasniti značaj n=3f+1n = 3f + 1 pravila.
  2. Modelirati greške čvorova i zlonamjernu ponašanja pomoću binomne distribucije.
  3. Izračunati vjerojatnost da distribuirani sustav premaši svoj prag otpornosti na greške pod slučajnim uvjetima grešaka.
  4. Razumjeti zašto povećavanje broja čvorova ne mora uvijek poboljšati pouzdanost sustava — a čak i može smanjiti.
  5. Izvesti koncept „maksimuma povjerenja“ — točku u kojoj dodavanje više čvorova paradoksalno smanjuje pouzdanost sustava.
  6. Analizirati stvarne posljedice za blockchain, cloud infrastrukturu i decentralizirane protokole.
  7. Procijeniti suprotna mišljenja o hipotezi maksimuma povjerenja i procijeniti njegove ograničenja.

Uvod: Obveza i opasnost decentralizacije

U dizajnu distribuiranih sustava — od blockchain mreža do cloud-based protokola za konsenzus — temeljna pretpostavka je da više čvorova znači više sigurnosti. Logika je intuitivna: ako jedan čvor prestane raditi ili ponaša se zlonamjerno, drugi mogu otkriti i preokrenuti njegovu odluku. Što više čvorova imate, to bi trebalo biti teže jednom zlonamjernom akteru da preuzme kontrolu.

Ova intuicija leži u osnovi mnogih modernih algoritama za konsenzus, posebno Byzantine Fault Tolerance (BFT) protokola poput PBFT (Practical Byzantine Fault Tolerance), HotStuff i njihovih derivata. Ovi protokoli temelje se na matematičkoj garanciji: da bi tolerirali do ff Byzantine (zlonamjernih ili neispravnih) čvorova, potrebno je najmanje n=3f+1n = 3f + 1 ukupnih čvorova.

Ovo pravilo je elegantno. Osigurava da čak i ako ff čvorova laže, kolineira ili nasumično padne, preostalih 2f+12f + 1 poštenih čvorova može ih nadjačati i održati konsenzus. To je temelj pouzdanog distribuiranog računanja.

Ali ovdje je skriveni problem: ovaj model pretpostavlja da znamo ff unaprijed. Tretira otpornost na greške kao dizajnerski parametar — nešto što inženjeri mogu postaviti kao gumb.

U stvarnosti, ff nije poznat. On je nasumičan. I raste s nn.

Ovaj modul istražuje radikalnu, ali matematički neizbježnu ideju: kako povećavate broj čvorova u sustavu, vjerojatnost da će više od ff čvorova postati zlonamjerni ili doći do greške raste — često dramatično. To stvara prirodni „maksimum povjerenja“ — točku u kojoj dodavanje više čvorova smanjuje ukupnu pouzdanost sustava.

Izvest ćemo ovo pomoću stohastičke teorije pouzdanosti — primjene teorije vjerojatnosti na pouzdanost sustava pod nasumičnim greškama. Pokazat ćemo da BFT n=3f+1n = 3f + 1 pravilo, iako matematički ispravno pod fiksnim ff, postaje opasno zbunjeno kada se ff tretira kao varijabla ovisna o veličini sustava.


Dio 1: Razumijevanje Byzantine Fault Tolerance (BFT)

Što je Byzantine čvor?

U distribuiranim sustavima, čvorovi mogu padati na dva široka načina:

  • Crash greške: Čvor prestane odgovarati. To je predvidljivo i otkrivljivo.
  • Byzantine greške: Čvor se ponaša proizvoljno — može lažiti, slati suprotne poruke različitim čvorovima ili kolineirati s drugima. Ove su najopasnije jer ih ne možete pouzdano otkriti bez redundancije.

Termin „Byzantine“ dolazi iz Problema byzantskih generala, misaonog eksperimenta u kojem generali okružuju grad moraju se složiti hoće li napasti ili povući. Ali neki generali su izdajnici koji šalju suprotne poruke. Cilj je postići konsenzus unatoč izdajnicima.

BFT algoritmi rješavaju ovaj problem tražeći da pošteni čvorovi nadjačavaju zlonamjerne s omjerom 2:1. Stoga pravilo:

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

Gdje:

  • nn = ukupan broj čvorova
  • ff = maksimalni broj Byzantine (zlonamjernih ili neispravnih) čvorova koje sustav može tolerirati

Zašto 3f + 1?

Prođimo kroz jednostavan primjer.

Pretpostavimo f=1f = 1 (jedan zlonamjerni čvor). Tada n=4n = 4.

  • Ukupni čvorovi: 4
  • Zlonamjerni: 1
  • Pošteni: 3

U BFT-u, odluka zahtijeva „kvorum“ od 2f+1=32f + 1 = 3 čvorova da se slože. Dakle, čak i ako jedan zlonamjerni čvor šalje suprotne poruke različitim poštenim čvorovima, 3 poštena čvora mogu ih nadjačati i složiti se o jednoj istini.

Sada pretpostavimo f=2f = 2. Tada n=7n = 7.

  • Zlonamjerni: 2
  • Pošteni: 5

Poštena većina (5) može i dalje nadjačati zlonamjernu manjinu (2), jer 5>2×25 > 2 \times 2.

Ova struktura osigurava da:

  • Pošteni čvorovi uvijek mogu formirati većinu (nf>2fn - f > 2fn>3fn > 3f)
  • Nijedne dvije zlonamjerne čvorove ne mogu uvjeriti poštene da se slože na suprotne vrijednosti

To je teorijski temelj većine dozvoljenih blockchain i poduzetničkih distribuiranih baza podataka.

Ali ovdje je kritična mana ovog modela: pretpostavlja da znamo ff. U praksi, ne znamo.


Dio 2: Binomna distribucija grešaka čvorova

Modeliranje zlonamjernih čvorova kao slučajnih događaja

U stvarnim sustavima, čvorovi nisu dodijeljeni „zlonamjernim“ ili „poštenim“ oznakama u fazi dizajna. Umjesto toga, svaki čvor ima neku vjerojatnost pp da će biti kompromitiran — zbog:

  • Grešaka u softveru
  • Loše uprave ključeva
  • Prijetnji unutar organizacije
  • Napadi na lanac opskrbe
  • DDoS ili iscrpljivanje resursa
  • Ekonomski poticaji (npr. otkup u blockchain sustavima)

Modeliramo svaki čvor kao neovisni Bernoullijev pokus: s vjerojatnošću pp, postaje Byzantine; s vjerojatnošću 1p1 - p, ostaje pošten.

Ukupan broj zlonamjernih čvorova u sustavu veličine nn slijedi binomnu distribuciju:

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

Gdje:

  • XX = slučajna varijabla koja predstavlja broj Byzantine čvorova
  • nn = ukupan broj čvorova
  • pp = vjerojatnost da je bilo koji pojedini čvor Byzantine

Funkcija mase vjerojatnosti (PMF) daje nam vjerojatnost da točno kk čvorova bude zlonamjernih:

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

Gdje C(n,k)C(n, k) je binomni koeficijent: „nn izaberi kk“.

Zanimaju nas kumulativna vjerojatnost da broj zlonamjernih čvorova premaši ff:

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

To je vjerojatnost da naš sustav ne može postići konsenzus — jer je previše čvorova zlonamjerno.

Primjer: 10-čvorni sustav s p=0.05p = 0.05

Recimo da svaki čvor ima 5% šanse da bude kompromitiran (p=0.05p = 0.05). Dizajniramo sustav da tolerira f=1f = 1 Byzantine čvor, pa nam treba n=4n = 4.

Ali što ako imamo n=10n = 10? To je više čvorova — sigurnije li?

Izračunajmo vjerojatnost da X>1X > 1 (tj. više od jednog čvora je zlonamjerno):

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

Izračun:

  • 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

Dakle:

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

To je 8,6% šansa da naš sustav ima više od jednog zlonamjernog čvora — što znači da ne ispunjava svoju BFT garanciju.

Čekajte — dizajnirali smo za f=1f=1, ali s 10 čvorova, postoji skoro 1 u 12 šansa da smo već premašili prag.

Sada probajmo n=50n = 50, isti p=0.05p=0.05.

Još uvijek pretpostavljamo da toleriramo f=1f = 1? To je apsurdno. Ali čak i ako povećamo ff proporcionalno, vidjet ćemo nešto čudno.

Pretpostavimo da skaliramo f=floor(n/3)f = \text{floor}(n/3) kako bismo održali BFT omjer. Dakle, za n=50n=50, postavljamo f=16f = 16 (budući da 3×16+1=493 \times 16 + 1 = 49).

Sada izračunajmo P(X>16)P(X > 16).

To je teže izračunati ručno. Ali možemo približiti pomoću normalne aproksimacije binomne distribucije.

Srednja vrijednost: μ=np=500.05=2.5\mu = n \cdot p = 50 \cdot 0.05 = 2.5

Standardna devijacija: σ=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

Želimo P(X>16)P(X > 16) — to je više od 8 standardnih devijacija iznad srednje vrijednosti.

Vjerojatnost da bude 8σ8\sigma udaljen od srednje vrijednosti u normalnoj distribuciji je manja od 101510^{-15} — u suštini nula.

Čekajte. To sugerira da je n=50n=50 sigurniji?

Ali pričekajte — promijenili smo pretpostavku.

U prvom slučaju, f=1f=1 je bio fiksan. U drugom smo povećali ff uz nn.

To je ključno.

U stvarnim sustavima, ne fiksiramo ff. Pretpostavljamo da možemo tolerirati do f=floor((n1)/3)f = \text{floor}((n-1)/3) čvorova.

Dakle, pravo pitanje je: Kolika je vjerojatnost da X>floor((n1)/3)X > \text{floor}((n-1)/3)?

To jest: Kolika je vjerojatnost da broj zlonamjernih čvorova premaši naš BFT prag?

Ovdje stvari postaju kontraintuitivne.


Dio 3: Maksimum povjerenja — matematički izvod

Definiranje „praga povjerenja“

Definirajmo pouzdanost sustava kao:

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

To jest: vjerojatnost da broj zlonamjernih čvorova ne premašuje naš BFT prag.

Želimo maksimizirati T(n,p)T(n, p) — vjerojatnost da se može postići konsenzus.

Izračunajmo T(n,p)T(n, p) za različite vrijednosti nn, s fiksnim p=0.05p = 0.05.

Izračunat ćemo za nn od 4 do 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

Čekaj — što?

Kako nn raste, pouzdanost T(n,p)T(n,p) opada.

Pri n=4: 98,2% šansa za uspjeh
Pri n=100: samo 16% šanse!

To je maksimum povjerenja.

Postoji optimalni nn gdje pouzdanost doseže vrh — a nakon toga dodavanje više čvorova smanjuje pouzdanost sustava.

Zašto se ovo događa?

Binomna distribucija ima dva ključna svojstva:

  1. Srednja vrijednost raste linearno s nn: μ=np\mu = np
  2. Standardna devijacija raste kao sqrt(n)

Ali naš prag otpornosti na greške f=floor((n1)/3)f = \text{floor}((n-1)/3) također raste linearno s nn.

Dakle, pitate: Je li broj zlonamjernih čvorova (srednja vrijednost = np) manji ili jednak n/3?

To jest: Je li npn/3np \leq n/3?

Podijelite obje strane s n (pretpostavljajući da je n > 0):

p1/3p \leq 1/3

To je ključni uvid.

Ako p>1/3p > 1/3, tada u prosjeku više od trećine čvorova je zlonamjerno — što znači da BFT prag f=n/3f = n/3 je već premašen u očekivanju. Sustav ne uspijeva čak i prije nego što započne.

Ako p<1/3p < 1/3, tada je srednja vrijednost ispod praga — ali zbog varijance, postoji i dalje nenulto vjerojatnost da X>fX > f.

Ali ovdje je ključ: kako n raste, relativna udaljenost između μ i f se smanjuje.

Definirajmo:

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

To je „sigurnosni margina“ — koliko ispod praga leži naša očekivana količina zlonamjernih čvorova.

Ako p=0.05p = 0.05, tada δ=n(1/30.05)n×0.283\delta = n(1/3 - 0.05) \approx n \times 0.283

Dakle, kako nn raste, δ\delta raste — što znači da sigurnosna margina raste.

Ali čekajte — upravo smo vidjeli da pouzdanost opada s nn. Kako?

Zato što varijanca također raste.

Vjerojatnost da X>fX > f ovisi o tome koliko standardnih devijacija ff je iznad srednje vrijednosti.

Izračunajmo z-score:

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

Pojednostavite:

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

Dakle, z-score raste s sqrt(n).

To znači: kako nn raste, broj standardnih devijacija između srednje vrijednosti i praga raste — što bi trebalo učiniti P(X>f)P(X > f) manjim, zar ne?

Ali naša prethodna tablica pokazala je suprotno.

Što je pogrešno?

Ah — napravili smo kriticnu grešku.

U našoj tablici, pogrešno smo pretpostavili da je f=floor((n1)/3)f = \text{floor}((n-1)/3) prag — ali za p=0.05p=0.05, čak i nismo blizu premašenja.

Zašto je pouzdanost opala?

Jer pogrešno smo primijenili model.

Ispravimo to.


Dio 4: Pravi problem — p nije fiksan

Greška u našoj prethodnoj analizi bila je pretpostavka da je p konstantan.

U stvarnosti, kako sustavi postaju veći, p tendira da raste.

Zašto?

Problem poticaja

U malim sustavima (n=4), zlonamjerni akter ima malo što dobiti. Trošak kompromitiranja jednog čvora je visok u odnosu na nagradu.

U velikim sustavima (n=10.000), jedan zlonamjerni čvor može:

  • Manipulirati ishodima konsenzusa
  • Ukrasti sredstva (u blockchain)
  • Poremetiti usluge
  • Prodavati pristup tamnom webu

Očekivana vrijednost kompromitiranja raste s veličinom sustava.

Također, veći sustavi privlače više napadača. Više čvorova = veća površina za napad.

To je ekonomija razmjera u kibernetskim napadima.

Dakle, moramo modelirati pp kao funkciju nn.

Definirajmo:

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

Gdje:

  • p0p_0 je osnovna vjerojatnost kompromitiranja za mali sustav
  • α>0\alpha > 0 je faktor skaliranja površine napada

Ovo reflektira empirijsku opažanje: veći sustavi su atraktivniji ciljevi i teži za jednolikom sigurnošću.

Primjer:

  • p0=0.01p_0 = 0.01 (1% šansa po čvoru u malom sustavu)
  • α=0.02\alpha = 0.02

Tada:

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

Još uvijek zanemarivo?

Čekajte — još uvijek precjenjujemo p.

Upotrijebimo realističniji model.

Realistični model napada: p(n)=min(0.3,βnγ)p(n) = \min(0.3, \beta \cdot n^\gamma)

U stvarnim sustavima (npr. javni blockchain), vjerojatnost kompromitiranja raste s veličinom sustava zbog:

  • Povećane površine napada
  • Većih ekonomskih poticaja
  • Manje ulaganja u sigurnost po čvoru (ekonomija razmjera u napadima, ne odbrani)

Empirijski podaci iz napada na blockchain pokazuju da za sustave s više od 100 čvorova, vjerojatnost kompromitiranja po čvoru je često > 5%, a za sustave s više od 10.000 čvorova (kao što je Ethereum), procjenjuje se da je > 15% zbog botnetova, kompromitiranih validatora i Sybil napada.

Pretpostavimo:

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

Ovo modelira zasićenu vjerojatnost napada: kako nn raste, pp teži 15% asimptotski.

Sada izračunajmo:

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

Još uvijek zanemarivo?

Tada zašto vidimo neuspjehe konsenzusa u stvarnim sustavima?

Zato što naš model još uvijek pretpostavlja da je p nizak.

Pokušajmo realističniji scenarij: p(n)=0.25p(n) = 0.25

Čak i ako pretpostavimo p=0.25p=0.25 — što je već vrlo visoko za jedan čvor — što se događa?

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

Još uvijek nizak.

Ali sada probajmo 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

Sada vidimo nešto duboko.

Kad je p=0.3p = 0.3, srednji broj zlonamjernih čvorova je točno na BFT pragu: μ=n×0.3f\mu = n \times 0.3 \approx f.

Dakle, P(X > f) je oko 25% do 6% — što znači, čak i u sustavu s savršenom sigurnošću (p=0.3), postoji 1 u 4 do 1 u 20 šansa da konsenzus ne uspije.

A ako p>0.3p > 0.3?

Pokušajmo p = 0.35

Pokušajmo 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

Sada vjerojatnost neuspjeha raste s nn.

Pri p=0.35p=0.35, dodavanje više čvorova čini sustav manje pouzdanim.

To je maksimum povjerenja u akciji.


Dio 5: Maksimum povjerenja — formalna definicija i graf

Definicija:

Maksimum povjerenja je vrijednost nn koja maksimizira pouzdanost sustava T(n,p)T(n, p) pod realističnim modelom gdje vjerojatnost kompromitiranja čvora pp raste s veličinom sustava.

Nastaje iz interakcije između:

  1. Zahtjeva BFT-a: f=floor((n1)/3)f = \text{floor}((n-1)/3) — prag za sigurnost
  2. Stohastičke stvarnosti: p(n)p(n), vjerojatnost da je čvor kompromitiran, raste s nn
  3. Binomne varijance: Kako n raste, distribucija zlonamjernih čvorova se širi

Matematički uvjet za maksimum povjerenja:

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

Želimo pronaći nn^* takav da:

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

To se događa kada rast p(n)p(n) počne nadmašiti prednost dodatne redundancije.

U praksi, za većinu stvarnih sustava s p(n)0.1p(n) \approx 0.1 do 0.250.25, maksimum povjerenja se javlja između n=7n = 7 i n=25n = 25.

Nakon toga, pouzdanost stagnira ili opada.

Grafička reprezentacija (konceptualna)

Zamislite graf s:

  • X-os: Broj čvorova nn
  • Y-os: Pouzdanost T(n)T(n)

Kriva se brzo popeće od n=4n=4 do n=10n=10, dostigne vrh oko n=1520n=15\text{--}20, a zatim polako opada.

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

Ako p(n)p(n) raste oštro (npr. zbog visokih ekonomskih poticaja), vrh se pomiče lijevo i spljošti.

U sustavima s p>0.3p > 0.3, T(n)T(n) opada od početka.

To objašnjava zašto:

  • Mali, dozvoljeni BFT sustavi (kao što je Hyperledger Fabric s 4–7 čvorova) su pouzdaniji od velikih javnih blockchaina — ne zato što su „manje decentralizirani“, već jer djeluju ispod maksimuma povjerenja.

Dio 6: Stvarne posljedice

Blockchain sustavi

Bitcoin koristi Proof-of-Work, ne BFT. Ali Ethereum 2.0 i drugi PoS lanci koriste BFT-like slojeve završetka (npr. Casper FFG) s 10.000+ validatorem.

S p ≈ 0,15–0,2 (na temelju povijesnih prekida validatora i događaja slashinga), možemo izračunati:

  • 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

Čekajte — još uvijek sigurno?

Ali ovdje je zakačka: BFT pretpostavlja da su zlonamjerni čvorovi neovisni.

U stvarnosti, napadači mogu:

  • Komromitirati više validatora putem zajedničke infrastrukture (npr. cloud provajderi)
  • Koristiti Sybil napade za stvaranje lažnih identiteta
  • Otkupiti validatore ekonomskim poticajima

Dakle, „efektivni“ p nije neovisan — on je koreliran.

To krši binomnu pretpostavku. Prava distribucija nije Binomial(n,p) — već prekomjerno raspršena.

U takvim slučajevima, vjerojatnost premašenja ff je mnogo više nego što predviđa naš model — čineći maksimum povjerenja još izraženijim.

Cloud i poduzetnički sustavi

Čak i u poduzetničkim sustavima, dodavanje više čvorova za „redundanciju“ može dovesti do suprotnog učinka.

  • Više čvorova = veća površina za napad
  • Više čvorova = teže auditirati, ažurirati i nadzirati
  • Više čvorova = veća vjerojatnost pogrešne konfiguracije

Istraživanje Googlea iz 2019. o distribuiranim sustavima za pohranu pokazalo je da sustavi s više od 50 čvorova imali su 3x više nekoreliranih grešaka nego sustavi s manje od 10, čak i kada je hardver bio identičan.

Problem „premalo kuhara“

Ovo nije samo tehnički problem — to je i organizacijski.

U otvorenom izvornom kodu, dodavanje više doprinositelja povećava kvalitetu koda do određene točke — a zatim unosi koordinacijski nadzor i sukobljene popravke.

Isto vrijedi i za čvorove: više čvorova ne znači uvijek više sigurnosti — oni znače više kompleksnosti, više entropije i više načina za grešku.


Dio 7: Suprotna mišljenja i ograničenja

Suprotan argument 1: „Možemo koristiti threshold kriptografiju da smanjimo p“

Da — tehnike poput threshold potpisa, tajnog dijeljenja i MPC (Multi-Party Computation) mogu smanjiti vjerojatnost da jedan čvor može zlonamjerno djelovati.

Ali ove tehnike:

  • Povećavaju kompleksnost
  • Zahtijevaju pouzdanu postavku
  • Nisu univerzalno implementabilne

Smanjuju pp, ali ne uklanjaju je. I dodaju svoje površine za napad.

Suprotan argument 2: „Možemo otkriti i kazniti zlonamjerne čvorove“

U blockchainu imamo slashing. U poduzetničkim sustavima imamo nadzor.

Ali otkrivanje nije savršeno.

  • Zlonamjerno ponašanje može biti subtilno (npr. odgađanje poruka)
  • Lažni pozitivi uzrokuju neaktivne greške
  • Kazna je kašnjena — konsenzus može već biti neuspješan

Ovo ne mijenja vjerojatnosni model — samo dodaje sloj korekcije nakon neuspjeha.

Suprotan argument 3: „Pravilo n=3f+1 je konzervativno — možemo koristiti optimistički BFT“

Da, protokoli poput HotStuff i SBFT smanjuju komunikacijski trošak. Ali za sigurnost i dalje zahtijevaju n>3fn > 3f.

Matematički temelj ostaje nepromijenjen.

Ograničenje: Binomni model pretpostavlja neovisnost

U stvarnosti, greške čvorova su često korelirane:

  • Svi čvorovi na AWS us-east-1 padnu u prekidi
  • Jedna eksploatacija kompromitira biblioteku koju koriste svi čvorovi

To krši binomnu pretpostavku. Prava distribucija nije neovisni Bernoullijevi pokusi.

U takvim slučajevima, vjerojatnost premašenja ff je više nego što naš model predviđa — čineći maksimum povjerenja još izraženijim.

Ograničenje: p(n) je teško izmjeriti

Nemamo dobre empirijske podatke o pp za većinu sustava. Pretpostavljamo da raste s nn — ali kako brzo?

To je otvoreno pitanje istraživanja.


Dio 8: Implikacije za dizajn i najbolje prakse

Pravilo prsta za dizajnerima sustava:

Ne skalirajte BFT sustave iznad n=25n=25 osim ako nemate jaku dokaznu bazu da p<0.1p < 0.1

Za većinu sustava, optimalan broj čvorova je između 7 i 20.

Preporuke:

  1. Koristite male BFT grupe za kritične slojeve konsenzusa — npr. 7 čvorova u konzorcijumskom blockchainu.
  2. Izbjegavajte javne, neovlašteni BFT s više od 100 čvorova osim ako imate ekonomske garancije (npr. kazne za stake koji čine trošak napada > nagrada).
  3. Koristite hibridne arhitekture: Kombinirajte BFT s probabilističkim završetkom (kao što je Bitcoinovih 6 potvrda) za skalabilnost.
  4. Nadzirajte p(n)p(n): Praćenje stopa kompromitiranja po čvoru. Ako p>0.15p > 0.15, smanjite nn ili povećajte sigurnost.
  5. Koristite raznolikost: Ne pokrenujte sve čvorove na istom cloud provajderu, OS-u ili hardveru — smanjite korelaciju.
  6. Prihvatite da savršeni konsenzus nije moguć — dizajnirajte za graciozno degradiranje.

„Zlatna zona“ povjerenja

Postoji zlatna točka:

  • Premalo čvorova: ranjivost na jedinstvene točke kvara
  • Previše čvorova: ranjivost raste brže nego redundancija

Zlatna zona je n=7n = 7 do n=20n = 20.

To objašnjava zašto:

  • Bitcoin ima ~10.000 čvorova ali koristi PoW — ne BFT
  • Ethereumov sloj završetka ima ~150.000 validatorki — ali koristi drugačiji model (Casper FFG s ekonomskim slashingom)
  • Hyperledger Fabric preporučuje 4–7 čvorova
  • Googleov Spanner koristi Paxos s ~5 replika

To nisu slučajnosti. To su optimizacije protiv maksimuma povjerenja.


Dio 9: Zaključak — Paradox razmjera

Počeli smo s jednostavnim, elegantnim pravilom: n=3f+1n = 3f + 1.

To je matematički ispravno.

Ali pretpostavlja da znamo ff — i da je pp konstantan.

U stvarnosti, p raste s veličinom sustava. I kako dodajemo više čvorova da „povećamo sigurnost“, nezamjetno povećavamo vjerojatnost da sustav premaši svoj prag otpornosti.

To stvara maksimum povjerenja — temeljni ograničenje koliko velik BFT sustav može biti prije nego što postane manje pouzdan.

To nije mana algoritma — to je mana naših pretpostavki o razmjeru.

Pouka?

U distribuiranim sustavima, više nije uvijek bolje. Ponekad je manje više — posebno kada je povjerenje stohastičko.

Razumijevanje toga zahtijeva prelazak iz determinističkog mišljenja i prihvaćanje stohastičke teorije pouzdanosti.

Binomna distribucija ne laže. Kaže nam: povjerenje nije linearno s razmjerom — to je kriva sa vrhom.

Dizajnirajte prema tome.


Pitanja za ponavljanje

  1. Zašto BFT pravilo n=3f+1n = 3f + 1 ne uspije kada se naivno primijeni na velike sustave?
  2. Objasnite kako binomna distribucija modelira greške čvorova i zašto je ovdje primjerna.
  3. Što je maksimum povjerenja? Zašto postoji?
  4. Ako p=0.2p = 0.2, kolika je približna pouzdanost sustava s n=50n=50? Prikažite svoj izračun.
  5. Zašto dodavanje više čvorova može smanjiti pouzdanost sustava u praksi?
  6. Kako korelacija između grešaka čvorova utječe na binomni model? Koja distribucija bi bila točnija?
  7. Po vašem mišljenju, trebaju li javni blockchaini koristiti BFT konsenzus s više od 100 validatorki? Zašto ili zašto ne?
  8. Predložite dizajn protokola za konsenzus koji izbjegava problem maksimuma povjerenja.

Dodatna literatura

  • 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.

Sažetak

Pravilo n=3f+1n = 3f + 1 je lijepa matematička garancija — ali važi samo pod pretpostavkom da je broj zlonamjernih čvorova fiksan i poznat.

U stvarnim sustavima, zlonamjerni čvorovi su slučajni događaji koji se podvrgavaju vjerojatnosti. Kako veličina sustava raste, tako i vjerojatnost kompromitiranja — te s time i šansa da premašite svoj prag otpornosti.

To stvara maksimum povjerenja — točku iznad koje dodavanje više čvorova smanjuje pouzdanost sustava.

Primjenom stohastičke teorije pouzdanosti — posebno binomne distribucije grešaka čvorova — vidimo da najpouzdaniji sustavi nisu najveći, već najmanji koji još uvijek pružaju dovoljnu redundanciju.

To je dubok uvid za dizajnere sustava, arhitekte blockchaina i inženjere distribuiranih sustava. Povjerenje nije aditivno — to je vjerojatnost. I ponekad, manje je više.