¿Existe alguna biblioteca JS liviana que genere direcciones Ethereum a partir de claves privadas de 256 bits?

Tengo una clave privada de 256 bits y quiero obtener su dirección pública sin tener que instalar Geth (que es bastante pesado) en la máquina. ¿Hay alguna pequeña JS lib que haga eso?

Respuestas (1)

Quieres que sea ligero y Javascript... ¿cómo es esto? https://github.com/ethereumjs/ethereumjs-util

npm install ethereumjs-util

Ejemplo:

var ethUtils = require('ethereumjs-util')
var privateKey = new Buffer([234, 84, 189, 197, 45, 22, 63, 136, 201, 58, 176, 97, 87, 130, 207, 113, 138, 46, 251, 158, 81, 167, 152, 154, 171, 27, 8, 6, 126, 156, 28, 95])
var address = ethUtils.privateToAddress(privateKey).toString('hex')
// address will be 2f015c60e0be116b1f0cd534704db9c92118fb6a

Si tiene la clave privada en hexadecimal, puede usar el constructor Buffer con el segundo argumento como 'hex', por ejemplo:

var privateKey = new Buffer('ea54bdc52d163f88c93ab0615782cf718a2efb9e51a7989aab1b08067e9c1c5f', 'hex')

Tiene algunas funciones de utilidad más de las que solicitó, pero necesitará al menos una biblioteca criptográfica (y, a su vez, una biblioteca de números grandes).

Hmm no tan impresionante. Ese archivo parece depender de la instalación de bibliotecas C (¿wtf?) Que no se instalan en absoluto. Necesito algo compatible con el navegador... ¿podría buscar las partes relevantes?
ethereumjs-accounts puede ayudar, pero será más pesado.
ethereumjs-tx en realidad puede ser un término medio que está buscando, compatible con el navegador y más ligero que las cuentas de ethereumjs.
No estoy seguro de cómo eso ayuda, se supone que debo crear una transacción falsa y obtener la dirección pública de la clave privada. :|
ethereumjs-tx dice que crea una respuesta ethUtilglobal, por lo que debería poder usar privateToAddresscomo respuesta.