Mit Web3.js die öffentliche Adresse und den Schlüssel abrufen, die einem der Ganache-Konten zugeordnet sind?

Wie erhalte ich die öffentliche Adresse und den Schlüssel (nicht Adresse oder Konto) für eines der Konten, die Ganache beim Start mit Web3.js anzeigt? Ich brauche es für einen Komponententest, den ich erstelle, der die Transaktionssignatur im Ganache-Netzwerk testet, aber ohne Metamask zu verwenden. Wenn Ganache startet, sehe ich 10 Konten und 10 private Schlüssel zusammen mit den mnemonischen Wörtern, aber keine öffentlichen Adressen. Ich rufe bereits die Kontenliste von Ganache mit web3.eth.getAccounts() ab , aber ich weiß nicht, wie ich die öffentliche Adresse und den Schlüssel abrufen kann, die einem bestimmten Konto zugeordnet sind.

Laut diesem Beitrag (Frage und Antworten) gibt es keinen praktischen Nutzen für den öffentlichen Schlüssel (soweit der Benutzer - in diesem Fall Sie - betroffen ist). Die Adresse, die Sie bereits abrufen können, reicht für alle Ihre Bedürfnisse aus.

Antworten (1)

  1. Starten Sie ganache-cli mit dem Parameter --acctKeys ganache-accounts.json. Dadurch werden alle Daten zu Konten/Schlüsseln gespeichert

Verwenden Sie dann dieses Skript, um den öffentlichen Schlüssel zu extrahieren:

#!/usr/bin/env python
json importieren
aus pprint import pprint
System importieren
file = sys.argv[1]
Druckdatei
json_data=open(file).read()
data = json.loads(json_data)
für ein in data['adressen']:
    pubkeyArray=data['Adressen'][a]['publicKey']['data']
    pubkey=""
    für pbk im pubkeyArray:
        pubkey = "%s%02x" % (pubkey,pbk)
    print "Adresse:%s" % a
    print "Öffentlicher Schlüssel:0x%s" % pubkey
    print "Privater Schlüssel:0x%s" % data['private_keys'][a]
  1. Übergeben Sie den Dateinamen ganache-accounts.json an das Skript

  2. Es wird eine Ausgabe wie folgt erzeugt:

./scripts/ganache-keys.py ./keystore/ganache-accounts.json
./keystore/ganache-accounts.json
Adresse: 0xb32613b32fd6f358259194c0a34e689e7eb9d88c
Öffentlicher Schlüssel: 0xf93e5a7cbd7b76cb3e2c1b362039397fbba00a0cbea1eccdf00e0e1e64d575411ae32bc6daf297aba31707fea7f84f20adb82c325fc33d347b54cf5fcd2bd71a
Privater Schlüssel: 0x30963a4383bfb78f0ecf290b1f3879a9c70903481e865f9e5d2df66ced64395d
Adresse: 0x7c06350cb8640a113a618004a828d3411a4f32d3
Öffentlicher Schlüssel: 0xdcaa05bb5a82e0d1675d7f9b12b4d1948122500fc35ca7dee2edc99f2a3af2c5d6498f80dfbc0ab7c624793919aee8e4651adeefa7951c96438cad7838fbb9ea
Privater Schlüssel: 0x5641128d7d895f185d91fa2b83dffe646eede097d1a85c3247debc2b75219d92