How do I get the public address & key (not address or account) for one of the accounts that Ganache displays on startup using Web3.js? I need it for a unit test I'm creating that tests transaction signing on the Ganache network, but without using Metamask. When Ganache starts up I see 10 accounts and 10 private keys along with the Mnemonic words, but no public addresses. I am already retrieving the accounts list from Ganache using web3.eth.getAccounts(), but I don't know how to get the public address & key associated with a particular account.
-
According to this post (question and answers), there is no practical use for the public-key (as far as the user - you, in this case - is concerned). The address, which you already know how to retrieve, is sufficient for all your needs.– goodvibrationCommented Sep 24, 2018 at 8:06
Add a comment
|
1 Answer
- start ganache-cli with --acctKeys ganache-accounts.json parameter it will save all the data about accounts/keys
then use this script to extract public key :
#!/usr/bin/env python import json from pprint import pprint import sys file = sys.argv[1] print file json_data=open(file).read() data = json.loads(json_data) for a in data['addresses']: pubkeyArray=data['addresses'][a]['publicKey']['data'] pubkey="" for pbk in pubkeyArray: pubkey = "%s%02x" % (pubkey,pbk) print "Address:%s" % a print "Public Key:0x%s" % pubkey print "Private Key:0x%s" % data['private_keys'][a]
pass file name ganache-accounts.json to the script
it will produce output as follows :
./scripts/ganache-keys.py ./keystore/ganache-accounts.json ./keystore/ganache-accounts.json Address:0xb32613b32fd6f358259194c0a34e689e7eb9d88c Public Key:0xf93e5a7cbd7b76cb3e2c1b362039397fbba00a0cbea1eccdf00e0e1e64d575411ae32bc6daf297aba31707fea7f84f20adb82c325fc33d347b54cf5fcd2bd71a Private Key:0x30963a4383bfb78f0ecf290b1f3879a9c70903481e865f9e5d2df66ced64395d Address:0x7c06350cb8640a113a618004a828d3411a4f32d3 Public Key:0xdcaa05bb5a82e0d1675d7f9b12b4d1948122500fc35ca7dee2edc99f2a3af2c5d6498f80dfbc0ab7c624793919aee8e4651adeefa7951c96438cad7838fbb9ea Private Key:0x5641128d7d895f185d91fa2b83dffe646eede097d1a85c3247debc2b75219d92