¿Cómo se crea una clave pública Doge a partir de una clave privada? [cerrado]

Estoy buscando las diferencias entre la creación de claves públicas de Doge y las claves públicas de Bitcoin al insertar una clave privada.

Estoy tratando de hacer una pequeña aplicación web que firme mensajes. Hay un montón de ellos con bitcoin. Reciben una clave privada y crean la clave pública a partir de ahí. Cuando ingreso una clave privada de Doge en la entrada, la salida sigue siendo una clave pública de Bitcoin (comienza con 1, por ejemplo, en lugar de D).

Respuestas (1)

Dogecoin utiliza la misma criptografía de clave pública ECC con curva secp256k1, por lo que la generación de clave pública es la misma.

Cuando ingreso una clave privada de Doge en la entrada, la salida sigue siendo una clave pública de Bitcoin (comienza con 1, por ejemplo, en lugar de D).

Estás confundiendo direcciones con claves públicas. El 1 o la D es solo un prefijo de una dirección, según el tipo de dirección, consulte https://en.bitcoin.it/wiki/List_of_address_prefixes

Después de generar la clave pública, debe hacer lo siguiente para obtener una dirección:

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

Dogecoin usa diferentes prefijos para los diferentes tipos de direcciones, consulte https://github.com/dogecoin/dogecoin/blob/master/src/chainparams.cpp (tenga en cuenta que estos son solo para la red principal):

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

Cambiar los prefijos de dirección debería generar direcciones compatibles.