Код:
CAmount GetBlockValue (интермедиат nHeight, Const CAmount& nFees)
{
CAmount nSubsidy = 50 * МОНЕТКА;
INT halvings = nHeight / Params () SubsidyHalvingInterval ().
// блок Force вознаграждение к нулю, когда сдвиг вправо не определен.
если (halvings >= 64)
вернуться nFees;
// Субсидия разрезают пополам каждые 210000 блоков, которые будут происходить примерно каждые 4 года.
nSubsidy >>= halvings;
вернуться nSubsidy + nFees;
}
{
CAmount nSubsidy = 50 * МОНЕТКА;
INT halvings = nHeight / Params () SubsidyHalvingInterval ().
// блок Force вознаграждение к нулю, когда сдвиг вправо не определен.
если (halvings >= 64)
вернуться nFees;
// Субсидия разрезают пополам каждые 210000 блоков, которые будут происходить примерно каждые 4 года.
nSubsidy >>= halvings;
вернуться nSubsidy + nFees;
}
ИМХО halvings являются деструктивными событиями и отрицательно влияет на все.
Это не трудно изменить код выше, чтобы сделать функцию вознаграждения блока непрерывной и кусочно-линейным, сохраняя при этом общий лимит 21 млн BTC без изменений. Это позволит устранить разрыв события в будущем.
Предлагаемая функция:
Код:
CAmount GetBlockValue (интермедиат nHeight, Const CAmount& nFees)
{
CAmount nSubsidy = 50 * МОНЕТКА;
INT halvingInterval = Params () SubsidyHalvingInterval ().
INT halvings = nHeight / halvingInterval;
INT фаза = nHeight% halvingInterval;
// блок Force вознаграждение к нулю, когда сдвиг вправо не определен.
если (halvings >= 64)
вернуться nFees;
// Субсидия является непрерывной и кусочно-линейной функцией, половин каждых 210000 блоков
// которая будет происходить примерно каждые 4 года.
nSubsidy = (nSubsidy * (4 * halvingInterval - 2 * фаза)) / (3 * halvingInterval);
nSubsidy >>= halvings;
вернуться nSubsidy + nFees;
}
{
CAmount nSubsidy = 50 * МОНЕТКА;
INT halvingInterval = Params () SubsidyHalvingInterval ().
INT halvings = nHeight / halvingInterval;
INT фаза = nHeight% halvingInterval;
// блок Force вознаграждение к нулю, когда сдвиг вправо не определен.
если (halvings >= 64)
вернуться nFees;
// Субсидия является непрерывной и кусочно-линейной функцией, половин каждых 210000 блоков
// которая будет происходить примерно каждые 4 года.
nSubsidy = (nSubsidy * (4 * halvingInterval - 2 * фаза)) / (3 * halvingInterval);
nSubsidy >>= halvings;
вернуться nSubsidy + nFees;
}