Wie wird ein öffentlicher Doge-Schlüssel aus einem privaten Schlüssel erstellt? [geschlossen]

Ich suche nach den Unterschieden zwischen der Erstellung von öffentlichen Doge-Schlüsseln und öffentlichen Bitcoin-Schlüsseln beim Einfügen eines privaten Schlüssels.

Ich versuche, eine kleine Web-App zu erstellen, die Nachrichten signiert. Es gibt Tonnen von ihnen mit Bitcoin. Sie erhalten einen privaten Schlüssel und erstellen daraus den öffentlichen Schlüssel. Wenn ich einen privaten Doge-Schlüssel in die Eingabe eingebe, ist die Ausgabe immer noch ein öffentlicher Bitcoin-Schlüssel (beginnt beispielsweise mit 1 anstelle von D).

Antworten (1)

Dogecoin verwendet dieselbe Public-Key-Kryptographie ECC mit der Kurve secp256k1, sodass die Public-Key-Generierung dieselbe ist.

Wenn ich einen privaten Doge-Schlüssel in die Eingabe eingebe, ist die Ausgabe immer noch ein öffentlicher Bitcoin-Schlüssel (beginnt beispielsweise mit 1 anstelle von D).

Sie verwechseln Adressen mit öffentlichen Schlüsseln. Die 1 oder das D ist nur ein Präfix für eine Adresse, je nach Art der Adresse, siehe https://en.bitcoin.it/wiki/List_of_address_prefixes

Nachdem Sie den öffentlichen Schlüssel generiert haben, müssen Sie Folgendes tun, um eine Adresse zu erhalten:

BASE58CHECK(<address-prefix> HASH160(<pubKey>))

Dogecoin verwendet unterschiedliche Präfixe für die verschiedenen Arten von Adressen, siehe https://github.com/dogecoin/dogecoin/blob/master/src/chainparams.cpp (beachten Sie, dass diese nur für Mainnet gelten):

base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,30);  // 0x1e
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,22);  // 0x16
base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,158); // 0x9e

Das Ändern der Adresspräfixe sollte kompatible Adressen ergeben.