diff --git a/src/komodo.h b/src/komodo.h index ecb6e03685..43c1922745 100644 --- a/src/komodo.h +++ b/src/komodo.h @@ -537,7 +537,7 @@ void komodo_connectblock(CBlockIndex *pindex,CBlock& block) } else printf("cant get scriptPubKey for ht.%d txi.%d vin.%d\n",height,i,j); } numvalid = bitweight(signedmask); - if ( (((height < 90000 || (signedmask & 1) != 0) && numvalid >= KOMODO_MINRATIFY) || numvalid > (numnotaries/4)) ) + if ( (((height < 90000 || (signedmask & 1) != 0) && numvalid >= KOMODO_MINRATIFY) || numvalid > (numnotaries/5)) ) { printf("%s ht.%d txi.%d signedmask.%llx numvins.%d numvouts.%d <<<<<<<<<<< notarized\n",ASSETCHAINS_SYMBOL,height,i,(long long)signedmask,numvins,numvouts); notarized = 1; diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index f98101d179..2a29b1dc9d 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -685,7 +685,9 @@ int32_t komodo_minerids(uint8_t *minerids,int32_t height,int32_t width) int32_t komodo_is_special(int32_t height,uint8_t pubkey33[33]) { - int32_t i,notaryid,minerid,limit; uint8_t _pubkey33[33]; + int32_t i,notaryid=0,minerid,limit,nid; uint8_t _pubkey33[33]; + if ( height >= 225000 ) + komodo_chosennotary(¬aryid,height,_pubkey33); if ( height >= 34000 && notaryid >= 0 ) { if ( height < 79693 ) @@ -695,11 +697,13 @@ int32_t komodo_is_special(int32_t height,uint8_t pubkey33[33]) else limit = 66; for (i=1; i 0 ) + fprintf(stderr,"ht.%d notaryid.%d already mined -i.%d nid.%d\n",height,notaryid,i,nid); + if ( height > 225000 ) + return(-1); } } //fprintf(stderr,"special notaryid.%d ht.%d limit.%d\n",notaryid,height,limit); diff --git a/src/komodo_pax.h b/src/komodo_pax.h index a8acba3088..80f2a75b60 100644 --- a/src/komodo_pax.h +++ b/src/komodo_pax.h @@ -528,7 +528,7 @@ uint64_t komodo_paxprice(uint64_t *seedp,int32_t height,char *base,char *rel,uin 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 ( height != 1381319936 ) + if ( height < 1381319936 ) printf("height.%d vs tip.%d\n",height,chainActive.Tip()->nHeight); return(0); } diff --git a/src/main.cpp b/src/main.cpp index 679524628a..25d74eb1a2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1435,7 +1435,13 @@ bool ReadBlockFromDisk(int32_t height,CBlock& block, const CDiskBlockPos& pos) // Check the header komodo_block2pubkey33(pubkey33,block); if (!(CheckEquihashSolution(&block, Params()) && CheckProofOfWork(height,pubkey33,block.GetHash(), block.nBits, Params().GetConsensus()))) + { + int32_t i; for (i=0; i<33; i++) + printf("%02x",pubkey33[i]); + fprintf(stderr," warning unexpected diff at ht.%d\n",height); + return error("ReadBlockFromDisk: Errors in block header at %s", pos.ToString()); + } return true; } diff --git a/src/pow.cpp b/src/pow.cpp index eb813087f3..9ae7871953 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -128,9 +128,6 @@ bool CheckProofOfWork(int32_t height,uint8_t *pubkey33,uint256 hash, unsigned in if ( height == 0 ) height = komodo_currentheight() + 1; special = komodo_chosennotary(¬aryid,height,pubkey33); - //for (i=0; i<33; i++) - // printf("%02x",pubkey33[i]); - //printf(" <- ht.%d\n",height); flag = komodo_eligiblenotary(pubkeys,mids,&nonzpkeys,height); if ( height > 34000 ) // 0 -> non-special notary { @@ -142,14 +139,6 @@ bool CheckProofOfWork(int32_t height,uint8_t *pubkey33,uint256 hash, unsigned in if ( nonz == 0 ) return(true); // will come back via different path with pubkey set special2 = komodo_is_special(height,pubkey33); - /*if ( notaryid >= 0 && ((height >= 64000 && height <= 90065) || (height % KOMODO_ELECTION_GAP) > 64) ) - { - if ( (height >= 64000 && height <= 90065) || (height % KOMODO_ELECTION_GAP) == 0 || (height < 80000 && (special != 0 || special2 > 0)) || (height >= 80000 && special2 > 0) ) - { - bnTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); - flag = 1; - } - }*/ if ( notaryid >= 0 ) { if ( height > 10000 && height < 80000 && (special != 0 || special2 > 0) ) @@ -167,7 +156,7 @@ bool CheckProofOfWork(int32_t height,uint8_t *pubkey33,uint256 hash, unsigned in // Check proof of work matches claimed amount if ( UintToArith256(hash) > bnTarget ) { - if ( KOMODO_LOADINGBLOCKS == 0 && height > 182507 && KOMODO_REWIND == 0 )//&& komodo_chainactive(height) != 0 && nonzpkeys > 0 + if ( KOMODO_LOADINGBLOCKS == 0 && height > 188000 && KOMODO_REWIND == 0 )//186269, 182507&& komodo_chainactive(height) != 0 && nonzpkeys > 0 { int32_t i; for (i=31; i>=0; i--) @@ -182,15 +171,20 @@ bool CheckProofOfWork(int32_t height,uint8_t *pubkey33,uint256 hash, unsigned in for (i=0; i<66; i++) printf("%d ",mids[i]); printf(" minerids from ht.%d\n",height); + if ( notaryid == -1 ) + { + sleep(3); + komodo_chosennotary(¬aryid,height,pubkey33); + if ( notaryid >= 0 ) + { + flag = komodo_eligiblenotary(pubkeys,mids,&nonzpkeys,height); + printf("found notaryid.%d flag.%d\n",notaryid,flag); + return(true); + } + } return error("CheckProofOfWork(): hash doesn't match nBits"); } } - if ( 0 && height > 180000 && nonzpkeys > 0 && strcmp((char *)NOTARY_PUBKEY.c_str(),"03b7621b44118017a16043f19b30cc8a4cfe068ac4e42417bae16ba460c80f3828") == 0 ) - { - for (i=0; i<66; i++) - fprintf(stderr,"%d ",mids[i]); - fprintf(stderr," minerids from ht.%d\n",height); - } return true; } diff --git a/src/rpcmining.cpp b/src/rpcmining.cpp index 5a3c0bbd19..b1be854e30 100644 --- a/src/rpcmining.cpp +++ b/src/rpcmining.cpp @@ -654,6 +654,7 @@ Value getblocktemplate(const Array& params, bool fHelp) // Correct this if GetBlockTemplate changes the order // entry.push_back(Pair("foundersreward", (int64_t)tx.vout[1].nValue)); //} + entry.push_back(Pair("coinbasevalue", 3*COIN)); entry.push_back(Pair("required", true)); txCoinbase = entry; } else diff --git a/src/rpcmisc.cpp b/src/rpcmisc.cpp index 0681265af5..841a5fb4f8 100644 --- a/src/rpcmisc.cpp +++ b/src/rpcmisc.cpp @@ -126,7 +126,7 @@ Value getinfo(const Array& params, bool fHelp) obj.push_back(Pair("errors", GetWarnings("statusbar"))); { char pubkeystr[65]; int32_t notaryid; - notaryid = komodo_whoami(pubkeystr,longestchain); + notaryid = komodo_whoami(pubkeystr,(int32_t)chainActive.Tip()->nHeight); obj.push_back(Pair("notaryid", notaryid)); obj.push_back(Pair("pubkey", pubkeystr)); if ( KOMODO_LASTMINED != 0 )