Wie wird der öffentliche Schlüssel aus einem base58-codierten privaten Schlüssel berechnet?

Ich bin diesem Beitrag gefolgt und habe einen privaten Schlüssel für Bitcoin Wallet erstellt. Der Beitrag besagt, dass nach dem Auffinden der zufälligen 256-Bit-Ganzzahl (32 Bytes) die Versionsnummer vorangestellt und die Prüfsumme daran angehängt werden sollte. Dies erzeugt ein 37-Byte-Hex. Jetzt versuche ich, den öffentlichen Schlüssel zu finden, der diesem privaten Schlüssel zugeordnet ist. Ich habe gelernt, dass der PUBLIC-Schlüssel durch Anwenden der ECDSA-secp256k1-Kurve auf den privaten Schlüssel berechnet wird. Aber nur 32 Bytes werden vom ECDSA-Algorithmus als Eingabe akzeptiert.
Also was mache ich falsch?
Vielen Dank im Voraus.

Antworten (1)

Der private Schlüssel ist nur die 32B-Entropie, die Sie generiert haben. Zwischen Wallets kann dieser Private Key in einem Format verschlüsselt werden, das weitere Informationen wie das Netzwerk (main/test/alt) und ob ein komprimierter oder unkomprimierter öffentlicher Schlüssel verwendet wurde, liefert. Diese Kodierung wird als Wallet-Importformat bezeichnet.

  • version(1B) (0x80 Hauptnetz/0xEF Testnetz)
  • privatekey(32B)
  • 0x01Kompressionsmarker (1B)
  • checksum(4B)

https://teachbitcoin.io/wallets.html#/2

Prüfsumme ist alles, was ihr vorausgeht. Die Daten werden schließlich in base58 kodiert.

Um diese WIF-Daten zu nehmen und den öffentlichen Schlüssel zu erzeugen, muss die Brieftasche nur den privaten Schlüssel 32B extrahieren und den öffentlichen Schlüsselpunkt berechnen

  • private_key * Generator_point = public_key(x,y)

Der resultierende x, y öffentliche Schlüsselpunkt ist Ihr öffentlicher Schlüssel. Wenn der Komprimierungsmarkt aktiviert ist, nehmen Sie die x-Koordinate und stellen Sie 0x02 oder 0x03 voran, je nachdem, ob sie gerade oder ungerade ist.

  • komprimierter öffentlicher Schlüssel:0x02/0x03 + x_coordinate(32B)
  • unkomprimierter öffentlicher Schlüssel:0x04 + x_coordinate(32B) + y_coordinate(32B)
Vielen Dank..es war sehr hilfreich!!. Ich fange gerade an, etwas über Blockchain zu lernen. Danke noch einmal :)
Eindrucksvoll! Schön, dass es hilfreich war!