Skip to content

Commit

Permalink
Update protocol, add spork, add few LOCKs
Browse files Browse the repository at this point in the history
  • Loading branch information
livenodescoin committed Jul 13, 2019
1 parent 3c52a46 commit 8b4b5d6
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 5 deletions.
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 3)
define(_CLIENT_VERSION_MINOR, 1)
define(_CLIENT_VERSION_REVISION, 0)
define(_CLIENT_VERSION_REVISION, 1)
define(_CLIENT_VERSION_BUILD, 0)
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2019)
Expand Down
15 changes: 14 additions & 1 deletion src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4709,6 +4709,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,

else if (pfrom->nVersion == 0) {
// Must have a version message before anything else
LOCK(cs_main);
Misbehaving(pfrom->GetId(), 1);
return false;
}
Expand All @@ -4731,6 +4732,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
if (pfrom->nVersion < CADDR_TIME_VERSION && addrman.size() > 1000)
return true;
if (vAddr.size() > 1000) {
LOCK(cs_main);
Misbehaving(pfrom->GetId(), 20);
return error("message addr size() = %u", vAddr.size());
}
Expand Down Expand Up @@ -4790,6 +4792,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
vector<CInv> vInv;
vRecv >> vInv;
if (vInv.size() > MAX_INV_SZ) {
LOCK(cs_main);
Misbehaving(pfrom->GetId(), 20);
return error("message inv size() = %u", vInv.size());
}
Expand Down Expand Up @@ -4835,6 +4838,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
vector<CInv> vInv;
vRecv >> vInv;
if (vInv.size() > MAX_INV_SZ) {
LOCK(cs_main);
Misbehaving(pfrom->GetId(), 20);
return error("message getdata size() = %u", vInv.size());
}
Expand Down Expand Up @@ -5077,6 +5081,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// Bypass the normal CBlock deserialization, as we don't want to risk deserializing 2000 full blocks.
unsigned int nCount = ReadCompactSize(vRecv);
if (nCount > MAX_HEADERS_RESULTS) {
LOCK(cs_main);
Misbehaving(pfrom->GetId(), 20);
return error("headers message size = %u", nCount);
}
Expand Down Expand Up @@ -5307,6 +5312,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// This isn't a Misbehaving(100) (immediate ban) because the
// peer might be an older or different implementation with
// a different signature key, etc.
LOCK(cs_main);
Misbehaving(pfrom->GetId(), 10);
}
}
Expand All @@ -5317,6 +5323,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
strCommand == "filteradd" ||
strCommand == "filterclear")) {
LogPrintf("bloom message=%s\n", strCommand);
LOCK(cs_main);
Misbehaving(pfrom->GetId(), 100);
}

Expand Down Expand Up @@ -5344,13 +5351,16 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// Nodes must NEVER send a data item > 520 bytes (the max size for a script data object,
// and thus, the maximum size any matched object can have) in a filteradd message
if (vData.size() > MAX_SCRIPT_ELEMENT_SIZE) {
LOCK(cs_main);
Misbehaving(pfrom->GetId(), 100);
} else {
LOCK(pfrom->cs_filter);
if (pfrom->pfilter)
pfrom->pfilter->insert(vData);
else
else {
LOCK(cs_main);
Misbehaving(pfrom->GetId(), 100);
}
}
}

Expand Down Expand Up @@ -5404,6 +5414,9 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// it was the one which was commented out
int ActiveProtocol()
{
if (IsSporkActive(SPORK_9_NEW_PROTOCOL_ENFORCEMENT_2))
return MIN_PEER_PROTO_VERSION_AFTER_ENFORCEMENT_2;

return MIN_PEER_PROTO_VERSION_BEFORE_ENFORCEMENT;
}

Expand Down
3 changes: 3 additions & 0 deletions src/spork.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ int64_t GetSporkValue(int nSporkID)
if (nSporkID == SPORK_6_MN_WINNER_MINIMUM_AGE) r = SPORK_6_MN_WINNER_MINIMUM_AGE_DEFAULT;
if (nSporkID == SPORK_7_MN_REBROADCAST_ENFORCEMENT) r = SPORK_7_MN_REBROADCAST_ENFORCEMENT_DEFAULT;
if (nSporkID == SPORK_8_NEW_PROTOCOL_ENFORCEMENT) r = SPORK_8_NEW_PROTOCOL_ENFORCEMENT_DEFAULT;
if (nSporkID == SPORK_9_NEW_PROTOCOL_ENFORCEMENT_2) r = SPORK_9_NEW_PROTOCOL_ENFORCEMENT_2_DEFAULT;

