在 web3.py 中的 personal.newAccount 之后访问私钥

Posted

技术标签:

【中文标题】在 web3.py 中的 personal.newAccount 之后访问私钥【英文标题】:Access private key after personal.newAccount in web3.py 【发布时间】:2018-12-01 21:07:40 【问题描述】:

我在 python 3.6 中使用web3.py 创建了一个以太坊帐户:

web3.personal.newAccount('password')

如何访问该帐户的私钥?

【问题讨论】:

【参考方案1】:

当您在节点上创建帐户时(w3.personal.newAccount() 会这样做),节点 hosts the private key;不打算直接访问它。

如果您必须具有对私钥的本地访问权限,您可以:

使用w3.eth.account.create(extra_entropy) 生成一个新的 Extract the existing key from your node's keyfile。

如果节点是geth,则提取密钥如下所示:

with open('~/.ethereum/keystore/UTC--...4909639D2D17A3F753ce7d93fa0b9aB12E') as keyfile:
    encrypted_key = keyfile.read()
    private_key = w3.eth.account.decrypt(encrypted_key, 'correcthorsebatterystaple')

安全提示——不要将密钥或密码保存在任何地方,尤其是共享源文件中

【讨论】:

当我使用这个 web3.eth.account.create(extra_entropy) 时,它不会在我的节点中创建新帐户 没错。但是您可以使用 w3.eth.account.encrypt() 生成大多数节点可以导入的 geth 样式的密钥文件。有关参数和示例,请参阅eth-account.readthedocs.io/en/latest/…。

以上是关于在 web3.py 中的 personal.newAccount 之后访问私钥的主要内容,如果未能解决你的问题,请参考以下文章

在 ganache 上调用函数时出现 Web3.py abi keyerror

Web3.py - 即使安装了 web3,也无法导入“web3”

用 Python 中的 web3.py 库开发 Dapp

在 web3.py 中检测还原的事务

安装 web3.py 时如何消除错误

如何获取事件日志 Web3.py?