Skip to content

Commit

Permalink
Merge pull request #1 from genesis-x/mz/1.3.x-release
Browse files Browse the repository at this point in the history
Enable governance, add checkpoints, update sporks, bump proto and version
  • Loading branch information
genesis-x committed Aug 17, 2018
2 parents 5e6531b + 722fb98 commit a1b5c38
Show file tree
Hide file tree
Showing 9 changed files with 66 additions and 30 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Expand Up @@ -128,3 +128,6 @@ CMakeLists.txt
cmake-build-debug
config.log
config.status

src/leveldb/build_config.mk
background.tiff*
4 changes: 2 additions & 2 deletions configure.ac
@@ -1,8 +1,8 @@
dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 1)
define(_CLIENT_VERSION_MINOR, 2)
define(_CLIENT_VERSION_REVISION, 1)
define(_CLIENT_VERSION_MINOR, 3)
define(_CLIENT_VERSION_REVISION, 0)
define(_CLIENT_VERSION_BUILD, 0)
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2017)
Expand Down
30 changes: 16 additions & 14 deletions src/chainparams.cpp
Expand Up @@ -54,13 +54,16 @@ static void convertSeed6(std::vector<CAddress>& vSeedsOut, const SeedSpec6* data
// + Contains no strange transactions
static Checkpoints::MapCheckpoints mapCheckpoints =
boost::assign::map_list_of
(0, uint256("0x000007d87c5c9a214365124b0109599ca2640d6b1b3a86ebe855b310f49cebc0"));
( 0, uint256("000007d87c5c9a214365124b0109599ca2640d6b1b3a86ebe855b310f49cebc0"))
( 20000, uint256("649f7d85aa7670cc4978f8b712f25d4063a984d0dd5ed165fc46f75d542cec4e"))
( 40000, uint256("8ea815b75a8303fdd2a61202a4782313803de5c999fe74140aae45fe8e5143ea"));

static const Checkpoints::CCheckpointData data = {
&mapCheckpoints,
1514540176, // * UNIX timestamp of last checkpoint block
0, // * total number of transactions between genesis and last checkpoint
1529839927, // * UNIX timestamp of last checkpoint block
95164, // * total number of transactions between genesis and last checkpoint
// (the tx=... number in the SetBestChain debug.log lines)
2000 // * estimated number of transactions per day after checkpoint
3425 // * estimated number of transactions per day after checkpoint
};

static Checkpoints::MapCheckpoints mapCheckpointsTestnet =
Expand Down Expand Up @@ -194,7 +197,7 @@ class CMainParams : public CChainParams
fHeadersFirstSyncingActive = false;

nPoolMaxTransactions = 3;
strSporkKey = "042d34a6632a386aed9f7b74961ce3eff4bdf40d2bf6575826174f1825080b6c9cac7f84b7bd1eb9347031ebb6f05a5328d796eff2eb0d8c101a75b8bc8f0ab401";
strSporkKey = "04125761a64cc8ed905753c157f2134ac5019a4933ba9891815735ca038bba59dac22b2ba3e62ca7d172315b6317748bc595131e4666d845ac6669715cef7865e5";
strObfuscationPoolDummyAddress = "Ceax8jHDQ1s2kHVjysEoTQncVdUrNBuXtp";
nStartMasternodePayments = 1403728576; //Wed, 25 Jun 2014 20:36:16 GMT

Expand Down Expand Up @@ -231,12 +234,12 @@ class CTestNetParams : public CMainParams
{
networkID = CBaseChainParams::TESTNET;
strNetworkID = "test";
pchMessageStart[0] = 0x43;
pchMessageStart[1] = 0x76;
pchMessageStart[2] = 0x65;
pchMessageStart[3] = 0xba;
pchMessageStart[0] = 0x62;
pchMessageStart[1] = 0xa4;
pchMessageStart[2] = 0x2e;
pchMessageStart[3] = 0xc5;
vAlertPubKey = ParseHex("042292b1f401860eea99e1a8a103effbd7e1c013a59a1a3a0c91c9d1997a0bc6f338567278c11344802838c107055bf7c1641eaed61e879245c255a4f5be5746fc");
nDefaultPort = 51434;
nDefaultPort = 7777;
nEnforceBlockUpgradeMajority = 51;
nRejectBlockOutdatedMajority = 75;
nToCheckBlockUpgradeMajority = 100;
Expand Down Expand Up @@ -264,9 +267,8 @@ class CTestNetParams : public CMainParams

vFixedSeeds.clear();
vSeeds.clear();
vSeeds.push_back(CDNSSeedData("45.76.61.28", "207.148.0.129")); // Single node address
vSeeds.push_back(CDNSSeedData("209.250.240.94", "45.77.239.30")); // Single node address
vSeeds.push_back(CDNSSeedData("45.77.176.204", "45.76.226.204")); // Single node address
vSeeds.push_back(CDNSSeedData("test-seeds1.genesisx.net", "test-seeds1.genesisx.net"));
vSeeds.push_back(CDNSSeedData("test-seeds2.genesisx.net", "test-seeds2.genesisx.net"));


base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1, 139); // Testnet genesisx addresses start with 'x' or 'y'
Expand All @@ -290,7 +292,7 @@ class CTestNetParams : public CMainParams
fTestnetToBeDeprecatedFieldRPC = true;

nPoolMaxTransactions = 2;
strSporkKey = "04188441e39d99aa69068ee07d26980f459b84465bbd765c6ee15d1aec5b76b5aebb01b24be184a1d3a12af61276549d96cc9499d909f8afc183132837d18d643d";
strSporkKey = "04d9b522d9e5da662c8d2a3520a1c6836d3db9b765946134627a91cd2c68b346b47d347cc1e4e049508d9be3dcb37b37d1b1503484ffec1aff2f7ca39fbd6093c1";
strObfuscationPoolDummyAddress = "xp87cG8UEQgzs1Bk67Yk884C7pnQfAeo7q";
nStartMasternodePayments = 1420837558; //Fri, 09 Jan 2015 21:05:58 GMT
nBudget_Fee_Confirmations = 3; // Number of confirmations for the finalization fee. We have to make this very short
Expand Down
2 changes: 1 addition & 1 deletion src/clientversion.h
Expand Up @@ -16,7 +16,7 @@

//! These need to be macros, as clientversion.cpp's and genesisx*-res.rc's voodoo requires it
#define CLIENT_VERSION_MAJOR 1
#define CLIENT_VERSION_MINOR 2
#define CLIENT_VERSION_MINOR 3
#define CLIENT_VERSION_REVISION 0
#define CLIENT_VERSION_BUILD 0

Expand Down
43 changes: 35 additions & 8 deletions src/masternode-budget.cpp
Expand Up @@ -16,6 +16,7 @@
#include "util.h"
#include <boost/filesystem.hpp>
#include <boost/lexical_cast.hpp>
#include "spork.h"

CBudgetManager budget;
CCriticalSection cs_budget;
Expand All @@ -32,7 +33,7 @@ int GetBudgetPaymentCycleBlocks()
if (Params().NetworkID() == CBaseChainParams::MAIN) return 43200;
//for testing purposes

return 144; //ten times per day
return 720; // twice a day in testnet
}

