int CMasternodePayments::GetMinMasternodePaymentsProto() { if (IsSporkActive(SPORK_10_MASTERNODE_PAY_UPDATED_NODES)) return ActiveProtocol(); // Allow only updated peers else return MIN_PEER_PROTO_VERSION_BEFORE_ENFORCEMENT; // Also allow old peers as long as they are allowed to run }
QString ClientModel::getMasternodeCountString() const { int ipv4 = 0, ipv6 = 0, onion = 0; mnodeman.CountNetworks(ActiveProtocol(), ipv4, ipv6, onion); int nUnknown = mnodeman.size() - ipv4 - ipv6 - onion; if(nUnknown < 0) nUnknown = 0; return tr("Total: %1 (IPv4: %2 / IPv6: %3 / Tor: %4 / Unknown: %5)").arg(QString::number((int)mnodeman.size())).arg(QString::number((int)ipv4)).arg(QString::number((int)ipv6)).arg(QString::number((int)onion)).arg(QString::number((int)nUnknown)); }
void CObfuScationRelay::Relay() { int nCount = std::min(mnodeman.CountEnabled(ActiveProtocol()), 20); int nRank1 = (rand() % nCount) + 1; int nRank2 = (rand() % nCount) + 1; //keep picking another second number till we get one that doesn't match while (nRank1 == nRank2) nRank2 = (rand() % nCount) + 1; //printf("rank 1 - rank2 %d %d \n", nRank1, nRank2); //relay this message through 2 separate nodes for redundancy RelayThroughNode(nRank1); RelayThroughNode(nRank2); }
void CObfuScationRelay::RelayThroughNode(int nRank) { CMasternode* pmn = mnodeman.GetMasternodeByRank(nRank, nBlockHeight, ActiveProtocol()); if (pmn != NULL) { //printf("RelayThroughNode %s\n", pmn->addr.ToString().c_str()); CNode* pnode = ConnectNode((CAddress)pmn->addr, NULL, false); if (pnode) { //printf("Connected\n"); pnode->PushMessage("dsr", (*this)); pnode->Release(); return; } } else { //printf("RelayThroughNode NULL\n"); } }