В коде Bitcoin Core исправлен баг, на протяжении двух лет угрожавший стабильности сети биткоина

В коде Bitcoin Core исправлен баг, на протяжении двух лет угрожавший стабильности сети биткоина

19.09.2018
0
Александр Сорокин

Один из самых серьёзных багов в сети биткоина и его форках был обнаружен и исправлен к этому моменту. Операторов нод просят в срочном порядке обновиться до новой версии Bitcoin Core или BitcoinABC, если они располагаются в сети Bitcoin Cash. Bitcoin Unlimited оказался не подвержен этой уязвимости. Для Litecoin также был выпущен фикс. Об этом пишет Trustnodes.

Вероятно, за присутствие бага следует винить Мэтта Коралло из Chaincode Labs, а также других разработчиков Bitcoin Core, одобривших советующее изменение кода, в том числе Грегори Максвелла, который не провёл необходимое тестирование. Как отмечает Trustnodes, по всей видимости, никто из них не проверил код, предложенный в октябре 2016 года.

Изменение кода удаляло «проверку на дублированный вход из функции CheckTransaction», что позволяло экономить 0,5-0,7 миллисекунд при выполнении функции. Эта экономия привела к тому, что после внедрения изменения биткоин был особенно уязвим к по крайней мере временному выводу своей сети из строя.

На протяжении последних двух лет майнеры биткоина могли создать такой блок, который стал бы причиной отключения всех остальных майнинговых нод. К счастью, такой блок выпущен не был, а баг исправлен путём добавления функции проверки транзакций на дублированные входы.

Таким образом, код бы возвращён к тому состоянию, в котором он был до вмешательства Коралло 2 года назад. Ранее некоторые уже предполагали, что предложенное разработчиком изменение может позволить осуществить повторное расходование в сети биткоина, однако другие сходились во мнении, что такая попытка приведёт к отключению ноды.

Trustnodes допускает, что отсутствие необходимого в таких случаях тестирования может служить признаком того, что разработчикам было известно о возможных последствиях вносимых ими изменений, которые они могли бы использовать в собственных интересах в случае раскола цепи.

Коралло, со своей стороны, во время споров по поводу размеров блоков биткоина говорил майнерам, что в коде присутствуют катастрофические баги, которые могут быть использованы в случае раскола.

Запрос на исправление бага был оформлен 17 сентября, то есть в тот день, когда цена биткоина за считанные часы снизилась с $6 500 до $6 200.

Сам баг был раскрыт в частном порядке анонимным разработчиком. Когда именно это было сделано, неизвестно, но в тот же день Коралло заявил: «О баге одновременно было сообщено другим проектам. Мы попытались скоординироваться для раскрытия информации, но, к сожалению, не хотели заставлять людей ждать после окончания рабочего дня по североамериканскому восточному времени, чтобы они провели обновление, поэтому сроки поджимали».


Подписаться
Уведомить о
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x