cross chain rpc methods
This commit is contained in:
@@ -761,10 +761,6 @@ char *bitcoin_address(char *coinaddr,uint8_t addrtype,uint8_t *pubkey_or_rmd160,
|
||||
//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 width);
|
||||
int32_t komodo_kvsearch(uint256 *refpubkeyp,int32_t current_height,uint32_t *flagsp,int32_t *heightp,uint8_t value[IGUANA_MAXSCRIPTSIZE],uint8_t *key,int32_t keylen);
|
||||
int32_t komodo_MoM(int32_t *notarized_htp,uint256 *MoMp,uint256 *kmdtxidp,int32_t nHeight,uint256 *MoMoMp,int32_t *MoMoMoffsetp,int32_t *MoMoMdepthp,int32_t *kmdstartip,int32_t *kmdendip);
|
||||
int32_t komodo_MoMoMdata(char *hexstr,int32_t hexsize,struct komodo_ccdataMoMoM *mdata,char *symbol,int32_t kmdheight,int32_t notarized_height);
|
||||
struct komodo_ccdata_entry *komodo_allMoMs(int32_t *nump,uint256 *MoMoMp,int32_t kmdstarti,int32_t kmdendi);
|
||||
uint256 komodo_calcMoM(int32_t height,int32_t MoMdepth);
|
||||
|
||||
UniValue kvsearch(const UniValue& params, bool fHelp)
|
||||
{
|
||||
@@ -801,170 +797,6 @@ UniValue kvsearch(const UniValue& params, bool fHelp)
|
||||
return ret;
|
||||
}
|
||||
|
||||
UniValue allMoMs(const UniValue& params, bool fHelp)
|
||||
{
|
||||
struct komodo_ccdata_entry *allMoMs; uint256 MoMoM; int32_t num,i,kmdstarti,kmdendi; UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR);
|
||||
if ( fHelp || params.size() != 2 )
|
||||
throw runtime_error("allMoMs kmdstarti kmdendi\n");
|
||||
LOCK(cs_main);
|
||||
kmdstarti = atoi(params[0].get_str().c_str());
|
||||
kmdendi = atoi(params[1].get_str().c_str());
|
||||
ret.push_back(Pair("kmdstarti",kmdstarti));
|
||||
ret.push_back(Pair("kmdendi",kmdendi));
|
||||
if ( (allMoMs= komodo_allMoMs(&num,&MoMoM,kmdstarti,kmdendi)) != 0 )
|
||||
{
|
||||
for (i=0; i<num; i++)
|
||||
{
|
||||
UniValue item(UniValue::VOBJ);
|
||||
item.push_back(Pair("MoM",allMoMs[i].MoM.ToString()));
|
||||
item.push_back(Pair("coin",allMoMs[i].symbol));
|
||||
item.push_back(Pair("notarized_height",allMoMs[i].notarized_height));
|
||||
item.push_back(Pair("kmdheight",allMoMs[i].kmdheight));
|
||||
item.push_back(Pair("txi",allMoMs[i].txi));
|
||||
a.push_back(item);
|
||||
}
|
||||
ret.push_back(Pair("MoMs",a));
|
||||
ret.push_back(Pair("MoMoM",MoMoM.ToString()));
|
||||
ret.push_back(Pair("MoMoMdepth",(int)num));
|
||||
free(allMoMs);
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
UniValue MoMoMdata(const UniValue& params, bool fHelp)
|
||||
{
|
||||
char *symbol,hexstr[16384+1]; struct komodo_ccdataMoMoM mdata; int32_t i,kmdheight,notarized_height; UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR);
|
||||
if ( fHelp || params.size() != 3 )
|
||||
throw runtime_error("MoMoMdata symbol kmdheight notarized_height\n");
|
||||
LOCK(cs_main);
|
||||
symbol = (char *)params[0].get_str().c_str();
|
||||
kmdheight = atoi(params[1].get_str().c_str());
|
||||
notarized_height = atoi(params[2].get_str().c_str());
|
||||
ret.push_back(Pair("coin",symbol));
|
||||
ret.push_back(Pair("kmdheight",kmdheight));
|
||||
ret.push_back(Pair("notarized_height",notarized_height));
|
||||
memset(&mdata,0,sizeof(mdata));
|
||||
if ( komodo_MoMoMdata(hexstr,sizeof(hexstr),&mdata,symbol,kmdheight,notarized_height) == 0 )
|
||||
{
|
||||
ret.push_back(Pair("kmdstarti",mdata.kmdstarti));
|
||||
ret.push_back(Pair("kmdendi",mdata.kmdendi));
|
||||
ret.push_back(Pair("MoMoM",mdata.MoMoM.ToString()));
|
||||
ret.push_back(Pair("MoMoMdepth",mdata.MoMoMdepth));
|
||||
ret.push_back(Pair("numnotarizations",mdata.numpairs));
|
||||
if ( mdata.pairs != 0 )
|
||||
{
|
||||
//fprintf(stderr,"mdata.pairs free %p, numpairs.%d\n",mdata.pairs,mdata.numpairs);
|
||||
for (i=0; i<mdata.numpairs; i++)
|
||||
{
|
||||
UniValue item(UniValue::VOBJ);
|
||||
item.push_back(Pair("height",(int)mdata.pairs[i].notarized_height));
|
||||
item.push_back(Pair("MoMoMoffset",(int)mdata.pairs[i].MoMoMoffset));
|
||||
a.push_back(item);
|
||||
}
|
||||
free(mdata.pairs);
|
||||
}
|
||||
ret.push_back(Pair("notarizations",a));
|
||||
ret.push_back(Pair("data",hexstr));
|
||||
} else ret.push_back(Pair("error","cant calculate MoMoM"));
|
||||
return(ret);
|
||||
}
|
||||
|
||||
UniValue calc_MoM(const UniValue& params, bool fHelp)
|
||||
{
|
||||
int32_t height,MoMdepth; uint256 MoM; UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR);
|
||||
if ( fHelp || params.size() != 2 )
|
||||
throw runtime_error("calc_MoM height MoMdepth\n");
|
||||
LOCK(cs_main);
|
||||
height = atoi(params[0].get_str().c_str());
|
||||
MoMdepth = atoi(params[1].get_str().c_str());
|
||||
if ( height <= 0 || MoMdepth <= 0 || MoMdepth >= height )
|
||||
throw runtime_error("calc_MoM illegal height or MoMdepth\n");
|
||||
//fprintf(stderr,"height_MoM height.%d\n",height);
|
||||
MoM = komodo_calcMoM(height,MoMdepth);
|
||||
ret.push_back(Pair("coin",(char *)(ASSETCHAINS_SYMBOL[0] == 0 ? "KMD" : ASSETCHAINS_SYMBOL)));
|
||||
ret.push_back(Pair("height",height));
|
||||
ret.push_back(Pair("MoMdepth",MoMdepth));
|
||||
ret.push_back(Pair("MoM",MoM.GetHex()));
|
||||
return ret;
|
||||
}
|
||||
|
||||
UniValue height_MoM(const UniValue& params, bool fHelp)
|
||||
{
|
||||
int32_t height,depth,notarized_height,MoMoMdepth,MoMoMoffset,kmdstarti,kmdendi; uint256 MoM,MoMoM,kmdtxid; uint32_t timestamp = 0; UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR);
|
||||
if ( fHelp || params.size() != 1 )
|
||||
throw runtime_error("height_MoM height\n");
|
||||
LOCK(cs_main);
|
||||
height = atoi(params[0].get_str().c_str());
|
||||
if ( height <= 0 )
|
||||
{
|
||||
if ( chainActive.Tip() == 0 )
|
||||
{
|
||||
ret.push_back(Pair("error",(char *)"no active chain yet"));
|
||||
return(ret);
|
||||
}
|
||||
height = chainActive.Tip()->nHeight;
|
||||
}
|
||||
//fprintf(stderr,"height_MoM height.%d\n",height);
|
||||
depth = komodo_MoM(¬arized_height,&MoM,&kmdtxid,height,&MoMoM,&MoMoMoffset,&MoMoMdepth,&kmdstarti,&kmdendi);
|
||||
ret.push_back(Pair("coin",(char *)(ASSETCHAINS_SYMBOL[0] == 0 ? "KMD" : ASSETCHAINS_SYMBOL)));
|
||||
ret.push_back(Pair("height",height));
|
||||
ret.push_back(Pair("timestamp",(uint64_t)timestamp));
|
||||
if ( depth > 0 )
|
||||
{
|
||||
ret.push_back(Pair("depth",depth));
|
||||
ret.push_back(Pair("notarized_height",notarized_height));
|
||||
ret.push_back(Pair("MoM",MoM.GetHex()));
|
||||
ret.push_back(Pair("kmdtxid",kmdtxid.GetHex()));
|
||||
if ( ASSETCHAINS_SYMBOL[0] != 0 )
|
||||
{
|
||||
ret.push_back(Pair("MoMoM",MoMoM.GetHex()));
|
||||
ret.push_back(Pair("MoMoMoffset",MoMoMoffset));
|
||||
ret.push_back(Pair("MoMoMdepth",MoMoMdepth));
|
||||
ret.push_back(Pair("kmdstarti",kmdstarti));
|
||||
ret.push_back(Pair("kmdendi",kmdendi));
|
||||
}
|
||||
} else ret.push_back(Pair("error",(char *)"no MoM for height"));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
UniValue txMoMproof(const UniValue& params, bool fHelp)
|
||||
{
|
||||
uint256 hash, notarisationHash, MoM,MoMoM; int32_t notarisedHeight, depth; CBlockIndex* blockIndex;
|
||||
std::vector<uint256> branch;
|
||||
int nIndex,MoMoMdepth,MoMoMoffset,kmdstarti,kmdendi;
|
||||
|
||||
// parse params and get notarisation data for tx
|
||||
if ( fHelp || params.size() != 1)
|
||||
throw runtime_error("txMoMproof needs a txid");
|
||||
|
||||
hash = uint256S(params[0].get_str());
|
||||
|
||||
int npIdx;
|
||||
std::vector<uint8_t> proofData = E_MARSHAL(ss << GetAssetchainProof(hash, npIdx));
|
||||
return HexStr(proofData);
|
||||
}
|
||||
|
||||
|
||||
UniValue getproofroot(const UniValue& params, bool fHelp)
|
||||
{
|
||||
std::string symbol;
|
||||
int kmdHeight;
|
||||
|
||||
|
||||
// parse params and get notarisation data for tx
|
||||
if ( fHelp || params.size() != 2)
|
||||
throw runtime_error("getproofroot needs a symbol and a kmdHeight");
|
||||
symbol = params[0].get_str();
|
||||
kmdHeight = atoi(params[0].get_str().c_str());
|
||||
if (kmdHeight <= 0)
|
||||
throw runtime_error("Invalid kmdHeight");
|
||||
|
||||
UniValue ret(UniValue::VOBJ);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
UniValue minerids(const UniValue& params, bool fHelp)
|
||||
{
|
||||
uint32_t timestamp = 0; UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR); uint8_t minerids[2000],pubkeys[65][33]; int32_t i,j,n,numnotaries,tally[129];
|
||||
|
||||
Reference in New Issue
Block a user