From d269d79ecc245048af16c4aa18db1c73fa9f1e45 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 12 Apr 2018 00:37:37 +0300 Subject: [PATCH] Test --- src/komodo.h | 45 ++++++++++++++++++++++---------------------- src/komodo_ccdata.h | 15 +++++++++------ src/komodo_structs.h | 17 +++++++++++++---- 3 files changed, 45 insertions(+), 32 deletions(-) diff --git a/src/komodo.h b/src/komodo.h index b15d08498..527402020 100644 --- a/src/komodo.h +++ b/src/komodo.h @@ -584,8 +584,9 @@ int32_t komodo_voutupdate(int32_t *isratificationp,int32_t notaryid,uint8_t *scr if ( j == 1 && opretlen >= len+offset-opoffset ) { static int32_t last_rewind; int32_t rewindtarget,validated = 0; CBlockIndex *pindex;// - struct komodo_ccdata ccdata; + struct komodo_ccdata ccdata; struct komodo_ccdataMoMoM MoMoMdata; memset(&ccdata,0,sizeof(ccdata)); + memset(&MoMoMdata,0,sizeof(MoMoMdata)); strncpy(ccdata.symbol,(char *)&scriptbuf[len+offset],sizeof(ccdata.symbol)); if ( matched == 0 && bitweight(signedmask) >= KOMODO_MINRATIFY ) notarized = 1; @@ -622,16 +623,16 @@ int32_t komodo_voutupdate(int32_t *isratificationp,int32_t notaryid,uint8_t *scr memset(&MoM,0,sizeof(MoM)); MoMdepth = 0; len += nameoffset; - ccdata.notarized_height = *notarizedheightp; - ccdata.height = height; - ccdata.txi = i; + ccdata.MoMdata.notarized_height = *notarizedheightp; + ccdata.MoMdata.height = height; + ccdata.MoMdata.txi = i; //printf("nameoffset.%d len.%d + 36 %d vs opretlen.%d\n",nameoffset,len,len+36,opretlen); if ( len+36-opoffset <= opretlen ) { len += iguana_rwbignum(0,&scriptbuf[len],32,(uint8_t *)&MoM); len += iguana_rwnum(0,&scriptbuf[len],sizeof(MoMdepth),(uint8_t *)&MoMdepth); - ccdata.MoM = MoM; - ccdata.MoMdepth = MoMdepth; + ccdata.MoMdata.MoM = MoM; + ccdata.MoMdata.MoMdepth = MoMdepth; if ( len+sizeof(ccdata.CCid) <= opretlen ) { len += iguana_rwnum(0,&scriptbuf[len],sizeof(ccdata.CCid),(uint8_t *)&ccdata.CCid); @@ -641,23 +642,23 @@ int32_t komodo_voutupdate(int32_t *isratificationp,int32_t notaryid,uint8_t *scr // MoMoM, depth, numpairs, (notarization ht, MoMoM offset) if ( len+48-opoffset <= opretlen && strcmp(ccdata.symbol,ASSETCHAINS_SYMBOL) == 0 ) { - len += iguana_rwnum(0,&scriptbuf[len],sizeof(uint32_t),(uint8_t *)&ccdata.MoMoMstart); - len += iguana_rwnum(0,&scriptbuf[len],sizeof(uint32_t),(uint8_t *)&ccdata.MoMoMend); - len += iguana_rwbignum(0,&scriptbuf[len],sizeof(ccdata.MoMoM),(uint8_t *)&ccdata.MoMoM); - len += iguana_rwnum(0,&scriptbuf[len],sizeof(uint32_t),(uint8_t *)&ccdata.MoMoMdepth); - len += iguana_rwnum(0,&scriptbuf[len],sizeof(uint32_t),(uint8_t *)&ccdata.numpairs); - ccdata.len += sizeof(ccdata.MoMoM) + sizeof(uint32_t)*4; - if ( len+ccdata.numpairs*8 == opretlen ) + len += iguana_rwnum(0,&scriptbuf[len],sizeof(uint32_t),(uint8_t *)&MoMoMdata.MoMoMstart); + len += iguana_rwnum(0,&scriptbuf[len],sizeof(uint32_t),(uint8_t *)&MoMoMdata.MoMoMend); + len += iguana_rwbignum(0,&scriptbuf[len],sizeof(ccdata.MoMoM),(uint8_t *)&MoMoMdata.MoMoM); + len += iguana_rwnum(0,&scriptbuf[len],sizeof(uint32_t),(uint8_t *)&MoMoMdata.MoMoMdepth); + len += iguana_rwnum(0,&scriptbuf[len],sizeof(uint32_t),(uint8_t *)&MoMoMdata.numpairs); + MoMoMdata.len += sizeof(MoMoMdata.MoMoM) + sizeof(uint32_t)*4; + if ( len+MoMoMdata.numpairs*8-opoffset == opretlen ) { - ccdata.pairs = (struct komodo_ccdatapair *)calloc(ccdata.numpairs,sizeof(*ccdata.pairs)); - for (k=0; k 1440 || MoMdepth < 0 ) @@ -667,7 +668,7 @@ int32_t komodo_voutupdate(int32_t *isratificationp,int32_t notaryid,uint8_t *scr } else { - komodo_rwccdata(ASSETCHAINS_SYMBOL,1,&ccdata); + komodo_rwccdata(ASSETCHAINS_SYMBOL,1,&ccdata,&MoMoMdata); //printf("[%s] matched.%d VALID (%s) MoM.%s [%d]\n",ASSETCHAINS_SYMBOL,matched,ccdata.symbol,MoM.ToString().c_str(),MoMdepth); } if ( ccdata.pairs != 0 ) @@ -675,7 +676,7 @@ int32_t komodo_voutupdate(int32_t *isratificationp,int32_t notaryid,uint8_t *scr memset(&ccdata,0,sizeof(ccdata)); } else if ( ASSETCHAINS_SYMBOL[0] == 0 && matched != 0 && notarized != 0 && validated != 0 ) - komodo_rwccdata((char *)"KMD",1,&ccdata); + komodo_rwccdata((char *)"KMD",1,&ccdata,0); if ( matched != 0 && *notarizedheightp > sp->NOTARIZED_HEIGHT && *notarizedheightp < height ) { sp->NOTARIZED_HEIGHT = *notarizedheightp; diff --git a/src/komodo_ccdata.h b/src/komodo_ccdata.h index c5689fb79..532569c6b 100644 --- a/src/komodo_ccdata.h +++ b/src/komodo_ccdata.h @@ -21,14 +21,14 @@ struct komodo_ccdata { uint32_t CCid; - bits256 MoMoM,MoM; - int32_t MoMoMdepth,numpairs,notarized_height,height,txi; - struct ccdatapair *pairs; + uint256 MoMoM,MoM; + int32_t MoMoMstart,MoMoMend,MoMoMdepth,numpairs,notarized_height,height,txi,len,MoMdepth; + struct komodo_ccdatapair *pairs; char symbol[65]; }; */ -int32_t komodo_rwccdata(char *thischain,int32_t rwflag,struct komodo_ccdata *ccdata) +int32_t komodo_rwccdata(char *thischain,int32_t rwflag,struct komodo_ccdata *ccdata,struct komodo_ccdataMoMoM *MoMoMdata) { bits256 hash; int32_t i; if ( rwflag == 0 ) @@ -36,10 +36,13 @@ int32_t komodo_rwccdata(char *thischain,int32_t rwflag,struct komodo_ccdata *ccd } for (i=0; i<32; i++) - hash.bytes[i] = ((uint8_t *)&ccdata->MoM)[31-i]; - char str[65]; fprintf(stderr,"[%s] ccdata.%s id.%d notarized_ht.%d MoM.%s height.%d/t%d numpairs.%d\n",ASSETCHAINS_SYMBOL,ccdata->symbol,ccdata->CCid,ccdata->notarized_height,bits256_str(str,hash),ccdata->height,ccdata->txi,ccdata->numpairs); + hash.bytes[i] = ((uint8_t *)&ccdata->MoMdata.MoM)[31-i]; + char str[65]; fprintf(stderr,"[%s] ccdata.%s id.%d notarized_ht.%d MoM.%s height.%d/t%d\n",ASSETCHAINS_SYMBOL,ccdata->symbol,ccdata->CCid,ccdata->MoMdata.notarized_height,bits256_str(str,hash),ccdata->MoMdata.height,ccdata->MoMdata.txi); if ( ASSETCHAINS_SYMBOL[0] == 0 ) { + // find/create entry for CCid + // if KMD, for all CCids, get range and calc MoMoM for RPC retrieval + // given MoM height for CCid chain, find the offset and MoMoM } else { diff --git a/src/komodo_structs.h b/src/komodo_structs.h index c620da392..003cd13f6 100644 --- a/src/komodo_structs.h +++ b/src/komodo_structs.h @@ -89,13 +89,22 @@ struct notarized_checkpoint int32_t nHeight,notarized_height,MoMdepth; }; +struct komodo_ccdataMoM +{ + uint256 MoM; + int32_t MoMdepth,notarized_height,height,txi; +}; +struct komodo_ccdataMoMoM +{ + uint256 MoMoM; + int32_t MoMoMstart,MoMoMend,MoMoMdepth,numpairs; + struct komodo_ccdatapair *pairs; +}; struct komodo_ccdatapair { int32_t notarization_height; uint32_t MoMoMoffset; }; struct komodo_ccdata { - uint32_t CCid; - uint256 MoMoM,MoM; - int32_t MoMoMstart,MoMoMend,MoMoMdepth,numpairs,notarized_height,height,txi,len,MoMdepth; - struct komodo_ccdatapair *pairs; + struct komodo_ccdataMoM MoMdata; + uint32_t CCid,len; char symbol[65]; };