From 30884beecf4d35fe02c7e01c1847c4481ce8b167 Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 18 Aug 2013 18:08:47 +0400 Subject: [PATCH] Do not return addresses onder than specified lifespan. -addrlifespan is 7 days by default. --- src/init.cpp | 3 +++ src/main.cpp | 9 ++++++++- src/main.h | 1 + 3 files changed, 12 insertions(+), 1 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index b888afd..59ce450 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -27,6 +27,7 @@ using namespace boost; CWallet* pwalletMain; CClientUIInterface uiInterface; std::string strWalletFileName; +unsigned int nNodeLifespan; ////////////////////////////////////////////////////////////////////////////// // @@ -350,6 +351,8 @@ bool AppInit2() // ********************************************************* Step 2: parameter interactions + nNodeLifespan = GetArg("-addrlifespan", 7); + fTestNet = GetBoolArg("-testnet"); if (fTestNet) { SoftSetBoolArg("-irc", true); diff --git a/src/main.cpp b/src/main.cpp index daa7f7d..18c0b17 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2147,6 +2147,8 @@ bool CBlock::CheckBlock(bool fCheckPOW, bool fCheckMerkleRoot, bool fCheckSig) c 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")); @@ -2168,6 +2170,8 @@ bool CBlock::CheckBlock(bool fCheckPOW, bool fCheckMerkleRoot, bool fCheckSig) c } else { + assert(nNonce != 0); + // Coinbase fee paid until 20 Sep 2013 int64 nFee = GetBlockTime() < CHAINCHECKS_SWITCH_TIME ? vtx[0].GetMinFee() - MIN_TX_FEE : 0; @@ -3590,10 +3594,13 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) else if (strCommand == "getaddr") { + // Don't return addresses older than nCutOff timestamp + int64 nCutOff = GetTime() - (nNodeLifespan * 24 * 60 * 60); pfrom->vAddrToSend.clear(); vector vAddr = addrman.GetAddr(); BOOST_FOREACH(const CAddress &addr, vAddr) - pfrom->PushAddress(addr); + if(addr.nTime > nCutOff) + pfrom->PushAddress(addr); } diff --git a/src/main.h b/src/main.h index 7a2b9dc..34913bf 100644 --- a/src/main.h +++ b/src/main.h @@ -69,6 +69,7 @@ extern std::map mapBlockIndex; extern std::set > setStakeSeen; extern CBlockIndex* pindexGenesisBlock; extern unsigned int nStakeMinAge; +extern unsigned int nNodeLifespan; extern int nCoinbaseMaturity; extern int nBestHeight; extern uint256 nBestChainTrust; -- 1.7.1