BTC $81,764 ▲ 0.212% ETH $2,339 ▼ 0.64% BNB $664 ▲ 0.008% SOL $98 ▲ 1.912% BTC $81,764 ▲ 0.212% ETH $2,339 ▼ 0.64% BNB $664 ▲ 0.008% SOL $98 ▲ 1.912%
Bitcoin

Обнаружена уязвимость нулевого дня в механизме майнинга биткоина

Удивительно, что такой серьезный баг мог присутствовать в алгоритме майнинга биткоина с момента его запуска 🚀! Исследователь Лоик Морель рассказал об этой проблеме, которая связана с механизмом пересчета целевого показателя каждые 2016 блоков 📊.

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

Именно в этих расчетах кроется ошибка, которая связана с измерением тайминга блоков в прошедшем периоде ⚡

Узел сравнивает метку времени первого блока периода с меткой времени последнего, но это оказывается ошибкой, поскольку между первым и последним блоками периода всего 2015 интервалов, а не 2016 📊.

Если обозначить t0 как метку времени первого блока, а t2015 как метку времени последнего, узел вычисляет прошедшее время как T = t2015 — t0 📊 Однако для получения 2016 интервалов необходимо использовать другую формулу: T = t2015 — t-1, где t-1 — метка времени последнего блока предыдущего периода.

Эта ошибка называется ошибкой «смещения на одну единицу» и вносит погрешность примерно в 0,05% в сторону слегка завышенной сложности 📉

Однако настоящая проблема кроется в другом — недочет приводит к тому, что периоды корректировки не перекрываются.

Майнер, который контролировал большую часть вычислительной мощности, может начать установку минимально допустимых временных меток для всех блоков за период (кроме последнего) ⚡ В последнем блоке периода он искусственно назначает максимально допустимую временную метку, что позволяет ему манипулировать временем и снижать сложность.

Повторяя процесс несколько раз, злоумышленник теоретически может снизить сложность майнинга до уровня, при котором создается до шести блоков в секунду (вместо одного каждые 10 минут) 🚀! Последствия были бы ужасными: временные блокировки бесполезны, сеть перегружена, число реорганизаций увеличилось, а подтверждения транзакций потеряли ценность.

Исправить эту ошибку можно с помощью софтфорка, который подразумевает, что первый блок нового периода сложности имеет временную метку, которая не превышает временную метку последнего блока предыдущего периода более чем на два часа 📊

Это ограничение восстанавливает «некоторую форму непрерывности» между периодами и предотвращает манипулирование временными промежутками.

Итак, мы можем сделать вывод, что безопасность биткоина зависит не только от его алгоритма, но и от внимания разработчиков и исследователей к таким проблемам 🐋 Надеюсь, эта ошибка будет исправлена в ближайшее время и сеть биткоина станет еще более безопасной и стабильной 💰!


По материалам ForkLog

Полимаркет удалил ставки из Google News после… Биткоин балансирует на грани, удерживая отметку $71…