I'm interested in generating an Ethereum public key from a private key using Python. I've tried googling around and found some resources but these are all JS nothing using Python itself.
An account's address is the last 20 bytes of the keccak256 of the public key. Most tasks in Ethereum require the address instead of the public key.
Install eth_keys with pip install eth-keys
from eth_keys import keys
from eth_utils import decode_hex
priv_key_bytes = decode_hex('0x44b9abf2708d9adeb1722dcc1e61bef14e5611dee710d66f106e356a111bef90')
priv_key = keys.PrivateKey(priv_key_bytes)
pub_key = priv_key.public_key
assert pub_key.to_hex() == '0xcabb8a3a73ea4a03d025a6ac2ebbbb19a545e4fb10e791ec9b5c942d77aa20760f64e4604cdfbec665435a382a8c9bfd560c6f0fca8a2708cda302f658368b36'
Just in case the question was intending to ask about the address...
There are simpler ways to generate the address from scratch , but since we've already done the eth-keys setup, this is a one-liner:
assert pub_key.to_checksum_address() == '0xa0784ba3fcea41fD65a7A47b4cc1FA4C3DaA326f'
Tested Python 3.7 code using pyethereum
:
from ethereum.utils import privtoaddr
pk = '44b9abf2708d9adeb1722dcc1e61bef14e5611dee710d66f106e356a111bef90'
pubkey = privtoaddr(pk).hex()
print(pubkey)
# a0784ba3fcea41fd65a7a47b4cc1fa4c3daa326f
To install pyethereum
(tested in Ubuntu 16.04):
sudo apt-get install libssl-dev build-essential automake pkg-config libtool libffi-dev libgmp-dev libyaml-cpp-dev
pip install ethereum
Too long for a comment. I'm not exactly sure how ethereum works and what exact problem you are facing.
But a quick google gave me these links
A reddit answer to something similar you are asking
The link which is being referred seems broken, so I did some backtracking, and here is the probable link to the referred code
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.