Wie finden Sie den öffentlichen Schlüssel, der zum Signieren einer Transaktion verwendet wird?

Ich versuche herauszufinden, wie Sie den öffentlichen Schlüssel finden, der zum Signieren einer Transaktion von v, r und s verwendet wird. Bevor es jemand sagt, dies ist kein Duplikat von Get public key of any ethereum account . Diese Frage fragt, wie Sie es nur von der Adresse aus tun, nicht von einer Transaktion. Die Antworten auf diese Frage sagen nur, dass dies mit einigen Bibliotheken möglich ist, erklären aber nicht, wie die Mathematik tatsächlich funktioniert.

Ich versuche, den Schritten im Wikipedia-Artikel zu ECDSA ( https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm ) zu folgen. Ich bin bis zu Schritt 6 des Signaturüberprüfungsalgorithmus gut. Wir können u1 und u2 von r, s und der Transaktion selbst erhalten. Der Generatorpunkt ist Teil der secp256k1-Spezifikation, aber ich sehe nicht, woher der öffentliche Schlüssel (Q_A im Wikipedia-Artikel) stammt. Wir haben v noch nicht verwendet (mir ist nicht klar, was es ist), aber es ist nur ein Byte und wir haben mehr als ein Byte verloren, als wir vom öffentlichen Schlüssel zur Ethereum-Adresse gegangen sind (Keccak-256-Hash, dann 12 Bytes fallen lassen). Ich sehe also nicht, wie uns das zum öffentlichen Schlüssel zurückbringen kann.

Um es klar zu sagen, ich versuche herauszufinden, wie die Mathematik tatsächlich funktioniert. Ich weiß, dass es einige Black-Box-Methoden in Python, JavaScript usw. gibt, aber ich kann nicht herausfinden, wie sie funktionieren. Danke.

Hast du den Transaktionshash?
Ich spreche nicht von einer bestimmten Transaktion, aber im Allgemeinen, ja.
und du meinst nicht die Adresse (Public Key Hash)?
Nein, ich kann die Adresse im Block-Explorer oder in der Geth-Konsole finden. Ich habe das. Ich möchte die ECDSA-Berechnungen selbst durchführen und benötige dafür den öffentlichen Schlüssel.
Sobald der öffentliche Schlüssel in die Adresse gehasht wurde, ist es nahezu unmöglich, ihn zu finden. Außerdem wird die Transaktion nicht mit dem öffentlichen Schlüssel signiert, sondern mit dem privaten Schlüssel.
Ich will nicht unterschreiben. Ich möchte die Signatur überprüfen. Ismael, genau danach habe ich gesucht. Danke! Posten Sie es als Antwort statt nur als Kommentar und ich werde es als Antwort markieren.

Antworten (1)

Der öffentliche Schlüssel des Urhebers kann direkt aus der ECDSA-Signatur berechnet werden. Sobald Sie den öffentlichen Schlüssel haben, können Sie die Adresse einfach berechnen. Der Prozess der Wiederherstellung des öffentlichen Schlüssels des Unterzeichners wird als Wiederherstellung des öffentlichen Schlüssels bezeichnet.