mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-02-05 11:44:25 +00:00
Implemented keva_list_namespaces.
This commit is contained in:
parent
c72450e983
commit
0d808fcdd0
@ -96,14 +96,96 @@ UniValue keva_namespace(const JSONRPCRequest& request)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
UniValue keva_put(const JSONRPCRequest& request)
|
UniValue keva_list_namespaces(const JSONRPCRequest& request)
|
||||||
{
|
{
|
||||||
CWallet* const pwallet = GetWalletForJSONRPCRequest(request);
|
CWallet* const pwallet = GetWalletForJSONRPCRequest(request);
|
||||||
if (!EnsureWalletIsAvailable (pwallet, request.fHelp))
|
if (!EnsureWalletIsAvailable (pwallet, request.fHelp))
|
||||||
return NullUniValue;
|
return NullUniValue;
|
||||||
|
|
||||||
if (request.fHelp
|
if (request.fHelp)
|
||||||
|| (request.params.size () != 3))
|
throw std::runtime_error (
|
||||||
|
"keva_list_namespace\n"
|
||||||
|
"\nList all namespaces.\n"
|
||||||
|
+ HelpRequiringPassphrase(pwallet) +
|
||||||
|
"\nArguments:\n"
|
||||||
|
"\nResult:\n"
|
||||||
|
"[\n"
|
||||||
|
" xxxxx: display_name (string) namespace id : (string) display name\n"
|
||||||
|
" ...\n"
|
||||||
|
"]\n"
|
||||||
|
"\nExamples:\n"
|
||||||
|
+ HelpExampleCli("keva_list_namespace", "")
|
||||||
|
);
|
||||||
|
|
||||||
|
RPCTypeCheck (request.params, {UniValue::VSTR});
|
||||||
|
|
||||||
|
ObserveSafeMode ();
|
||||||
|
|
||||||
|
std::map<valtype, std::string> mapObjects;
|
||||||
|
{
|
||||||
|
LOCK2 (cs_main, pwallet->cs_wallet);
|
||||||
|
for (const auto& item : pwallet->mapWallet)
|
||||||
|
{
|
||||||
|
const CWalletTx& tx = item.second;
|
||||||
|
if (!tx.tx->IsKevacoin ())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
CKevaScript kevaOp;
|
||||||
|
int nOut = -1;
|
||||||
|
for (unsigned i = 0; i < tx.tx->vout.size (); ++i)
|
||||||
|
{
|
||||||
|
const CKevaScript cur(tx.tx->vout[i].scriptPubKey);
|
||||||
|
if (cur.isKevaOp ())
|
||||||
|
{
|
||||||
|
if (nOut != -1) {
|
||||||
|
LogPrintf ("ERROR: wallet contains tx with multiple name outputs");
|
||||||
|
} else {
|
||||||
|
kevaOp = cur;
|
||||||
|
nOut = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nOut == -1) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!kevaOp.isNamespaceRegistration() && !kevaOp.isAnyUpdate()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const valtype& nameSpace = kevaOp.getOpNamespace();
|
||||||
|
const CBlockIndex* pindex;
|
||||||
|
const int depth = tx.GetDepthInMainChain(pindex);
|
||||||
|
if (depth <= 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const bool mine = IsMine(*pwallet, kevaOp.getAddress ());
|
||||||
|
CKevaData data;
|
||||||
|
if (mine && pcoinsTip->GetNamespace(nameSpace, data)) {
|
||||||
|
std::string displayName = ValtypeToString(data.getValue());
|
||||||
|
mapObjects[nameSpace] = displayName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UniValue res(UniValue::VARR);
|
||||||
|
for (const auto& item : mapObjects) {
|
||||||
|
res.push_back(ValtypeToString(item.first) + " : " + item.second);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
UniValue keva_put(const JSONRPCRequest& request)
|
||||||
|
{
|
||||||
|
CWallet* const pwallet = GetWalletForJSONRPCRequest(request);
|
||||||
|
if (!EnsureWalletIsAvailable (pwallet, request.fHelp)) {
|
||||||
|
return NullUniValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (request.fHelp) {
|
||||||
throw std::runtime_error (
|
throw std::runtime_error (
|
||||||
"keva_put \"namespace\" \"key\" \"value\" (\"create_namespace\")\n"
|
"keva_put \"namespace\" \"key\" \"value\" (\"create_namespace\")\n"
|
||||||
"\nUpdate a name and possibly transfer it.\n"
|
"\nUpdate a name and possibly transfer it.\n"
|
||||||
@ -117,9 +199,7 @@ UniValue keva_put(const JSONRPCRequest& request)
|
|||||||
"\nExamples:\n"
|
"\nExamples:\n"
|
||||||
+ HelpExampleCli ("keva_put", "\"mynamespace\", \"new-key\", \"new-value\"")
|
+ HelpExampleCli ("keva_put", "\"mynamespace\", \"new-key\", \"new-value\"")
|
||||||
);
|
);
|
||||||
|
}
|
||||||
RPCTypeCheck (request.params,
|
|
||||||
{UniValue::VSTR, UniValue::VSTR, UniValue::VSTR, UniValue::VSTR});
|
|
||||||
|
|
||||||
ObserveSafeMode ();
|
ObserveSafeMode ();
|
||||||
|
|
||||||
|
@ -3582,8 +3582,10 @@ extern UniValue removeprunedfunds(const JSONRPCRequest& request);
|
|||||||
extern UniValue importmulti(const JSONRPCRequest& request);
|
extern UniValue importmulti(const JSONRPCRequest& request);
|
||||||
extern UniValue rescanblockchain(const JSONRPCRequest& request);
|
extern UniValue rescanblockchain(const JSONRPCRequest& request);
|
||||||
|
|
||||||
extern UniValue keva_namespace(const JSONRPCRequest& request); // in rpckeva.cpp
|
// in rpckeva.cpp
|
||||||
extern UniValue keva_put(const JSONRPCRequest& request); // in rpckeva.cpp
|
extern UniValue keva_namespace(const JSONRPCRequest& request);
|
||||||
|
extern UniValue keva_put(const JSONRPCRequest& request);
|
||||||
|
extern UniValue keva_list_namespaces(const JSONRPCRequest& request);
|
||||||
|
|
||||||
static const CRPCCommand commands[] =
|
static const CRPCCommand commands[] =
|
||||||
{ // category name actor (function) argNames
|
{ // category name actor (function) argNames
|
||||||
@ -3643,7 +3645,8 @@ static const CRPCCommand commands[] =
|
|||||||
{ "generating", "generate", &generate, {"nblocks","maxtries"} },
|
{ "generating", "generate", &generate, {"nblocks","maxtries"} },
|
||||||
|
|
||||||
// Kevacoin-specific wallet calls.
|
// Kevacoin-specific wallet calls.
|
||||||
{ "kevacoin", "keva_namespace", &keva_namespace, {"namespace", "key", "value", "create_namespace"} },
|
{ "kevacoin", "keva_namespace", &keva_namespace, {"display_name"} },
|
||||||
|
{ "kevacoin", "keva_list_namespaces", &keva_list_namespaces, {} },
|
||||||
{ "kevacoin", "keva_put", &keva_put, {"namespace", "key", "value", "put_value"} }
|
{ "kevacoin", "keva_put", &keva_put, {"namespace", "key", "value", "put_value"} }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user