Beseitigen Mining-Pools die Notwendigkeit, Blockchain zu speichern?

Angenommen, ich möchte einen generischen Krypto-Währungs-Miner von Grund auf neu entwerfen. Mit generisch meine ich, dass es so konfiguriert werden kann, dass es eine große Anzahl verfügbarer Kryptowährungen unterstützt.

Dieser generische Miner muss in der Lage sein, sich mit Mining-Pools für die von ihm unterstützten Coins zu verbinden, zusätzlich zum Solo-Mining. Falls es für die Verbindung mit dem Mining-Pool konfiguriert ist, muss es die Blockchain nicht auf dem PC speichern, auf dem der Miner läuft? In diesem Fall wird die Blockchain auf dem Server gespeichert, auf dem der Mining-Pool läuft? In diesem Fall hat der Miner-PC nur den aktuellen Block?

Die Antworten auf die obigen Fragen hängen nicht davon ab, ob der Miner für die Verwendung von CPU oder GPU oder beidem konfiguriert ist.

Antworten (2)

Ein Mining-Pool muss die gesamte Blockchain speichern, aber das bedeutet nicht, dass jeder Teilnehmer des Mining-Pools sie speichern muss. Jemand im Pool braucht es, aber nicht jeder .

Personen in einem Pool können einfach Blockheader gesendet werden und den Proof-of-Work durchführen, ohne jemals die Transaktionen selbst zu überprüfen. Dies erfordert nicht die vollständige Blockchain. Jemand sollte die Transaktionen jedoch bereits im Voraus verifiziert haben, und dieser Knoten benötigt die Blockchain.

Sie brauchen die Blockchain überhaupt nicht, um Transaktionen zu validieren. Sie benötigen das UTXO-Set, das von allen vorherigen Transaktionen in der Kette definiert wurde, aber es besteht keine Notwendigkeit, die eigentliche Kette beizubehalten. Ein beschnittener Knoten ist ausreichend.

Ja, Teilnehmer des Mining-Pools müssen nichts speichern, schon gar nicht die gesamte Blockchain. Was sie brauchen, ist der Hash der Transaktion, die im nächsten Block enthalten ist, und der Hash des vorherigen Blocks.

Der andere Teil, der getan werden muss, aber es ist der Mining-Server, der dies tut, ist die Validierung von Transaktionen, die von einem beschnittenen Knoten durchgeführt werden können, wodurch die zu speichernde Datenmenge minimiert wird.

Sie brauchen auch nicht den aktuellen Block ... Sie brauchen nur einige Teile des Headers und einen Merkle-Zweig für die Generierungstransaktion.
Ist das besser?
Ich denke, es ist noch nicht ganz so weit. Was sie brauchen, ist keine Transaktion – ganz im Gegenteil, sie machen die Transaktion selbst. Sie brauchen die Merkle-Filiale, die die Transaktion ergänzt; und auch die Adresse, um den Pool gutzuschreiben. Dies setzt voraus, dass jede Arbeitseinheit aus mehreren extraNonces besteht; Andernfalls brauchen sie das nicht, sie erhalten die Merkle-Wurzel und verwenden einfach Nonce und nTime Rolling. Wenn das zu kompliziert ist, können Sie einfach sagen, dass sie den Header brauchen, es ist nicht weit von der Genauigkeit entfernt.