This commit is contained in:
jl777
2016-11-06 17:47:54 -03:00
parent 77af0879f9
commit 9ef47e29b5
3 changed files with 25 additions and 12 deletions

View File

@@ -110,7 +110,7 @@ int32_t komodo_issued_opreturn(uint8_t *shortflagp,char *base,uint256 *txids,uin
else *shortflagp = 0; else *shortflagp = 0;
for (i=0; i<4; i++) for (i=0; i<4; i++)
base[i] = opretbuf[opretlen-4+i]; base[i] = opretbuf[opretlen-4+i];
if ( strncmp(ASSETCHAINS_SYMBOL,base,strlen(base)) == 0 ) // shortflag if ( (strcmp(base,"KMD") == 0 && ASSETCHAINS_SYMBOL[0] == 0) || strncmp(ASSETCHAINS_SYMBOL,base,strlen(base)) == 0 ) // shortflag
{ {
//printf("BASE.(%s) vs (%s)\n",base,ASSETCHAINS_SYMBOL); //printf("BASE.(%s) vs (%s)\n",base,ASSETCHAINS_SYMBOL);
opretbuf++, opretlen--; opretbuf++, opretlen--;
@@ -129,7 +129,7 @@ int32_t komodo_issued_opreturn(uint8_t *shortflagp,char *base,uint256 *txids,uin
return(n); return(n);
} }
void komodo_gateway_deposits(CMutableTransaction *txNew) void komodo_gateway_deposits(CMutableTransaction *txNew,int32_t shortflag,char *symbol)
{ {
struct pax_transaction *pax,*tmp; uint8_t *script,opret[10000],data[10000]; int32_t i,len=0,opretlen=0,numvouts=1; struct pax_transaction *pax,*tmp; uint8_t *script,opret[10000],data[10000]; int32_t i,len=0,opretlen=0,numvouts=1;
PENDING_KOMODO_TX = 0; PENDING_KOMODO_TX = 0;
@@ -155,16 +155,17 @@ void komodo_gateway_deposits(CMutableTransaction *txNew)
data[len++] = pax->vout & 0xff; data[len++] = pax->vout & 0xff;
data[len++] = (pax->vout >> 8) & 0xff; data[len++] = (pax->vout >> 8) & 0xff;
printf(" vout.%u DEPOSIT %.8f <- paxdeposit.%s\n",pax->vout,(double)txNew->vout[numvouts].nValue/COIN,ASSETCHAINS_SYMBOL); printf(" vout.%u DEPOSIT %.8f <- paxdeposit.%s\n",pax->vout,(double)txNew->vout[numvouts].nValue/COIN,ASSETCHAINS_SYMBOL);
PENDING_KOMODO_TX += pax->fiatoshis; if ( shortflag == 0 && strcmp(symbol,"KMD") == 0 )
PENDING_KOMODO_TX += pax->fiatoshis;
if ( numvouts++ >= 64 ) if ( numvouts++ >= 64 )
break; break;
} }
if ( numvouts > 1 ) if ( numvouts > 1 )
{ {
if ( ASSETCHAINS_SHORTFLAG != 0 ) if ( shortflag != 0 )
data[len++] = '-'; data[len++] = '-';
for (i=0; ASSETCHAINS_SYMBOL[i]!=0; i++) for (i=0; symbol[i]!=0; i++)
data[len++] = ASSETCHAINS_SYMBOL[i]; data[len++] = symbol[i];
data[len++] = 0; data[len++] = 0;
opretlen = komodo_opreturnscript(opret,'I',data,len); opretlen = komodo_opreturnscript(opret,'I',data,len);
txNew->vout.resize(numvouts+1); txNew->vout.resize(numvouts+1);
@@ -173,7 +174,7 @@ void komodo_gateway_deposits(CMutableTransaction *txNew)
script = (uint8_t *)&txNew->vout[numvouts].scriptPubKey[0]; script = (uint8_t *)&txNew->vout[numvouts].scriptPubKey[0];
memcpy(script,opret,opretlen); memcpy(script,opret,opretlen);
printf("total numvouts.%d %.8f opretlen.%d\n",numvouts,dstr(PENDING_KOMODO_TX),opretlen); printf("total numvouts.%d %.8f opretlen.%d\n",numvouts,dstr(PENDING_KOMODO_TX),opretlen);
} //else KOMODO_DEPOSIT = 0; }
} }
int32_t komodo_check_deposit(int32_t height,const CBlock& block) // verify above block is valid pax pricing int32_t komodo_check_deposit(int32_t height,const CBlock& block) // verify above block is valid pax pricing
@@ -208,6 +209,14 @@ int32_t komodo_check_deposit(int32_t height,const CBlock& block) // verify above
} }
//printf("opretlen.%d num.%d\n",opretlen,num); //printf("opretlen.%d num.%d\n",opretlen,num);
} }
else if ( script[offset] == 'X' && opretlen < block.vtx[0].vout[n-1].scriptPubKey.size() )
{
if ( (num= komodo_issued_opreturn(&shortflag,base,txids,vouts,&script[offset],opretlen)) > 0 )
{
// return(-1) if invalid withdraw redeem
// check txid in assetchain, verify fiatoshis and conversion rate
}
}
return(0); return(0);
} }
@@ -283,6 +292,10 @@ const char *komodo_opreturn(int32_t height,uint64_t value,uint8_t *opretbuf,int3
} }
} }
} }
else if ( tomomodo != 0 && opretbuf[0] == 'X' )
{
// verify and update limits
}
} }
return(typestr); return(typestr);
} }

