Python

如何在 python 中生成錢包?

  • October 15, 2018

我正在嘗試編寫一個可以為該使用者生成新錢包的 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,對應於\x15in addr


您可能還對用於私鑰管理的 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'

引用自:https://ethereum.stackexchange.com/questions/32940