AmberCoin team offer a 500 AMBER 2000 AMBER reward for TRUSTED forum member for reviewing the AmberCoin source code.
To me,it sound legit,no hidden stuff was found.
OKstatic const int LAST_POW_BLOCK =
491081;static const unsigned int MAX_BLOCK_SIZE = 1000000;
static const unsigned int MAX_BLOCK_SIZE_GEN = MAX_BLOCK_SIZE/2;
static const unsigned int MAX_BLOCK_SIGOPS = MAX_BLOCK_SIZE/50;
static const unsigned int MAX_ORPHAN_TRANSACTIONS = MAX_BLOCK_SIZE/100;
static const unsigned int MAX_INV_SZ = 50000;
static const int64_t MIN_TX_FEE = 10000;
static const int64_t MIN_RELAY_TX_FEE = MIN_TX_FEE;
static const int64_t MAX_MONEY = 50000000 * COIN;
static const int64_t MAX_MINT_PROOF_OF_STAKE = 0.25 * COIN;
static const int64_t COIN_YEAR_REWARD = 25 * CENT; // 25% per year
static const int MODIFIER_INTERVAL_SWITCH = 129600;
OK (There is also a testnet hash,quite rare nowadays)static const uint256 hashGenesisBlock("0x00000fe99a2613615921ebca71dcf3a9e46b7951b87330f1f5ed71de0f6dcb47");
static const uint256 hashGenesisBlockTestNet("0x00000fe99a2613615921ebca71dcf3a9e46b7951b87330f1f5ed71de0f6dcb47");
OK if (pindexBest->nHeight == 1)
{
int64_t nSubsidy = 39200000 * COIN;
return nSubsidy + nFees;
}
else if (pindexBest->nHeight <= 721)
{
int64_t nSubsidy = 1 * COIN;
return nSubsidy + nFees;
}
else if (pindexBest->nHeight <= 1441)
{
int64_t nSubsidy = 9 * COIN;
return nSubsidy + nFees;
}
else
{
int64_t nSubsidy = 20 * COIN;
return nSubsidy + nFees;
}
NONCE,MERKEL,EPOCHTIME OKconst char* pszTimestamp = "Mon, 22 Dec 2014 15:23:05 GMT";
CTransaction txNew;
txNew.nTime = 1419261785;
txNew.vin.resize(1);
txNew.vout.resize(1);
txNew.vin[0].scriptSig = CScript() << 0 << CBigNum(42) << vector<unsigned char>((const unsigned char*)pszTimestamp, (const unsigned char*)pszTimestamp + strlen(pszTimestamp));
txNew.vout[0].SetEmpty();
CBlock block;
block.vtx.push_back(txNew);
block.hashPrevBlock = 0;
block.hashMerkleRoot = block.BuildMerkleTree();
block.nVersion = 1;
block.nTime = 1419261787;
block.nBits = bnProofOfWorkLimit.GetCompact();
block.nNonce = 5697477;
if(fTestNet)
{
block.nNonce = 5697477;
}
if (false && (block.GetHash() != hashGenesisBlock)) {
// This will figure out a valid hash and Nonce if you're
// creating a different genesis block:
uint256 hashTarget = CBigNum().SetCompact(block.nBits).getuint256();
while (block.GetHash() > hashTarget)
{
++block.nNonce;
if (block.nNonce == 0)
{
printf("NONCE WRAPPED, incrementing time");
++block.nTime;
}
}
}
block.print();
printf("block.GetHash() == %s\n", block.GetHash().ToString().c_str());
printf("block.hashMerkleRoot == %s\n", block.hashMerkleRoot.ToString().c_str());
printf("block.nTime = %u \n", block.nTime);
printf("block.nNonce = %u \n", block.nNonce);
//// debug print
assert(block.hashMerkleRoot == uint256("0x4871bbe02db48bddd92e05a4726bbc35fa3fc537defee1cb7448075b0e8c5384"));
WALLET MISS EMBEDDED NODE. NOT A MAJOR ISSUE,BUT DEV COULD ADD IT LATER AND REBUILD THE WALLETS. static const char *strDNSSeed[][2] = {
{"", ""},
};