Poole 18
Górnicy b.d.
Workery b.d.
Zasady poola

Block withholding: atak, którego pool nie wykryje, patrząc na jeden share

Ostatnia aktualizacja: 15 sierpnia 2026

Górnik wysyła prawdziwe share'y i ukrywa ten, który byłby blokiem. Oto ile to kosztuje, kto za to płaci i jak się to wykrywa.

Na czym polega atak

Każdy share wysłany do poola to prawdziwe rozwiązanie, które nie osiągnęło celu bloku. Od czasu do czasu rozwiązanie mieści się także poniżej celu bloku i wtedy ten share jest całym blokiem. Wygląda tak samo jak każdy inny share aż do chwili, gdy pool go sprawdzi.

Atak polegający na zatajaniu bloków (block withholding) to górnik, który uczciwie wykonuje pracę, wysyła każdy zwykły share i po cichu wyrzuca ten jeden, który byłby blokiem. Pool liczy share'y i za nie płaci. Blok, który powinien był otrzymać, nigdy nie dociera.

Dlaczego jeden share nigdy tego nie zdradza

To właśnie czyni ten atak interesującym, a nie tylko nieuprzejmym. Na żadnym pojedynczym share'u nic w atakującym nie wygląda źle. Sprzęt jest prawdziwy, hashrate jest prawdziwy, share'y są prawidłowe i przychodzą we właściwym tempie. Pool nie może obejrzeć jednego share'a i niczego w nim zobaczyć.

Sygnałem jest brak, a brak staje się widoczna dopiero z czasem. Górnik mający określony udział w hashrate'cie poola powinien znaleźć mniej więcej taki sam udział jego bloków. W ciągu godziny to nic nie mówi, ponieważ znajdowanie bloków jest procesem losowym, a ciche okresy są normalne. W dostatecznie długim oknie mówi bardzo wiele.

Atakujący górnik wysyła do poola stały strumień zwykłych share'ów, a jedno rozwiązanie spełniające cel bloku zostaje zatrzymane, zanim dotrze do poola, i odrzucone
Share'y płyną normalnie. Jedyne zgłoszenie, które miało znaczenie, zostaje porzucone, a nic w pojedynczym share'u tego nie ujawnia.

Ile to kosztuje i kto naprawdę płaci

Pool traci nagrodę za blok, którą powinien był otrzymać. Ale to nie na poolu tak naprawdę ląduje strata i to jest część warta zrozumienia przy kopaniu na dowolnym poolu.

W schemacie proporcjonalnym runda po prostu trwa, dopóki ktoś inny nie znajdzie bloku. Każdy w rundzie wniósł pracę do rundy, która trwała dłużej, niż powinna, więc każdy zarabia nieco mniej na jednostkę pracy. Koszt rozkłada się na uczciwych górników.

W schemacie płatności za share (pay per share) jest gorzej dla operatora, ponieważ pool zapłacił już za każdy share z własnej kieszeni i liczy na to, że bloki nadejdą. Długotrwały atak na pool typu pay per share to bezpośredni drenaż kieszeni operatora i historycznie właśnie tego przypadku obawiano się najbardziej.

Dlaczego ktoś miałby to robić

Atakujący również wyrzuca nagrodę za blok, więc na pierwszy rzut oka to czyste działanie na własną szkodę. Ma to sens tylko wtedy, gdy atakujący zyskuje gdzieś, gdzie pool tego nie widzi.

Zwykle motywem jest konkurencja. Operator prowadzący własny pool może wynająć hashrate lub skierować go na rywala, tłumić jego wyniki i przez porównanie sprawić, że jego własny pool wygląda na szczęśliwszy. Atakujący płaci za sabotaż z share'ów, za które nadal otrzymuje wypłaty.

Istnieje subtelniejszy wariant, w którym atakujący zatrzymuje blok zamiast go wyrzucać, potajemnie kopie dalej na jego podstawie i zgłasza go później, w dogodnym dla siebie momencie. Trudniej go przeprowadzić i potrzeba dużego udziału w hashrate'cie, aby warto było spróbować.

Jak naprawdę się go wykrywa

Wykrywanie jest statystyczne i musi takie być, ponieważ nie ma żadnego innego sygnału. Pomiar łatwo opisać: porównuje się bloki znalezione przez danego uczestnika z blokami, które według liczby jego share'ów powinien był znaleźć, w oknie dostatecznie długim, aby szczęście się uśredniło.

Trudną częścią jest okno. Krótkie okno sprawia, że zwykły pech wygląda jak atak, co oznaczałoby ciągłe oskarżanie uczciwych górników. Długie okno pozwala prawdziwemu atakującemu działać przez jakiś czas, zanim liczby przemówią. Nie ma sprytnego sposobu na ominięcie tego kompromisu; to właściwość losowości, a nie oprogramowania.

Dlatego poważny detektor przekazuje sprawę człowiekowi, zamiast działać na własną rękę. Automatyczny ban oparty na statystyce prędzej czy później zbanuje kogoś, kto miał tylko pecha, a odcięcie uczciwego górnika to gorszy skutek niż sam atak.

Co to oznacza dla uczciwego górnika

Prawie nic i właśnie po to warto to powiedzieć wprost.

Share'y są liczone i opłacane tak samo w każdym przypadku. Pech nie jest przewinieniem i nie może nim być, ponieważ w każdym krótkim oknie większość górników ma pecha. Seria rund, w których wniesiono dużo pracy, a pool nic nie znalazł, to normalna zmienność, a wskaźnik szczęścia w statystykach poola istnieje właśnie po to, aby było widać, jak bardzo jest to normalne.

Jedyne, co warto wiedzieć, to że jest to jeden z powodów, dla których poole zwracają uwagę na to, kto kieruje na nie hashrate, oraz powód, dla którego poolowi uczciwie publikującemu swoje bloki i szczęście łatwiej zaufać niż takiemu, który tego nie robi. Wszystko, czego potrzeba do sprawdzenia poola, jest na stronie bloków.

Czas zastosować to w praktyce?
Wystarczy wybrać monetę w przeglądzie pooli i otworzyć jej poradnik Jak kopać, aby dostać gotowe do uruchomienia polecenie.
Wybierz pool