1

I am looking for the differences between the creation of Doge public keys and Bitcoin public keys when inserting a private key.

I am trying to make a small web-app that signs messages. There are a tons of them with bitcoin. They receive a private key and creates the public key from there. When I enter a Doge private key to the input the output is still a Bitcoin public key (Starts with 1 for example instead of D).

2

Dogecoin uses the same public key cryptography ECC with curve secp256k1, so public key generation is the same.

When I enter a Doge private key to the input the output is still a Bitcoin public key (Starts with 1 for example instead of D).

You are confusing addresses with public keys. The 1 or the D is just a prefix to an address, depending on the type of address, see https://en.bitcoin.it/wiki/List_of_address_prefixes

After you generate the public key, you have to do the following in order to get an address:

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

Dogecoin uses different prefixes for the different types of addresses, see https://github.com/dogecoin/dogecoin/blob/master/src/chainparams.cpp (note these are for mainnet only):

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

Changing the address prefixes should yield compatible addresses.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.