Wie erhält ImportPrivateKey die Adresse, wenn ich sie nicht explizit sende?

Angenommen, ich habe gerade Vanitygen verwendet, um diesen Schlüssel zu erstellen:

Pattern: 1a
Address: e1aMGYXuGpUwDGH9gz3ZBs8UH746nRdEk6
Privkey: 5KhCszBi22hEZZixPEQkLAMtUVkxbGaxBFsH7a9iefqrxHmSXgH

Alles, was ich tun musste, um diesen Schlüssel zu importieren, war, den Privkey zu importieren. Nichts mit "Adresse" wurde mit ImportPrivKey benötigt.

Ich würde gerne die technischen Details darüber erfahren, wie die Adresse extrahiert werden kann, wenn alles, was bekannt ist, der private Schlüssel ist.

Ich habe diese und diese Frage gelesen, aber immer noch nicht die geheime Sauce gefunden, wie eine Adresse berechnet oder im Binärformat gefunden wird, wenn nur ein privater Schlüssel vorhanden ist. Wie wird die Adresse allein aus dem privaten Schlüssel extrahiert?

Meine Absicht ist es, diesen Prozess zu lernen und in C# zu implementieren. Beachten Sie, dass ich das Base58Check-Format bereits kenne und der private Schlüssel in keinem Wiki, das ich diesbezüglich gesehen habe, erwähnt wird.

Das Erhalten eines öffentlichen Schlüssels von einem privaten Schlüssel würde in einer Kryptografie-SE besser beantwortet werden, da es nicht Bitcoin-spezifisch ist.
Es könnte Bitcoin-spezifisch gemacht werden, wenn wir den Begriff „Adresse“ durch den Begriff „öffentlicher Schlüssel“ ersetzen – obwohl die Basisfrage (und ihre Antwort) immer noch dieselbe ist.
@DavidPerry Ich breche diese Angewohnheit ... ;) und habe den Beitrag aktualisiert

Antworten (3)

Sie sollten diese Frage auf CryptoSE stellen, da das Problem nicht Bitcoin-spezifisch ist. Ich habe sogar das für dich getan .

Zusamenfassend:

Der öffentliche Schlüssel ist QA=dAG, wobei G der Basispunkt auf der Kurve ist, die in den öffentlich vereinbarten Parametern definiert ist.

Und Sie können die Parameter der Bitcoin-Kurve (secp256k1) im Wiki finden.

Haben Sie sich die Referenzen von http://en.wikipedia.org/wiki/Elliptic_Curve_DSA angesehen, z.

Der Artikel Technischer Hintergrund von Bitcoin-Adressen im Bitcoin-Wiki beschreibt ausführlich, wie eine Bitcoin-Adresse aus einem privaten Schlüssel gewonnen wird .

Privater Schlüssel zur Bitcoin-Adresse

Ich habe das gesehen, aber ich sehe nicht, wo der private Schlüssel zum öffentlichen Schlüssel wird. Das ist nur der öffentliche ECC-Schlüssel zu Base58. Der Artikel, den Sie verlinken, sagt When a private key is imported, it always corresponds to exactly one Bitcoin address. Any utility which performs the conversion can display the matching Bitcoin address. The mathematical conversion is somewhat complex and best left to a computer,... dieser letzte Teil lässt mich hängen, und die Details auf dem anderen Link helfen nicht, soweit ich das beurteilen kann.
Wenn Sie den privaten Schlüssel mit der Ordnung der Kurve multiplizieren, erhalten Sie den öffentlichen Schlüsselpunkt. Wenn xder private Schlüssel Gxder öffentliche Schlüssel ist. Es ist also eine einfache EC-Multiplikation, um den öffentlichen Schlüssel aus dem privaten Schlüssel zu erhalten.
@DavidSchwartz Gibt es dazu eine Einführung für Nicht-Mathematiker? Vielleicht ist secep256 einzigartig, aber ich verstehe diese Variante von ECC noch nicht.
Es wird sprachspezifisch sein. Python: bitcointalk.org/index.php?topic=84238.0 Shell (Bash): github.com/grondilu/bitcoin-bash-tools Und es kann noch andere geben.