Block withholding: attacken ingen enskild share avslöjar
En gruvarbetare skickar riktiga shares men gömmer sharen som är ett block. Se vad det kostar, vem som betalar, varför någon gör det och hur det upptäcks.
Vad är en block withholding-attack?
Det är en gruvarbetare som skickar varje vanlig share men gömmer den som skulle ha blivit ett block. Poolen betalar för sharesen. Blocket kommer aldrig fram.
Varje share du skickar till en pool är en verklig lösning som missade blockmålet. Blockmålet är den högre ribban som en hash måste klara för att bli ett block. Då och då klarar en lösning även den, och den sharen är ett helt block.
En sådan share ser ut som alla andra shares tills poolen kontrollerar den.
En angripare gör arbetet ärligt och skickar varje vanlig share. Den kastar i tysthet bort den som skulle ha blivit ett block. Poolen räknar sharesen och betalar för dem. Blocket som den borde ha fått kommer aldrig fram.
Varför kan en enda share inte avslöja det?
Ingenting hos angriparen ser fel ut i någon enskild share. Hårdvaran är verklig och det är hashraten också. Sharesen är giltiga och kommer i rätt takt. Poolen kan granska en share och inte se någonting alls.
Det som saknas är en frånvaro, och en frånvaro syns bara över tid. En gruvarbetare med en viss andel av poolens hashrate borde hitta ungefär samma andel av dess block.
Över en timme säger det ingenting. Att hitta block är slumpmässigt, och tysta perioder är vanliga. Över ett tillräckligt långt fönster säger det mycket.
Vad kostar det, och vem betalar?
Poolen förlorar den blockbelöning den borde ha fått. Men förlusten hamnar egentligen inte hos poolen. Det är den här delen som är värd att förstå, oavsett pool.
- Med ett proportionellt system fortsätter rundan tills någon annan hittar ett block. Alla i rundan arbetade på en runda som tog längre tid än den borde. Så alla tjänar lite mindre per enhet arbete. Kostnaden sprids över de ärliga gruvarbetarna.
- Med ett system som betalar per share är det värre för operatören. Poolen har redan betalat för varje share ur egen ficka och räknar med att blocken kommer. En långvarig attack tömmer operatören direkt. Historiskt är det det här fallet som folk har oroat sig mest för.
Varför skulle någon göra det här?
Angriparen kastar också bort blockbelöningen. Vid första anblick är det ren självskada. Det är bara vettigt om angriparen vinner något någonstans där poolen inte kan se det.
Det vanliga motivet är konkurrens. Någon som driver en egen pool kan hyra hashrate eller rikta hashrate mot en rival och trycka ner dess resultat. Den egna poolen ser då ut att ha mer tur i jämförelse. Sharesen som angriparen ändå får betalt för finansierar sabotaget.
I en mer subtil variant behåller angriparen blocket i stället för att kasta det. Den fortsätter att mina ovanpå det i hemlighet och skickar in det senare, vid ett tillfälle som passar den. Det är svårare att genomföra. Det kräver en stor andel av hashraten för att vara värt att försöka.
Hur upptäcks det?
Upptäckten är statistisk, eftersom det inte finns någon annan signal. Jämför de block en deltagare har hittat med de block som dess antal shares säger att den borde ha hittat. Gör det över ett fönster som är tillräckligt långt för att turen ska jämna ut sig.
Fönstret är den svåra delen.
- Gör det kort, så ser vanlig otur ut som en attack. Ärliga gruvarbetare skulle anklagas hela tiden.
- Gör det långt, så hinner en verklig angripare hålla på ett tag innan siffrorna talar.
Det finns inget smart sätt att komma runt den avvägningen. Den kommer från slumpen, inte från programvaran.
Så en seriös detektor lyfter frågan till en människa i stället för att agera på egen hand. En automatisk avstängning som styrs av en statistisk siffra kommer en dag att stänga av någon som bara hade otur. Att stänga av en legitim gruvarbetare är värre än själva attacken.
Vad betyder det för en ärlig gruvarbetare?
Nästan ingenting, och det är värt att säga rakt ut.
Dina shares räknas och betalas på samma sätt i båda fallen. Att ha otur är inget brott och kan inte vara det. Över ett kort fönster har de flesta gruvarbetare otur.
En serie rundor där du bidrog mycket och poolen inte hittade något är normal variation. Tursiffran i poolens statistik visar hur normalt det är.
Den här attacken är en anledning till att pooler bryr sig om vem som riktar hashrate mot dem. Det är också därför en pool som ärligt publicerar sina block och sin tur är lättare att lita på. Allt du behöver för att kontrollera poolen finns på blocksidan.