Was genau ist eine Aktie beim Pool-Mining?

Kann mir bitte jemand genau erklären, was ein Share im Zusammenhang mit Pool Mining ist? Ich habe ein oberflächliches Verständnis dafür, wie man zufällige Nonces testet, um einen Hash unter der aktuellen Schwierigkeit zu finden. Ich verstehe auch, dass Mining-Pools einen benutzerdefinierten einfacheren Schwierigkeitsgrad festlegen, um einen relativ einfach zu erreichenden Schwierigkeitsgrad (~ 10 Minuten) anzustreben.

Was ich nicht verstehe, ist, wie diese Freigaben dazu führen, dass echte Blöcke gefunden werden. Angenommen, eine von tausend Aktien ist ein gültiger echter neuer Block. Warum würden Miner diesen Hash nicht einfach selbst einreichen und den Rest der einfacheren Anteile an den Pool schicken?

Ich bin mir sicher, dass ich ein grundlegendes Missverständnis habe, aber ich kann nicht herausfinden, was es ist. Ich denke, irgendwie hat der Pool ein Geheimnis, das er mit den eingereichten Anteilen kombinieren kann, um zu sehen, ob dieser Anteil mit einem Block übereinstimmt, aber das ist eine Vermutung.

Jede Hilfe wäre sehr willkommen.

Sie vermuten richtig, als Pool-Kunde können Sie nicht erkennen, ob ein Arbeitspaket etwas Wertvolles enthält. Nur der Pool kennt und ist der eigentliche Kunde des Ethereum-Netzwerks. Sie rechnen nur blind.
Dies ist keine Antwort, sondern mehr auf die Frage, ich habe die Antworten möglicherweise falsch verstanden, aber niemand hat dargelegt, was ein "Anteil" genau ist. Ich weiß, dass es sich um eine eingereichte Arbeit handelt, aber welchen Wert hat sie und um welche Art von Arbeit handelt es sich, damit sie für den Pool oder den gefundenen Block nützlich ist.

Antworten (4)

Hier gibt es viele Antworten, aber keine hat die Frage "Was ist eine Aktie?" wirklich beantwortet.

In fast allen Mining-Pools ist eine Aktie eine Block-"Lösung", die nicht gut genug ist, um als tatsächlicher Block veröffentlicht zu werden, aber immer noch gut genug, dass es wirklich schwierig ist, sie zu finden . Dies bedeutet, dass Shares verwendet werden können, um zu messen, wie viel Arbeit Sie leisten, aber nur mit einer viel feineren und konsistenteren Granularität als tatsächliche Blocklösungen, die für kleine Miner viel zu selten sind.

Nehmen wir also nur als Beispiel an, dass die aktuelle Schwierigkeit 10.000 beträgt. Um gültige Blöcke zu werden, muss ein versuchter Block mit einer bestimmten Nonce „besser“ als 10.000 sein. In dieser Situation könnte der Pool seine „Teilen-Schwierigkeit“ auf 100 setzen. Also wird Ihre Software bei jedem Versuch, den Sie versuchen, überprüfen, wie „gut“ die Schwierigkeit des resultierenden Blocks ist. Die meisten dieser Blöcke haben einen Schwierigkeitsgrad unter 100, aber ein kleiner Teil von ihnen hat einen Schwierigkeitsgrad von über 100 (und immer noch weniger als 10.000). Diese "besser als 100, aber immer noch weniger als 10.000"-Blöcke sind diejenigen, die wir die "Anteile" nennen.. Sie können in den Mining-Pool geschickt werden, obwohl sie nicht gut genug sind, um als tatsächliche Blöcke im offenen Netzwerk veröffentlicht zu werden. Innerhalb dieser Freigaben wird der Mining-Pool eindeutig als Empfänger einer potenziellen Blockbelohnung gekennzeichnet, was bedeutet, dass der Mining-Pool die Anzahl der von Ihnen eingereichten Freigaben als unfälschbaren Beweis dafür verwenden kann, wie viel Arbeit Ihre Maschine leistet, um zu versuchen, Blöcke zu finden den Pool, auch wenn Sie noch nie einen gefunden haben . Was gut ist, denn es dauert ewig, um tatsächliche Blöcke zu finden.