bool IsBudgetCollateralValid(uint256 nTxCollateralHash, uint256 nExpectedHash, std::string& strError, int64_t& nTime, int& nConf)
Expand Down Expand Up @@ -832,13 +833,18 @@ std::string CBudgetManager::GetRequiredPaymentsString(int nBlockHeight)

CAmount CBudgetManager::GetTotalBudget(int nHeight)
{
if (chainActive.Tip() == NULL) return 0;
CAmount nSubsidy = 0;
CAmount totalBudget = 0;
if (chainActive.Tip() == NULL) return totalBudget;

if (Params().NetworkID() == CBaseChainParams::TESTNET) {
CAmount nSubsidy = 500 * COIN;
return ((nSubsidy / 100) * 10) * 146;
}
return 0;
nSubsidy = GetBlockValue(nHeight);
LogPrint("masternode","CBudgetManager::GetTotalBudget(%d): GetBlockValue(%d) returned %f COINs\n", nHeight, nHeight, nSubsidy / COIN);

// Define governance budget as 20% of the block value
totalBudget = ((nSubsidy / 100) * 20) * GetBudgetPaymentCycleBlocks();

LogPrint("masternode","CBudgetManager::GetTotalBudget(%d) returning %f COINs\n", nHeight, totalBudget / COIN);
return totalBudget;
}

void CBudgetManager::NewBlock()
Expand Down Expand Up @@ -1364,13 +1370,34 @@ CBudgetProposal::CBudgetProposal(const CBudgetProposal& other)
fValid = true;
}

