35159056994887200 * 0,0365 * COIN = 1,1^365 * COIN
This would mean that you will get 10% daily for a year. I think it's rather: coin * 1,0365 + coin * 1.1^8 for one year.
yes it s the annual rate for a year. but it is limited to 10 days. See below :
if(nHeight < (7 * DAILY_BLOCKCOUNT))
nRewardCoinYear = 1 * MAX_MINT_PROOF_OF_STAKE;
else if(nHeight < (18 * DAILY_BLOCKCOUNT))
nRewardCoinYear = 35159056994887200 * MAX_MINT_PROOF_OF_STAKE;
We have the normal rate for the first 7 days. And from 7 to 18 first days we have the super POS rate, currently setted to 1% daily.
OP says:
Block Day 8-17 (POS): Nominal Stake Interest: 10% DailyYes and code says otherwise, but you are free to inspect it.
35159056994887200 * 0,0365 * COIN = 1,1^365 * COIN <-- This is wrong!
(1.1^365)/0.0365 = 3.5159... * 10^16
Please this is exactly the same 35159056994887200 = 3.5159... * 10^16
Regardless of whether the numbers are wrong, there must be another issue as well. The reward rate did not change when it was supposed to. It is still rewarding at 0.01% per day (3.65% per year).
this can be error this value nHeight as i write above
may be nHeight do not receive right value
and work only string
nRewardCoinYear = MAX_MINT_PROOF_OF_STAKE;
Yes, it has to be a problem with the way nHeight is passed to the function. There is only one conditional construct that affects the size of the reward (the if-then statement), and there is only one variable in the statement. Everything except nHeight is a constant.
EDIT: By the way - nRewardCoinYear is defined as int64 right above the line it is first used. In C++, you can't use implicit typecasts. If the code were trying to set nRewardCoinYear to a string, it would throw an exception during the compiling. So I don't think that is the issue. It is either a problem with the way nHeight is passed, or else something in the code is changing the value of the result of the function before it is added to the tx block.