Wie berechnet man die Signaturerzeugung, die Signaturüberprüfung und die Transaktionsüberprüfungsgeschwindigkeit?

Ich habe diesen Beitrag zur Bitcoin -Skalierbarkeit gelesen . Soweit ich die Abfolge der Schritte in Bitcoin verstehe, sollte die vereinfachte Version der Durchführung der Transaktion wie folgt aussehen:

Auf der Seite des Absenders:

  1. Transaktion erstellen
  2. Signatur erzeugen und unterschreiben
  3. Senden Sie die Transaktion an Peers

Auf Peers Seite:

  1. Holen Sie sich die Transaktion
  2. Signatur überprüfen
  3. Transaktion überprüfen
  4. Pass zum nächsten Peer. - ???

//wenn ein Peer ein Miner ist

  1. Sammeln Sie Transaktionen in Blöcken
  2. Berechnen Sie PoW für den Block
  3. Wenn er gefunden wird, füge ihn seiner Version der Blockchain hinzu
  4. Übertrage den Block (mit Nonce und Ziel)

Andere Kollegen:

  1. Nimm den Block
  2. Stellen Sie sicher, dass PoW für Block gültig ist
  3. Fügen Sie den Block in ihre Version der Blockchain ein

Ich möchte die Leistungsgeschwindigkeit von Bitcoin bei jedem Schritt im Allgemeinen verstehen oder wenn möglich meine Spezifikationen des Laptops angeben. Wie kann ich die Signaturerzeugung, Signaturüberprüfung, Transaktionsüberprüfung, Block-PoW-Überprüfung, **usw . Geschwindigkeit berechnen ?**

Typischerweise ist es einfach, Zeiten zu messen ($end - $start) und sie irgendwohin zu schicken. Gibt es eine bestimmte Software, die Sie testen möchten?
Danke für deine Antwort. Nein, ich hatte nichts Besonderes im Sinn, aber ich habe mehr Erfahrung mit Python und C++, also dachte ich an diese Implementierungen. Ja, wie Sie sagten, dachte ich daran, die Start- und Stopp-Zeitstempel zwischen Teilen des Codes zu finden, die für die Signaturgenerierung / -überprüfung und Transaktionsüberprüfung zuständig sind, und sie dann einfach voneinander zu subtrahieren.

Antworten (1)

All diese Dinge, die Sie berechnen möchten, hängen stark nicht nur von der verwendeten Hardware, sondern auch von der verwendeten Software ab. Zum Beispiel können Sie Signaturen auf viele verschiedene Arten generieren und jede Bitcoin-Brieftasche generiert sie ein wenig anders. Die Leistung der Signaturgenerierung von Java in bitcoinJ wird anders sein als die von Go in btcwallet wird anders sein als die von C++ in bitcoin core und so weiter. Darüber hinaus haben deterministische Signaturen ein anderes Leistungsprofil als nicht deterministische Signaturen und so weiter.

Das heißt, wenn Sie wirklich wollen, können Sie einige Leistungstests für jeden von ihnen durchführen, obwohl nicht alle von ihnen existieren. Für die Überprüfung von Signaturen in btcd gibt es einen Benchmark-Test , den Sie verwenden können.

Beachten Sie, dass die Blocküberprüfung (oder -erstellung) notwendigerweise die Überprüfung aller Transaktionen im Block sowie die Überprüfung des Proof-of-Work bedeutet. Die Überprüfung des Proof-of-Work ist übrigens wirklich so einfach wie die Berechnung eines Double-Sha256 oder eines einzelnen „Hash“, das Mining-Equipment Milliarden oder Billionen pro Sekunde ausführen kann.

Danke für deine Antwort. Um ehrlich zu sein, habe ich Go noch nie benutzt, ich habe grundsätzlich akademische Erfahrung mit Python und C++. Ich habe zwar Go installiert, aber selbst nach der Anleitung von github kann ich immer noch nicht richtig herausfinden, wie dieser Benchmark-Test ausgeführt wird.
Es sollte ziemlich einfach sein. Versuchen Sie go test -bench BenchmarkSigVerifyes im Verzeichnis btcd/btcec.
Entschuldigung für die Störung, also habe ich, wie Sie sagten, go test -bench BenchmarkSigVerifyeinen Fehler erhalten: go tool: no such tool "6g"Wie ich gelesen habe, kann es ein Problem mit .bashrc sein, also habe ich es überprüft export GOROOT=/usr/lib/gound es war da, aber um sicherzugehen, habe ich es getan source .bashrc, immer noch der gleiche Fehler
Kommt ganz auf dein Setup an. Wo auch immer sich das btcd-Repository befindet, stellen Sie sicher, dass der GOPATH dorthin zeigt. Normalerweise ist dies /home/<Benutzername>/go. export GOPATH=/home/myusername/gosollte es einrichten.