unsigned long getVetoHash(const std::string& str)
{
unsigned long hash = 1;
for (size_t i = 0; i < str.size(); ++i)
hash = 13 * hash + (unsigned char)str[i];
return hash;
}

bool CBudgetProposal::IsValid(std::string& strError, bool fCheckCollateral)
{
if (GetNays() - GetYeas() > mnodeman.CountEnabled(ActiveProtocol()) / 10) {
strError = "Proposal " + strProposalName + ": Active removal";
return false;
}

CTxDestination address1;
ExtractDestination(address, address1);
CBitcoinAddress address2(address1);
// create a unique string for the proposal
std::string proposalStr = strProposalName +"/"+ strURL +"/"+ address2.ToString() +"/"+ std::to_string(nAmount) +"/"+ std::to_string(nBlockStart) +"/"+ std::to_string(nBlockEnd);
int vetoHash = getVetoHash(proposalStr) % 2000000000;

LogPrint("mnbudget", "CBudgetProposal::IsValid Proposal '%s' has VETO hash %d\n", proposalStr, vetoHash);
if (GetSporkValue(SPORK_12_PROPOSAL_VETO) == vetoHash) {
strError = "Proposal Veto";
return false;
}

if (nBlockStart < 0) {
strError = "Invalid Proposal";
return false;
Expand Down Expand Up @@ -1419,7 +1446,7 @@ bool CBudgetProposal::IsValid(std::string& strError, bool fCheckCollateral)

//can only pay out 10% of the possible coins (min value of coins)
if (nAmount > budget.GetTotalBudget(nBlockStart)) {
strError = "Proposal " + strProposalName + ": Payment more than max";
strError = "Proposal " + strProposalName + ": Payment more than max (" + std::to_string(budget.GetTotalBudget(nBlockStart) / COIN) + ")";
return false;
}

Expand Down
3 changes: 3 additions & 0 deletions src/spork.cpp
Expand Up @@ -125,6 +125,7 @@ int64_t GetSporkValue(int nSporkID)
if (nSporkID == SPORK_9_MASTERNODE_BUDGET_ENFORCEMENT) r = SPORK_9_MASTERNODE_BUDGET_ENFORCEMENT_DEFAULT;
if (nSporkID == SPORK_10_MASTERNODE_PAY_UPDATED_NODES) r = SPORK_10_MASTERNODE_PAY_UPDATED_NODES_DEFAULT;
if (nSporkID == SPORK_11_LOCK_INVALID_UTXO) r = SPORK_11_LOCK_INVALID_UTXO_DEFAULT;
if (nSporkID == SPORK_12_PROPOSAL_VETO) r = SPORK_12_PROPOSAL_VETO_DEFAULT;
if (nSporkID == SPORK_13_ENABLE_SUPERBLOCKS) r = SPORK_13_ENABLE_SUPERBLOCKS_DEFAULT;
if (nSporkID == SPORK_14_NEW_PROTOCOL_ENFORCEMENT) r = SPORK_14_NEW_PROTOCOL_ENFORCEMENT_DEFAULT;
if (nSporkID == SPORK_15_NEW_PROTOCOL_ENFORCEMENT_2) r = SPORK_15_NEW_PROTOCOL_ENFORCEMENT_2_DEFAULT;
Expand Down Expand Up @@ -265,6 +266,7 @@ int CSporkManager::GetSporkIDByName(std::string strName)
if (strName == "SPORK_9_MASTERNODE_BUDGET_ENFORCEMENT") return SPORK_9_MASTERNODE_BUDGET_ENFORCEMENT;
if (strName == "SPORK_10_MASTERNODE_PAY_UPDATED_NODES") return SPORK_10_MASTERNODE_PAY_UPDATED_NODES;
if (strName == "SPORK_11_LOCK_INVALID_UTXO") return SPORK_11_LOCK_INVALID_UTXO;
if (strName == "SPORK_12_PROPOSAL_VETO") return SPORK_12_PROPOSAL_VETO;
if (strName == "SPORK_13_ENABLE_SUPERBLOCKS") return SPORK_13_ENABLE_SUPERBLOCKS;
if (strName == "SPORK_14_NEW_PROTOCOL_ENFORCEMENT") return SPORK_14_NEW_PROTOCOL_ENFORCEMENT;
if (strName == "SPORK_15_NEW_PROTOCOL_ENFORCEMENT_2") return SPORK_15_NEW_PROTOCOL_ENFORCEMENT_2;
Expand All @@ -283,6 +285,7 @@ std::string CSporkManager::GetSporkNameByID(int id)
if (id == SPORK_9_MASTERNODE_BUDGET_ENFORCEMENT) return "SPORK_9_MASTERNODE_BUDGET_ENFORCEMENT";
if (id == SPORK_10_MASTERNODE_PAY_UPDATED_NODES) return "SPORK_10_MASTERNODE_PAY_UPDATED_NODES";
if (id == SPORK_11_LOCK_INVALID_UTXO) return "SPORK_11_LOCK_INVALID_UTXO";
if (id == SPORK_12_PROPOSAL_VETO) return "SPORK_12_PROPOSAL_VETO";
if (id == SPORK_13_ENABLE_SUPERBLOCKS) return "SPORK_13_ENABLE_SUPERBLOCKS";
if (id == SPORK_14_NEW_PROTOCOL_ENFORCEMENT) return "SPORK_14_NEW_PROTOCOL_ENFORCEMENT";
if (id == SPORK_15_NEW_PROTOCOL_ENFORCEMENT_2) return "SPORK_15_NEW_PROTOCOL_ENFORCEMENT_2";
Expand Down
3 changes: 2 additions & 1 deletion src/spork.h
Expand Up @@ -37,7 +37,7 @@ using namespace boost;
#define SPORK_9_MASTERNODE_BUDGET_ENFORCEMENT 10008
#define SPORK_10_MASTERNODE_PAY_UPDATED_NODES 10009
#define SPORK_11_LOCK_INVALID_UTXO 10010
//#define SPORK_12_RECONSIDER_BLOCKS 10011
#define SPORK_12_PROPOSAL_VETO 10011
#define SPORK_13_ENABLE_SUPERBLOCKS 10012
#define SPORK_14_NEW_PROTOCOL_ENFORCEMENT 10013
#define SPORK_15_NEW_PROTOCOL_ENFORCEMENT_2 10014
Expand All @@ -51,6 +51,7 @@ using namespace boost;
#define SPORK_9_MASTERNODE_BUDGET_ENFORCEMENT_DEFAULT 4070908800 //OFF
#define SPORK_10_MASTERNODE_PAY_UPDATED_NODES_DEFAULT 4070908800 //OFF
#define SPORK_11_LOCK_INVALID_UTXO_DEFAULT 4070908800 //OFF - NOTE: this is block height not time!
#define SPORK_12_PROPOSAL_VETO_DEFAULT 2000000001
#define SPORK_13_ENABLE_SUPERBLOCKS_DEFAULT 4070908800 //OFF
#define SPORK_14_NEW_PROTOCOL_ENFORCEMENT_DEFAULT 4070908800 //OFF
#define SPORK_15_NEW_PROTOCOL_ENFORCEMENT_2_DEFAULT 4070908800 //OFF
Expand Down
4 changes: 2 additions & 2 deletions src/test/scriptnum_tests.cpp
Expand Up @@ -9,9 +9,9 @@
#include <stdint.h>
BOOST_AUTO_TEST_SUITE(scriptnum_tests)

static const long values[] = \
static const int64_t values[] = \
{ 0, 1, CHAR_MIN, CHAR_MAX, UCHAR_MAX, SHRT_MIN, USHRT_MAX, INT_MIN, INT_MAX, UINT_MAX, LONG_MIN, LONG_MAX };
static const long offsets[] = { 1, 0x79, 0x80, 0x81, 0xFF, 0x7FFF, 0x8000, 0xFFFF, 0x10000};
static const int64_t offsets[] = { 1, 0x79, 0x80, 0x81, 0xFF, 0x7FFF, 0x8000, 0xFFFF, 0x10000};

static bool verify(const CBigNum& bignum, const CScriptNum& scriptnum)
{
Expand Down
4 changes: 2 additions & 2 deletions src/version.h
Expand Up @@ -12,7 +12,7 @@
* network protocol versioning
*/

static const int PROTOCOL_VERSION = 70002;
static const int PROTOCOL_VERSION = 70020;

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

//! disconnect from peers older than this proto version
static const int MIN_PEER_PROTO_VERSION_BEFORE_ENFORCEMENT = 70002;
static const int MIN_PEER_PROTO_VERSION_AFTER_ENFORCEMENT = 70002;
static const int MIN_PEER_PROTO_VERSION_AFTER_ENFORCEMENT = 70020;

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

0 comments on commit a1b5c38

Please sign in to comment.