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;
for (i=0; i<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);
opretbuf++, opretlen--;
@@ -129,7 +129,7 @@ int32_t komodo_issued_opreturn(uint8_t *shortflagp,char *base,uint256 *txids,uin
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;
PENDING_KOMODO_TX = 0;
@@ -155,16 +155,17 @@ void komodo_gateway_deposits(CMutableTransaction *txNew)
data[len++] = pax->vout & 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);
PENDING_KOMODO_TX += pax->fiatoshis;
if ( shortflag == 0 && strcmp(symbol,"KMD") == 0 )
PENDING_KOMODO_TX += pax->fiatoshis;
if ( numvouts++ >= 64 )
break;
}
if ( numvouts > 1 )
{
if ( ASSETCHAINS_SHORTFLAG != 0 )
if ( shortflag != 0 )
data[len++] = '-';
for (i=0; ASSETCHAINS_SYMBOL[i]!=0; i++)
data[len++] = ASSETCHAINS_SYMBOL[i];
for (i=0; symbol[i]!=0; i++)
data[len++] = symbol[i];
data[len++] = 0;
opretlen = komodo_opreturnscript(opret,'I',data,len);
txNew->vout.resize(numvouts+1);
@@ -173,7 +174,7 @@ void komodo_gateway_deposits(CMutableTransaction *txNew)
script = (uint8_t *)&txNew->vout[numvouts].scriptPubKey[0];
memcpy(script,opret,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
@@ -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);
}
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);
}
@@ -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);
}

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];
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("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));
} 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 )
{
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
} else return(basevolume);
}
@@ -426,7 +426,7 @@ uint64_t komodo_paxprice(int32_t height,char *base,char *rel,uint64_t basevolume
}
sum /= densum;
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;
}
}

View File

@@ -100,7 +100,7 @@ void UpdateTime(CBlockHeader* pblock, const Consensus::Params& consensusParams,
#define ASSETCHAINS_MINHEIGHT 100
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 uint64_t KOMODO_DEPOSIT;
extern char ASSETCHAINS_SYMBOL[16];
@@ -375,7 +375,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn)
}
else
{
komodo_gateway_deposits(&txNew);
komodo_gateway_deposits(&txNew,0,"KMD");
//fprintf(stderr,"txNew numvouts.%d\n",(int32_t)txNew.vout.size());
}