Bei Solo Mining erhält ein Miner die Belohnung für Blöcke, die seine eigene Rechenleistung findet und die in die Kette aufgenommen werden. Ein Block ist eine Gruppe von Transaktionen, die zur Blockchain, Bitcoins öffentlicher Historie, hinzugefügt wird. Einen Block zu „finden“ heißt, ein Rechenergebnis zu finden, mit dem der Miner diese Gruppe dem übrigen Netzwerk vorschlagen kann. Dort wird weiterhin geprüft, ob sie alle Regeln erfüllt. Funde anderer Miner liefern ihm kein regelmäßiges Einkommen. Er kann eigene Infrastruktur oder einen externen Solo-Server gegen Gebühr nutzen. „Solo“ beschreibt vor allem die Verteilung der Belohnung.
Jan kauft einen ASIC, ein Gerät für die speziellen Berechnungen beim Mining. Die Anzeige meldet Aktivität, doch in seiner Wallet kommt nichts an. Bei Solo Mining muss das kein Fehler sein. Rechenleistung gibt ihm eine Chance auf einen Block, keinen Stundenlohn. Ein gewöhnlicher Mining Pool verteilt Belohnungen nach seinen Regeln auf die Beteiligten; solo wartet Jan auf seinen eigenen Fund. Auch ein Server mit Stratum, einem Kommunikationsprotokoll für Miner, bedeutet nicht automatisch gemeinsame Auszahlungen. [1] [6]
Nehmen wir zur Veranschaulichung einen konstanten Anteil von 1 % an der Rechenleistung des Netzwerks an. Das ist ein großer Beispielwert, keine Annahme für ein Heimgerät. Unter den nächsten 100 Netzwerkblöcken ist ein eigener Fund zu erwarten. Die Wahrscheinlichkeit für mindestens einen beträgt aber nur 1 − 0,99^100, etwa 63,4 %. Die Formel berechnet zunächst die Wahrscheinlichkeit, dass alle diese Blöcke von anderen Minern gefunden werden, und zieht sie von der Gewissheit ab. Übrig bleibt die Chance, dass Jan mindestens einen findet. Es können mehrere oder auch gar keiner sein. Langes Warten verbessert den nächsten Versuch nicht: Mining erinnert sich nicht an Misserfolge. Änderungen bei Schwierigkeit, Leistungsanteil oder Verfügbarkeit verändern zudem die Modellannahmen. [1]
Jan bezahlt Strom unabhängig vom Ergebnis, ebenso Geräte, Kühlung und Wartung. Der rechnerische Durchschnittsertrag ist deshalb kein monatlich verfügbares Geld. Das Teilen von Erträgen im Pool dämpft Schwankungen; es verschafft demselben Gerät aber keine höhere Hashrate, also mehr Berechnungen pro Sekunde. Auch Gebühren und Auszahlungsregeln unterscheiden sich. Für ein Experiment zu Hause kann Jan vorab eine Kostengrenze festlegen, die er selbst ohne Fund tragen kann. Der Erfolg eines anderen ist keine Prognose für sein Einkommen. [1]
Solo CKPool liefert beispielsweise Mining-Arbeit, Netzanbindung und Statistiken. Die Belohnung für Jans Block wird nicht wie in einem gewöhnlichen Pool an andere Teilnehmer verteilt; eine Servicegebühr kann dennoch abgezogen werden. Auszahlungsadresse, Bedingungen und Vorgehen bei Ausfällen müssen klar sein. Umgekehrt ersetzt eine Full Node, die Bitcoins Regeln überprüft, nicht die Rechenleistung eines ASIC. Infrastruktur und Verteilung der Belohnungen sind getrennte Entscheidungen. Die Liste gefundener Blöcke zeigt Gewinner, nicht die Chancen jedes angeschlossenen Geräts. [6]
Das Gerät berechnet wiederholt einen Hash, einen numerischen Fingerabdruck des vorgeschlagenen Block-Headers. Der Header ist ein kurzer Datensatz zum Block, der den Entwurf mit dem vorherigen Block und den enthaltenen Transaktionen verknüpft. Bitcoin Core prüft, ob er kleiner oder gleich dem Netzwerkziel target ist, das im Feld nBits codiert wird. Ein Server kann auch Ergebnisse mit einem leichteren Ziel akzeptieren: solche Ergebnisse heißen shares. Bei einem Solo-Dienst zeigen sie, dass das Gerät arbeitet; sie sind weder selbst ein gefundener Block noch ein Anspruch auf eine kleine Auszahlung. Eine geringere Share-Schwierigkeit erzeugt mehr Meldungen, verbessert aber nicht die Chance jedes Hashs auf das Netzwerkziel. Auch der bisher beste share beweist keinen gültigen Block. [2] [6]
Vor der Suche erstellt Software einen Blockentwurf, eine Vorlage. BIP 22 beschreibt getblocktemplate: Die Schnittstelle liefert unter anderem previousblockhash, den Verweis auf den Vorgängerblock, Transaktionen und coinbasevalue, den maximal verfügbaren Belohnungsbetrag. Die Software baut die coinbase, die besondere erste Transaktion für die Belohnung, und den Header. Der ASIC probiert dann Berechnungsvarianten. Sobald das Netzwerk fortschreitet, braucht er neue Arbeit. Ein schnelles Gerät mit falschem Belohnungsempfänger oder veralteter Vorlage ist keine korrekt eingerichtete Mining-Anlage. [3]
Ein ausreichend niedriger Hash genügt nicht. Andere Nodes prüfen auch Transaktionen, coinbase und Einordnung in die Kette. Zwei Miner können konkurrierende Blöcke finden; das Netzwerk kann auf dem anderen Zweig weiterarbeiten. Ein Block außerhalb der aktiven Kette heißt stale, und seine Belohnung ist dort nicht ausgebbar. Schnelle Übermittlung und aktuelle Arbeit sind daher wichtig. Jan prüft die Annahme des ganzen Blocks und weitere Bestätigungen, statt nur auf die grüne Meldung eines akzeptierten share zu schauen. [3] [4]
Die Belohnung kann neu erzeugten Bitcoin, die Blocksubvention, sowie Transaktionsgebühren enthalten. Die Blockhöhe bezeichnet die Position eines Blocks in der Kette. Im Mainnet beträgt die Subvention ab Höhe 840000 bis zum Block vor 1050000 genau 3,125 BTC. Gebühren variieren; ein Dienst kann seinen Anteil abziehen. Die coinbase darf zusammen nicht mehr als Subvention und Gebühren auszahlen. Außerdem gilt COINBASE_MATURITY: Die Belohnung kann erst in einem Block ausgegeben werden, dessen Höhe mindestens 100 über der des erzeugenden Blocks liegt. Gemeint sind Blöcke, nicht 100 Minuten. Ein Fund, eine bestätigte Belohnung und sofort verfügbares Geld sind also verschiedene Dinge. [4] [5] [7]
Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Mining, Mining Pool, getblocktemplate, Hashrate, Pay Per Share, Pay Per Last N Shares. Auf diesen Eintrag verweisen außerdem Mining Pool, Pay Per Share.