@@ -740,10 +740,12 @@ int32_t komodo_checkpoint(int32_t *notarized_heightp,int32_t nHeight,uint256 has
|
||||
return(0);
|
||||
}
|
||||
|
||||
uint32_t komodo_interest_args(int32_t *txheightp,uint32_t *tiptimep,uint64_t *valuep,uint256 hash,int32_t n)
|
||||
uint32_t komodo_interest_args(uint32_t *txheighttimep,int32_t *txheightp,uint32_t *tiptimep,uint64_t *valuep,uint256 hash,int32_t n)
|
||||
{
|
||||
LOCK(cs_main);
|
||||
CTransaction tx; uint256 hashBlock; CBlockIndex *pindex,*tipindex;
|
||||
*txheighttimep = *txheightp = *tiptimep = 0;
|
||||
*valuep = 0;
|
||||
if ( !GetTransaction(hash,tx,hashBlock,true) )
|
||||
return(0);
|
||||
uint32_t locktime = 0;
|
||||
@@ -753,6 +755,7 @@ uint32_t komodo_interest_args(int32_t *txheightp,uint32_t *tiptimep,uint64_t *va
|
||||
{
|
||||
*valuep = tx.vout[n].nValue;
|
||||
*txheightp = pindex->nHeight;
|
||||
*txheighttimep = pindex->nTime;
|
||||
*tiptimep = tipindex->nTime;
|
||||
locktime = tx.nLockTime;
|
||||
//fprintf(stderr,"tx locktime.%u %.8f height.%d | tiptime.%u\n",locktime,(double)*valuep/COIN,*txheightp,*tiptimep);
|
||||
@@ -764,8 +767,8 @@ uint32_t komodo_interest_args(int32_t *txheightp,uint32_t *tiptimep,uint64_t *va
|
||||
uint64_t komodo_interest(int32_t txheight,uint64_t nValue,uint32_t nLockTime,uint32_t tiptime);
|
||||
uint64_t komodo_accrued_interest(int32_t *txheightp,uint32_t *locktimep,uint256 hash,int32_t n,int32_t checkheight,uint64_t checkvalue)
|
||||
{
|
||||
uint64_t value; uint32_t tiptime;
|
||||
if ( (*locktimep= komodo_interest_args(txheightp,&tiptime,&value,hash,n)) != 0 )
|
||||
uint64_t value; uint32_t tiptime,txheighttimep;
|
||||
if ( (*locktimep= komodo_interest_args(&txheighttimep,txheightp,&tiptime,&value,hash,n)) != 0 )
|
||||
{
|
||||
if ( (checkvalue == 0 || value == checkvalue) && (checkheight == 0 || *txheightp == checkheight) )
|
||||
return(komodo_interest(*txheightp,value,*locktimep,tiptime));
|
||||
|
||||
@@ -717,8 +717,8 @@ int32_t komodo_check_deposit(int32_t height,const CBlock& block) // verify above
|
||||
extern int32_t KOMODO_REWIND;
|
||||
if ( KOMODO_REWIND < 0 )
|
||||
{
|
||||
fprintf(stderr,"rewind.%d\n",KOMODO_REWIND);
|
||||
sleep(3);
|
||||
fprintf(stderr,">>>>>>> rewind.%d will pause here for a minute. issue command and stop\n",KOMODO_REWIND);
|
||||
sleep(60);
|
||||
KOMODO_REWIND = 0;
|
||||
}
|
||||
// 6a35506c65617365206d616b6520796f75722047697420636f6d6d6974206d65737361676573206d6f726520696e74657265737469 height.241778 checkdeposit n.4 [6a] [P] 80 vs 88
|
||||
|
||||
18
src/main.cpp
18
src/main.cpp
@@ -708,26 +708,26 @@ bool IsStandardTx(const CTransaction& tx, string& reason)
|
||||
|
||||
int32_t komodo_validate_interest(const CTransaction& tx)
|
||||
{
|
||||
int32_t i,txheight=0; uint32_t prevblocktime=0,locktime; uint64_t value=0;
|
||||
int32_t i,txheight=0; uint32_t txheighttime,tiptime=0,locktime; uint64_t value=0;
|
||||
if ( ASSETCHAINS_SYMBOL[0] == 0 && (int64_t)tx.nLockTime >= LOCKTIME_THRESHOLD )
|
||||
{
|
||||
locktime = komodo_interest_args(&txheight,&prevblocktime,&value,tx.GetHash(),0);
|
||||
if ( prevblocktime == 0 )
|
||||
locktime = komodo_interest_args(&txheighttime,&txheight,&tiptime,&value,tx.GetHash(),0);
|
||||
if ( txheighttime == 0 )
|
||||
{
|
||||
static uint32_t counter0;
|
||||
prevblocktime = chainActive.Tip()->nTime;
|
||||
txheighttime = chainActive.Tip()->nTime;
|
||||
if ( counter0++ < 3 )
|
||||
fprintf(stderr,"error getting prevblocktime, set to tiptime.%u\n",prevblocktime);
|
||||
fprintf(stderr,"error getting txheighttime, set to tiptime.%u\n",txheighttime);
|
||||
}
|
||||
if ( (int64_t)tx.nLockTime < prevblocktime-3600 )
|
||||
if ( (int64_t)tx.nLockTime < txheighttime-3600 )
|
||||
{
|
||||
if ( prevblocktime > 1490159171 || (txheight == 0 && prevblocktime >= 1490159171) ) // 246748
|
||||
if ( txheighttime > 1490159171 || (txheight == 0 && txheighttime >= 1490159171) ) // 246748
|
||||
{
|
||||
static uint32_t counter;
|
||||
if ( counter++ < 100 )
|
||||
fprintf(stderr,"komodo_validate_interest reject.%d locktime %u/%u vs nBlockTime %u prevblocktime.%u\n",txheight,(uint32_t)tx.nLockTime,locktime,(uint32_t)chainActive.Tip()->nTime,prevblocktime);
|
||||
fprintf(stderr,"komodo_validate_interest reject.%d locktime %u/%u vs nBlockTime %u txheighttime.%u tiptime.%u\n",txheight,(uint32_t)tx.nLockTime,locktime,(uint32_t)chainActive.Tip()->nTime,txheighttime,tiptime);
|
||||
return(-1);
|
||||
} else fprintf(stderr,"validateinterest grandfather.%d locktime %u vs nBlockTime %u\n",(int32_t)txheight,tx.nLockTime,(uint32_t)prevblocktime);
|
||||
} else fprintf(stderr,"validateinterest grandfather.%d locktime %u vs txheighttime.%u tiptime.%u\n",(int32_t)txheight,tx.nLockTime,txheighttime,tiptime);
|
||||
}
|
||||
}
|
||||
return(0);
|
||||
|
||||
@@ -406,7 +406,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin
|
||||
int32_t komodo_paxprices(int32_t *heights,uint64_t *prices,int32_t max,char *base,char *rel);
|
||||
int32_t komodo_notaries(uint8_t pubkeys[64][33],int32_t height);
|
||||
char *bitcoin_address(char *coinaddr,uint8_t addrtype,uint8_t *pubkey_or_rmd160,int32_t len);
|
||||
uint32_t komodo_interest_args(int32_t *txheightp,uint32_t *tiptimep,uint64_t *valuep,uint256 hash,int32_t n);
|
||||
//uint32_t komodo_interest_args(int32_t *txheightp,uint32_t *tiptimep,uint64_t *valuep,uint256 hash,int32_t n);
|
||||
int32_t komodo_minerids(uint8_t *minerids,int32_t height,int32_t width);
|
||||
int32_t komodo_kvsearch(uint256 *refpubkeyp,int32_t current_height,uint32_t *flagsp,int32_t *heightp,uint8_t value[IGUANA_MAXSCRIPTSIZE],uint8_t *key,int32_t keylen);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user