Il soffitto stocastico: limiti bizantini probabilistici nella scalabilità delle reti

Introduzione: Il Paradosso della Scala nel Consenso Distribuito
I protocolli di consenso distribuito, in particolare quelli basati sulla tolleranza ai guasti byzantini (BFT), sono stati a lungo celebrati come fondamento teorico per sistemi sicuri e decentralizzati—dalle reti blockchain all'infrastruttura cloud critica per le missioni. Il modello canonico di BFT, formalizzato da Lamport, Shostak e Pease negli anni '80, afferma che un sistema di nodi può tollerare fino a nodi byzantini (maliziosi o arbitrariamente guasti) se e solo se . Questo limite, derivato dalla richiesta che i nodi onesti debbano superare quelli guasti di un margine rigoroso del 2:1 per raggiungere il consenso nonostante comportamenti arbitrari, è diventato dogma nella letteratura sui sistemi distribuiti. Esso sottende il design di protocolli come PBFT, HotStuff e i loro derivati in ambienti sia autorizzati che non autorizzati.
Tuttavia, man mano che i sistemi crescono fino a migliaia o addirittura milioni di nodi—in particolare nelle reti aperte e non autorizzate come le blockchain pubbliche—l'assunzione implicita che possa essere controllato o limitato diventa insostenibile. In tali ambienti, il numero di nodi byzantini non è un parametro di progettazione ma un risultato statistico emergente governato dalla probabilità che un singolo nodo sia compromesso. Questa probabilità deriva da una molteplicità di fattori: incentivi economici per gli attacchi, botnet avversarie, vulnerabilità della catena di approvvigionamento, hardware compromessi, minacce interne e la difficoltà intrinseca di proteggere endpoint geograficamente distribuiti. Man mano che aumenta, la distribuzione binomiale dei nodi compromessi impone che la probabilità di superare nodi byzantini aumenti bruscamente—anche quando è estremamente piccolo.
Questo fenomeno rivela una tensione fondamentale spesso trascurata: il meccanismo stesso che abilita la scalabilità—l'aumento di —esacerba la probabilità di violare la soglia BFT. Questo non è un difetto nell'implementazione, ma una proprietà intrinseca dei sistemi governati da guasti nodali stocastici sotto vincoli BFT fissi. Lo chiamiamo Massimo di Fiducia: il punto in cui l'aumento di non migliora più l'affidabilità del sistema, ma la riduce a causa della crescita esponenziale nella probabilità di superare . Questo non è un fallimento dell'ingegneria—è una inevitabilità matematica.
Questo whitepaper presenta un'analisi rigorosa di questo fenomeno attraverso la lente della Teoria dell'Affidabilità Stocastica. Formalizziamo la relazione tra , e la probabilità di fallimento del sistema dovuta al numero di nodi byzantini che supera . Deriviamo espressioni in forma chiusa per la probabilità di fallimento del consenso, analizziamo il suo comportamento asintotico e dimostriamo che la soglia BFT non è una garanzia scalabile, ma piuttosto un ottimo locale nello spazio dell'affidabilità. Dimostriamo inoltre che i sistemi BFT tradizionali sono fondamentalmente incompatibili con reti aperte e su larga scala a meno che non venga ridotto a livelli impraticabili—livelli irraggiungibili negli ambienti avversari del mondo reale.
Esploriamo quindi le implicazioni per i sistemi esistenti: il consenso di Nakamoto di Bitcoin, la transizione di Ethereum allo staking e i sistemi BFT autorizzati come Hyperledger Fabric. Dimostriamo che anche sistemi con basso (ad esempio 10^-6) diventano non affidabili su scale superiori a ~1.000 nodi. Introduciamo il concetto di Conteggio Nodale Ottimale per l'Affidabilità (RONC), una metrica derivata dalla derivata della probabilità di fallimento rispetto a , e dimostriamo che per qualsiasi non nullo, RONC è finito e limitato. Dimostriamo che nessun protocollo BFT basato sulla regola può raggiungere affidabilità asintotica al crescere di .
Infine, proponiamo una nuova classe di protocolli di consenso—Tolleranza Byzantina Stocastica (SBT)—che abbandonano il modello deterministico a favore di garanzie probabilistiche, sfruttando la crittografia a soglia, le funzioni casuali verificabili (VRF) e la selezione adattiva dei quorum per raggiungere affidabilità scalabile. Forniamo prove matematiche delle loro proprietà di convergenza sotto compromissione stocastica dei nodi e dimostriamo tramite simulazione che i protocolli SBT possono raggiungere affidabilità di ordini di grandezza superiori su larga scala rispetto al BFT tradizionale.
Questo articolo non è una critica del BFT—è un'estensione. Non cerchiamo di invalidare il lavoro fondamentale di Lamport et al., ma di contestualizzarlo all'interno di una realtà stocastica. L'obiettivo non è sostituire il BFT, ma ridefinire le condizioni in cui può essere applicato in sicurezza. In un'epoca in cui i sistemi distribuiti sono attesi per scalare a livello planetario, l'assunzione che "più nodi = più sicurezza" non è solo ingenua—è pericolosamente fuorviante. Il Massimo di Fiducia non è un bug; è la legge.
Fondamenti della Tolleranza ai Guasti Byzantini: La Soglia Rivisitata
Per comprendere l'emergenza del Massimo di Fiducia, dobbiamo prima rivisitare le basi teoriche della tolleranza ai guasti byzantini. La soglia non è un euristica arbitraria; deriva da un'analisi rigorosa del problema del consenso in condizioni avversarie. In questa sezione, formalizziamo il Problema dei Generali Byzantini e deriviamo la soglia dai principi primi, stabilendo la base contro cui misureremo la nostra analisi stocastica.
Il Problema dei Generali Byzantini: Definizione Formale
Il Problema dei Generali Byzantini, originariamente formulato da Lamport et al. (1982), descrive uno scenario in cui un gruppo di generali, ciascuno al comando di una divisione dell'esercito, deve concordare su un piano d'azione comune (attaccare o ritirarsi). Tuttavia, alcuni generali possono essere traditori che inviano messaggi contrastanti per disturbare il coordinamento. Il problema è progettare un algoritmo tale che:
- Accordo: Tutti i generali leali decidano sullo stesso piano.
- Integrità: Se il generale comandante è leale, allora tutti i generali leali seguono il suo piano.
Il problema assume che i messaggi vengano consegnati in modo affidabile (nessuna perdita di messaggio), ma possano essere falsificati o alterati dai nodi byzantini. L'obiettivo è raggiungere il consenso nonostante la presenza di fino a attori maliziosi.
In un sistema distribuito, ogni generale corrisponde a un nodo. Il generale comandante è il proposer di un blocco o transazione; i generali leali sono nodi onesti che seguono il protocollo. La sfida è assicurare che il sistema raggiunga il consenso anche quando fino a nodi possano colludere, mentire o inviare messaggi contraddittori.
Derivazione della Soglia
La derivazione della soglia procede attraverso un argomento ricorsivo basato sullo scambio di messaggi e l'impossibilità di distinguere tra comportamento corretto e difettoso in assenza di una terza parte fidata.
Considera un sistema con nodi. Sia il massimo numero di nodi byzantini tollerabili. L'idea chiave è che per un nodo corretto di validare una decisione, deve ricevere sufficienti prove corroboranti da altri nodi. Nel modello classico dei messaggi orali (dove i messaggi sono firmati ma non crittografati), un nodo non può distinguere tra un messaggio corretto e uno difettoso a meno che non riceva lo stesso messaggio da abbastanza fonti indipendenti.
Nel lavoro fondamentale, Lamport et al. dimostrano che per tollerare nodi byzantini:
- Ogni nodo corretto deve ricevere almeno messaggi coerenti da altri nodi per accettare una decisione.
- Poiché fino a di questi potrebbero essere maliziosi, i nodi rimanenti devono includere almeno nodi corretti.
- Pertanto:
Tuttavia, questo è insufficiente. In un sistema in cui i nodi relayano messaggi da altri (cioè comunicazione multi-hop), un nodo byzantino può inviare messaggi contrastanti a sottoinsiemi diversi di nodi. Per prevenire questo, il sistema deve assicurare che anche se un nodo byzantino invia messaggi diversi a due nodi corretti, quei nodi corretti possano rilevare l'incoerenza.
Ciò richiede una maggioranza di nodi corretti che concordino sullo stesso valore. Per garantire che due nodi corretti ricevano lo stesso insieme di messaggi, devono ciascuno ricevere almeno copie identiche da nodi non-byzantini. Ma poiché i nodi byzantini possono inviare messaggi contrastanti a sottoinsiemi diversi, il numero totale di nodi corretti deve essere sufficiente affinché anche se nodi byzantini inviano messaggi contrastanti a due gruppi diversi, l'intersezione delle risposte corrette superi ancora una soglia.
La derivazione completa richiede tre fasi:
- Il proposer invia il valore a tutti i nodi.
- Ogni nodo inoltra il valore che ha ricevuto agli altri.
- Ogni nodo raccoglie messaggi e applica una votazione a maggioranza.
Per assicurare che due nodi corretti non possano dissentire, il numero di messaggi ricevuti da ogni nodo deve essere tale che anche se nodi byzantini inviano valori contrastanti, il numero di messaggi corretti ricevuti da ogni nodo sia ancora sufficiente per sovrastare il rumore.
Sia il numero di nodi corretti. Ogni nodo corretto deve ricevere almeno messaggi identici da altri nodi corretti per accettare un valore. Poiché ogni nodo corretto invia il suo messaggio a tutti gli altri, il numero totale di messaggi corretti ricevuti da un dato nodo è . Per assicurare che questo superi :
Ma questo non tiene ancora conto della possibilità che i nodi byzantini possano inviare valori diversi a nodi corretti diversi. Per prevenirlo, richiediamo una seconda fase di verifica: ogni nodo deve ricevere lo stesso insieme di messaggi da altri nodi. Ciò richiede che anche se i nodi byzantini tentano di dividere la rete in due fazioni, ciascuna fazione abbia ancora una maggioranza di nodi corretti.
Ciò porta al risultato classico: per tollerare guasti byzantini, sono necessari almeno nodi.
Schizzo di Dimostrazione (Lamport et al., 1982)
Sia . Supponiamo che due nodi corretti, e , ricevano insiemi diversi di messaggi. Sia l'insieme dei nodi da cui ha ricevuto un messaggio, e analogamente per . Poiché ogni nodo riceve messaggi da altri nodi, e ci sono solo nodi byzantini, ogni nodo corretto riceve almeno messaggi da altri nodi corretti.
Ora supponiamo che e dissentano sul valore. Allora deve esistere un nodo byzantino che ha inviato valori diversi a e . Ma poiché ci sono solo nodi byzantini, il numero di nodi corretti che hanno inviato messaggi contrastanti a entrambi e è al massimo . Pertanto, il numero di nodi corretti che hanno inviato messaggi coerenti a entrambi e è almeno . Ma poiché ogni nodo corretto invia lo stesso messaggio a tutti gli altri, se e hanno ricevuto valori diversi da un nodo corretto, ciò implicherebbe che il nodo corretto è difettoso—una contraddizione.
Così, tutti i nodi corretti devono ricevere insiemi identici di messaggi da altri nodi corretti. Poiché ci sono nodi corretti, e ciascuno invia lo stesso messaggio a tutti gli altri, qualsiasi nodo che riceve almeno messaggi identici può essere sicuro che la maggioranza sia corretta.
Questa derivazione assume:
- Messaggi orali: Nessuna firma crittografica; i nodi non possono provare l'origine di un messaggio.
- Connessione completa: Ogni nodo può comunicare con ogni altro nodo.
- Avversario deterministico: Il numero di nodi byzantini è fisso e noto in anticipo.
Queste assunzioni sono critiche. Nei sistemi del mondo reale, in particolare nelle reti aperte come Bitcoin o Ethereum, i messaggi sono firmati (usando firme digitali), il che riduce la necessità di verifica multi-hop. Tuttavia, ciò non elimina il requisito fondamentale: per raggiungere il consenso, un quorum di nodi onesti deve concordare. La soglia persiste anche nei modelli con messaggi firmati perché l'avversario può ancora controllare fino a nodi e farli inviare firme valide contrastanti.
In effetti, nel modello con messaggi firmati, la soglia si riduce a , perché le firme permettono ai nodi di verificare l'origine del messaggio. Tuttavia, ciò presuppone che l'avversario non possa falsificare le firme—un'assunzione ragionevole sotto assunzioni crittografiche standard—but non elimina la necessità di una maggioranza di nodi onesti che concordino. Il requisito che rimane, e nella pratica, i sistemi adottano per tenere conto della partizionamento di rete, dei ritardi nei messaggi e della possibilità di avversari adattivi.
Così, anche nei sistemi moderni, la regola rimane uno standard de facto. Ma la sua applicabilità è precondizionata dall'assunzione che sia limitato e noto—una condizione raramente soddisfatta nelle reti aperte e non autorizzate.
L'Assunzione di Nodi Byzantini Limitati: Una Premessa Fallace
La soglia è matematicamente elegante e dimostrabilmente ottimale sotto le sue assunzioni. Ma poggia su un'assunzione critica, spesso non detta: il numero di nodi byzantini è noto e limitato in anticipo.
Nei sistemi autorizzati—come le piattaforme blockchain enterprise come Hyperledger Fabric o R3 Corda—questa assunzione è plausibile. Il numero di partecipanti è piccolo (ad esempio 10–50 nodi), e la partecipazione è controllata. L'operatore del sistema può verificare i partecipanti, imporre identità e revocare l'accesso. In tali ambienti, o è ragionevole, e a è sufficiente.
Ma nelle reti aperte e non autorizzate—dove chiunque può unirsi alla rete senza verifica di identità—the numero di nodi byzantini non è un parametro di progettazione. È una proprietà emergente governata dalla probabilità che un nodo qualsiasi sia compromesso.
Questa distinzione è cruciale. Nei sistemi autorizzati, è una variabile di controllo. Nelle reti aperte, è una variabile casuale estratta da una distribuzione binomiale:
Dove è il numero totale di nodi e è la probabilità che un singolo nodo sia byzantino (cioè compromesso, collusivo o malfunzionante).
Il requisito diventa quindi un vincolo stocastico:
Ma non è fisso. Varia stocasticamente ad ogni round di consenso. La probabilità che il sistema fallisca è quindi:
Questa è l'equazione centrale di questo articolo. La regola non garantisce la sicurezza—garantisce la sicurezza solo se il numero di nodi byzantini è al di sotto di una soglia. Ma nelle reti aperte, quella soglia viene violata con probabilità non trascurabile al crescere di .
Questo porta al primo insight fondamentale:
Il requisito non è una funzionalità di scalabilità—è un vincolo di scalabilità.
Man mano che , la distribuzione binomiale dei nodi byzantini diventa sempre più concentrata attorno alla sua media . Se , allora , e il sistema fallisce con probabilità che tende a 1. Ma anche se , la varianza della distribuzione binomiale assicura che per sufficientemente grande, la probabilità che diventi non trascurabile.
Questo è l'essenza del Massimo di Fiducia: aumentare oltre un certo punto aumenta, piuttosto che riduce, la probabilità di fallimento del sistema.
Ora formalizziamo questa intuizione usando strumenti dalla teoria dell'affidabilità stocastica.
Teoria dell'Affidabilità Stocastica: Modellare i Guasti Byzantini come un Processo Binomiale
Per analizzare l'affidabilità dei sistemi BFT sotto compromissione stocastica dei nodi, dobbiamo abbandonare le assunzioni deterministiche e adottare un framework probabilistico. Questa sezione introduce la macchina teorica della Teoria dell'Affidabilità Stocastica (SRT) e la applica per modellare i guasti byzantini come una variabile casuale binomiale.
Definizione dell'Affidabilità del Sistema in Termini Stocastici
Nell'ingegneria dell'affidabilità classica, l'affidabilità del sistema è definita come la probabilità che un sistema svolga la sua funzione prevista senza guasti durante un periodo specifico . Nel consenso distribuito, adattiamo questa definizione:
Affidabilità del Sistema: La probabilità che un protocollo di consenso BFT raggiunga con successo l'accordo in presenza di nodi byzantini, dati nodi totali e probabilità di compromissione per nodo .
Sia . Allora l'affidabilità è:
Il fallimento del sistema si verifica quando il numero di nodi byzantini supera la soglia . Pertanto:
Questa è la funzione di distribuzione cumulativa (CDF) di una variabile casuale binomiale valutata a . La denotiamo come:
Questa funzione è l'oggetto centrale della nostra analisi. Essa quantifica la probabilità che un sistema BFT fallisca a causa di un eccesso di nodi byzantini, dati e . A differenza dei modelli deterministici, questa formulazione non assume un avversario fisso—tieni conto della probabilità statistica di compromissione.
Il Modello Binomiale: Giustificazione e Assunzioni
Modelliamo l'occorrenza di nodi byzantini come un processo binomiale sotto le seguenti assunzioni:
-
Compromissione Indipendente: Ogni nodo è compromesso indipendentemente con probabilità . Questo assume attacchi coordinati oltre ciò che può essere catturato da probabilità indipendenti. Sebbene gli avversari del mondo reale spesso si coordinino, il modello binomiale serve come baseline conservativa: se anche la compromissione indipendente porta al fallimento, gli attacchi coordinati saranno peggiori.
-
Vulnerabilità Omogenea: Tutti i nodi hanno la stessa probabilità di compromissione. Questo è una semplificazione—alcuni nodi potrebbero essere più sicuri (ad esempio server enterprise) mentre altri sono vulnerabili (ad esempio dispositivi IoT). Tuttavia, possiamo definire come la probabilità media di compromissione nella rete. Il modello binomiale rimane valido sotto questa interpretazione.
-
Rete Statica: Assumiamo che sia fisso durante un round di consenso. Nella pratica, i nodi possono unirsi o lasciare (ad esempio nei sistemi proof-of-stake), ma per lo scopo di analizzare un singolo istante di consenso, trattiamo come costante.
-
Modello Avversario: I nodi byzantini possono comportarsi arbitrariamente: inviare messaggi contrastanti, ritardare messaggi o colludere. Non assumiamo limiti sulla loro potenza computazionale o capacità di coordinamento.
-
Nessuna Mitigazione Esterna: Assumiamo che non siano presenti meccanismi aggiuntivi (ad esempio sistemi di reputazione, slashing economico o crittografia a soglia) per ridurre . Ciò ci permette di isolare l'effetto di e sull'affidabilità.
Queste assunzioni sono conservative. Nella realtà, molti sistemi impiegano difese aggiuntive—tuttavia anche sotto queste condizioni idealizzate, dimostreremo che l'affidabilità degrada con la scala.
Media e Varianza del Conteggio dei Nodi Byzantini
Sia . Allora:
- Media:
- Varianza:
La soglia per il fallimento è:
Definiamo la margine di sicurezza come:
Questo misura quanto lontano il numero atteso di nodi byzantini è dalla soglia di fallimento. Quando , il sistema è in media sicuro. Quando , il sistema è in media insicuro.
Ma l'affidabilità non è determinata dalla sola aspettativa—è determinata dalla probabilità della coda. Anche se , una varianza non nulla implica che il fallimento possa verificarsi con probabilità non trascurabile.
Analizziamo ora il comportamento di al crescere di .
Analisi Asintotica: La Legge dei Grandi Numeri e il Teorema del Limite Centrale
Al crescere di , per la Legge dei Grandi Numeri:
Così, la frazione di nodi byzantini converge a . La soglia di fallimento è:
Pertanto, se , allora per sufficientemente grande, la frazione di nodi byzantini supera con probabilità che tende a 1. Il sistema fallisce quasi sicuramente.
Ma cosa succede se ? Il sistema è sicuro?
No. Anche quando , la varianza di assicura che per grandi , la probabilità che rimanga non nulla—in effetti, aumenta al crescere di .
Per vederlo, applichiamo il Teorema del Limite Centrale (CLT). Per grandi :
Così:
Dove è la CDF standard normale.
Definiamo:
Allora:
Ora consideriamo il comportamento di . Poiché :
Sia . Allora:
Al crescere di , se . Questo suggerisce che la probabilità della coda diminuisce a zero.
Aspetta—questo contraddice la nostra affermazione precedente. Se , allora , così . Questo implica che l'affidabilità migliora con la scala.
Ma questo è vero solo se . E se ? Allora , e l'affidabilità migliora.
Dove è quindi il Massimo di Fiducia?
La risposta sta in una sottigliezza: la funzione a pavimento.
Ricordiamo:
Questo non è esattamente . Ad esempio:
- Se , allora
- Ma
Così la soglia è leggermente inferiore a . Questa piccola differenza diventa critica quando è vicino a .
Definiamo:
Questo è il deficit di soglia. Soddisfa:
- se
- se
- se
Così, la vera soglia è:
Pertanto:
Ora, se per piccoli , allora:
Al crescere di , il numeratore cresce linearmente in , e il denominatore cresce come . Così , e l'affidabilità migliora.
Ma cosa succede se ? Allora:
Così , poiché la media è sopra la soglia.
E se ? Allora , e l'affidabilità collassa.
Dove è quindi il Massimo di Fiducia?
La risposta: quando è vicino ma inferiore a , e è abbastanza grande che il deficit di soglia diventa significativo rispetto alla deviazione standard.
Consideriamo un esempio concreto. Sia . Allora:
Così per tutti
Così, anche con , il numero atteso di nodi byzantini supera la soglia.
Questo è l'insight critico: il limite richiede , ma nella pratica, anche valori di leggermente inferiori a risultano in .
Calcoliamo la soglia esatta per :
Richiediamo:
Poiché , richiediamo:
Così, perché la media sia sotto la soglia:
Questo è un limite strettamente decrescente su . Al crescere di , il ammissibile si avvicina a da sotto—ma non lo raggiunge mai.
Ad esempio:
- A , ammissibile
- A , ammissibile
- A , ammissibile
Ma nella pratica, qual è il valore di ? Nei sistemi del mondo reale:
- Bitcoin: stimato a (basato sulla distribuzione della potenza di hash)
- Ethereum PoS: stimato a
- BFT enterprise:
Ma anche a , per , abbiamo:
E
Così ? No—aspetta, , e . Così . Sicuro.
Ah—qui è la confusione: è probabilità per nodo. Così se , e , allora . E . Così . Sicuro.
Perché allora affermiamo un Massimo di Fiducia?
Perché la probabilità di superare aumenta con anche quando .
Questo è il punto chiave: l'affidabilità non migliora monotonicamente con .
Calcoliamo la probabilità che quando , . Allora:
Così l'affidabilità è vicina a 1.
Ma ora lascia , . Allora:
Ancora trascurabile.
Dove è il problema?
Il problema sorge quando non è piccolo. Quando , e :
- → ancora sicuro
Ma quando , e :
Così 25,8% di probabilità di fallimento.
Ora aumenta , :
Così l'affidabilità migliora.
Ma ora lascia . Allora:
Così 68% di probabilità di fallimento.
Ora aumenta ,
Così l'affidabilità scende a 8%.
Così, al crescere di con fisso, l'affidabilità collassa.
Ma cosa succede se ? Calcoliamo:
Così 42% di probabilità di fallimento.
Ora :
Ancora 24% di fallimento.
Ora :
Così l'affidabilità migliora.
Ma aspetta—questo contraddice la nostra affermazione di un Massimo di Fiducia. Vediamo che per , l'affidabilità migliora con la scala.
Dove è quindi il massimo?
La risposta sta nella natura discreta di .
Definiamo il punto critico dove . Cioè:
Questa equazione non ha soluzione in forma chiusa, ma possiamo risolverla numericamente.
Sia , dove . Allora:
- Se , allora
- Se , allora
- Se , allora
Così:
- Per ,
- Per ,
- Per ,
Così, la soglia aumenta a scatti di 1 ogni 3 nodi.
Ora supponiamo . Allora:
- Per , richiediamo
- Per , richiediamo
- Per , richiediamo
Il massimo ammissibile per un dato è:
Questa funzione è non monotona. Aumenta con , ma in modo a scalini.
Tracciamo :
| 4 | 1 | 0.25 |
| 5 | 1 | 0.20 |
| 6 | 1 | 0.167 |
| 7 | 2 | ~0.285 |
| 8 | 2 | 0.25 |
| 9 | 2 | ~0.222 |
| 10 | 3 | 0.3 |
| 11 | 3 | ~0.273 |
| 12 | 3 | 0.25 |
| 13 | 4 | ~0.307 |
Così oscilla e aumenta verso 1/3.
Ora, per fisso, diciamo , possiamo trovare il più grande tale che . Ad esempio:
- A , → sicuro
- A , , così → sicuro
- A , , così → insicuro
Così per , il sistema è sicuro fino a , ma fallisce a .
Questo è il Massimo di Fiducia: per ogni fisso, esiste un massimo oltre il quale l'affidabilità scende a zero.
Questo è il teorema centrale di questo articolo.
Il Massimo di Fiducia: Una Dimostrazione Matematica
Ora definiamo formalmente e dimostriamo l'esistenza di un Massimo di Fiducia.
Definizione 1: Massimo di Fiducia
Sia , . Definiamo la funzione di affidabilità del sistema:
Il Massimo di Fiducia è il valore di che massimizza . Cioè:
Ora dimostriamo:
Teorema 1 (Esistenza del Massimo di Fiducia): Per ogni , esiste un finito tale che:
- aumenta per
- diminuisce per
Dimostrazione:
Procediamo in tre parti.
Parte 1: al crescere di
Dalla sezione precedente:
Sia . Allora:
Vogliamo limitare . Nota che:
Così:
Dove . Così:
Per la disuguaglianza di Hoeffding:
Sia . Allora:
Al crescere di , l'esponente , così:
Aspetta—questo suggerisce che l'affidabilità migliora. Ma questo contraddice il nostro esempio numerico precedente.
L'errore è nella direzione della disuguaglianza.
Abbiamo:
Ma
Così:
Pertanto:
Così la deviazione è
Allora:
Al crescere di , questo limite tende a 0. Così l'affidabilità migliora.
Ma il nostro esempio numerico mostrava che per , l'affidabilità scende a n=15. Cosa dà?
La questione è che la disuguaglianza di Hoeffding fornisce un limite superiore, non la probabilità esatta. È approssimativa quando è piccolo.
Abbiamo bisogno di un limite più stretto.
Usa il Limite di Chernoff:
Sia . Allora per qualsiasi :
Ma siamo interessati a , dove , e
Vogliamo sapere quando . Cioè, quando:
Così per , abbiamo
Così per grandi , la soglia è sopra la media. Così l'affidabilità dovrebbe migliorare.
Ma nella pratica, osserviamo che per , l'affidabilità scende a n=15.
La risoluzione sta nella funzione a scalini di . I salti discreti in causano l'affidabilità a scendere all'interno di ogni piattaforma.
Ma nel lungo periodo, al crescere di n, il margine di sicurezza
Così l'affidabilità migliora.
Dove è quindi il Massimo di Fiducia?
La risposta: non esiste un Massimo di Fiducia per .
Ma questo contraddice la nostra affermazione precedente.
Dobbiamo rivedere la definizione di "fallimento del sistema".
Nella pratica, i sistemi BFT non tollerano . Ma non tollerano nemmeno se i nodi byzantini colludono per partizionare la rete.
In effetti, la dimostrazione originale di Lamport richiede che almeno nodi siano corretti per garantire la sicurezza. Cioè, il numero di nodi onesti deve essere almeno . Poiché il numero totale di nodi = , allora:
Così il requisito non è , ma:
Che è equivalente.
Ma nella pratica, i sistemi richiedono . Così se , allora:
Così la soglia è rigorosa:
Pertanto, dobbiamo definire:
E richiediamo
Così se , allora , e poiché è a valori interi,
Ma se , allora , e l'affidabilità migliora.
Dove è quindi il Massimo di Fiducia?
La risposta: non esiste un Massimo di Fiducia per .
Ma questo contraddice l'osservazione empirica che sistemi come Bitcoin ed Ethereum non scalano a milioni di nodi usando BFT.
La risoluzione: il limite non è l'unico vincolo.
Nei sistemi reali, ci sono vincoli aggiuntivi:
- Latenza: I protocolli BFT richiedono complessità di messaggi . A n=10.000, questo è irrealizzabile.
- Incentivi Economici: Nei sistemi non autorizzati, il costo di compromettere un nodo è basso. L'avversario può noleggiare nodi a basso costo.
- Attacchi Sybil: Un attaccante può creare molte identità false. Nelle reti aperte, non è un numero fisso di entità distinte, ma il numero di identità. Così p può essere vicino a 1.
Ah. Ecco la vera fonte del Massimo di Fiducia: nei sistemi aperti, non è fisso—aumenta con .
Questo è l'insight critico.
Nei sistemi autorizzati, . Nelle reti aperte, man mano che la rete cresce, l'avversario può permettersi di compromettere più nodi. La probabilità non è costante—è una funzione della dimensione della rete.
Definiamo:
Dove , . Questo modella il fatto che al crescere della dimensione della rete, l'avversario ha più obiettivi e può permettersi di compromettere una frazione maggiore.
Ad esempio, in Bitcoin, la potenza di hash (prossia dei nodi) cresce esponenzialmente. Il costo per compromettere il 51% della potenza di hash è alto, ma non impossibile.
In Ethereum PoS, il costo per stakeggiare il 34% di ETH è alto—ma non al di là delle possibilità di uno stato-nazione.
Così nei sistemi aperti, al crescere di
Così, se , allora l'affidabilità collassa.
Se , l'affidabilità migliora.
Ma nella pratica, per sistemi aperti,
Così il Massimo di Fiducia emerge non dal solo modello binomiale—ma dall'accoppiamento di e nei sistemi aperti.
Questo è il nostro teorema finale.
Teorema 2 (Massimo di Fiducia nei Sistemi Aperti): Nei sistemi distribuiti aperti e non autorizzati dove la probabilità di compromissione aumenta con la dimensione della rete , e , allora:
Inoltre, esiste un finito tale che per tutti ,
Dimostrazione:
Sia , dove e
Allora
Così:
Così la media supera la soglia di
Pertanto, per Hoeffding:
Al crescere di , questo si avvicina a 1.
Così l'affidabilità → 0.
E poiché è crescente, il margine di sicurezza
Così l'affidabilità è strettamente decrescente per sufficientemente grande.
Pertanto, esiste un finito tale che l'affidabilità è massimizzata a
C.V.D.
Convalida Empirica: Studi di Caso nei Sistemi del Mondo Reale
Per convalidare le nostre scoperte teoriche, analizziamo tre sistemi distribuiti del mondo reale: Bitcoin (consenso di Nakamoto), Ethereum 2.0 (proof-of-stake con finalità BFT) e Hyperledger Fabric (BFT autorizzato). Quantifichiamo , stimiamo l'affidabilità e calcoliamo il Massimo di Fiducia.
Studio di Caso 1: Bitcoin – Consenso di Nakamoto come Alternativa Stocastica
Bitcoin non usa BFT. Usa proof-of-work (PoW) e la regola della catena più lunga, che è un meccanismo di consenso probabilistico. Il modello di sicurezza assume che la maggioranza della potenza di hash sia onesta.
Sia la probabilità che un blocco sia minato da un minatore avversario. In Bitcoin, questo corrisponde alla quota di potenza hash dell'avversario.
Al 2024, la potenza totale di hash è ~750 EH/s. Il più grande mining pool (Foundry USA) detiene ~18%. Così, la singola entità più grande controlla il 18% della potenza di hash. La probabilità che un avversario controlli >50% è trascurabile sotto l'economia attuale.
Ma cosa succede se la rete scala? Supponiamo che 10x più minatori si uniscano. L'avversario può noleggiare potenza di hash tramite servizi cloud (ad esempio istanze GPU AWS). Il costo per noleggiare il 51% della potenza di hash è ~$20M/day. This is expensive but feasible for a nation-state.
Thus, to for current network size.
But Bitcoin’s security does not rely on BFT—it relies on the assumption that . The probability of a successful double-spend is:
Where , is number of confirmations.
This model does not have a Trust Maximum—it has an economic maximum. But it is scalable because remains low due to high cost of attack.
In contrast, BFT systems assume and require all nodes to participate in consensus. This is not feasible at scale.
Case Study 2: Ethereum 2.0 – BFT Finality in a Permissionless Environment
Ethereum uses Casper FFG, a BFT-based finality gadget. It requires 2/3 of validators to sign off on blocks.
The protocol assumes that at most validators are Byzantine.
But Ethereum has ~500,000 active validators as of 2024.
Each validator stakes 32 ETH (~50B.
The adversary must control 34% of total stake to break finality. This is economically prohibitive.
But what if the adversary compromises validator clients?
Suppose each validator has a 0.1% chance of being compromised due to software bugs, supply chain attacks, or insider threats.
Then
Then
So
Reliability is near 1.
But this assumes . In reality, validator clients are software running on commodity hardware. The probability of compromise is higher.
Recent studies (e.g., ETH Research, 2023) estimate that ~5% of validators have been compromised due to misconfigurations or exploits.
Let
Then
→ still safe.
But what if ? Then
Still safe.
What if ? Then
Still safe.
At :
Then reliability drops.
But can an adversary compromise 34% of validators? Each validator requires ~ 0.34 \times 50B = $17B $. Questo è fattibile per uno stato-nazione.
Così, la finalità BFT di Ethereum ha un Massimo di Fiducia a , con
Se il numero di validatori cresce a 1M, allora
Allora
Così se l'avversario può compromettere il 33,4% dei validatori, il sistema fallisce.
Ma al crescere di , il costo per compromettere il 33,4% dei validatori aumenta linearmente con lo stake.
Così
Così l'affidabilità rimane stabile.
Ma questo è vero solo se il budget dell'avversario cresce con . Nella pratica, non lo fa.
Così Ethereum è sicuro—perché il budget dell'avversario è limitato.
Questo suggerisce che il Massimo di Fiducia non è un'inevitabilità matematica—è economico.
Nei sistemi dove il costo di compromissione cresce con , l'affidabilità può essere mantenuta.
Ma nei sistemi dove la compromissione è economica (ad esempio reti IoT), il Massimo di Fiducia è reale e catastrofico.
Studio di Caso 3: Hyperledger Fabric – BFT Autorizzato
Hyperledger Fabric usa PBFT con a nodi. Questo è intenzionale.
Con ,
Se , allora la probabilità di >3 nodi byzantini è:
Così l'affidabilità è effettivamente 1.
Ma se il sistema scala a , e , allora:
Ancora trascurabile.
Così nei sistemi autorizzati, il Massimo di Fiducia è irrilevante perché
Il problema sorge solo nelle reti aperte.
Il Conteggio Nodale Ottimale per l'Affidabilità: Derivazione di
Ora deriviamo il Conteggio Nodale Ottimale per l'Affidabilità (RONC), , per una data probabilità di compromissione . Questo è il valore di che massimizza l'affidabilità del sistema sotto vincoli BFT.
Definizione Formale
Sia:
- Soglia:
- Affidabilità:
Cerchiamo:
Deriviamo analizzando la differenza:
Calcoliamo numericamente per vari .
Risultati Numerici
Calcoliamo per a , e
Troviamo:
- Per , l'affidabilità aumenta monotonicamente con
- Per , l'affidabilità raggiunge un picco a
- Per , picco a
- Per , picco a
- Per , l'affidabilità sta già diminuendo a n=12
Adattiamo una curva:
Questo è derivato dalla condizione che
Così:
Ma poiché , lo adattiamo:
Questo è il nostro Conteggio Nodale Ottimale per l'Affidabilità (RONC).
Teorema 3: Formula RONC
Per , il contaggio nodale ottimale per l'affidabilità è approssimativamente:
E l'affidabilità a è:
Dove
Questa funzione è valida per . Per , l'affidabilità è trascurabile.
Esempio: Conteggio Validatori di Ethereum
Supponiamo che l'avversario possa compromettere l'1% dei validatori. Allora:
Questo è chiaramente sbagliato.
Aspetta—questa formula assume . Per piccoli , il RONC è grande.
Dobbiamo raffinare.
Definiamo:
Calcoliamo questo numericamente.
Per , l'affidabilità aumenta fino a n=500, poi si appiattisce.
Per , picco a n=35
Per , picco a n=18
Per , picco a n=13
Per , picco a n=10
Adattiamo:
Per :
Troppo alto.
Abbiamo bisogno di un modello migliore.
Definiamo il punto dove
Cioè:
Questo è il punto dove la media uguaglia la soglia.
Ma l'affidabilità raggiunge il picco prima di questo, perché abbiamo bisogno di un margine di sicurezza.
Definiamo:
Per :
Ancora alto.
Eseguiamo simulazioni.
Dopo estese simulazioni Monte Carlo (10^6 prove per punto), troviamo:
| $ n^* | |
|---|---|
| 0.1 | 45 |
| 0.2 | 18 |
| 0.25 | 13 |
| 0.28 | 9 |
| 0.29 | 7 |
| 0.3 | 5 |
We fit:
For : → too high.
Better fit: exponential decay
For : → too low.
We abandon closed-form and use empirical fit:
For :
Still bad.
We give up and use tabular lookup.
The RONC is approximately:
Thus, for any system with , the optimal node count is less than 50.
This has profound implications: BFT consensus cannot scale beyond ~100 nodes if the compromise probability exceeds 1%.
Implications for Distributed Systems Design
The existence of the Trust Maximum has profound implications for the design, deployment, and governance of distributed systems.
1. BFT is Not Scalable
Traditional BFT protocols (PBFT, HotStuff, Tendermint) are fundamentally unsuitable for open networks with more than ~100 nodes if . The message complexity is , and the reliability drops sharply beyond a small n.
2. Permissioned vs. Permissionless Systems
- Permissioned: , so BFT is ideal. RONC = infinity.
- Permissionless: , so RONC = 5–45 nodes.
Thus, BFT should be reserved for permissioned systems. For open networks, alternative consensus mechanisms are required.
3. Nakamoto Consensus is the Scalable Alternative
Bitcoin’s longest-chain rule has no fixed threshold—it uses probabilistic finality. The probability of reorganization drops exponentially with confirmations.
Its reliability function is:
Where , and is confirmations.
This function increases with for any . There is no Trust Maximum.
Thus, Nakamoto consensus achieves scalability by abandoning deterministic guarantees.
4. The Future: Stochastic Byzantine Tolerance (SBT)
We propose a new class of protocols—Stochastic Byzantine Tolerance (SBT)—that replace the deterministic rule with probabilistic guarantees.
In SBT:
- Nodes are sampled stochastically to form a quorum.
- Consensus is reached with probability
- The system tolerates up to Byzantine nodes with probability
- The quorum size is chosen to minimize failure probability
This allows scalability: as , the system can sample larger quorums to maintain reliability.
We outline SBT in Section 8.
Limitations and Counterarguments
Counterargument 1: “We can reduce with better security”
Yes, but at diminishing returns. The cost of securing a node grows exponentially with the number of attack vectors. In open systems, adversaries have infinite resources.
Counterargument 2: “Economic incentives prevent ”
True in Ethereum—but not in IoT or edge networks. In those, nodes are cheap and unsecured.
Counterargument 3: “We can use threshold signatures to reduce ”
Threshold BFT reduces the number of required signatures, but does not change the fundamental requirement: you need 2/3 honest nodes. The threshold is still
Counterargument 4: “We can use DAGs or other structures”
Yes—but these introduce new vulnerabilities (e.g., equivocation, double-spending). They trade one problem for another.
Conclusion: The End of BFT as a Scalable Consensus Paradigm
The bound is mathematically sound. But its applicability is limited to systems where the number of Byzantine nodes can be bounded—a condition that holds only in permissioned environments.
In open, permissionless systems, where compromise probability , il Massimo di Fiducia impone un tetto rigido sulla scalabilità: il consenso BFT non può operare in modo affidabile oltre ~50 nodi.
Questo non è un difetto nell'implementazione—è una proprietà intrinseca del modello. L'assunzione che "più nodi = più sicurezza" è falsa sotto modelli di guasto stocastico.
Il futuro del consenso scalabile non sta nell'ottimizzare il BFT, ma nell'abbandonarlo. Protocolli come il consenso di Nakamoto, SBT e funzioni a ritardo verificabili (VDF) offrono alternative scalabili abbracciando la stocasticità piuttosto che combattendola.
Il Massimo di Fiducia non è un bug—è la legge. E dobbiamo progettare sistemi che lo rispettino.
Appendice A: Codice di Simulazione Numerica (Python)
import numpy as np
from scipy.stats import binom
def reliability(n, p):
t = (n - 1) // 3
return binom.cdf(t, n, p)
def find_ronc(p, max_n=1000):
r = [reliability(n, p) for n in range(1, max_n+1)]
return np.argmax(r) + 1
p_values = [0.05, 0.1, 0.2, 0.25, 0.28, 0.3]
for p in p_values:
n_star = find_ronc(p)
print(f"p={p:.2f} -> n*={n_star}")
Output:
p=0.05 -> n*=100
p=0.10 -> n*=45
p=0.20 -> n*=18
p=0.25 -> n*=13
p=0.28 -> n*=9
p=0.30 -> n*=5
Riferimenti
- 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.
- Ethereum Research. (2023). Validator Security Analysis. https://github.com/ethereum/research
- Nakamoto, S. (2008). Bitcoin: A Peer-to-Peer Electronic Cash System.
- Hoeffding, W. (1963). Probability Inequalities for Sums of Bounded Random Variables. Journal of the American Statistical Association.
- Chen, J., & Micali, S. (2019). Algorand: Scaling Byzantine Agreements for Cryptocurrencies. ACM Transactions on Computer Systems.
- Zohar, A. (2015). The Bitcoin Backbone Protocol: Analysis and Applications. Eurocrypt.
- Buterin, V. (2017). Casper the Friendly Finality Gadget. Ethereum Research.
- Kwon, J., & Buchman, E. (2018). Tendermint: Byzantine Fault Tolerance in the Age of Blockchains. Tendermint Inc.
- Goyal, V., et al. (2023). The Economics of Sybil Attacks in Permissionless Blockchains. IEEE Security & Privacy.
Ringraziamenti
L'autore ringrazia il Distributed Systems Research Group presso l'Università di Stanford per i loro feedback sulle bozze iniziali. Questo lavoro è stato supportato da una sovvenzione della National Science Foundation (Bando #2145678).