Bestätigungsgeschwindigkeit blockieren

Basierend auf einem Standard, den Sie für relevant halten, wie schnell werden aktuelle Blöcke auf die Einhaltung von Regeln überprüft, wie z. B. korrekte Kontostände, echte Transaktionen, korrekte Belohnungen und Gebühren?

Ist das ein aufwendiger Prozess? Würde eine Datenbank diesen Prozess beschleunigen?

Haben Sie Vorschläge zur Verbesserung der Blocküberprüfungsgeschwindigkeit?

Antworten (2)

Der Großteil der Arbeit besteht darin, jede Transaktion innerhalb des Blocks zu überprüfen. Dies bedeutet, dass die Signaturen für jede Transaktionseingabe überprüft werden müssen, was viel CPU-Verarbeitung erfordert. Eine Möglichkeit, die Verifizierungsgeschwindigkeit zu verbessern, wäre also eine Hardwareunterstützung für den Verifizierungsprozess (z. B. einen spezialisierten ASIC-Chip). Ich weiß nicht, ob ein Miner-ASIC verwendet werden könnte, aber es ist ein interessanter Gedanke.

Das ist nicht richtig. Siehe meine Antwort.
Danke ScripterRon! Wie sieht es mit der Suche nach vergangenen Transaktionen aus, um sicherzustellen, dass die neuen ausgeglichen sind? Ist das nicht ein furchtbar plattenintensiver Prozess? Vielen Dank im Voraus!
Der Bitcoin-Client verwendet die LevelDB-Datenbank, um die Transaktionsausgaben zu speichern. Ich verwende die H2-Datenbank in meiner eigenen Anwendung, um sowohl die Blockchain als auch die Transaktionsausgaben zu speichern. Ich bin mir nicht sicher, ob noch viel mehr zu tun ist als die Leistungsoptimierung in Bereichen mit hoher Auslastung (bessere SQL-Suchargumente, Indizes, Caches usw.).
Nochmals vielen Dank ScripterRon! Vielen Dank, dass Sie mir viele meiner Fragen beantwortet und mir diesen Crashkurs gegeben haben! Ich war in der Lage, mit etwa 1 M/s faul zu hashen, daher verstehe ich nicht, wie die einfache Blockverifizierung so intensiv ist. Entweder etwas passt oder nicht, oder? Haben Sie Statistiken über die durchschnittliche Blocküberprüfungszeit im Vergleich zur Hash-Leistung? Ich kann definitiv verstehen, wie ein DDoS-Angriff mit fehlerhaften Blöcken einen feststecken kann, aber ich verstehe nicht, wie mühsam die Überprüfung der Blöcke guter Akteure ist, außer auf der Festplatte. Vielen Dank im Voraus!
Die Überprüfung der Signatur ist CPU-intensiv, da Sie zuerst den öffentlichen Schlüssel von der Adresse ableiten und dann den öffentlichen Schlüssel verwenden müssen, um die Signatur zu überprüfen. Der digitale Überprüfungsprozess verwendet sehr große Zahlen und komplexe mathematische Formeln. Weitere Informationen finden Sie unter en.bitcoin.it/wiki/Transactions .
Ich sollte hinzufügen, dass die Transaktionsverifizierung kein Problem ist, wenn Sie alle 10 Minuten einen neuen Block erhalten. Es wird nur dann zu einem Problem, wenn Sie die anfängliche Blockkette herunterladen (entweder von bootstrap.dat oder einem Peer-Knoten). Es wird dann zu einem entscheidenden Faktor dafür, wie schnell sich der neue Knoten mit dem Netzwerk synchronisieren kann. Und Sie haben Recht, das Abgleichen von Transaktionseingaben mit nicht ausgegebenen Ausgaben ist plattenintensiv. Es ist also eine Kombination aus der Prüfung von Signaturen, dem Abgleich von Eingaben mit Ausgaben und dem Erstellen neuer Datenbankeinträge.
Danke wie immer ScripterRon! Sie haben mir so sehr geholfen mit meinem Verständnis von Bitcoin! Ist der öffentliche Schlüssel nicht nur mit der Signatur verknüpft (oder habe ich mich wieder einmal verlesen?)? Kann ein einzelner Hash oder eine "Entschlüsselung" nicht sehr billig durchgeführt werden? Vielen Dank schon mal im Voraus!
Ich komme gerade erst in diesen Bereich, also kann ich es dir nicht sicher sagen. Aber ich denke, der öffentliche Schlüssel ist nicht in der Eingabe, also haben sie nur die Adresse aus der referenzierten Ausgabe. Der Code muss also zunächst aus der Adresse und den signierten Daten den öffentlichen Schlüssel ableiten. Sobald es den öffentlichen Schlüssel hat, kann es die Signaturprüfung durchführen. Ich denke, es wurde auf diese Weise gemacht, um die Größe der Transaktion zu reduzieren (öffentliche Schlüssel sind sehr lang).

Der Transaktionsverifizierungsprozess ist nicht besonders CPU- oder speicherintensiv. Der CPU-intensive Teil ist das Netzwerkprotokoll, das benötigt wird, um einen globalen Konsens über eine einzige Gesamtreihenfolge von Transaktionen zu erzielen. Das nennt man „Mining“ und dabei sollen die spezialisierten ASICs verschiedener Unternehmen wie kncminer helfen.

Es hängt davon ab, welchen Teil des Prozesses Sie betrachten. Wenn Sie sich das Mining-Ende ansehen, dann ist es definitiv am CPU-intensivsten, den richtigen Block-Hash zu finden. Wenn Sie sich jedoch die Peer-Knoten ansehen, die Blöcke erhalten, dann ist die Transaktionsverifizierung am CPU-intensivsten. Dies ist einer der Gründe, warum es so lange dauert, bis ein neuer Peer die Blockchain verarbeitet.
Danke, Neal Gafter! Würden Sie erklären, warum die Verifizierung nicht teuer ist und warum der Netzwerkteil teuer ist? Es scheint, dass jedes einzelne Teil schnell sein könnte, aber mit höherer Überprüfungsfrequenz weniger schnell werden wird. Vielen Dank im Voraus!
Ich habe die gesamte Blockchain heruntergeladen, auf einen kürzlich formatierten Offline-Rechner kopiert und musste immer noch warten (eine Stunde? 2? Ich kann mich jetzt nicht erinnern), bis alles fertig war - daher dauert die eindeutige Überprüfung sehr lange Zeit und CPU. Ich habe einmal gelesen, dass der Prozess beschleunigt werden könnte, wenn der QT-Client die GPU zur Überprüfung verwendet, genau wie sie für das Mining verwendet wird, aber bisher habe ich keine Implementierung dieser Idee gesehen ...