Block Withholding: der Angriff, den kein Share verrät
Ein Miner sendet echte Shares und versteckt den einen, der ein Block gewesen wäre. Was das kostet, wer zahlt, warum jemand das tut und wie es auffällt.
Was ist ein Block-Withholding-Angriff?
Ein Miner sendet jeden gewöhnlichen Share, versteckt aber den einen, der ein Block gewesen wäre. Der Pool zahlt für die Shares. Der Block kommt nie an.
Jeder Share, den Sie an einen Pool senden, ist eine echte Lösung, die das Blockziel verfehlt hat. Das Blockziel ist die höhere Hürde, die ein Hash nehmen muss, um einen Block zu ergeben. Ab und zu nimmt eine Lösung auch diese Hürde, und dieser Share ist ein ganzer Block.
So ein Share sieht aus wie jeder andere, bis der Pool ihn prüft.
Ein Angreifer erledigt die Arbeit ehrlich und sendet jeden gewöhnlichen Share. Den einen, der ein Block gewesen wäre, wirft er still weg. Der Pool zählt die Shares und zahlt dafür. Der Block, den er hätte bekommen sollen, kommt nie an.
Warum verrät ihn kein einzelner Share?
An keinem einzelnen Share sieht der Angreifer falsch aus. Die Hardware ist echt, die Hashrate auch. Die Shares sind gültig und kommen im richtigen Takt. Der Pool kann einen Share untersuchen und sieht überhaupt nichts.
Was fehlt, ist eine Abwesenheit, und eine Abwesenheit zeigt sich nur über die Zeit. Ein Miner mit einem bestimmten Anteil an der Hashrate des Pools sollte ungefähr diesen Anteil seiner Blöcke finden.
Über eine Stunde sagt das nichts. Blockfunde sind zufällig, und ruhige Phasen sind normal. Über ein ausreichend langes Fenster sagt es eine Menge.
Was kostet es, und wer zahlt?
Der Pool verliert die Blockbelohnung, die ihm zugestanden hätte. Der Verlust landet aber nicht wirklich beim Pool. Das ist der Teil, den man bei jedem Pool verstehen sollte.
- Bei einem proportionalen Modell läuft die Runde weiter, bis jemand anders einen Block findet. Alle in der Runde haben an einer Runde gearbeitet, die länger dauerte, als sie sollte. Also verdient jeder etwas weniger pro Einheit Arbeit. Die Kosten verteilen sich auf die ehrlichen Miner.
- Bei einem Pay-per-Share-Modell ist es für den Betreiber schlimmer. Der Pool hat jeden Share bereits aus eigener Tasche bezahlt und verlässt sich darauf, dass die Blöcke ankommen. Ein anhaltender Angriff ist ein direkter Verlust für den Betreiber. Historisch ist das der Fall, um den man sich am meisten Sorgen gemacht hat.
Warum sollte jemand so etwas tun?
Auch der Angreifer wirft die Blockbelohnung weg. Auf den ersten Blick ist das reine Selbstschädigung. Es ergibt nur Sinn, wenn der Angreifer irgendwo gewinnt, wo der Pool es nicht sehen kann.
Das übliche Motiv ist Konkurrenz. Wer einen eigenen Pool betreibt, kann Hashrate mieten oder auf einen Rivalen richten und dessen Ergebnisse drücken. Der eigene Pool wirkt dann im Vergleich glücklicher. Die Shares, die der Angreifer weiterhin bezahlt bekommt, finanzieren die Sabotage.
In einer subtileren Variante hält der Angreifer den Block zurück, statt ihn wegzuwerfen. Er mint privat darauf weiter und reicht ihn später in einem Moment ein, der ihm passt. Das ist schwerer umzusetzen. Es braucht einen großen Anteil der Hashrate, damit sich der Versuch lohnt.
Wie wird er erkannt?
Die Erkennung ist statistisch, weil es kein anderes Signal gibt. Vergleichen Sie die Blöcke, die ein Teilnehmer gefunden hat, mit den Blöcken, die er laut seiner Share-Zahl hätte finden sollen. Tun Sie das über ein Fenster, das lang genug ist, damit sich das Glück ausgleicht.
Das Fenster ist der schwierige Teil.
- Ist es kurz, sieht gewöhnliches Pech wie ein Angriff aus. Ehrliche Miner würden ständig beschuldigt.
- Ist es lang, kann ein echter Angreifer eine Weile arbeiten, bevor die Zahlen etwas verraten.
Es gibt keinen cleveren Weg um diesen Zielkonflikt herum. Er kommt vom Zufall, nicht von der Software.
Ein ernsthafter Detektor legt die Frage deshalb einem Menschen vor, statt allein zu handeln. Eine automatische Sperre auf Grundlage einer Statistik sperrt eines Tages jemanden, der nur Pech hatte. Einen legitimen Miner vom Netz zu nehmen, ist schlimmer als der Angriff selbst.
Was bedeutet das für einen ehrlichen Miner?
Fast nichts, und das sollte man klar sagen.
Ihre Shares werden so oder so gleich gezählt und bezahlt. Pech ist kein Vergehen und kann keines sein. Über jedes kurze Fenster haben die meisten Miner Pech.
Eine Reihe von Runden, in denen Sie viel beigetragen haben und der Pool nichts gefunden hat, ist normale Varianz. Der Glückswert in der Pool-Statistik zeigt Ihnen, wie normal sie ist.
Dieser Angriff ist ein Grund, warum es Pools wichtig ist, wer Hashrate auf sie richtet. Er ist auch der Grund, warum man einem Pool, der seine Blöcke und sein Glück ehrlich veröffentlicht, leichter vertraut. Alles, was Sie zur Prüfung des Pools brauchen, steht auf der Seite „Blöcke“.