jl777 8 years ago
parent
commit
b33681f33a
  1. 30
      iguana/dpow/dpow_rpc.c

30
iguana/dpow/dpow_rpc.c

@ -590,9 +590,9 @@ void dpow_issuer_withdraw(struct dpow_info *dp,char *coinaddr,uint64_t fiatoshis
} }
} }
void dpow_issuer_voutupdate(struct dpow_info *dp,char *symbol,int32_t isspecial,int32_t height,int32_t txi,bits256 txid,int32_t vout,int32_t numvouts,uint64_t value,uint8_t *script,int32_t len) void dpow_issuer_voutupdate(struct dpow_info *dp,char *symbol,int32_t isspecial,int32_t height,int32_t txi,bits256 txid,int32_t vout,int32_t numvouts,int64_t fiatoshis,uint8_t *script,int32_t len)
{ {
char base[16],destaddr[64],coinaddr[64]; uint8_t addrtype,shortflag,rmd160[20],pubkey33[33]; int64_t checktoshis,fiatoshis; uint64_t seed; struct pax_transaction space; int32_t i,kmdheight,opretlen,offset = 0; char base[16],destaddr[64],coinaddr[64]; uint8_t addrtype,shortflag,rmd160[20],pubkey33[33]; int64_t checktoshis,komodoshis; uint64_t seed; struct pax_transaction space; int32_t i,kmdheight,opretlen,offset = 0;
if ( script[offset++] == 0x6a ) if ( script[offset++] == 0x6a )
{ {
memset(base,0,sizeof(base)); memset(base,0,sizeof(base));
@ -600,38 +600,38 @@ void dpow_issuer_voutupdate(struct dpow_info *dp,char *symbol,int32_t isspecial,
if ( script[offset] == 'W' && strcmp(dp->symbol,"KMD") != 0 ) if ( script[offset] == 'W' && strcmp(dp->symbol,"KMD") != 0 )
{ {
// if valid add to pricefeed for issue // if valid add to pricefeed for issue
printf("WITHDRAW ht.%d txi.%d vout.%d %.8f opretlen.%d\n",height,txi,vout,dstr(value),opretlen); printf("WITHDRAW ht.%d txi.%d vout.%d %.8f opretlen.%d\n",height,txi,vout,dstr(fiatoshis),opretlen);
if ( opretlen == 38 ) // any KMD tx if ( opretlen == 38 ) // any KMD tx
{ {
offset++; offset++;
offset += PAX_pubkey(0,&script[offset],&addrtype,rmd160,base,&shortflag,&fiatoshis); offset += PAX_pubkey(0,&script[offset],&addrtype,rmd160,base,&shortflag,&komodoshis);
iguana_rwnum(0,&script[offset],sizeof(kmdheight),&kmdheight); iguana_rwnum(0,&script[offset],sizeof(kmdheight),&kmdheight);
if ( fiatoshis < 0 ) if ( komodoshis < 0 )
fiatoshis = -fiatoshis; komodoshis = -komodoshis;
bitcoin_address(coinaddr,addrtype,rmd160,20); bitcoin_address(coinaddr,addrtype,rmd160,20);
checktoshis = PAX_fiatdest(&seed,1,destaddr,pubkey33,coinaddr,kmdheight,base,fiatoshis); checktoshis = PAX_fiatdest(&seed,1,destaddr,pubkey33,coinaddr,kmdheight,base,komodoshis);
for (i=0; i<32; i++) for (i=0; i<32; i++)
printf("%02x",((uint8_t *)&txid)[i]); printf("%02x",((uint8_t *)&txid)[i]);
printf(" <- txid.v%u ",vout); printf(" <- txid.v%u ",vout);
for (i=0; i<33; i++) for (i=0; i<33; i++)
printf("%02x",pubkey33[i]); printf("%02x",pubkey33[i]);
printf(" checkpubkey check %.8f v %.8f dest.(%s) kmdheight.%d seed.%llx\n",dstr(fiatoshis),dstr(value),destaddr,kmdheight,(long long)seed); printf(" checkpubkey fiat %.8f check %.8f v %.8f dest.(%s) kmdheight.%d seed.%llu\n",dstr(komodoshis),dstr(checktoshis),dstr(fiatoshis),destaddr,kmdheight,(long long)seed);
if ( shortflag == dp->SHORTFLAG ) if ( shortflag == dp->SHORTFLAG )
{ {
if ( shortflag == 0 ) if ( shortflag == 0 )
{ {
if ( seed == 0 || value <= fiatoshis ) if ( seed == 0 || fiatoshis >= checktoshis )
{ {
if ( dpow_paxfind(dp,&space,txid,vout) == 0 ) if ( dpow_paxfind(dp,&space,txid,vout) == 0 )
dpow_issuer_withdraw(dp,coinaddr,fiatoshis,shortflag,base,value,rmd160,txid,vout,kmdheight,height); dpow_issuer_withdraw(dp,coinaddr,fiatoshis,shortflag,base,fiatoshis,rmd160,txid,vout,kmdheight,height);
} }
} }
else // short else // short
{ {
for (i=0; i<opretlen; i++) for (i=0; i<opretlen; i++)
printf("%02x",script[i]); printf("%02x",script[i]);
printf(" opret[%c] value %.8f vs check %.8f\n",script[0],dstr(value),dstr(checktoshis)); printf(" opret[%c] fiatoshis %.8f vs check %.8f\n",script[0],dstr(fiatoshis),dstr(checktoshis));
if ( seed == 0 || value >= fiatoshis ) if ( seed == 0 || fiatoshis < checktoshis )
{ {
} }
@ -641,7 +641,7 @@ void dpow_issuer_voutupdate(struct dpow_info *dp,char *symbol,int32_t isspecial,
} }
else if ( script[offset] == 'X' && strcmp(dp->symbol,"KMD") == 0 ) else if ( script[offset] == 'X' && strcmp(dp->symbol,"KMD") == 0 )
{ {
printf("WITHDRAW issued ht.%d txi.%d vout.%d %.8f\n",height,txi,vout,dstr(value)); printf("WITHDRAW issued ht.%d txi.%d vout.%d %.8f\n",height,txi,vout,dstr(fiatoshis));
if ( opretlen == 46 ) // any KMD tx if ( opretlen == 46 ) // any KMD tx
{ {
offset++; offset++;
@ -657,10 +657,10 @@ void dpow_issuer_voutupdate(struct dpow_info *dp,char *symbol,int32_t isspecial,
printf(" <- txid.v%u ",vout); printf(" <- txid.v%u ",vout);
for (i=0; i<33; i++) for (i=0; i<33; i++)
printf("%02x",pubkey33[i]); printf("%02x",pubkey33[i]);
printf(" checkpubkey check %.8f v %.8f dest.(%s) height.%d\n",dstr(fiatoshis),dstr(value),destaddr,height); printf(" checkpubkey check %.8f v %.8f dest.(%s) height.%d\n",dstr(checktoshis),dstr(fiatoshis),destaddr,height);
if ( shortflag == 0 ) if ( shortflag == 0 )
{ {
if ( seed == 0 || value > fiatoshis ) if ( seed == 0 || checktoshis > fiatoshis )
{ {
dpow_paxmark(dp,&space,txid,vout,height); dpow_paxmark(dp,&space,txid,vout,height);
} }

Loading…
Cancel
Save