#лоикморель
1 публикация
Вы когда-нибудь задумывались, почему биткоин так стабильно держит «10 минут на блок»? Там за кулисами каждые две недели срабатывает хитрый механизм — пересчёт сложности. Но, как выяснил исследователь Лоик Морель, в этом механизме с самого запуска пряталась крошечная, но очень занятная вычислительная неточность.
И нет, это не баг, который рушит всё вокруг. Скорее, как незаметная трещинка в фундаменте небоскрёба — все стоят, но кто-то один хитро улыбается.
В чём суть? Сейчас объясню на пальцах.
Представьте, что вы проверяете, сколько времени прошло между двумя событиями. Логично взять время первого и последнего. Вот и разработчики биткоина когда-то написали: «Измерим разницу между меткой первого блока в периоде и меткой последнего». Звучит разумно. Но есть подвох: между ними не 2016 промежутков (столько блоков в периоде), а всего 2015. Потому что интервалы считаются не от блока к блоку, а от промежутка к промежутку.
Если совсем просто: у вас есть 2016 блоков. Интервалов между ними — 2015. А код биткоина считает так, будто интервалов 2016. И в итоге получается лёгкое смещение.
Из-за этого «смещения на единицу» (программисты знают, как это бесит) сложность сети каждый раз оказывается чуть-чуть завышена — примерно на 0,05%. Кажется, ерунда? Но эффект накапливается годами.
Морель обратил внимание на другое: из-за этой неточности периоды пересчёта не перекрываются. Временная метка последнего блока одного периода просто выпадает из расчётов для следующего. И это теоретически позволяло добывать блоки с аномально высокой скоростью, если знать, куда смотреть.
На практике за 15 лет никто этим всерьёз не воспользовался (или мы просто не знаем). Но сам факт, что в самом надёжном блокчейне с самого рождения живёт такой «математический червячок», заставляет задуматься.
Хорошая новость: погрешность мизерная, сеть от этого не рухнула. Забавная новость: теперь у биткоин-максималистов появился новый аргумент в спорах — «даже у нас есть баг, но он такой милый, что мы его не трогаем».
Исследователи, конечно, предлагают поправить формулу: считать время не от первого блока периода, а от последнего блока предыдущего периода. Но представьте, что будет, если предложить хардфорк ради исправления 0,05%? Сообщество порвёт в клочья. Так что ошибка, похоже, останется с нами навсегда — как пасхалка от Сатоши.
Мораль: Даже совершенные системы рождаются с маленькими «ой».
Наш МАХ
#Биткоин #Майнинг #ЛоикМорель #ОшибкаВКоде #СложностьМайнинга #Blockchain #BTC #ИсторияБиткоина