CWallet* pwalletMain;
CClientUIInterface uiInterface;
std::string strWalletFileName;
+unsigned int nNodeLifespan;
//////////////////////////////////////////////////////////////////////////////
//
// ********************************************************* Step 2: parameter interactions
+ nNodeLifespan = GetArg("-addrlifespan", 7);
+
fTestNet = GetBoolArg("-testnet");
if (fTestNet) {
SoftSetBoolArg("-irc", true);
if (IsProofOfStake())
{
+ assert(nNonce == 0);
+
// Coinbase output should be empty if proof-of-stake block
if (vtx[0].vout.size() != 1 || !vtx[0].vout[0].IsEmpty())
return DoS(100, error("CheckBlock() : coinbase output not empty for proof-of-stake block"));
}
else
{
+ assert(nNonce != 0);
+
// Coinbase fee paid until 20 Sep 2013
int64 nFee = GetBlockTime() < CHAINCHECKS_SWITCH_TIME ? vtx[0].GetMinFee() - MIN_TX_FEE : 0;
else if (strCommand == "getaddr")
{
+ // Don't return addresses older than nCutOff timestamp
+ int64 nCutOff = GetTime() - (nNodeLifespan * 24 * 60 * 60);
pfrom->vAddrToSend.clear();
vector<CAddress> vAddr = addrman.GetAddr();
BOOST_FOREACH(const CAddress &addr, vAddr)
- pfrom->PushAddress(addr);
+ if(addr.nTime > nCutOff)
+ pfrom->PushAddress(addr);
}
extern std::set<std::pair<COutPoint, unsigned int> > setStakeSeen;
extern CBlockIndex* pindexGenesisBlock;
extern unsigned int nStakeMinAge;
+extern unsigned int nNodeLifespan;
extern int nCoinbaseMaturity;
extern int nBestHeight;
extern uint256 nBestChainTrust;