if (r == -1) LogPrintf("GetSpork::Unknown Spork %d\n", nSporkID);
}
Expand Down Expand Up @@ -261,6 +262,7 @@ int CSporkManager::GetSporkIDByName(std::string strName)
if (strName == "SPORK_6_MN_WINNER_MINIMUM_AGE") return SPORK_6_MN_WINNER_MINIMUM_AGE;
if (strName == "SPORK_7_MN_REBROADCAST_ENFORCEMENT") return SPORK_7_MN_REBROADCAST_ENFORCEMENT;
if (strName == "SPORK_8_NEW_PROTOCOL_ENFORCEMENT") return SPORK_8_NEW_PROTOCOL_ENFORCEMENT;
if (strName == "SPORK_9_NEW_PROTOCOL_ENFORCEMENT_2") return SPORK_9_NEW_PROTOCOL_ENFORCEMENT_2;


return -1;
Expand All @@ -276,6 +278,7 @@ std::string CSporkManager::GetSporkNameByID(int id)
if (id == SPORK_6_MN_WINNER_MINIMUM_AGE) return "SPORK_6_MN_WINNER_MINIMUM_AGE";
if (id == SPORK_7_MN_REBROADCAST_ENFORCEMENT) return "SPORK_7_MN_REBROADCAST_ENFORCEMENT";
if (id == SPORK_8_NEW_PROTOCOL_ENFORCEMENT) return "SPORK_8_NEW_PROTOCOL_ENFORCEMENT";
if (id == SPORK_9_NEW_PROTOCOL_ENFORCEMENT_2) return "SPORK_9_NEW_PROTOCOL_ENFORCEMENT_2";

return "Unknown";
}
4 changes: 3 additions & 1 deletion src/spork.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ using namespace boost;
Sporks 11,12, and 16 to be removed with 1st zerocoin release
*/
#define SPORK_START 10001
#define SPORK_END 10008
#define SPORK_END 10009

#define SPORK_1_SWIFTTX 10001
#define SPORK_2_SWIFTTX_BLOCK_FILTERING 10002
Expand All @@ -40,6 +40,7 @@ using namespace boost;
#define SPORK_6_MN_WINNER_MINIMUM_AGE 10006
#define SPORK_7_MN_REBROADCAST_ENFORCEMENT 10007
#define SPORK_8_NEW_PROTOCOL_ENFORCEMENT 10008
#define SPORK_9_NEW_PROTOCOL_ENFORCEMENT_2 10009

#define SPORK_1_SWIFTTX_DEFAULT 978307200 //2001-1-1
#define SPORK_2_SWIFTTX_BLOCK_FILTERING_DEFAULT 1424217600 //2015-2-18
Expand All @@ -51,6 +52,7 @@ using namespace boost;
// Set this to zero to emulate classic behaviour
#define SPORK_7_MN_REBROADCAST_ENFORCEMENT_DEFAULT 4529244393
#define SPORK_8_NEW_PROTOCOL_ENFORCEMENT_DEFAULT 4529244393
#define SPORK_9_NEW_PROTOCOL_ENFORCEMENT_2_DEFAULT 4529244393

class CSporkMessage;
class CSporkManager;
Expand Down
5 changes: 3 additions & 2 deletions src/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* network protocol versioning
*/

static const int PROTOCOL_VERSION = 90010;
static const int PROTOCOL_VERSION = 90020;

//! initial proto version, to be increased after version/verack negotiation
static const int INIT_PROTO_VERSION = 209;
Expand All @@ -23,7 +23,8 @@ static const int GETHEADERS_VERSION = 70077;

//! disconnect from peers older than this proto version
static const int MIN_PEER_PROTO_VERSION_BEFORE_ENFORCEMENT = 90010;
static const int MIN_PEER_PROTO_VERSION_AFTER_ENFORCEMENT = 90010;
static const int MIN_PEER_PROTO_VERSION_AFTER_ENFORCEMENT = 90011;
static const int MIN_PEER_PROTO_VERSION_AFTER_ENFORCEMENT_2 = 90020;

//! nTime field added to CAddress, starting with this version;
//! if possible, avoid requesting addresses nodes older than this
Expand Down

0 comments on commit 8b4b5d6

Please sign in to comment.