Перейти к содержимому
Astrolune
Исследования19 дек. 2025 г.4 мин чтения

Почему рядом с консенсусом нет плавающей точки

Два честных узла должны совпасть в последнем бите. Плавающая точка не может это гарантировать между компиляторами и железом, поэтому ядро целочисленное от начала до конца.

Astrolune Core

Детерминизм для блокчейна — не приятная опция, а свойство, позволяющее двум машинам, которые никогда не встречались, совпасть в результате. Плавающая точка тихо его ломает: округление, слитое умножение-сложение и флаги компилятора могут сдвинуть последний бит, а цепочка, расходящаяся в последнем бите, — это форк.

Поэтому суммы — беззнаковые 64-битные целые с девятью знаками, веса считаются в фиксированной точке Q32.32, а в наборе инструкций виртуальной машины нет ни одного опкода с плавающей точкой. Проверка на деплое отвергает его, если он как-то появится.

  • Балансам не нужна длинная арифметика — u64 с девятью знаками достигает потолка представления около 1,8 × 10¹⁰ целых монет.
  • Подсчёт использует фиксированную точку, поэтому калькулятор веса в браузере и валидатор в дата-центре считают одно число.
  • Учёт исключает всё, на что могли бы повлиять часы или аллокатор.