This commit is contained in:
jl777
2017-01-20 21:26:46 +02:00
parent 92bd71eed0
commit 368da363c4
4 changed files with 22 additions and 13 deletions

View File

@@ -406,29 +406,32 @@ int32_t komodo_notaries(uint8_t pubkeys[64][33],int32_t height);
char *bitcoin_address(char *coinaddr,uint8_t addrtype,uint8_t *pubkey_or_rmd160,int32_t len);
uint32_t komodo_interest_args(int32_t *txheightp,uint32_t *tiptimep,uint64_t *valuep,uint256 hash,int32_t n);
int32_t komodo_minerids(uint8_t *minerids,int32_t height);
int32_t komodo_kvsearch(uint8_t value[IGUANA_MAXSCRIPTSIZE],uint8_t *key,int32_t keylen);
int32_t komodo_kvsearch(int32_t *heightp,uint8_t value[IGUANA_MAXSCRIPTSIZE],uint8_t *key,int32_t keylen);
Value kvsearch(const Array& params, bool fHelp)
{
Object ret; uint8_t value[IGUANA_MAXSCRIPTSIZE],key[IGUANA_MAXSCRIPTSIZE]; int32_t j,valuesize,keylen;
Object ret; uint8_t value[IGUANA_MAXSCRIPTSIZE],key[IGUANA_MAXSCRIPTSIZE]; int32_t j,height,valuesize,keylen;
if (fHelp || params.size() != 1 )
throw runtime_error("kvsearch key");
LOCK(cs_main);
if ( (keylen= (int32_t)strlen(params[0].get_str().c_str())) > 0 )
{
ret.push_back(Pair("coin",(char *)(ASSETCHAINS_SYMBOL[0] == 0 ? "KMD" : ASSETCHAINS_SYMBOL)));
ret.push_back(Pair("height", (int64_t)chainActive.Tip()->nHeight));
ret.push_back(Pair("currentheight", (int64_t)chainActive.Tip()->nHeight));
ret.push_back(Pair("key",params[0].get_str()));
ret.push_back(Pair("keylen",keylen));
if ( keylen < sizeof(key) )
{
memcpy(key,params[0].get_str().c_str(),keylen);
if ( (valuesize= komodo_kvsearch(value,key,keylen)) >= 0 )
if ( (valuesize= komodo_kvsearch(&height,value,key,keylen)) >= 0 )
{
std::string val; char *valuestr;
val.resize(valuesize);
valuestr = (char *)val.data();
memcpy(valuestr,value,valuesize);
ret.push_back(Pair("height",height));
ret.push_back(Pair("value",val));
ret.push_back(Pair("valuesize",valuesize));
} else ret.push_back(Pair("error",(char *)"cant find key"));
} else ret.push_back(Pair("error",(char *)"key too big"));
} else ret.push_back(Pair("error",(char *)"null key"));