diff --git a/iguana/iguana_notary.c b/iguana/iguana_notary.c index fff2845fa..bd14ae6d7 100755 --- a/iguana/iguana_notary.c +++ b/iguana/iguana_notary.c @@ -29,7 +29,7 @@ struct dpow_entry { - bits256 prev_hash; + bits256 prev_hash,commit; uint64_t mask; int32_t prev_vout,height; uint8_t pubkey[33],k,siglen,sig[76]; @@ -333,9 +333,21 @@ int32_t dpow_haveutxo(struct supernet_info *myinfo,struct iguana_info *coin,bits return(haveutxo); } -int32_t dpow_message_utxo(bits256 *hashmsgp,bits256 *txidp,int32_t *voutp,cJSON *json) +int32_t dpow_rwutxobuf(int32_t rwflag,uint8_t *data,bits256 *hashmsg,bits256 *txid,int32_t *voutp,bits256 *commit) { - cJSON *msgobj,*item; uint8_t key[BASILISK_KEYSIZE],data[sizeof(bits256)*2+1]; char *keystr,*hexstr,str[65],str2[65]; int32_t i,j,n,datalen,retval = -1; + int32_t len = 0; + len += iguana_rwbignum(rwflag,&data[len],sizeof(*hashmsg),hashmsg->bytes); + len += iguana_rwbignum(rwflag,&data[len],sizeof(*txid),txid->bytes); + len += iguana_rwbignum(rwflag,&data[len],sizeof(*commit),commit->bytes); + if ( rwflag != 0 ) + data[len++] = *voutp; + else *voutp = data[len++]; + return(len); +} + +int32_t dpow_message_utxo(bits256 *hashmsgp,bits256 *txidp,int32_t *voutp,bits256 *commitp,cJSON *json) +{ + cJSON *msgobj,*item; uint8_t key[BASILISK_KEYSIZE],data[sizeof(bits256)*3+1]; char *keystr,*hexstr,str[65],str2[65]; int32_t i,n,datalen,retval = -1; *voutp = -1; memset(txidp,0,sizeof(*txidp)); if ( (msgobj= jarray(&n,json,"messages")) != 0 ) @@ -353,13 +365,7 @@ int32_t dpow_message_utxo(bits256 *hashmsgp,bits256 *txidp,int32_t *voutp,cJSON decode_hex(data,datalen,hexstr); if ( datalen == sizeof(data) ) { - for (j=0; jbytes[j] = data[j]; - txidp->bytes[j] = data[j + sizeof(bits256)]; - } - *voutp = data[sizeof(bits256) * 2]; - retval = datalen; + retval = dpow_rwutxobuf(0,data,hashmsgp,txidp,voutp,commitp); printf("notary.%d hashmsg.(%s) txid.(%s) v%d\n",i,bits256_str(str,*hashmsgp),bits256_str(str2,*txidp),*voutp); } } else printf("datalen.%d >= maxlen.%d\n",datalen,(int32_t)sizeof(data)); @@ -430,18 +436,6 @@ int32_t dpow_message_most(uint8_t *k_masks,int32_t num,cJSON *json,int32_t lastf return(num); } -int32_t dpow_rwutxobuf(int32_t rwflag,uint8_t *data,bits256 *hashmsg,bits256 *txid,int32_t *voutp,bits256 *commit) -{ - int32_t len = 0; - len += iguana_rwbignum(rwflag,&data[len],sizeof(*hashmsg),hashmsg->bytes); - len += iguana_rwbignum(rwflag,&data[len],sizeof(*txid),txid->bytes); - len += iguana_rwbignum(rwflag,&data[len],sizeof(*commit),commit->bytes); - if ( rwflag != 0 ) - data[len++] = *voutp; - else *voutp = data[len++]; - return(len); -} - int32_t dpow_opreturnscript(uint8_t *script,uint8_t *opret,int32_t opretlen) { int32_t offset = 0; @@ -745,13 +739,13 @@ int32_t dpow_mostsignedtx(struct supernet_info *myinfo,struct dpow_info *dp,stru void dpow_txidupdate(struct supernet_info *myinfo,struct dpow_info *dp,struct iguana_info *coin,uint64_t *recvmaskp,uint32_t channel,int32_t height,struct dpow_entry notaries[DPOW_MAXRELAYS],int32_t numnotaries,int32_t myind,bits256 hashmsg) { - int32_t i,j,k,m,vout; cJSON *item,*retarray; bits256 desthash,srchash,checkmsg,txid; + int32_t i,j,k,m,vout; cJSON *item,*retarray; bits256 desthash,commit,srchash,checkmsg,txid; for (j=0; jDPOW.minerkey33[j+1]; for (i=0; i