[英]How do I generate an Ethereum public key from a known private key using Python
我有兴趣使用 Python 从私钥生成以太坊公钥。 我试过谷歌搜索并找到了一些资源,但这些都是 JS 没有使用 Python 本身。
一个账户的地址是公钥的 keccak256 的最后 20 个字节。 以太坊中的大多数任务都需要地址而不是公钥。
使用pip install eth-keys
安装 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'
以防万一问题是想询问地址...
从头开始生成地址有更简单的方法,但由于我们已经完成了 eth-keys 设置,这是一个单行:
assert pub_key.to_checksum_address() == '0xa0784ba3fcea41fD65a7A47b4cc1FA4C3DaA326f'
使用pyethereum
测试Python 3.7代码:
from ethereum.utils import privtoaddr
pk = '44b9abf2708d9adeb1722dcc1e61bef14e5611dee710d66f106e356a111bef90'
pubkey = privtoaddr(pk).hex()
print(pubkey)
# a0784ba3fcea41fd65a7a47b4cc1fa4c3daa326f
要安装pyethereum
(在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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.