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.
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)0x01
Kompressionsmarker (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.
0x02/0x03 + x_coordinate(32B)
0x04 + x_coordinate(32B) + y_coordinate(32B)
ABHISHEK
Jakob C.