Addresses
如何使用 web3.py 生成私有、公共和乙太坊地址?
我想知道使用web3.py為乙太坊生成密鑰的過程。如果我安裝了我的乙太節點,如何生成密鑰。
from web3 import Web3, HTTPProvider, IPCProvider web3 = Web3(HTTPProvider('http://localhost:8545'))
我配置了節點。現在,獲取密鑰(私有、公共和乙太地址)的方法是什麼?請解釋。
您可以使用以下
web3.personal.newAccount(password)
方法:在節點的鑰匙串中生成一個新帳戶,使用給定的
passphrase
. 返回創建帳戶的地址。py>> web3.personal.newAccount('the-passphrase') ['0xd3cda913deb6f67967b99d67acdfa1712c293601']
請注意,出於安全目的,節點不會通過
json-rpc
web3 使用的 api 公開私鑰。我也不知道訪問您的公鑰的方法。如果您想要本地密鑰而不是託管密鑰,請查看:如何在 python 中生成錢包?
編輯:您似乎真的想要兩件事:同時擁有本地密鑰和託管密鑰。為此,您可以在節點中創建密鑰,然後提取它。這涉及找到文件並對其進行解密。
保存密鑰文件的位置取決於您選擇的節點、作業系統和配置。我將假設預設的
geth
密鑰庫文件夾:~/.ethereum/keystore/
您可以使用 eth-account 方法解密密鑰
decrypt()
文件:from eth_account import Account with open('~/.ethereum/keystore/<your_keyfile_name>') as keyfile: keyfile_json = keyfile.read() private_key = Account.decrypt(keyfile_json, '<you-account-password>') # get some extra info about the private_key, like the address: acct = Account.privateKeyToAccount(private_key) ether_address = acct.address
您還詢問了公鑰,這不是乙太坊經常使用的部分,因此沒有很好的 API。您可以使用此非公共 API,但請注意,這些變數名稱可能隨時更改:
acct._key_obj.public_key