ZOOBC / SICUREZZA DELLA CATENA
Sicurezza della chain
Quanto costerebbe davvero prendere il controllo di questa catena. L'estrazione è uniforme, l'influenza è lineare e l'unica cosa che valga la pena attaccare è il registro, quindi la coda per entrarvi è la difesa.
A ogni blocco viene estratto un nodo che lo costruisce. L'estrazione è una scelta casuale uniforme dall'intero registro, derivata dal seed del blocco precedente. Non il nodo più ricco. Non il nodo che si comporta meglio. Ogni nodo registrato, alla pari, ogni volta.
Quindi l'influenza sulla catena è semplicemente la tua quota del registro, ed è lineare. Non esiste un 51% oltre il quale qualcosa si rompe. Se detieni un decimo del registro costruisci un decimo dei blocchi; è tutto ciò che ottieni.
Il che rende il registro l'unica cosa che valga la pena attaccare, e la coda per entrarvi la difesa. Non puoi comprare un posto. Entri un nodo alla volta, dietro a tutti gli altri che vogliono entrare, e i numeri qui sotto mostrano quanto costa.
01 / L'ESTRAZIONE
Come viene scelto il costruttore del blocco
A partire dal seed del blocco precedente, ogni nodo calcola la stessa sequenza infinita di estrazioni. Il round 1 designa un nodo; se questo non pubblica entro la sua finestra di 15 secondi, il round 2 ne designa un altro, e così via. Il primo che pubblica costruisce il blocco.
Il seed stesso è sign(node_key, hash(previous seed)), controllato da ogni validatore. Le firme Ed25519 sono deterministiche, quindi per un dato costruttore esiste esattamente un solo seed valido: un costruttore non può provare seed finché non ne trova uno a lui favorevole. L'unica libertà di un attaccante è pubblicare o restare in silenzio: un bit, una volta, per ogni blocco per cui viene estratto.
Il punteggio di partecipazione non influisce sulla selezione. Spesso si presume il contrario, ma non è così. Il punteggio decide una sola cosa: se resti o meno nel registro. Scende quando salti dei turni, e a zero vieni espulso e il tuo stake ti viene restituito. Un punteggio perfetto non ti dà alcuna probabilità in più per il prossimo blocco rispetto a un nodo entrato ieri. Nemmeno lo stake influisce sulla selezione; compra solo il tuo posto nella coda per entrare.
03 / DENIAL OF SERVICE
L'unico vero attacco: zittire l'estrazione
Un nodo può includere transazioni solo se viene estratto entro i primi 10 round (max_priority_blocksmiths). Se viene estratto più tardi può comunque costruire, ma il suo blocco deve essere vuoto. È questa regola a far avanzare la catena quando ci sono nodi offline: perché un blocco perda il suo contenuto devono mancare tutti i nodi di quelle prime estrazioni.
È anche il punto più delicato del progetto. Quei nodi sono designati con 15 secondi di anticipo, nel momento in cui arriva il blocco precedente. Un attaccante in grado di mandarli tutti offline entro quella finestra forza un blocco vuoto, censurando tutti invece di limitarsi a competere. È un problema di denial of service, non di consenso, ed è il motivo per cui il numero è fissato a 10 anziché a una cifra più piccola e ordinata.
Nodi da zittire
10
designati, per blocco
Preavviso
15 s
prima che si apra il turno
Blocco vuoto per caso
con il 20% dei nodi offline
Aumentare il numero costa quasi nulla: richiede solo che qualche nodo in più costruisca blocchi candidati contemporaneamente, e ogni nodo aggiunto è un'altra macchina che un attaccante deve trovare e abbattere negli stessi 15 secondi.
04 / IL PREZZO IN ANNI
Il costo per acquistare una quota
- Formula
- ritardo = clamp(base ÷ dimensione del registro, min, max)
- Ammissioni
- una alla volta, in ordine di stake
La quota di slot è un rapporto di stake. La coda è ordinata per saldo bloccato, quindi «vince il 100% degli slot» non è fortuna: è l'ipotesi che nessuno offra più di lui. Ogni cifra qui rappresenta lo scenario migliore per l'attaccante.
Nel momento in cui un operatore onesto mette in stake di più per nodo, passa davanti. Se vinci solo metà delle ammissioni, la tua quota del registro tende alla metà e lì si ferma: i nodi onesti che prendono l'altra metà fanno crescere il registro alla stessa velocità con cui cresce la tua parte. Un obiettivo superiore alla tua quota di slot non è lento, è irraggiungibile, e la tabella qui sotto lo indica come mai.
Attesa attuale
per nodo ammesso
Nodi per ⅓
per costruire un terzo dei blocchi
Tempo per ⅓
di coda continua
Nodi per ½
per costruire metà dei blocchi
Tempo per ½
di coda continua
ZBC bloccati
minimo, a 100 ZBC/nodo
05 / CRESCITA
Come cambia l'attesa con la crescita della catena
Con diverse dimensioni della catena
| Registro | Attesa per nodo | Nodi per ⅓ | Ora | Nodi per ½ | Ora |
|---|
06 / L'UNICO COMPROMESSO
Perché il registro alla Genesis è il numero che conta
Le ammissioni sono seriali, quindi il tempo per raddoppiare un registro è semplicemente registry size × wait per node. È un'identità, non un'impostazione: significa che un registro piccolo non può avere sia un'attesa breve sia una conquista lenta. È l'unico compromesso dell'intero progetto che nessuna formula può eliminare.
| Registro al lancio | Attesa 1 settimana | Attesa 2 settimane | Per raddoppiare in 2 anni, l'attesa deve essere |
|---|
Quindi la leva è il lancio, non la curva. Parti con una dozzina di nodi e ogni operatore onesto aspetta mesi, perché è quanto serve per rendere difficile raddoppiare dodici nodi. Parti con cento e un'attesa di due settimane garantisce già quasi quattro anni, senza tenere fuori nessuno. Un registro Genesis più grande vale più di qualsiasi regolazione del ritardo.
07 / QUATTRO PROPRIETÀ
Perché regge
Le ammissioni sono seriali. Il registro ammette un nodo alla volta, su tutta la rete. Volere cento nodi non significa aspettare una volta, significa aspettare cento volte, in sequenza. Questo solo fatto trasforma un attacco finanziato in un progetto pluriennale.
La quota necessaria cresce con la catena. Un nodo su dieci è un decimo dell'influenza. Uno su mille è niente. L'attesa per nodo diminuisce man mano che il registro cresce, ma mai sotto il minimo, quindi il tempo totale sale comunque.
La coda ha un prezzo. La posizione è ordinata per saldo bloccato, quindi un attaccante non si limita ad aspettare: deve superare l'offerta di ogni operatore onesto che vuole entrare, ogni singola volta. Ogni slot che perde gli costa l'attesa e regala un nodo a un operatore onesto.
Finanziano la catena mentre ci provano. Ogni nodo blocca ZBC. Un attacco lungo un decennio significa una posizione ampia, illiquida e completamente pubblica nell'asset che si sta cercando di distruggere. Non c'è alcuno slashing: se te ne vai, o vieni espulso perché sparisci, lo stake ti viene restituito per intero. La cauzione compra un posto nella coda, non un ostaggio.
E niente si accumula. Ogni blocco è un'estrazione indipendente. Un nodo che è stato perfetto per un anno non ha più diritto al prossimo blocco di uno ammesso stamattina, e un attaccante che ha tenuto gli ultimi dieci turni non ha più probabilità di tenere l'undicesimo. Non c'è nessuna posizione da costruire, ed è per questo che l'unico modo duraturo per guadagnare influenza qui è essere una parte onesta più grande della rete.