Python
如何在 python 中生成錢包?
我正在嘗試編寫一個可以為該使用者生成新錢包的 python 腳本,但我需要能夠保留私鑰。
我遵循了這個:堆棧溢出答案
並得到了這些結果:
import os from ethereum import utils key = utils.sha3(os.urandom(4096)) print key Out[5]: 'L\xf7\x98\x06\xb9\xbe>? c\x88\xd3\xa7\x05\xdd\xe8AtNe\xf3\xe7Pc\xed\xd8L~\\\xcc\rq\x18' raw = utils.privtoaddr(key) print raw Out[7]: 'n\x98V8\x05\xa1\x05\x9b\x18\xca%\xb3\xed\xd0\xd5\xa9I\xf8\x97\x15' add = utils.checksum_encode(raw) print add Out[9]: '0x6e98563805A1059B18ca25B3edd0d5a949f89715'
所以,我能夠得到一個地址,但我不確定我在“key”和“raw”變數中看到了什麼
os是Ubuntu 16.4,執行python 2.7.12
注意這是個人學習的小項目,所以不介意任何“安全”問題
編輯:我能夠使用它來創建我需要的東西,我會留下這個問題,因為我仍然對我的第一種方式感興趣。 https://github.com/vkobel/ethereum-generate-wallet
看起來您使用的是 Python 2。 Py2 表示 latin-1 編碼字元串中的字節。有時您會看到 ascii 字元,有時您會看到類似
\x18
字節 00011000,即十六進制的 18 或整數的 24。私鑰只是一堆背靠背的字節。
raw
是地址的二進製表示。中的地址addr
是十六進製字元串表示(在EIP-55中定義了校驗和)。注意地址的結尾:15
,對應於\x15
inaddr
。您可能還對用於私鑰管理的 web3.py v4 功能感興趣:http ://web3py.readthedocs.io/en/latest/web3.eth.account.html
看起來像:
>>> from web3.auto import w3 >>> acct = w3.eth.account.create('KEYSMASH FJAFJKLDSKF7JKFDJ 1530') >>> acct.address '0x5ce9454909639D2D17A3F753ce7d93fa0b9aB12E' >>> acct.privateKey b"\xb2\\}\xb3\x1f\xee\xd9\x12''\xbf\t9\xdcv\x9a\x96VK-\xe4\xc4rm\x03[6\xec\xf1\xe5\xb3d"
如果您想查看私鑰的十六進制編碼,可以使用:
>>> acct.privateKey.hex() 'b25c7db31feed9122727bf0939dc769a96564b2de4c4726d035b36ecf1e5b364'