Während Sie schürfen und fröhlich Aktien einreichen, werden Sie alle paar Jahre auf eine Lösung stoßen, die nicht nur gut genug ist, um eine Aktie zu sein, sondern tatsächlich gut genug, um ein echter Block zu sein! Das heißt, es hat eine Schwierigkeit von „über 10.000“ und erfüllt daher nicht nur die Share-Kriterien, sondern den vollen Netzwerkstandard der Schwierigkeit, was viel schwieriger ist. Diesen würden Sie immer noch an den Pool senden, aber wenn sie ihn erhalten, werden sie ihn über das eigentliche Netzwerk veröffentlichen und eine schöne fette Belohnung erhalten, die unter allen entsprechend den von ihnen eingereichten Anteilen verteilt wird. Natürlich sind dies keine reellen Zahlen, und die meiste Software funktioniert, indem sie Ihren Computer einfach anweist, nach Blöcken über 100 zu suchen und sich keine Gedanken über die Netzwerkschwierigkeiten zu machen. Aber dennoch können wir sehen, dass jemand, der nicht wirklich Bergbau betreibt, überhaupt keine Aktien finden würde, was bedeutet, dass dies aus Sicht des Pools eigentlich ziemlich sicher ist, um zu messen, wie viel Arbeit jeder leistet .

Ich habe hier viele Details beschönigt, weil es einige subtile Tricks gibt, auf die der Pool achten muss (Block Withholding greift irgendjemanden an?), aber das ist kurz gesagt, was Aktien tatsächlich sind: ganz normale Blöcke, die das nicht tun Erfüllen Sie die vollständigen Anforderungen, um im Netzwerk veröffentlicht zu werden, aber erfüllen Sie dennoch einige kleinere Anforderungen, die vom Pool festgelegt wurden, um als Beweis dafür zu gelten, dass Sie mit dem als Empfänger festgelegten Pool minen .

Nun, warum kann der Miner nicht einfach selbst Blöcke einreichen, um die gesamte Belohnung zu erhalten? Zwei Gründe: Erstens, damit ihre Anteile gültig sind, müssen sie den Pool als Empfänger festgelegt haben, sodass der geminte Block die Belohnung bereits an den Pool gibt, egal wer ihn sendet, und zweitens (wie von zanzu angegeben ) die pool macht sich nicht die Mühe, den Minern den gesamten Block zu geben, sondern nur eine Vorlage für den Header, der die Hashes des tatsächlichen Blockinhalts enthält).

Was der Miner tun könnte , ist, den gültigen Block heimlich wegzuwerfen , anstatt ihn zurück in den Pool zu schicken. Das würde dem Rest des Pools mehr schaden als dem Miner, weil nur ein kleiner Teil der Belohnung tatsächlich zu ihnen zurückgekommen wäre, und aus einer Reihe komplizierter spieltheoretischer Gründe könnte dies vielleicht der Fall seineinen Vorteil ergeben, wenn derselbe Miner auch viel andere Mining-Power hatte, die überhaupt nicht im Pool war. (Dies ist der oben erwähnte „Block-Withholding-Angriff“). Aber es fängt an, sich in den Statistiken bemerkbar zu machen, wenn man es viel macht, und es bringt auch dem typischen Kleinzeit-Miner keinen Nutzen. Daher sind diese Angriffe vermutlich ziemlich selten. Es gibt bestimmte Arten von Belohnungssystemen, die mehr oder weniger resistent gegen die Strategie sind, aber die meisten Menschen scheinen sich im Allgemeinen nicht sehr um diese Angriffe zu kümmern. Alles in allem ist also die grundlegende „Teilen“-Strategie ziemlich gut genug.

TL;DR: Aktien sind „gescheiterte Blöcke“, die ein Pool als Beweis für die Beteiligung eines kleinen Bergmanns verwendet.

Warum also würde ein kleiner Bergmann nicht jeden Arbeiter auf eine sehr niedrige „Teilen-Schwierigkeit“ von zum Beispiel 10 setzen? Erweckt dies für den Pool nicht den Eindruck, dass mein Mitarbeiter mehr Anteile einbringt?
@Gaia Ich versuche auch, das herauszufinden. Bisher lasse ich mein Rig rund um die Uhr laufen, aber ich sehe keine Einträge in meiner Brieftasche. Ich habe fast 800 Aktien abgebaut. Ist das nicht genug?
@Gaia Der Pool berechnet, wie viel jede Aktie wert ist. Wenn Sie also angeblich mit einer Schwierigkeit von 10 abbauen und 20 in einer einzigen Runde senden, bedeutet dies, dass Sie einen Gesamtaktienwert von 200 haben. Während andere Miner mit einer Schwierigkeit von 100 abbauen und dann nur 2 Aktien in derselben Runde senden das hat einen Gesamtaktienwert von 200. Der Pool zählt nicht nur, wie viele Aktien Sie verschickt haben, sondern auch, wie viel jede Aktie wert ist.

