The 1st block is 1000 FUSE, for the 1% premine. Then, 1440 blocks of zero rewards. These zero reward blocks allow miners to point their GPUs at a pool, and to ensure all pools are operational. This makes it impossible for developers or anyone else to instamine the first blocks, and ensures everyone is on a level playing field. Then, the reward PoW blocks kick in afterwards when everyone has had a day to prepare. Finally, after 1440 reward PoW blocks, Fusecoin turns into pure PoS.
6875*(COIN/1000)=68.75
COIN*1000=?
Here is the code again:
// miner's coin base reward
int64_t GetProofOfWorkReward(const int nHeight, int64_t nFees)
{
int64_t nSubsidy = 4000 * COIN;
if(nHeight == 1)
{
nSubsidy=COIN*1000;
}else
if (nHeight <= 1440)
{
nSubsidy = 0;
}else
{
nSubsidy=6875*(COIN/1000); //68.75
}
if (fDebug && GetBoolArg("-printcreation"))
printf("GetProofOfWorkReward() : create=%s nSubsidy=%"PRId64"\n", FormatMoney(nSubsidy).c_str(), nSubsidy);
return nSubsidy + nFees;
}
COIN is a constant which represents the value of a single coin. It looks to me like:
block 1 has a 1000 coin reward
blocks 2...1440 have a 0 coin reward
blocks 1441... have a 6.875 coin reward
The statement "int64_t nSubsidy = 4000 * COIN;" has no affect because nSubsidy is overwritten in all cases, by later code.