簡體   English   中英

如何使用 Python 從已知私鑰生成以太坊公鑰

[英]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

評論太長了。 我不確定以太坊的工作原理以及您面臨的確切問題。

但是一個快速的谷歌給了我這些鏈接

對您所問的類似問題的 reddit 答案

被引用的鏈接似乎已損壞,所以我做了一些回溯,這是引用代碼可能鏈接

以太坊的python庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM