Founders reward: changed index computation, added new test and some refactoring.

This commit is contained in:
Simon
2016-09-22 16:38:44 -07:00
parent db0f931570
commit 3b30d8361a
5 changed files with 66 additions and 35 deletions

View File

@@ -69,9 +69,17 @@ TEST(founders_reward_test, create_testnet_2of3multisig) {
#endif
#define NUM_TESTNET_FOUNDER_ADDRESSES 48
// Utility method to check the number of unique addresses from height 1 to maxHeight
void checkNumberOfUniqueAddresses(int maxHeight, int nUnique) {
std::set<std::string> addresses;
for (int i=1; i<=maxHeight; i++) {
addresses.insert(Params().GetFoundersRewardAddressAtHeight(i));
}
ASSERT_TRUE(addresses.size()==nUnique);
}
TEST(founders_reward_test, testnet) {
TEST(founders_reward_test, general) {
SelectParams(CBaseChainParams::TESTNET);
CChainParams params = Params();
@@ -79,24 +87,16 @@ TEST(founders_reward_test, testnet) {
// For Testnet, the first address is derived from the old script.
// FOUNDERS_REWARD_SCRIPT = a9146708e6670db0b950dac68031025cc5b63213a49187
// address = 2N2e2FRfP9D1dRN1oRWkH7pbFM69eGNAuQ4
EXPECT_EQ(params.GetFoundersRewardScript(1), ParseHex("a9146708e6670db0b950dac68031025cc5b63213a49187"));
EXPECT_EQ(params.GetFoundersRewardAddress(1), "2N2e2FRfP9D1dRN1oRWkH7pbFM69eGNAuQ4");
EXPECT_EQ(params.GetFoundersRewardScriptAtHeight(1), ParseHex("a9146708e6670db0b950dac68031025cc5b63213a49187"));
EXPECT_EQ(params.GetFoundersRewardAddressAtHeight(1), "2N2e2FRfP9D1dRN1oRWkH7pbFM69eGNAuQ4");
int maxHeight = params.GetConsensus().GetLastFoundersRewardBlockHeight();
// If the block height parameter is out of bounds, there is an assert.
EXPECT_DEATH(params.GetFoundersRewardScript(0), "nHeight");
EXPECT_DEATH(params.GetFoundersRewardScript(maxHeight+1), "nHeight");
EXPECT_DEATH(params.GetFoundersRewardAddress(0), "nHeight");
EXPECT_DEATH(params.GetFoundersRewardAddress(maxHeight+1), "nHeight");
// Check that different addresses are used for testnet
std::set<std::string> addresses;
for (int i=1; i<=maxHeight; i++) {
addresses.insert(params.GetFoundersRewardAddress(i));
}
ASSERT_TRUE(addresses.size()==NUM_TESTNET_FOUNDER_ADDRESSES);
EXPECT_DEATH(params.GetFoundersRewardScriptAtHeight(0), "nHeight");
EXPECT_DEATH(params.GetFoundersRewardScriptAtHeight(maxHeight+1), "nHeight");
EXPECT_DEATH(params.GetFoundersRewardAddressAtHeight(0), "nHeight");
EXPECT_DEATH(params.GetFoundersRewardAddressAtHeight(maxHeight+1), "nHeight");
}
@@ -107,11 +107,18 @@ TEST(founders_reward_test, mainnet) {
CChainParams params = Params();
int maxHeight = params.GetConsensus().GetLastFoundersRewardBlockHeight();
std::set<std::string> addresses;
for (int i=1; i<=maxHeight; i++) {
addresses.insert(params.GetFoundersRewardAddress(i));
}
ASSERT_TRUE(addresses.size()==NUM_MAINNET_FOUNDER_ADDRESSES);
checkNumberOfUniqueAddresses(maxHeight, NUM_MAINNET_FOUNDER_ADDRESSES);
}
#define NUM_TESTNET_FOUNDER_ADDRESSES 48
TEST(founders_reward_test, testnet) {
SelectParams(CBaseChainParams::TESTNET);
CChainParams params = Params();
int maxHeight = params.GetConsensus().GetLastFoundersRewardBlockHeight();
checkNumberOfUniqueAddresses(maxHeight, NUM_TESTNET_FOUNDER_ADDRESSES);
}
@@ -120,13 +127,9 @@ TEST(founders_reward_test, mainnet) {
TEST(founders_reward_test, regtest) {
SelectParams(CBaseChainParams::REGTEST);
CChainParams params = Params();
int maxHeight = params.GetConsensus().GetLastFoundersRewardBlockHeight();
std::set<std::string> addresses;
for (int i=1; i<=maxHeight; i++) {
addresses.insert(params.GetFoundersRewardAddress(i));
}
ASSERT_TRUE(addresses.size()==NUM_REGTEST_FOUNDER_ADDRESSES);
checkNumberOfUniqueAddresses(maxHeight, NUM_REGTEST_FOUNDER_ADDRESSES);
}
@@ -146,3 +149,24 @@ TEST(founders_reward_test, slow_start_subsidy) {
ASSERT_TRUE(totalSubsidy == MAX_MONEY/10.0);
}
// Verify the number of rewards going to each mainnet/testnet address
TEST(founders_reward_test, per_address_reward) {
SelectParams(CBaseChainParams::TESTNET);
CChainParams params = Params();
int maxHeight = params.GetConsensus().GetLastFoundersRewardBlockHeight();
std::multiset<std::string> ms;
for (int nHeight=1; nHeight<=maxHeight; nHeight++) {
ms.insert(params.GetFoundersRewardAddressAtHeight(nHeight));
}
ASSERT_TRUE(ms.count(params.GetFoundersRewardAddressAtIndex(0)) == 17708);
for (int i = 1; i <= 46; i++) {
ASSERT_TRUE(ms.count(params.GetFoundersRewardAddressAtIndex(i)) == 17709);
}
ASSERT_TRUE(ms.count(params.GetFoundersRewardAddressAtIndex(47)) == 17677);
}