From 8ee93080ccd7ab80f6d57f7d7384c1b53d197cc9 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 6 Mar 2017 09:50:03 +0200 Subject: [PATCH] support Undo KOMODO_LASTMINED --- src/komodo.h | 1 + src/komodo_events.h | 6 ++++++ src/komodo_globals.h | 4 ++-- src/miner.cpp | 5 +++-- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/komodo.h b/src/komodo.h index 27e8a53e4..f8df740c0 100644 --- a/src/komodo.h +++ b/src/komodo.h @@ -338,6 +338,7 @@ int32_t komodo_voutupdate(int32_t *isratificationp,int32_t notaryid,uint8_t *scr if ( i == 0 && j == 0 && memcmp(NOTARY_PUBKEY33,scriptbuf+1,33) == 0 ) { printf("%s KOMODO_LASTMINED.%d -> %d\n",ASSETCHAINS_SYMBOL,KOMODO_LASTMINED,height); + prevKOMODO_LASTMINED = KOMODO_LASTMINED; KOMODO_LASTMINED = height; } decode_hex(crypto777,33,(char *)CRYPTO777_PUBSECPSTR); diff --git a/src/komodo_events.h b/src/komodo_events.h index 14a9478af..2652aaa58 100644 --- a/src/komodo_events.h +++ b/src/komodo_events.h @@ -116,6 +116,12 @@ void komodo_event_rewind(struct komodo_state *sp,char *symbol,int32_t height) struct komodo_event *ep; if ( sp != 0 ) { + if ( ASSETCHAINS_SYMBOL[0] == 0 && height <= KOMODO_LASTMINED && prevKOMODO_LASTMINED != 0 ) + { + printf("undo KOMODO_LASTMINED %d <- %d\n",KOMODO_LASTMINED,prevKOMODO_LASTMINED); + KOMODO_LASTMINED = prevKOMODO_LASTMINED; + prevKOMODO_LASTMINED = 0; + } while ( sp->Komodo_events != 0 && sp->Komodo_numevents > 0 ) { if ( (ep= sp->Komodo_events[sp->Komodo_numevents-1]) != 0 ) diff --git a/src/komodo_globals.h b/src/komodo_globals.h index 1faf91a26..55b54ddf8 100644 --- a/src/komodo_globals.h +++ b/src/komodo_globals.h @@ -40,7 +40,7 @@ struct komodo_state KOMODO_STATES[34]; int COINBASE_MATURITY = _COINBASE_MATURITY;//100; int32_t IS_KOMODO_NOTARY,KOMODO_REWIND,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,ASSETCHAINS_SEED,KOMODO_ON_DEMAND,KOMODO_EXTERNAL_NOTARIES,KOMODO_PASSPORT_INITDONE,KOMODO_PAX,KOMODO_EXCHANGEWALLET; -int32_t KOMODO_LASTMINED; +int32_t KOMODO_LASTMINED,prevKOMODO_LASTMINED; std::string NOTARY_PUBKEY,ASSETCHAINS_NOTARIES; uint8_t NOTARY_PUBKEY33[33]; @@ -55,4 +55,4 @@ char KMDUSERPASS[4096],BTCUSERPASS[4096]; uint16_t BITCOIND_PORT = 7771; uint64_t PENDING_KOMODO_TX; struct komodo_kv *KOMODO_KV; -pthread_mutex_t KOMODO_KV_mutex; \ No newline at end of file +pthread_mutex_t KOMODO_KV_mutex; diff --git a/src/miner.cpp b/src/miner.cpp index 6dc5ec03b..0fe7c46f4 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -522,7 +522,7 @@ static bool ProcessBlockFound(CBlock* pblock, CWallet& wallet, CReserveKey& rese int32_t komodo_baseid(char *origbase); int32_t komodo_eligiblenotary(uint8_t pubkeys[66][33],int32_t *mids,int32_t *nonzpkeysp,int32_t height); -int32_t FOUND_BLOCK; +int32_t FOUND_BLOCK,KOMODO_MAYBEMINED; extern int32_t KOMODO_LASTMINED; void static BitcoinMiner(CWallet *pwallet) @@ -667,7 +667,7 @@ void static BitcoinMiner(CWallet *pwallet) if ( mids[j] == notaryid ) break; } else fprintf(stderr,"no nonz pubkeys\n"); - if ( j == 65 && Mining_height > KOMODO_LASTMINED+64 ) + if ( j == 65 && Mining_height > KOMODO_MAYBEMINED+3 && Mining_height > KOMODO_LASTMINED+64 ) { hashTarget = arith_uint256().SetCompact(KOMODO_MINDIFF_NBITS); fprintf(stderr,"I am the chosen one for %s ht.%d\n",ASSETCHAINS_SYMBOL,pindexPrev->nHeight+1); @@ -792,6 +792,7 @@ void static BitcoinMiner(CWallet *pwallet) fprintf(stderr,"%02x",((uint8_t *)&hash)[i]); fprintf(stderr," <- %s Block found %d\n",ASSETCHAINS_SYMBOL,Mining_height); FOUND_BLOCK = 1; + KOMODO_MAYBEMINED = Mining_height; break; } } catch (EhSolverCancelledException&) {