Block withholding: angrepet ingen enkelt share avslører
En miner sender ekte shares og skjuler den som ville blitt en blokk. Se hva det koster, hvem som betaler, hvorfor noen gjør det og hvordan det avsløres.
Hva er et block withholding-angrep?
Det er en miner som sender alle vanlige shares, men skjuler den ene som ville blitt en blokk. Poolen betaler for sharene. Blokken kommer aldri.
Hver share du sender en pool, er en ekte løsning som bommet på blokkmålet. Blokkmålet er den høyere listen en hash må over for å bli en blokk. En sjelden gang klarer en løsning også den, og da er den sharen en hel blokk.
En slik share ser ut som alle andre shares til poolen sjekker den.
En angriper gjør arbeidet ærlig og sender alle vanlige shares. Den kaster i stillhet den ene som ville blitt en blokk. Poolen teller sharene og betaler for dem. Blokken den skulle fått, kommer aldri.
Hvorfor kan ikke én share avsløre det?
Ingenting ved angriperen ser galt ut på noen enkelt share. Maskinvaren er ekte, og det er hashraten også. Sharene er gyldige og kommer i riktig tempo. Poolen kan undersøke én share og ikke se noe som helst.
Det som mangler, er et fravær, og et fravær viser seg bare over tid. En miner med en viss andel av poolens hashrate bør finne omtrent den andelen av blokkene.
Over en time sier det ingenting. Å finne blokker er tilfeldig, og stille perioder er helt vanlige. Over et langt nok vindu sier det mye.
Hva koster det, og hvem betaler?
Poolen mister blokkbelønningen den skulle hatt. Men tapet havner egentlig ikke på poolen. Det er denne delen som er verdt å forstå, uansett pool.
- Med en proporsjonal ordning fortsetter runden til noen andre finner en blokk. Alle i runden jobbet på en runde som varte lenger enn den skulle. Da tjener alle litt mindre per enhet arbeid. Kostnaden spres på de ærlige minerne.
- Med en pay per share-ordning er det verre for operatøren. Poolen har allerede betalt for hver share av egen lomme, og regner med at blokkene kommer. Et vedvarende angrep tapper operatøren direkte. Historisk er dette tilfellet folk har vært mest bekymret for.
Hvorfor skulle noen gjøre dette?
Angriperen kaster også bort blokkbelønningen. Ved første øyekast er det ren selvskading. Det gir bare mening hvis angriperen vinner noe et sted poolen ikke ser.
Det vanlige motivet er konkurranse. Noen som driver sin egen pool, kan leie eller rette hashrate mot en rival og trykke ned resultatene dens. Da ser deres egen pool heldigere ut i sammenligning. Sharene angriperen fortsatt får betalt for, finansierer sabotasjen.
I en mer subtil variant holder angriperen tilbake blokken i stedet for å kaste den. Den fortsetter å mine oppå den i det skjulte og sender den inn senere, når det passer. Dette er vanskeligere å få til. Det krever en stor andel av hashraten for å være verdt forsøket.
Hvordan oppdages det?
Oppdagelsen er statistisk, fordi det ikke finnes noe annet signal. Sammenlign blokkene en bidragsyter har funnet, med blokkene antallet shares sier den burde ha funnet. Gjør det over et vindu som er langt nok til at flaksen jevner seg ut.
Vinduet er den vanskelige delen.
- Gjør du det kort, ser vanlig uflaks ut som et angrep. Ærlige minere ville blitt anklaget hele tiden.
- Gjør du det langt, får en ekte angriper holde på en stund før tallene sier fra.
Det finnes ingen smart vei rundt denne avveiningen. Den kommer av tilfeldigheten, ikke av programvaren.
Derfor sender en seriøs detektor spørsmålet til et menneske i stedet for å handle alene. En automatisk utestengelse styrt av en statistikk vil en dag utestenge noen som bare hadde uflaks. Å ta en legitim miner offline er verre enn selve angrepet.
Hva betyr det for en ærlig miner?
Nesten ingenting, og det er verdt å si rett ut.
Sharene dine telles og betales likt uansett. Å ha uflaks er ingen forseelse og kan ikke være det. Over et kort vindu har de fleste minere uflaks.
En serie runder der du bidro mye og poolen ikke fant noe, er normal variasjon. Flakstallet i poolstatistikken viser deg hvor normalt det er.
Dette angrepet er én grunn til at pooler bryr seg om hvem som retter hashrate mot dem. Det er også grunnen til at en pool som ærlig publiserer blokkene og flaksen sin, er lettere å stole på. Alt du trenger for å sjekke poolen, står på blokksiden.