无法在测试网上使用 Parity 和 Web3 解锁帐户

Unable to unlock account with Parity and Web3 on the testnet

我是 运行 Debian (Jessie) 上测试网 (Ropsten) 的本地奇偶校验节点。我正在使用 web3.py 连接到此节点并创建交易。

我创建了一个新帐户:

parity account new --chain ropsten

我是 运行 我的奇偶校验节点,具有以下选项

/usr/bin/parity --chain ropsten --no-ui --rpcapi 'eth,web3,personal' --jsonrpc-interface 127.0.0.1 --bootnodes 'enode://20c9ad97c081d63397d7b685a412227a40e23c8bdc6688c6f37e97cfbc22d2b4d1db1510d8f61e6a8866ad7f0e17c02b14182d37ea7c3c8b9c2683aeb6b733a1@52.169.14.227:30303,enode://6ce05930c72abc632c58e2e4324f7c7ea478cec0ed4fa2528982cf34483094e9cbc9216e7aa349691242576d552a2a56aaeae426c5303ded677ce455ba1acd9d@13.84.180.240:30303'

我测试这个节点的时候,运行没问题,看下面python shell:

Python 3.4.2 (default, Oct  8 2014, 10:45:20) 
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from web3 import Web3, KeepAliveRPCProvider, IPCProvider
>>> web3 = Web3(KeepAliveRPCProvider(host='localhost', port='8545'))
>>> web3.eth.blockNumber
1012932

但是,当我尝试解锁我的帐户时,它 returns 错误(当然有正确的帐户哈希和密码)

>>> web3.personal.unlockAccount('my-account-hash', 'some-password')
False

当我检查它是否真的在我的帐户列表中时,我得到以下空数组:

>>> web3.personal.listAccounts
[]

但是,当我检查奇偶校验时:

parity account list --chain ropsten

它列出了 3 个帐户。为什么它没有显示在 listAccounts 中?我是否必须以某种方式使帐户可用?

据我所知,当您使用 parity 创建帐户时,它会创建一个以太坊帐户并将该密钥和密码存储在 parity 的密钥库文件中。该文件可能不同于 web3 调用正在访问的密钥库文件,即 geth 密钥库文件。这似乎是您的情况中最可能的原因。

尝试找到奇偶校验的密钥库文件和 web3 调用指向的密钥库文件。 一般parity的keystore会位于
~/.local/share/io.parity.ethereum/keys/
以及安装目录或主目录中的 geths。
当你找到它们时,你可以通过手动复制来获取访问这些密钥的权限。