Retenció de blocs: l'atac que un pool no pot veure en una sola share
Un miner envia shares reals i amaga la que hauria estat un bloc. Què costa, qui ho paga i com es detecta.
En què consisteix l'atac
Cada share que envieu a un pool és una solució real que no ha arribat a l'objectiu del bloc. De tant en tant una solució també queda per sota de l'objectiu del bloc, i aquella share és un bloc sencer. Sembla igual que qualsevol altra share fins que el pool la comprova.
Un atac de retenció de blocs és un miner que fa la feina honestament, envia totes les shares ordinàries i llença discretament l'única que hauria estat un bloc. El pool compta les shares i les paga. El bloc que hauria d'haver rebut no arriba mai.
Per què una sola share no el delata mai
Això és el que fa que l'atac sigui interessant i no només groller. Res de l'atacant no sembla incorrecte en cap share individual. El maquinari és real, el hashrate és real, les shares són vàlides i arriben al ritme correcte. El pool no pot examinar una share i veure-hi res.
El que falta és una absència, i una absència només es fa visible amb el temps. Un miner amb una part determinada del hashrate del pool hauria de trobar aproximadament la mateixa part dels seus blocs. En una hora això no diu res, perquè trobar blocs és un procés aleatori i les temporades sense blocs són normals. En una finestra prou llarga, diu moltíssim.
Què costa, i qui ho paga realment
El pool perd la recompensa del bloc que hauria d'haver tingut. Però el pool no és realment on cau la pèrdua, i aquesta és la part que val la pena entendre si mineu en qualsevol pool.
Amb un esquema proporcional, la ronda simplement continua fins que algú altre troba un bloc. Tothom a la ronda ha aportat treball a una ronda que ha durat més del que calia, de manera que tothom guanya una mica menys per unitat de treball. El cost es reparteix entre els miners honestos.
Amb un esquema de pagament per share és pitjor per a l'operador, perquè el pool ja ha pagat cada share de la seva butxaca i compta que arribin els blocs. Un atac sostingut contra un pool de pagament per share és una sagnia directa per a l'operador, i històricament és el cas que més preocupava.
Per què algú faria això
L'atacant també llença la recompensa del bloc, així que a primera vista és pur autoperjudici. Només té sentit si l'atacant hi guanya en algun lloc que el pool no pot veure.
El motiu habitual és la competència. Un operador que gestiona el seu propi pool pot llogar hashrate o dirigir-lo contra un rival, suprimir-ne els resultats i fer que el seu pool sembli tenir més sort en comparació. L'atacant paga el sabotatge amb les shares que continua cobrant.
Hi ha una variant més subtil en què l'atacant reté el bloc en lloc de descartar-lo, continua minant a sobre en privat i l'envia més tard en un moment que li convé. És més difícil de fer i necessita una part gran del hashrate perquè valgui la pena provar-ho.
Com es detecta realment
La detecció és estadística, i ho ha de ser, perquè no hi ha cap altre senyal disponible. La mesura és simple d'enunciar: comparar els blocs que ha trobat un participant amb els blocs que segons el seu nombre de shares hauria d'haver trobat, en una finestra prou llarga perquè la sort es compensi.
La finestra és la part difícil. Si és curta, la mala sort normal sembla un atac, cosa que voldria dir acusar constantment miners honestos. Si és llarga, un atacant real actua durant un temps abans que els números parlin. No hi ha cap manera enginyosa d'evitar aquest compromís; és una propietat de l'atzar, no del programari.
Per això un detector seriós planteja la qüestió a una persona en lloc d'actuar pel seu compte. Una expulsió automàtica basada en una estadística acabarà expulsant algú que simplement ha tingut mala sort, i desconnectar un miner legítim és un resultat pitjor que l'atac mateix.
Què vol dir si sou un miner honest
Gairebé res, i és precisament per això que cal dir-ho clarament.
Les vostres shares es compten i es paguen igual en tots dos casos. Tenir mala sort no és cap falta i no ho pot ser, perquè en qualsevol finestra curta la majoria de miners tenen mala sort. Una sèrie de rondes en què heu aportat molt i el pool no ha trobat res és una variància normal, i la xifra de sort de la pàgina Estadístiques del pool existeix precisament perquè pugueu veure com de normal és.
L'única cosa que val la pena saber és que aquest és un motiu pel qual als pools els importa qui hi dirigeix hashrate, i un motiu pel qual un pool que publica els seus blocs i la seva sort amb honestedat és més fiable que un que no ho fa. Tot el que cal per comprovar el pool és a la pàgina Blocs.