¿Obtener la dirección pública y la clave asociada con una de las cuentas de Ganache usando Web3.js?

¿Cómo obtengo la dirección pública y la clave (no la dirección ni la cuenta) de una de las cuentas que muestra Ganache al iniciar usando Web3.js? Lo necesito para una prueba de unidad que estoy creando que prueba la firma de transacciones en la red Ganache, pero sin usar Metamask. Cuando se inicia Ganache, veo 10 cuentas y 10 claves privadas junto con las palabras mnemotécnicas, pero ninguna dirección pública. Ya estoy recuperando la lista de cuentas de Ganache usando web3.eth.getAccounts() , pero no sé cómo obtener la dirección pública y la clave asociadas con una cuenta en particular.

De acuerdo con esta publicación (preguntas y respuestas), no hay un uso práctico para la clave pública (en lo que respecta al usuario, usted, en este caso). La dirección, que ya sabe cómo recuperar, es suficiente para todas sus necesidades.

Respuestas (1)

  1. inicie ganache-cli con el parámetro --acctKeys ganache-accounts.json, guardará todos los datos sobre cuentas/claves

luego use este script para extraer la clave pública:

#!/usr/bin/env python
importar json
desde pprint importar pprint
sistema de importación
archivo = sys.argv[1]
Imprimir archivo
json_data=abrir(archivo).leer()
datos = json.loads(json_data)
para una entrada de datos['direcciones']:
    pubkeyArray=datos['direcciones'][a]['clavepública']['datos']
    pubkey=""
    para pbk en pubkeyArray:
        clave de publicación = "%s%02x" % (clave de publicación, pbk)
    imprimir "Dirección:%s" %a
    imprimir "Clave pública: 0x% s" % pubkey
    imprimir "Clave privada: 0x% s" % datos ['claves_privadas'] [a]
  1. pasar el nombre de archivo ganache-accounts.json al script

  2. producirá una salida de la siguiente manera:

./scripts/ganache-keys.py ./keystore/ganache-accounts.json
./keystore/ganache-accounts.json
Dirección:0xb32613b32fd6f358259194c0a34e689e7eb9d88c
Clave pública: 0xf93e5a7cbd7b76cb3e2c1b362039397fbba00a0cbea1eccdf00e0e1e64d575411ae32bc6daf297aba31707fea7f84f20adb82c325fc33d347b54cf5fcd2bd71a
Clave privada: 0x30963a4383bfb78f0ecf290b1f3879a9c70903481e865f9e5d2df66ced64395d
Dirección:0x7c06350cb8640a113a618004a828d3411a4f32d3
Clave pública: 0xdcaa05bb5a82e0d1675d7f9b12b4d1948122500fc35ca7dee2edc99f2a3af2c5d6498f80dfbc0ab7c624793919aee8e4651adeefa7951c96438cad7838fbb9ea
Clave privada: 0x5641128d7d895f185d91fa2b83dffe646eede097d1a85c3247debc2b75219d92