|
|
@ -324,7 +324,8 @@ void komodo_stateupdate(int32_t height,uint8_t notarypubs[][33],uint8_t numnotar |
|
|
|
|
|
|
|
int32_t komodo_voutupdate(int32_t *isratificationp,int32_t notaryid,uint8_t *scriptbuf,int32_t scriptlen,int32_t height,uint256 txhash,int32_t i,int32_t j,uint64_t *voutmaskp,int32_t *specialtxp,int32_t *notarizedheightp,uint64_t value,int32_t notarized,uint64_t signedmask) |
|
|
|
{ |
|
|
|
static uint256 zero; int32_t opretlen,nid,k,len = 0; uint256 kmdtxid,desttxid; uint8_t crypto777[33]; struct komodo_state *sp; char symbol[16],dest[16]; |
|
|
|
static uint256 zero; static FILE *fp; |
|
|
|
int32_t opretlen,nid,k,len = 0; uint256 kmdtxid,desttxid; uint8_t crypto777[33]; struct komodo_state *sp; char symbol[16],dest[16]; |
|
|
|
if ( (sp= komodo_stateptr(symbol,dest)) == 0 ) |
|
|
|
return(-1); |
|
|
|
if ( scriptlen == 35 && scriptbuf[0] == 33 && scriptbuf[34] == 0xac ) |
|
|
@ -375,7 +376,7 @@ int32_t komodo_voutupdate(int32_t *isratificationp,int32_t notaryid,uint8_t *scr |
|
|
|
if ( j == 1 && opretlen >= 32*2+4 && strcmp(ASSETCHAINS_SYMBOL[0]==0?"KMD":ASSETCHAINS_SYMBOL,(char *)&scriptbuf[len+32*2+4]) == 0 ) |
|
|
|
{ |
|
|
|
len += iguana_rwbignum(0,&scriptbuf[len],32,(uint8_t *)&kmdtxid); |
|
|
|
len += iguana_rwnum(0,&scriptbuf[len],4,(uint8_t *)notarizedheightp); |
|
|
|
len += iguana_rwnum(0,&scriptbuf[len],sizeof(*notarizedheightp),(uint8_t *)notarizedheightp); |
|
|
|
len += iguana_rwbignum(0,&scriptbuf[len],32,(uint8_t *)&desttxid); |
|
|
|
if ( notarized != 0 && *notarizedheightp > sp->NOTARIZED_HEIGHT && *notarizedheightp < height ) |
|
|
|
{ |
|
|
@ -386,10 +387,27 @@ int32_t komodo_voutupdate(int32_t *isratificationp,int32_t notaryid,uint8_t *scr |
|
|
|
len += 4; |
|
|
|
if ( ASSETCHAINS_SYMBOL[0] == 0 ) |
|
|
|
printf("%s ht.%d NOTARIZED.%d %s.%s %sTXID.%s (%s) lens.(%d %d)\n",ASSETCHAINS_SYMBOL,height,*notarizedheightp,ASSETCHAINS_SYMBOL[0]==0?"KMD":ASSETCHAINS_SYMBOL,kmdtxid.ToString().c_str(),ASSETCHAINS_SYMBOL[0]==0?"BTC":"KMD",desttxid.ToString().c_str(),(char *)&scriptbuf[len],opretlen,len); |
|
|
|
if ( ASSETCHAINS_SYMBOL[0] == 0 && opretlen > len && scriptbuf[len] == 'A' ) |
|
|
|
if ( ASSETCHAINS_SYMBOL[0] == 0 ) |
|
|
|
{ |
|
|
|
printf("Found extradata.[%d] %d - %d\n",opretlen-len,opretlen,len); |
|
|
|
komodo_stateupdate(height,0,0,0,txhash,0,0,0,0,0,0,value,&scriptbuf[len],opretlen-len,j); |
|
|
|
if ( signedfp == 0 ) |
|
|
|
{ |
|
|
|
char fname[512]; |
|
|
|
komodo_statefname(fname,"","signedmasks"); |
|
|
|
if ( (signedfp= fopen(fname,"rb+")) == 0 ) |
|
|
|
signedfp = fopen(fname,"wb"); |
|
|
|
else fseek(signedfp,0,SEEK_END); |
|
|
|
} |
|
|
|
if ( signedfp != 0 ) |
|
|
|
{ |
|
|
|
fwrite(&height,1,sizeof(height),signedfp); |
|
|
|
fwrite(&signedmask,1,sizeof(signedmask),signedfp); |
|
|
|
fflush(signedfp); |
|
|
|
} |
|
|
|
if ( opretlen > len && scriptbuf[len] == 'A' ) |
|
|
|
{ |
|
|
|
printf("Found extradata.[%d] %d - %d\n",opretlen-len,opretlen,len); |
|
|
|
komodo_stateupdate(height,0,0,0,txhash,0,0,0,0,0,0,value,&scriptbuf[len],opretlen-len,j); |
|
|
|
} |
|
|
|
} |
|
|
|
} else printf("notarized.%d %llx reject ht.%d NOTARIZED.%d %s.%s DESTTXID.%s (%s)\n",notarized,(long long)signedmask,height,*notarizedheightp,ASSETCHAINS_SYMBOL[0]==0?"KMD":ASSETCHAINS_SYMBOL,kmdtxid.ToString().c_str(),desttxid.ToString().c_str(),(char *)&scriptbuf[len]); |
|
|
|
} |
|
|
|