]> Git Repo - VerusCoin.git/blobdiff - src/komodo_pax.h
PBaaS refund fix to fund refund transactions with gateway deposits
[VerusCoin.git] / src / komodo_pax.h
index 989ccf09b523e0148441a0b5c985958819d09df7..6f408042e8f234ba5775867d5b0905e672e45674 100644 (file)
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright © 2014-2017 The SuperNET Developers.                             *
+ * Copyright © 2014-2018 The SuperNET Developers.                             *
  *                                                                            *
  * See the AUTHORS, DEVELOPER-AGREEMENT and LICENSE files at                  *
  * the top-level directory of this distribution for the individual copyright  *
@@ -13,6 +13,8 @@
  *                                                                            *
  ******************************************************************************/
 
+#include "komodo_defs.h"
+
 #define USD 0
 #define EUR 1
 #define JPY 2
@@ -185,8 +187,8 @@ double PAX_BTCUSD(int32_t height,uint32_t btcusd)
         btcfactor = 100000.;
     else btcfactor = 1000.;
     BTCUSD = ((double)btcusd / (1000000000. / btcfactor));
-    if ( BTCUSD < 43 )
-        BTCUSD *= 100;
+    if ( height >= BTCFACTOR_HEIGHT && height < 500000 && BTCUSD > 20000 && btcfactor == 100000. )
+        BTCUSD /= 100;
     return(BTCUSD);
 }
 
@@ -233,7 +235,7 @@ int32_t komodo_pax_opreturn(int32_t height,uint8_t *opret,int32_t maxsize)
 {
     static uint32_t lastcrc;
     FILE *fp; char fname[512]; uint32_t crc32,check,timestamp; int32_t i,n=0,retval,fsize,len=0; uint8_t data[8192];
-#ifdef WIN32
+#ifdef _WIN32
     sprintf(fname,"%s\\%s",GetDataDir(false).string().c_str(),(char *)"komodofeed");
 #else
     sprintf(fname,"%s/%s",GetDataDir(false).string().c_str(),(char *)"komodofeed");
@@ -350,7 +352,7 @@ void komodo_pvals(int32_t height,uint32_t *pvals,uint8_t numpvals)
             memcpy(&PVALS[36 * NUM_PRICES + 1],pvals,sizeof(*pvals) * 35);
             NUM_PRICES++;
             portable_mutex_unlock(&komodo_mutex);
-            if ( 1 )
+            if ( 0 )
                 printf("OP_RETURN.%d KMD %.8f BTC %.6f CNY %.6f NUM_PRICES.%d (%llu %llu %llu)\n",height,KMDBTC,BTCUSD,CNYUSD,NUM_PRICES,(long long)kmdbtc,(long long)btcusd,(long long)cnyusd);
         }
     }
@@ -454,11 +456,14 @@ uint64_t komodo_paxcalc(int32_t height,uint32_t *pvals,int32_t baseid,int32_t re
                 if ( height >= 236000-10 )
                 {
                     BTCUSD = PAX_BTCUSD(height,btcusd);
-                    if ( height >= BTCFACTOR_HEIGHT && BTCUSD >= 43 )
-                        usdkmd = ((uint64_t)kmdbtc * btcusd) / 10000000;
-                    else usdkmd = ((uint64_t)kmdbtc * btcusd) / 1000000000;
+                    if ( height < BTCFACTOR_HEIGHT || (height < 500000 && BTCUSD > 20000) )
+                        usdkmd = ((uint64_t)kmdbtc * btcusd) / 1000000000;
+                    else usdkmd = ((uint64_t)kmdbtc * btcusd) / 10000000;
+                    ///if ( height >= BTCFACTOR_HEIGHT && BTCUSD >= 43 )
+                    //    usdkmd = ((uint64_t)kmdbtc * btcusd) / 10000000;
+                    //else usdkmd = ((uint64_t)kmdbtc * btcusd) / 1000000000;
                     price = ((uint64_t)10000000000 * MINDENOMS[USD] / MINDENOMS[baseid]) / komodo_paxvol(usdvol,usdkmd);
-                    //fprintf(stderr,"ht.%d kmdbtc.%llu btcusd.%llu base -> USD %llu, usdkmd %llu usdvol %llu -> %llu\n",height,(long long)kmdbtc,(long long)btcusd,(long long)baseusd,(long long)usdkmd,(long long)usdvol,(long long)(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100)));
+                    //fprintf(stderr,"ht.%d %.3f kmdbtc.%llu btcusd.%llu base -> USD %llu, usdkmd %llu usdvol %llu -> %llu\n",height,BTCUSD,(long long)kmdbtc,(long long)btcusd,(long long)baseusd,(long long)usdkmd,(long long)usdvol,(long long)(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100)));
                     //fprintf(stderr,"usdkmd.%llu basevolume.%llu baseusd.%llu paxvol.%llu usdvol.%llu -> %llu %llu\n",(long long)usdkmd,(long long)basevolume,(long long)baseusd,(long long)komodo_paxvol(basevolume,baseusd),(long long)usdvol,(long long)(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100)),(long long)price);
                     //fprintf(stderr,"usdkmd.%llu basevolume.%llu baseusd.%llu paxvol.%llu usdvol.%llu -> %llu\n",(long long)usdkmd,(long long)basevolume,(long long)baseusd,(long long)komodo_paxvol(basevolume,baseusd),(long long)usdvol,(long long)(MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100)));
                 } else price = (MINDENOMS[USD] * komodo_paxvol(usdvol,usdkmd) / (MINDENOMS[baseid]/100));
@@ -632,10 +637,14 @@ uint64_t komodo_paxpriceB(uint64_t seed,int32_t height,char *base,char *rel,uint
 uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uint64_t basevolume)
 {
     int32_t i,nonz=0; int64_t diff; uint64_t price,seed,sum = 0;
-    if ( ASSETCHAINS_SYMBOL[0] == 0 && chainActive.Tip() != 0 && height > chainActive.Tip()->nHeight )
+    if ( ASSETCHAINS_SYMBOL[0] == 0 && chainActive.LastTip() != 0 && height > chainActive.LastTip()->GetHeight() )
     {
         if ( height < 100000000 )
-            printf("komodo_paxprice height.%d vs tip.%d\n",height,chainActive.Tip()->nHeight);
+        {
+            static uint32_t counter;
+            if ( counter++ < 3 )
+                printf("komodo_paxprice height.%d vs tip.%d\n",height,chainActive.LastTip()->GetHeight());
+        }
         return(0);
     }
     *seedp = komodo_seed(height);
@@ -700,7 +709,7 @@ void komodo_paxpricefeed(int32_t height,uint8_t *pricefeed,int32_t opretlen)
     double KMDBTC,BTCUSD,CNYUSD; uint32_t numpvals,timestamp,pvals[128]; uint256 zero;
     numpvals = dpow_readprices(height,pricefeed,&timestamp,&KMDBTC,&BTCUSD,&CNYUSD,pvals);
     memset(&zero,0,sizeof(zero));
-    komodo_stateupdate(height,0,0,0,zero,0,0,pvals,numpvals,0,0,0,0,0,0);
+    komodo_stateupdate(height,0,0,0,zero,0,0,pvals,numpvals,0,0,0,0,0,0,zero,0);
     if ( 0 )
     {
         int32_t i;
This page took 0.028338 seconds and 4 git commands to generate.