Merge pull request #3119 from ethereum/rpc-account

Fix RPC account creation with gaps
This commit is contained in:
chriseth 2017-10-20 17:04:52 +02:00 committed by GitHub
commit 90b0a6efb9
2 changed files with 12 additions and 8 deletions

View File

@ -339,22 +339,25 @@ Json::Value RPCSession::rpcCall(string const& _methodName, vector<string> const&
return result["result"]; return result["result"];
} }
string const& RPCSession::accountCreateIfNotExists(size_t _id) string const& RPCSession::accountCreate()
{
if (_id >= m_accounts.size())
{ {
m_accounts.push_back(personal_newAccount("")); m_accounts.push_back(personal_newAccount(""));
personal_unlockAccount(m_accounts.back(), "", 100000); personal_unlockAccount(m_accounts.back(), "", 100000);
return m_accounts.back();
} }
string const& RPCSession::accountCreateIfNotExists(size_t _id)
{
while ((_id + 1) > m_accounts.size())
accountCreate();
return m_accounts[_id]; return m_accounts[_id];
} }
RPCSession::RPCSession(const string& _path): RPCSession::RPCSession(const string& _path):
m_ipcSocket(_path) m_ipcSocket(_path)
{ {
string account = personal_newAccount(""); accountCreate();
personal_unlockAccount(account, "", 100000); // This will pre-fund the accounts create prior.
m_accounts.push_back(account);
test_setChainParams(m_accounts); test_setChainParams(m_accounts);
} }

View File

@ -121,6 +121,7 @@ public:
Json::Value rpcCall(std::string const& _methodName, std::vector<std::string> const& _args = std::vector<std::string>(), bool _canFail = false); Json::Value rpcCall(std::string const& _methodName, std::vector<std::string> const& _args = std::vector<std::string>(), bool _canFail = false);
std::string const& account(size_t _id) const { return m_accounts.at(_id); } std::string const& account(size_t _id) const { return m_accounts.at(_id); }
std::string const& accountCreate();
std::string const& accountCreateIfNotExists(size_t _id); std::string const& accountCreateIfNotExists(size_t _id);
private: private: