Feathercoin Block chain analysis
-
Transaction fees are paid by people who send payments. You’re talking about new block rewards issued to miners. The Feathercoin Explorer you’re referring to displays incorrect amount of FTC in circulation: it must be a multiple of 200, not 50. Our block explorer is correct.
-
i don’t know why but some block are generate with 50 not 200. this probably explain the difference. I have not check when this happen exactly, possibly some < > instead of
-
Hi Ghostlander using Feathercoin Blockchain figures
Currency Code Block Time Started Age (days) Coins Created Avg Coin Age % CoinDD Block Rewards Coins-Blocks
Feathercoin FTC 50852 16/07/13 15:48 2013-04-16 90.7787 10164450 37.9018 39.19% 10170400 -595050852 blocks * 200 = Total coins mined block reward = 10170400
Total coins = 10164450
Therefore 10164450 - 10170400 = -5950
You are correct the transaction fees are already paid, so there is no extra money, so this must be an error in total coins calculation or mined coins that had no address to go to?
We could do with a way of finding how much transaction fees are being paid.
-
[quote]Therefore 10164450 - 10170400 = -5950[/quote]
see block 49343 it get 50 not 200 as rewards and many block are like that explain the difference.
(not sure but I think it always only comes from 6uNcx3XPvcgToBPeGnxqqx4vk9r4ovoNBp that is give me FTC pool I think, but they find a lot with 200)
why and why it is accepted as valid block? are the question that now need to be answered
-
I have raised the “Occasional incorrect block payments indicate possible software error” as issue 15 on Feathercoin Github.
https://github.com/FeatherCoin/FeatherCoin/issues/15
Is there any other test or investigations we could do to find why the problem occurs, it could be a glitch at one miners set-up for instance is a theory…???
How could we test that. could we search the block chain to find all the incorrectly paid blocks, to see if it fully explains the coin total disparity?
I think being completely transparent is essential.
-
ok i checked the code and total out need to be lower then max so if you want you don’t have to claim all the generation. But a generation need to be in the block. so a new 50 (block 51232) from same address occur so it’s probably a software problem from a custom code not the regular code
even if this is givemeFTC adresss it is not on their block list also last was 51217 and we are at 51244.
so it’s a backup server or someone using their address.
I see actually with 5Gh/s someone with what seems to be more then 50% from 6wyj1e7A8E4VpEqAHje3bNREQASpLVeNqA found 28 block between 51206 and 51249. seems legit, i need time to check carefully. will post again soon when a double check the chain
nothing so far between 50850 ans 51267 :)
coinotron at 51271 has: 1.3Gh/s
givemeFTC show at 51245: FTC/BTC: 0.0009 Net: 5698.41MH/s Pool: 585.02 MH/s (10.3%) Difficulty: 73.64 Workers: 597
and at 5179: FTC/BTC: 0.0009 Net: 5064.92MH/s Pool: 613.31 MH/s (12.1%) Difficulty: 73.64 Workers: 600
FCPool at 51279: Pool Hashrate: 487.24 MH/s Network Hashrate: 4.78 Gh/s Difficulty: 73.63547784 Pool Miners: 230 Pool Workers: 593 -
It seems these blocks were generated by a broken daemon. There is no way to remove them from the block chain or update to the correct value of 200. The question is why they have been accepted by the network as valid blocks. Such blocks with non-standard reward values must be rejected.
-
[quote]if (vtx[0].GetValueOut() > GetBlockValue(pindex->nHeight, nFees))
return false;[/quote]so you need to be not greater then reward + fee, so been lower is accepted.
-
Great work.
-
GetBlockValue() returns new block reward (nSubsidy) + transaction fees (nFees).
[code=“main.cpp”]
int64 static GetBlockValue(int nHeight, int64 nFees)
{
int64 nSubsidy = 200 * COIN;nSubsidy >>= (nHeight / 840000);
return nSubsidy + nFees;
}
[/code]While nFees is calculated as difference between tx.GetValueIn() and tx.GetValueOut(), no check been made if actual nSubsidy in particular block submitted is correct. It only rejects blocks with value higher than calculated. Therefore,
[code=“main.cpp”]
- if (vtx[0].GetValueOut() > GetBlockValue(pindex->nHeight, nFees))
return false;
- if (vtx[0].GetValueOut() != GetBlockValue(pindex->nHeight, nFees))
return false;
[/code]
Value of the 1st transaction in block must be equal to correct nSubsidy + nFees collected from other transactions included in this block if any.
- if (vtx[0].GetValueOut() > GetBlockValue(pindex->nHeight, nFees))