Major rebase and fix staking.
This commit is contained in:
70
src/main.cpp
70
src/main.cpp
@@ -1244,7 +1244,8 @@ int32_t komodo_isnotaryvout(char *coinaddr) // from ac_private chains only
|
||||
{
|
||||
if ( is_STAKED(ASSETCHAINS_SYMBOL) != 0 )
|
||||
{
|
||||
if ( NOTARYADDRS[0][0] != 0 && NUM_NOTARIES != 0 ) {
|
||||
if ( NOTARYADDRS[0][0] != 0 && NUM_NOTARIES != 0 )
|
||||
{
|
||||
for (int32_t i=0; i<=NUM_NOTARIES; i++)
|
||||
if ( strcmp(coinaddr,NOTARYADDRS[i]) == 0 )
|
||||
return(1);
|
||||
@@ -1764,8 +1765,10 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa
|
||||
if (pfMissingInputs)
|
||||
*pfMissingInputs = true;
|
||||
//fprintf(stderr,"missing inputs\n");
|
||||
return state.DoS(0, error("AcceptToMemoryPool: tx inputs not found"),REJECT_INVALID, "bad-txns-inputs-missing");
|
||||
return(false);
|
||||
if (!fSkipExpiry)
|
||||
return state.DoS(0, error("AcceptToMemoryPool: tx inputs not found"),REJECT_INVALID, "bad-txns-inputs-missing");
|
||||
else
|
||||
return(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1773,7 +1776,10 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa
|
||||
if (!view.HaveInputs(tx))
|
||||
{
|
||||
//fprintf(stderr,"accept failure.1\n");
|
||||
return state.Invalid(error("AcceptToMemoryPool: inputs already spent"),REJECT_DUPLICATE, "bad-txns-inputs-spent");
|
||||
if (!fSkipExpiry)
|
||||
return state.Invalid(error("AcceptToMemoryPool: inputs already spent"),REJECT_DUPLICATE, "bad-txns-inputs-spent");
|
||||
else
|
||||
return(false);
|
||||
}
|
||||
}
|
||||
// are the joinsplit's requirements met?
|
||||
@@ -3302,7 +3308,7 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin
|
||||
{
|
||||
if (!view.HaveInputs(tx))
|
||||
{
|
||||
return state.DoS(100, error("ConnectBlock(): inputs missing/spent"),
|
||||
return state.DoS(100, error("ConnectBlock(): inputs missing/spent %s",tx.GetHash().ToString().c_str()),
|
||||
REJECT_INVALID, "bad-txns-inputs-missingorspent");
|
||||
}
|
||||
// are the JoinSplit's requirements met?
|
||||
@@ -3846,8 +3852,7 @@ bool static DisconnectTip(CValidationState &state, bool fBare = false) {
|
||||
if ((i == (block.vtx.size() - 1)) && (ASSETCHAINS_STAKED != 0 && (komodo_isPoS((CBlock *)&block) != 0)))
|
||||
{
|
||||
#ifdef ENABLE_WALLET
|
||||
TxToRemove.push_back(tx.GetHash());
|
||||
//pwalletMain->EraseFromWallet(tx.GetHash());
|
||||
pwalletMain->EraseFromWallet(tx.GetHash());
|
||||
#endif
|
||||
}
|
||||
else
|
||||
@@ -3855,25 +3860,6 @@ bool static DisconnectTip(CValidationState &state, bool fBare = false) {
|
||||
SyncWithWallets(tx, NULL);
|
||||
}
|
||||
}
|
||||
if ( ASSETCHAINS_STAKED != 0 ) // If Staked chain, scan wallet for orphaned txs and delete them.
|
||||
{
|
||||
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||
for (map<uint256, CWalletTx>::iterator it = pwalletMain->mapWallet.begin(); it != pwalletMain->mapWallet.end(); ++it)
|
||||
{
|
||||
CTransaction tx;
|
||||
uint256 hashBlock;
|
||||
if (!GetTransaction((*it).first,tx,hashBlock,true))
|
||||
{
|
||||
fprintf(stderr, "TX Does Not Exist: %s\n",(*it).first.ToString().c_str());
|
||||
TxToRemove.push_back((*it).first);
|
||||
}
|
||||
}
|
||||
BOOST_FOREACH (uint256& hash, TxToRemove)
|
||||
{
|
||||
pwalletMain->EraseFromWallet(hash);
|
||||
fprintf(stderr, "Erased %s from wallet.\n",hash.ToString().c_str());
|
||||
}
|
||||
}
|
||||
// Update cached incremental witnesses
|
||||
GetMainSignals().ChainTip(pindexDelete, &block, newSproutTree, newSaplingTree, false);
|
||||
return true;
|
||||
@@ -6601,32 +6587,20 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||
CAddress addrFrom;
|
||||
uint64_t nNonce = 1;
|
||||
int nVersion; // use temporary for version, don't set version number until validated as connected
|
||||
int minVersion = MIN_PEER_PROTO_VERSION;
|
||||
if ( is_STAKED(ASSETCHAINS_SYMBOL) != 0 )
|
||||
minVersion = STAKEDMIN_PEER_PROTO_VERSION;
|
||||
vRecv >> nVersion >> pfrom->nServices >> nTime >> addrMe;
|
||||
if (nVersion == 10300)
|
||||
nVersion = 300;
|
||||
if ( is_STAKED(ASSETCHAINS_SYMBOL) != 0 )
|
||||
if (nVersion < minVersion)
|
||||
{
|
||||
if (nVersion < STAKEDMIN_PEER_PROTO_VERSION)
|
||||
{
|
||||
// disconnect from peers older than this proto version
|
||||
LogPrintf("peer=%d using obsolete version %i; disconnecting\n", pfrom->id, pfrom->nVersion);
|
||||
pfrom->PushMessage("reject", strCommand, REJECT_OBSOLETE,
|
||||
strprintf("Version must be %d or greater", MIN_PEER_PROTO_VERSION));
|
||||
pfrom->fDisconnect = true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (nVersion < MIN_PEER_PROTO_VERSION)
|
||||
{
|
||||
// disconnect from peers older than this proto version
|
||||
LogPrintf("peer=%d using obsolete version %i; disconnecting\n", pfrom->id, pfrom->nVersion);
|
||||
pfrom->PushMessage("reject", strCommand, REJECT_OBSOLETE,
|
||||
strprintf("Version must be %d or greater", MIN_PEER_PROTO_VERSION));
|
||||
pfrom->fDisconnect = true;
|
||||
return false;
|
||||
}
|
||||
// disconnect from peers older than this proto version
|
||||
LogPrintf("peer=%d using obsolete version %i; disconnecting\n", pfrom->id, pfrom->nVersion);
|
||||
pfrom->PushMessage("reject", strCommand, REJECT_OBSOLETE,
|
||||
strprintf("Version must be %d or greater", minVersion));
|
||||
pfrom->fDisconnect = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Reject incoming connections from nodes that don't know about the current epoch
|
||||
|
||||
Reference in New Issue
Block a user