View File

@@ -317,7 +317,7 @@ uint64_t komodo_paxcalc(uint32_t *pvals,int32_t baseid,int32_t relid,uint64_t ba
usdvol = komodo_paxvol(basevolume,baseusd) / MINDENOMS[baseid]; usdvol = komodo_paxvol(basevolume,baseusd) / MINDENOMS[baseid];
usdkmd = ((uint64_t)btcusd * 1000000000) / kmdbtc; usdkmd = ((uint64_t)btcusd * 1000000000) / kmdbtc;
//printf("base -> USD %llu, BTC %llu KMDUSD %llu\n",(long long)baseusd,(long long)btcusd,(long long)kmdusd); //printf("base -> USD %llu, BTC %llu KMDUSD %llu\n",(long long)baseusd,(long long)btcusd,(long long)kmdusd);
printf("usdkmd.%llu basevolume.%llu baseusd.%llu paxvol.%llu usdvol.%llu -> %.8f\n",(long long)usdkmd,(long long)basevolume,(long long)baseusd,(long long)komodo_paxvol(basevolume,baseusd),(long long)usdvol,dstr(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd))); //printf("usdkmd.%llu basevolume.%llu baseusd.%llu paxvol.%llu usdvol.%llu -> %.8f\n",(long long)usdkmd,(long long)basevolume,(long long)baseusd,(long long)komodo_paxvol(basevolume,baseusd),(long long)usdvol,dstr(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd)));
return(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd)); return(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd));
} else printf("zero val in KMD conv %llu %llu %llu\n",(long long)pvals[USD],(long long)kmdbtc,(long long)btcusd); } else printf("zero val in KMD conv %llu %llu %llu\n",(long long)pvals[USD],(long long)kmdbtc,(long long)btcusd);
} }
@@ -326,7 +326,7 @@ uint64_t komodo_paxcalc(uint32_t *pvals,int32_t baseid,int32_t relid,uint64_t ba
if ( baseid != MAX_CURRENCIES ) if ( baseid != MAX_CURRENCIES )
{ {
pax_rank(ranked,pvals); pax_rank(ranked,pvals);
printf("%s M1 percentage %.8f\n",CURRENCIES[baseid],dstr(10 * ranked[baseid])); //printf("%s M1 percentage %.8f\n",CURRENCIES[baseid],dstr(10 * ranked[baseid]));
return(10 * ranked[baseid]); // scaled percentage of M1 total return(10 * ranked[baseid]); // scaled percentage of M1 total
} else return(basevolume); } else return(basevolume);
} }
@@ -426,7 +426,7 @@ uint64_t komodo_paxprice(int32_t height,char *base,char *rel,uint64_t basevolume
} }
sum /= densum; sum /= densum;
sum = (sum * basevolume) / 100000; sum = (sum * basevolume) / 100000;
printf("seed.%llx sum %.8f densum %.8f basevol %.8f\n",(long long)seed,dstr(sum),dstr(densum),dstr(basevolume)); //printf("seed.%llx sum %.8f densum %.8f basevol %.8f\n",(long long)seed,dstr(sum),dstr(densum),dstr(basevolume));
break; break;
} }
} }

View File

@@ -100,7 +100,7 @@ void UpdateTime(CBlockHeader* pblock, const Consensus::Params& consensusParams,
#define ASSETCHAINS_MINHEIGHT 100 #define ASSETCHAINS_MINHEIGHT 100
int32_t komodo_pax_opreturn(uint8_t *opret,int32_t maxsize); int32_t komodo_pax_opreturn(uint8_t *opret,int32_t maxsize);
void komodo_gateway_deposits(CMutableTransaction *txNew); void komodo_gateway_deposits(CMutableTransaction *txNew,int32_t shortflag,char *symbol);
extern int32_t KOMODO_INITDONE,ASSETCHAINS_SHORTFLAG; extern int32_t KOMODO_INITDONE,ASSETCHAINS_SHORTFLAG;
extern uint64_t KOMODO_DEPOSIT; extern uint64_t KOMODO_DEPOSIT;
extern char ASSETCHAINS_SYMBOL[16]; extern char ASSETCHAINS_SYMBOL[16];
@@ -375,7 +375,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn)
} }
else else
{ {
komodo_gateway_deposits(&txNew); komodo_gateway_deposits(&txNew,0,"KMD");
//fprintf(stderr,"txNew numvouts.%d\n",(int32_t)txNew.vout.size()); //fprintf(stderr,"txNew numvouts.%d\n",(int32_t)txNew.vout.size());
} }