Test
This commit is contained in:
29
src/main.cpp
29
src/main.cpp
@@ -53,7 +53,7 @@ using namespace std;
|
|||||||
|
|
||||||
CCriticalSection cs_main;
|
CCriticalSection cs_main;
|
||||||
extern uint8_t NOTARY_PUBKEY33[33];
|
extern uint8_t NOTARY_PUBKEY33[33];
|
||||||
extern int32_t KOMODO_LOADINGBLOCKS;
|
extern int32_t KOMODO_LOADINGBLOCKS,KOMODO_LONGESTCHAIN;
|
||||||
void komodo_block2pubkey33(uint8_t *pubkey33,CBlock *block);
|
void komodo_block2pubkey33(uint8_t *pubkey33,CBlock *block);
|
||||||
|
|
||||||
BlockMap mapBlockIndex;
|
BlockMap mapBlockIndex;
|
||||||
@@ -3524,7 +3524,7 @@ bool CheckBlock(int32_t height,CBlockIndex *pindex,const CBlock& block, CValidat
|
|||||||
libzcash::ProofVerifier& verifier,
|
libzcash::ProofVerifier& verifier,
|
||||||
bool fCheckPOW, bool fCheckMerkleRoot)
|
bool fCheckPOW, bool fCheckMerkleRoot)
|
||||||
{
|
{
|
||||||
uint8_t pubkey33[33]; CBlockIndex *tipindex;
|
uint8_t pubkey33[33];
|
||||||
// These are checks that are independent of context.
|
// These are checks that are independent of context.
|
||||||
|
|
||||||
// Check that the header is valid (particularly PoW). This is mostly
|
// Check that the header is valid (particularly PoW). This is mostly
|
||||||
@@ -3535,14 +3535,6 @@ bool CheckBlock(int32_t height,CBlockIndex *pindex,const CBlock& block, CValidat
|
|||||||
komodo_block2pubkey33(pubkey33,(CBlock *)&block);
|
komodo_block2pubkey33(pubkey33,(CBlock *)&block);
|
||||||
if ( fCheckPOW && !CheckProofOfWork(height,pubkey33,block.GetHash(), block.nBits, Params().GetConsensus()) )
|
if ( fCheckPOW && !CheckProofOfWork(height,pubkey33,block.GetHash(), block.nBits, Params().GetConsensus()) )
|
||||||
{
|
{
|
||||||
if ( (tipindex= chainActive.Tip()) != 0 && height >= tipindex->nHeight && IsInitialBlockDownload() == 0 )
|
|
||||||
{
|
|
||||||
fprintf(stderr,"check longest chain\n");
|
|
||||||
if ( komodo_longestchain() > tipindex->nHeight+100 )
|
|
||||||
{
|
|
||||||
fprintf(stderr,"tip.%d longest.%d newblock.%d\n",tipindex->nHeight,komodo_longestchain(),height);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return state.DoS(33, error("CheckBlock(): proof of work failed"),REJECT_INVALID, "high-hash");
|
return state.DoS(33, error("CheckBlock(): proof of work failed"),REJECT_INVALID, "high-hash");
|
||||||
}
|
}
|
||||||
// Check the merkle root.
|
// Check the merkle root.
|
||||||
@@ -3711,14 +3703,24 @@ bool AcceptBlockHeader(const CBlockHeader& block, CValidationState& state, CBloc
|
|||||||
// Check for duplicate
|
// Check for duplicate
|
||||||
uint256 hash = block.GetHash();
|
uint256 hash = block.GetHash();
|
||||||
BlockMap::iterator miSelf = mapBlockIndex.find(hash);
|
BlockMap::iterator miSelf = mapBlockIndex.find(hash);
|
||||||
CBlockIndex *pindex = NULL;
|
CBlockIndex *tipindex,*pindex = NULL;
|
||||||
if (miSelf != mapBlockIndex.end()) {
|
if (miSelf != mapBlockIndex.end()) {
|
||||||
// Block header is already known.
|
// Block header is already known.
|
||||||
pindex = miSelf->second;
|
pindex = miSelf->second;
|
||||||
if (ppindex)
|
if (ppindex)
|
||||||
*ppindex = pindex;
|
*ppindex = pindex;
|
||||||
if (pindex != 0 && pindex->nStatus & BLOCK_FAILED_MASK)
|
if ( pindex != 0 && pindex->nStatus & BLOCK_FAILED_MASK )
|
||||||
|
{
|
||||||
|
if ( (tipindex= chainActive.Tip()) != 0 && pindex->nHeight >= tipindex->nHeight && IsInitialBlockDownload() == 0 )
|
||||||
|
{
|
||||||
|
fprintf(stderr,"check longest chain.%d\n",KOMODO_LONGESTCHAIN);
|
||||||
|
if ( KOMODO_LONGESTCHAIN > tipindex->nHeight+100 )
|
||||||
|
{
|
||||||
|
fprintf(stderr,"tip.%d longest.%d newblock.%d\n",tipindex->nHeight,KOMODO_LONGESTCHAIN,pindex->nHeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
return state.Invalid(error("%s: block is marked invalid", __func__), 0, "duplicate");
|
return state.Invalid(error("%s: block is marked invalid", __func__), 0, "duplicate");
|
||||||
|
}
|
||||||
if ( pindex != 0 && IsInitialBlockDownload() == 0 ) // jl777 debug test
|
if ( pindex != 0 && IsInitialBlockDownload() == 0 ) // jl777 debug test
|
||||||
{
|
{
|
||||||
if (!CheckBlockHeader(pindex->nHeight,pindex, block, state))
|
if (!CheckBlockHeader(pindex->nHeight,pindex, block, state))
|
||||||
@@ -5723,7 +5725,8 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
|||||||
}
|
}
|
||||||
if (!AcceptBlockHeader(header, state, &pindexLast)) {
|
if (!AcceptBlockHeader(header, state, &pindexLast)) {
|
||||||
int nDoS;
|
int nDoS;
|
||||||
if (state.IsInvalid(nDoS)) {
|
if (state.IsInvalid(nDoS))
|
||||||
|
{
|
||||||
if (nDoS > 0)
|
if (nDoS > 0)
|
||||||
Misbehaving(pfrom->GetId(), nDoS/nDoS);
|
Misbehaving(pfrom->GetId(), nDoS/nDoS);
|
||||||
return error("invalid header received");
|
return error("invalid header received");
|
||||||
|
|||||||
@@ -165,16 +165,16 @@ UniValue getpeerinfo(const UniValue& params, bool fHelp)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t KOMODO_LONGESTCHAIN;
|
||||||
int32_t komodo_longestchain()
|
int32_t komodo_longestchain()
|
||||||
{
|
{
|
||||||
int32_t ht,n=0,num=0,maxheight=0,height = 0;
|
int32_t ht,n=0,num=0,maxheight=0,height = 0;
|
||||||
//LOCK(cs_main);
|
LOCK(cs_main);
|
||||||
fprintf(stderr,"komodo_longestchain\n");
|
|
||||||
vector<CNodeStats> vstats;
|
vector<CNodeStats> vstats;
|
||||||
CopyNodeStats(vstats);
|
CopyNodeStats(vstats);
|
||||||
BOOST_FOREACH(const CNodeStats& stats, vstats)
|
BOOST_FOREACH(const CNodeStats& stats, vstats)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"komodo_longestchain iter.%d\n",n);
|
//fprintf(stderr,"komodo_longestchain iter.%d\n",n);
|
||||||
CNodeStateStats statestats;
|
CNodeStateStats statestats;
|
||||||
bool fStateStats = GetNodeStateStats(stats.nodeid,statestats);
|
bool fStateStats = GetNodeStateStats(stats.nodeid,statestats);
|
||||||
ht = 0;
|
ht = 0;
|
||||||
@@ -193,8 +193,12 @@ int32_t komodo_longestchain()
|
|||||||
height = ht;
|
height = ht;
|
||||||
}
|
}
|
||||||
if ( num > (n >> 1) )
|
if ( num > (n >> 1) )
|
||||||
|
{
|
||||||
|
KOMODO_LONGESTCHAIN = height;
|
||||||
return(height);
|
return(height);
|
||||||
else return(0);
|
}
|
||||||
|
KOMODO_LONGESTCHAIN = 0;
|
||||||
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
UniValue addnode(const UniValue& params, bool fHelp)
|
UniValue addnode(const UniValue& params, bool fHelp)
|
||||||
|
|||||||
Reference in New Issue
Block a user