@@ -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);
|
} else printf("cant get scriptPubKey for ht.%d txi.%d vin.%d\n",height,i,j);
|
||||||
}
|
}
|
||||||
numvalid = bitweight(signedmask);
|
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);
|
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;
|
notarized = 1;
|
||||||
|
|||||||
@@ -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 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 >= 34000 && notaryid >= 0 )
|
||||||
{
|
{
|
||||||
if ( height < 79693 )
|
if ( height < 79693 )
|
||||||
@@ -695,11 +697,13 @@ int32_t komodo_is_special(int32_t height,uint8_t pubkey33[33])
|
|||||||
else limit = 66;
|
else limit = 66;
|
||||||
for (i=1; i<limit; i++)
|
for (i=1; i<limit; i++)
|
||||||
{
|
{
|
||||||
komodo_chosennotary(¬aryid,height-i,_pubkey33);
|
komodo_chosennotary(&nid,height-i,_pubkey33);
|
||||||
if ( komodo_minerid(height-i,_pubkey33) == notaryid )
|
if ( nid == notaryid ) //komodo_minerid(height-i,_pubkey33)
|
||||||
{
|
{
|
||||||
//fprintf(stderr,"ht.%d notaryid.%d already mined -i.%d\n",height,notaryid,i);
|
if ( (0) && notaryid > 0 )
|
||||||
return(-1);
|
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);
|
//fprintf(stderr,"special notaryid.%d ht.%d limit.%d\n",notaryid,height,limit);
|
||||||
|
|||||||
@@ -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;
|
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.Tip() != 0 && height > chainActive.Tip()->nHeight )
|
||||||
{
|
{
|
||||||
if ( height != 1381319936 )
|
if ( height < 1381319936 )
|
||||||
printf("height.%d vs tip.%d\n",height,chainActive.Tip()->nHeight);
|
printf("height.%d vs tip.%d\n",height,chainActive.Tip()->nHeight);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1435,7 +1435,13 @@ bool ReadBlockFromDisk(int32_t height,CBlock& block, const CDiskBlockPos& pos)
|
|||||||
// Check the header
|
// Check the header
|
||||||
komodo_block2pubkey33(pubkey33,block);
|
komodo_block2pubkey33(pubkey33,block);
|
||||||
if (!(CheckEquihashSolution(&block, Params()) && CheckProofOfWork(height,pubkey33,block.GetHash(), block.nBits, Params().GetConsensus())))
|
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 error("ReadBlockFromDisk: Errors in block header at %s", pos.ToString());
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
30
src/pow.cpp
30
src/pow.cpp
@@ -128,9 +128,6 @@ bool CheckProofOfWork(int32_t height,uint8_t *pubkey33,uint256 hash, unsigned in
|
|||||||
if ( height == 0 )
|
if ( height == 0 )
|
||||||
height = komodo_currentheight() + 1;
|
height = komodo_currentheight() + 1;
|
||||||
special = komodo_chosennotary(¬aryid,height,pubkey33);
|
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);
|
flag = komodo_eligiblenotary(pubkeys,mids,&nonzpkeys,height);
|
||||||
if ( height > 34000 ) // 0 -> non-special notary
|
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 )
|
if ( nonz == 0 )
|
||||||
return(true); // will come back via different path with pubkey set
|
return(true); // will come back via different path with pubkey set
|
||||||
special2 = komodo_is_special(height,pubkey33);
|
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 ( notaryid >= 0 )
|
||||||
{
|
{
|
||||||
if ( height > 10000 && height < 80000 && (special != 0 || special2 > 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
|
// Check proof of work matches claimed amount
|
||||||
if ( UintToArith256(hash) > bnTarget )
|
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;
|
int32_t i;
|
||||||
for (i=31; i>=0; 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++)
|
for (i=0; i<66; i++)
|
||||||
printf("%d ",mids[i]);
|
printf("%d ",mids[i]);
|
||||||
printf(" minerids from ht.%d\n",height);
|
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");
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -654,6 +654,7 @@ Value getblocktemplate(const Array& params, bool fHelp)
|
|||||||
// Correct this if GetBlockTemplate changes the order
|
// Correct this if GetBlockTemplate changes the order
|
||||||
// entry.push_back(Pair("foundersreward", (int64_t)tx.vout[1].nValue));
|
// entry.push_back(Pair("foundersreward", (int64_t)tx.vout[1].nValue));
|
||||||
//}
|
//}
|
||||||
|
entry.push_back(Pair("coinbasevalue", 3*COIN));
|
||||||
entry.push_back(Pair("required", true));
|
entry.push_back(Pair("required", true));
|
||||||
txCoinbase = entry;
|
txCoinbase = entry;
|
||||||
} else
|
} else
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ Value getinfo(const Array& params, bool fHelp)
|
|||||||
obj.push_back(Pair("errors", GetWarnings("statusbar")));
|
obj.push_back(Pair("errors", GetWarnings("statusbar")));
|
||||||
{
|
{
|
||||||
char pubkeystr[65]; int32_t notaryid;
|
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("notaryid", notaryid));
|
||||||
obj.push_back(Pair("pubkey", pubkeystr));
|
obj.push_back(Pair("pubkey", pubkeystr));
|
||||||
if ( KOMODO_LASTMINED != 0 )
|
if ( KOMODO_LASTMINED != 0 )
|
||||||
|
|||||||
Reference in New Issue
Block a user