Block withholding: de aanval die een pool niet in één share kan zien
Een miner stuurt echte shares en verbergt de ene die een blok zou zijn. Wat het kost, wie betaalt en hoe het wordt ontdekt.
Wat de aanval is
Elke share die u naar een pool stuurt, is een echte oplossing die het blokdoel miste. Af en toe komt een oplossing ook onder het blokdoel uit, en die share is een heel blok. Hij ziet er precies hetzelfde uit als elke andere share, tot het moment dat de pool hem controleert.
Een block withholding attack is een miner die het werk eerlijk doet, elke gewone share instuurt en stilletjes de ene weggooit die een blok zou zijn geweest. De pool telt de shares en betaalt ervoor. Het blok dat hij had moeten ontvangen, komt nooit aan.
Waarom één share het nooit verraadt
Dit maakt de aanval interessant in plaats van alleen onbeschoft. Niets aan de aanvaller ziet er bij een afzonderlijke share verkeerd uit. De hardware is echt, de hashrate is echt, de shares zijn geldig en komen in het juiste tempo binnen. De pool kan niet naar één share kijken en daar ook maar iets aan zien.
Wat ontbreekt, is een afwezigheid, en een afwezigheid wordt pas na verloop van tijd zichtbaar. Een miner met een bepaald deel van de hashrate van de pool zou ongeveer datzelfde deel van zijn blokken moeten vinden. Over een uur zegt dat niets, want het vinden van blokken is een willekeurig proces en stille periodes zijn normaal. Over een venster dat lang genoeg is, zegt het heel veel.
Wat het kost, en wie er echt voor betaalt
De pool verliest de blokbeloning die hij had moeten krijgen. Maar het verlies komt niet echt bij de pool terecht, en dit is het deel dat de moeite waard is om te begrijpen als u op welke pool dan ook mint.
Bij een proportioneel schema loopt de ronde gewoon door tot iemand anders een blok vindt. Iedereen in de ronde droeg werk bij aan een ronde die langer duurde dan nodig, dus iedereen verdient iets minder per eenheid werk. De kosten worden verdeeld over de eerlijke miners.
Bij een pay-per-share-schema is het erger voor de beheerder, omdat de pool al uit eigen zak voor elke share heeft betaald en erop rekent dat de blokken binnenkomen. Een aanhoudende aanval op een pay-per-share-pool is een directe aderlating voor de beheerder, en historisch gezien is dat het geval waar mensen zich de meeste zorgen over maakten.
Waarom iemand dit zou doen
De aanvaller gooit de blokbeloning ook weg, dus op het eerste gezicht is het pure zelfbeschadiging. Het heeft alleen zin als de aanvaller ergens wint waar de pool het niet kan zien.
Het gebruikelijke motief is concurrentie. Een beheerder van een eigen pool kan hashrate huren of op een rivaal richten, diens resultaten onderdrukken en zijn eigen pool in vergelijking meer geluk laten lijken te hebben. De aanvaller betaalt de sabotage uit de shares die hij nog steeds uitbetaald krijgt.
Er is een subtielere variant waarbij de aanvaller het blok vasthoudt in plaats van het weg te gooien, er privé bovenop doorgaat met minen en het later indient op een moment dat hem uitkomt. Dat is moeilijker uit te voeren en vergt een groot deel van de hashrate om het proberen waard te zijn.
Hoe het echt wordt opgespoord
Detectie is statistisch, en dat moet ook, want er is geen ander signaal beschikbaar. De meting is eenvoudig te formuleren: vergelijk de blokken die een bepaalde deelnemer heeft gevonden met de blokken die hij volgens zijn aantal shares had moeten vinden, over een venster dat lang genoeg is om geluk uit te middelen.
Het venster is het moeilijke deel. Maak het kort en gewone pech ziet eruit als een aanval, wat zou betekenen dat eerlijke miners voortdurend worden beschuldigd. Maak het lang en een echte aanvaller is een tijdje actief voordat de cijfers spreken. Er is geen slimme manier om deze afweging te omzeilen; het is een eigenschap van het toeval, niet van de software.
Daarom legt een serieuze detector de vraag aan een mens voor in plaats van zelf te handelen. Een automatische ban op basis van een statistiek zal uiteindelijk iemand bannen die alleen pech had, en een legitieme miner offline halen is een slechtere uitkomst dan de aanval zelf.
Wat het betekent als u een eerlijke miner bent
Bijna niets, en daarom zeggen we het zo duidelijk.
Uw shares worden hoe dan ook op dezelfde manier geteld en betaald. Pech hebben is geen overtreding en kan dat ook niet zijn, want over elk kort venster hebben de meeste miners pech. Een reeks rondes waarin u veel bijdroeg en de pool niets vond, is normale variantie, en het gelukscijfer in de poolstatistieken bestaat precies zodat u kunt zien hoe normaal dat is.
Het enige dat het weten waard is: dit is een reden dat pools geven om wie er hashrate op richt, en een reden dat een pool die zijn blokken en zijn geluk eerlijk publiceert, makkelijker te vertrouwen is dan een die dat niet doet. Alles wat nodig is om de pool te controleren, staat op de blokkenpagina.