如何使用Python从已知的私钥生成以太坊公钥

时间:2018-08-21 09:33:54

标签: python ethereum

我对使用Python从私钥生成以太坊公钥感兴趣。我已经尝试使用Google搜索,发现了一些资源,但是使用Python本身这些都不是JS。

3 个答案:

答案 0 :(得分:3)

公钥与地址

帐户的地址是公钥的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'

获取地址

以防万一,问题是想询问地址...

有更简单的方法来generate the address from scratch,但是由于我们已经完成了eth-keys的设置,因此这是一种方法:

assert pub_key.to_checksum_address() == '0xa0784ba3fcea41fD65a7A47b4cc1FA4C3DaA326f'

答案 1 :(得分:1)

使用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

答案 2 :(得分:0)

评论太久。 我不确定以太坊的工作方式以及您面临的确切问题。

但是一个快速的Google给了我这些链接

A reddit answer to something similar you are asking

所引用的链接似乎已断开,所以我做了一些回溯,这里是probable link to the referred code

python library for ethereum

相关问题