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.
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.
Dorian Lee
John Stanford
Dorian Lee
John Stanford
Dorian Lee
Ismael
John Stanford