python-3.x 如何使用助记短语创建Web3py帐户

2lpgd968  于 2023-01-27  发布在  Python
关注(0)|答案(2)|浏览(160)

我正在使用web3制作自己的桌面BSC钱包。目前我正在使用

private_key = "private key"
account = w3.eth.account.privateKeyToAccount(private_key)

但我想创建一个像“你好约翰比萨吉他”这样的助记短语的帐户。我一直在寻找,但我不能管理实现它。

wgeznvg7

wgeznvg71#

此时,请求的功能在www.example.com中不“稳定”Web3.py

  • 选项1:使用Ethereum Mnemonic Utils之类的库来处理seed。
  • 选项2:在web3py中启用未经审核的功能
web3 = Web3()
web3.eth.account.enable_unaudited_hdwallet_features()
account = web3.eth.account.from_mnemonic(my_mnemonic, account_path="m/44'/60'/0'/0/0")

注意:默认的account_path也匹配以太坊和BSC。迭代最后一个数字你会得到下一个账户。账户对象可以管理一些操作

account.address # The address for the chosen path
account.key # Private key for that address
5cnsuln7

5cnsuln72#

如果你不在乎使用未经审核的功能,你可以使用这个:

w3.eth.account.enable_unaudited_hdwallet_features()
    account = w3.eth.account.from_mnemonic("hello john pizza guitar")
    print(account.address)

我在文档中找不到任何关于未审计特性的内容,但只要查看这个(帐户)对象的属性,我就可以发现它具有以下属性:

  • 地址
  • 加密
  • 私有密钥
  • 签名哈希
  • 签名事务
  • 签名消息
  • 签名_事务

完整列表(包括私有属性):

['__abstractmethods__', '__bytes__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '__weakref__', '_abc_impl', '_address', '_key_obj', '_private_key', '_publicapi', 'address', 'encrypt', 'key', 'privateKey', 'signHash', 'signTransaction', 'sign_message', 'sign_transaction']

您可能不应该使用这个帐户对象来签署交易,因为它没有文档记录,并且在所有文档示例中,交易通常使用web3.eth.sign_transaction(txn,key)的私钥签署。您可能很难找到有关这个对象及其特性的信息,我偶然发现了这个函数,这要感谢vscode自动完成功能
相反,可以使用此函数来检索私钥,并按照文档中所示的方式使用它

pk = account.privateKey

相关问题