message: Add getmempoolentry RPC call
diff: @@ -443,6 +443,38 @@ UniValue getmempooldescendants(const UniValue &params, bool fHelp)
  }
  }
  +UniValue getmempoolentry(const UniValue &params, bool fHelp)
  +{
  + if (fHelp || params.size() != 1)
  + {
  + throw runtime_error("getmempoolentry txid\n"
  + "\nReturns mempool data for given transaction\n"
  + "\nArguments:\n"
  + "1. \"txid\" (string, required) The transaction id (must be in mempool)\n"
  + "\nResult:\n"
  + "{ (json object)\n" +
  + EntryDescriptionString() + "}\n"
  + "\nExamples\n" +
  + HelpExampleCli("getmempoolentry", "\"mytxid\"") +
  + HelpExampleRpc("getmempoolentry", "\"mytxid\""));
  + }
  +
  + uint256 hash = ParseHashV(params[0], "parameter 1");
  +
  + READLOCK(mempool.cs);
  +
  + CTxMemPool::txiter it = mempool.mapTx.find(hash);
  + if (it == mempool.mapTx.end())
  + {
  + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Transaction not in mempool");
  + }
  +
  + const CTxMemPoolEntry &e = *it;
  + UniValue info(UniValue::VOBJ);
  + entryToJSON(info, e);
  + return info;
  +}
  +
  UniValue getblockhash(const UniValue &params, bool fHelp)
  {
  if (fHelp || params.size() != 1)
  @@ -1462,7 +1494,7 @@ static const CRPCCommand commands[] = {
  {"blockchain", "getdifficulty", &getdifficulty, true},
  {"blockchain", "getmempoolancestors", &getmempoolancestors, true},
  {"blockchain", "getmempooldescendants", &getmempooldescendants, true},
  - {"blockchain", "getmempoolinfo", &getmempoolinfo, true},
  + {"blockchain", "getmempoolentry", &getmempoolentry, true}, {"blockchain", "getmempoolinfo", &getmempoolinfo, true},
  {"blockchain", "getorphanpoolinfo", &getorphanpoolinfo, true},
  {"blockchain", "getrawmempool", &getrawmempool, true}, {"blockchain", "gettxout", &gettxout, true},
  {"blockchain", "gettxoutsetinfo", &gettxoutsetinfo, true}, {"blockchain", "verifychain", &verifychain, true},
  