Block withholding: atacul invizibil într-un singur share
Un miner trimite share-uri reale și îl ascunde pe cel care ar fi fost un bloc. Aflați cât costă, cine plătește, de ce face cineva asta și cum este prins.
Ce este un atac de reținere a blocului?
Este un miner care trimite fiecare share obișnuit, dar ascunde singurul care ar fi fost un bloc. Pool-ul plătește pentru share-uri. Blocul nu mai ajunge niciodată.
Fiecare share pe care îl trimiteți unui pool este o soluție reală care nu a atins ținta blocului. Ținta blocului este ștacheta mai înaltă pe care un hash trebuie să o treacă pentru a face un bloc. Din când în când, o soluție o trece și pe aceasta, iar acel share este un bloc întreg.
Un astfel de share arată ca oricare altul până când pool-ul îl verifică.
Atacatorul face munca cinstit și trimite fiecare share obișnuit. Aruncă în liniște singurul care ar fi fost un bloc. Pool-ul numără share-urile și plătește pentru ele. Blocul pe care ar fi trebuit să-l primească nu mai ajunge niciodată.
De ce un singur share nu îl poate da de gol?
Nimic la atacator nu pare în neregulă la niciun share luat separat. Hardware-ul este real, la fel și hashrate-ul. Share-urile sunt valide și sosesc în ritmul corect. Pool-ul poate examina un share și să nu vadă absolut nimic.
Ce lipsește este o absență, iar o absență se vede doar în timp. Un miner cu o anumită parte din hashrate-ul pool-ului ar trebui să găsească aproximativ aceeași parte din blocurile lui.
Pe o oră, asta nu spune nimic. Găsirea blocurilor este aleatorie, iar perioadele liniștite sunt obișnuite. Pe o fereastră suficient de lungă, spune foarte mult.
Cât costă și cine plătește?
Pool-ul pierde recompensa de bloc pe care ar fi trebuit să o aibă. Dar pierderea nu cade de fapt pe pool. Aceasta este partea care merită înțeleasă, pe orice pool.
- Sub o schemă proporțională, runda continuă până când altcineva găsește un bloc. Toți cei din rundă au lucrat la o rundă care a durat mai mult decât ar fi trebuit. Deci fiecare câștigă puțin mai puțin pe unitatea de muncă. Costul se împarte între minerii cinstiți.
- Sub o schemă de plată pe share, este mai rău pentru operator. Pool-ul a plătit deja fiecare share din propriul buzunar și se bazează pe sosirea blocurilor. Un atac susținut golește direct buzunarul operatorului. Istoric, acesta este cazul care i-a îngrijorat cel mai mult pe oameni.
De ce ar face cineva asta?
Atacatorul aruncă și el recompensa de bloc. La prima vedere, este pură autosabotare. Are sens doar dacă atacatorul câștigă undeva unde pool-ul nu vede.
Motivul obișnuit este concurența. Cineva care are propriul pool poate închiria sau îndrepta hashrate spre un rival și să-i suprime rezultatele. Atunci propriul pool pare mai norocos prin comparație. Share-urile pe care atacatorul le încasează totuși plătesc sabotajul.
Într-o variantă mai subtilă, atacatorul păstrează blocul în loc să-l arunce. Continuă să mineze peste el în secret, apoi îl trimite mai târziu, într-un moment care îi convine. Asta este mai greu de reușit. Are nevoie de o parte mare din hashrate ca să merite încercarea.
Cum este detectat?
Detectarea este statistică, pentru că nu există alt semnal. Comparați blocurile pe care un participant le-a găsit cu blocurile pe care numărul lui de share-uri spune că ar fi trebuit să le găsească. Faceți asta pe o fereastră suficient de lungă ca norocul să se echilibreze.
Fereastra este partea grea.
- Dacă o faceți scurtă, ghinionul obișnuit arată ca un atac. Minerii cinstiți ar fi acuzați mereu.
- Dacă o faceți lungă, un atacator real acționează o vreme înainte ca cifrele să vorbească.
Nu există o cale isteață de a ocoli acest compromis. Vine din caracterul aleatoriu, nu din software.
De aceea, un detector serios ridică întrebarea în fața unui om în loc să acționeze singur. O interdicție automată condusă de o statistică va interzice într-o zi pe cineva care doar a avut ghinion. A scoate din funcțiune un miner legitim este mai rău decât atacul însuși.
Ce înseamnă pentru un miner cinstit?
Aproape nimic, și merită spus clar.
Share-urile dumneavoastră sunt numărate și plătite la fel în ambele cazuri. Ghinionul nu este o abatere și nu poate fi. Pe orice fereastră scurtă, majoritatea minerilor au ghinion.
O serie de runde în care ați contribuit mult, iar pool-ul nu a găsit nimic, este variație normală. Cifra de noroc din statisticile pool-ului vă arată cât de normal este.
Acest atac este unul dintre motivele pentru care pool-urile sunt atente la cine îndreaptă hashrate spre ele. Este și motivul pentru care un pool care își publică cinstit blocurile și norocul inspiră mai ușor încredere. Tot ce vă trebuie ca să verificați pool-ul este pe pagina de blocuri.