Block withholding: l'attacco che una pool non vede in una singola share
Un miner invia share reali e nasconde quella che sarebbe stata un blocco. Ecco quanto costa, chi paga e come viene scoperto.
In cosa consiste l'attacco
Ogni share che invia a una pool è una soluzione reale che non ha raggiunto il target del blocco. Ogni tanto una soluzione arriva anche sotto il target del blocco, e quella share è un blocco intero. Sembra uguale a ogni altra share fino al momento in cui la pool la controlla.
Un attacco di block withholding è un miner che fa il lavoro onestamente, invia ogni share ordinaria e scarta in silenzio quella che sarebbe stata un blocco. La pool conta le share e le paga. Il blocco che avrebbe dovuto ricevere non arriva mai.
Perché una singola share non lo tradisce mai
È questo che rende l'attacco interessante e non semplicemente scorretto. Nessuna singola share dell'attaccante ha qualcosa di strano. L'hardware è reale, l'hashrate è reale, le share sono valide e arrivano al ritmo giusto. La pool non può esaminare una share e vedere alcunché.
Ciò che manca è un'assenza, e un'assenza diventa visibile solo nel tempo. Un miner con una certa quota dell'hashrate della pool dovrebbe trovare all'incirca quella stessa quota dei blocchi della pool. In un'ora questo non dice nulla, perché trovare blocchi è un processo casuale e i periodi di silenzio sono normali. Su una finestra abbastanza lunga dice molto.
Quanto costa, e chi paga davvero
La pool perde la ricompensa del blocco che avrebbe dovuto avere. Ma non è davvero sulla pool che ricade la perdita, ed è questa la parte da capire se mina in una pool qualsiasi.
Con uno schema proporzionale, il round continua semplicemente finché qualcun altro non trova un blocco. Tutti nel round hanno contribuito con lavoro a un round durato più del dovuto, quindi tutti guadagnano un po' meno per unità di lavoro. Il costo si distribuisce tra i miner onesti.
Con uno schema a pagamento per share è peggio per il gestore, perché la pool ha già pagato di tasca propria ogni share e conta sull'arrivo dei blocchi. Un attacco prolungato contro una pool a pagamento per share è un salasso diretto per il gestore, e storicamente è il caso che ha preoccupato di più.
Perché qualcuno dovrebbe farlo
Anche l'attaccante butta via la ricompensa del blocco, quindi a prima vista è puro autolesionismo. Ha senso solo se l'attaccante guadagna da qualche parte che la pool non può vedere.
Il movente abituale è la concorrenza. Chi gestisce una propria pool può noleggiare o puntare hashrate su una rivale, sopprimerne i risultati e far sembrare la propria pool più fortunata per confronto. L'attaccante paga il sabotaggio con le share che continua a incassare.
Esiste una variante più sottile in cui l'attaccante trattiene il blocco invece di scartarlo, continua a minare sopra di esso in privato e lo invia più tardi, nel momento che gli conviene. È più difficile da realizzare e richiede una grossa quota dell'hashrate perché valga la pena tentare.
Come viene rilevato davvero
Il rilevamento è statistico, e deve esserlo, perché non c'è nessun altro segnale disponibile. La misura è semplice da enunciare: confrontare i blocchi che un certo partecipante ha trovato con quelli che il suo numero di share indica che avrebbe dovuto trovare, su una finestra abbastanza lunga perché la fortuna si compensi.
La finestra è la parte difficile. Se è corta, la normale sfortuna sembra un attacco, il che vorrebbe dire accusare continuamente miner onesti. Se è lunga, un vero attaccante opera per un po' prima che i numeri parlino. Non c'è un modo furbo di aggirare questo compromesso; è una proprietà della casualità, non del software.
Per questo un rilevatore serio sottopone la questione a una persona invece di agire da solo. Un ban automatico guidato da una statistica finirà prima o poi per bannare qualcuno che era solo sfortunato, e mettere offline un miner legittimo è un esito peggiore dell'attacco stesso.
Cosa significa se Lei è un miner onesto
Quasi nulla, ed è proprio per questo che conviene dirlo chiaramente.
Le Sue share vengono contate e pagate allo stesso modo in ogni caso. Essere sfortunati non è una colpa e non può esserlo, perché su qualsiasi finestra breve la maggior parte dei miner è sfortunata. Una serie di round in cui ha contribuito molto e la pool non ha trovato nulla è varianza normale, e la cifra della fortuna nelle statistiche della pool esiste proprio perché possa vedere quanto sia normale.
L'unica cosa da sapere è che questo è un motivo per cui alle pool importa chi punta hashrate su di loro, e un motivo per cui una pool che pubblica onestamente i propri blocchi e la propria fortuna è più facile da considerare affidabile di una che non lo fa. Tutto ciò che serve per verificare la pool è nella pagina «Blocchi».