Der Ethereum-Mining-Algorithmus wird hier skizziert und hier weiter detailliert .

Die Teilnehmer eines Mining-Pools erhalten nur die Parameter (Block-Header-Parameter usw.), die für die Berechnung des POW erforderlich sind. Wie hier dargestellt , enthält ein Block jedoch auch einen Merkle-Patricia-Zustands-Trie, einen Transaktions-Merkle-Baum und einen Quittungs-Merkle-Baum. Die Pool-Miner haben (und brauchen) diese Tri/ees nicht, während sie versuchen, den POW zu berechnen.

Folglich verfügt nur der Pool-Master über den vollständigen Datensatz, der erforderlich ist, um einen neuen Block an die Blockchain zu senden, sobald einer der Pool-Miner (halbblind) die Lösung für den POW berechnet hat.

Also führt nur der Master EVM-Bytecode aus?

zanzu beschreibt genau die Architektur, die Pool-Miner daran hindert, die an den Pool gelieferte Arbeit zu kontrollieren, aber um Ihre Frage zu beantworten:

Was genau ist eine Aktie?

Ein Anteil ist der Anteil des Miners am Belohnungsblock, der (im Allgemeinen) proportional zu der Menge an Arbeit ist, die er zum Gesamtaufwand für das Mining dieses einzelnen Blocks beigetragen hat. Dies ist zu stark vereinfacht, aber sagen wir, es hat 1.000 Mh gedauert, um den Block abzubauen, und ich habe 25 Mh/s über 2 Sekunden beigetragen, also habe ich 50 Mh zur Gesamtberechnung beigetragen, dann ist mein Anteil an dieser Belohnung (50 / 1.000 == 0,05 == 5 %).

HINWEIS: Dies ist in einem PPS-Schema (Pay-per-Share)

PPLNS (Pay Per Last N Shares) ist etwas anders, da ist etwas Glück im Spiel.

Die Unterschiede zwischen den beiden werden auf From MinerGate beschrieben:

Pay Per Last N Shares ist das, wofür PPLNS steht. Diese Methode zur Berechnung der Auszahlungen beinhaltet einen "Glücksfaktor". Wenn Sie PPLNS verwenden, wird Ihre Auszahlung pro Aktie eine große Bandbreite haben (30 % mehr oder weniger auf Ihre Auszahlungen), aber im Durchschnitt verdient PPLNS auf lange Sicht (einen Monat oder länger) mehr als PPS (um etwa 5 %).

PPS ist auch als Pay-per-Share bekannt. Es ist eine direktere Methode, bei der Sie eine Standardauszahlungsrate für jede abgeschlossene Aktie erhalten. Diese Methode eliminiert das "Glück" bei Ihrer Auszahlung, kann aber Ihr Gesamteinkommen pro Aktie um etwa 5 % verringern. Mit PPS erhalten Sie eine festgelegte Anzahl von Kryptocoins pro Arbeitsanteil, den Sie gelöst haben. Es ist kein Glück im Spiel, sodass die Auszahlungen nicht schwanken.

Das ist eigentlich falsch. Eine Aktie ist nicht „Ihr Stück vom Kuchen“. Es ist ein tatsächlicher Block, der mit einer Schwierigkeit besser als irgendein Standard, aber immer noch schlechter als der volle Standard abgebaut wurde. Siehe meine vollständige Antwort, die erklärt.

Um einen Block-Mining-Pool abzubauen, müssen Sie eine „gute“ Nonce für den Header finden.

Der Header enthält ein Feld „Begünstigter“, das auf das Konto gesetzt werden muss, um die Blockbelohnung zu erhalten.

Wenn der Begünstigte nicht auf die Mining-Pool-Adresse gesetzt wurde, können alle meine „schlechten“ Nonces nicht als „Anteile“ abgegeben werden.

Wenn ich einen Block für den Pool finde, kann ich nicht einfach den Begünstigten umschreiben, da dies meine Nonce ungültig machen würde!