Как блок-биткоин работают на инженерном уровне?Мы объясняем с помощью Андреаса Антонопулоса.
В недавнем видео Антонопулос подробно объяснил код Биткоин-ядра, который контролирует половину вознаграждения за биткоин (BTC).
Биткоин, делящий пополам кодИсточник: Биткоин Core Software.
Построчное объяснение
Каждый раз, когда оценивается биткоин-блок или добывается новый блок, вызывается функция GetBlockSubsidy.Его цель – рассчитать соответствующий размер вознаграждения за блок.Линия 1240 оценивает цикл деления пополам и делит текущую высоту блока на 210 000;Интервал между делением пополам.На момент написания этой статьи высота блока составляла 629369, если мы разделим ее на 210 000, мы получим 2,99.Поскольку переменная, в которой хранится это значение, является целочисленным типом, десятичные дроби отбрасываются.Используя эту информацию, код «знает», что у нас было две половины.Вот почему следующее сокращение будет происходить в блоке 630000.
Сатоши стоит исправлено
Строки 1242 и 1243 исправляют ошибку, которую Сатоши допустил в исходном коде.Первоначально эта ошибка продолжала уменьшать вдвое награду за блок после 64 половин;общее количество половин, встроенных в протокол Биткоин.
Строка 1245 умножает исходную награду блока 50 на постоянную МОНЕТУ, которая равна 100 000 000 сатоши.По иронии судьбы, в биткоин-коде нет Биткоин, только сатоши.
Строка 1247 вычисляет соответствующее вознаграждение за текущую высоту блока.Он использует побитовую операцию, которая более эффективна, чем обычные математические операции.Награда за блок, рассчитанная в строке 1245, затем корректируется в соответствии с текущей наградой за блок.В настоящее время это будет выглядеть так:
50 * 100 000 000/22 = 1 250 000 000 сатоши или 12,5 Биткоин.
Наконец, строка 1248 возвращает соответствующее вознаграждение за блок при вызове другой функцией или процедурой в биткоин-коде.
Когда, наконец, половина получится примерно через 4 дня или 631 квартал, мы все можем вздохнуть с облегчением и оценить красоту кода Биткоина.