История о том, как одному человеку удалось спасти от хакеров $1 миллион в биткоинах

Эта история о том, как крупная компания Fintech-компания была взломана. Мы будем называть ее TwinPeaks для сохранения анонимности или TP для краткости.

Это был холодный зимний вечер пятницы. Внезапно тишину нарушил телефонный звонок из Штатов:

Здравствуйте, Даниэль! Пожалуйста, зайдите в интернет, нас взломали…

Это был технический директор ТР. Кажется, в тот день им не повезло — их взломали. Короче говоря, их горячий биткоин-кошелек был опустошен хакерами.

Что делать? Быстрый взгляд на транзакцию заставил меня задыхаться от ужаса — сумма сделки составляла чуть менее 1 000 000 долларов США. Моей первой мыслью было, что единственное, чем я могу помочь — это выразить соболезнования.

Однако мое внимание привлек один важный момент — транзакции имели нулевые подтверждения. Почему? В тот момент сеть Биткоина была перегружена. И эта ситуация дала мне возможность принять срочные меры.

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

Итак, как же мне удалось вырвать один миллион долларов из лап мошенника в тот вечер?

Ответ очень прост: мне пришлось отправить еще одну транзакцию, которая была бы обнаружена майнерами раньше первоначальной.

Задача майнера — подтверждение транзакции онлайн. Когда они подтверждают транзакцию, они получают вознаграждение. Насколько велика награда? Зависит от стоимости комиссии за транзакцию. Чем больше размер вознаграждения, назначенного пользователем, тем больше получит майнер. Вот почему для майнера более выгодно работать с транзакциями, которые предлагают наибольшую награду. Естественно, что работа с такими транзакциями будет его приоритетом. Чем больше плата, тем быстрее будет обрабатываться транзакция.

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

Пытаясь спасти украденные деньги, я создал транзакцию с огромной комиссией (более 100 долларов вместо первоначальных 7 долларов США) и изменил адрес получателя, указав адрес, принадлежащий TwinPeaks.

И я начал ждать. Казалось, я ждал вечно. Я нервно ходил по кухне, курил и смотрел на монитор. .

Прошло 30 минут и ... Я увидел первое подтверждение моей транзакции. Через некоторое время у меня было все шесть подтверждений моей транзакции, и сделка злоумышленника вскоре была отменена, поскольку деньги уже были потрачены.

Я думаю, что нет необходимости описывать как я себя чувствовал в тот момент! Победа — лучшая награда, гордость за которую затмевает ее.

Пришло время ложиться спать, но я решил описать весь алгоритм в простом сценарии python, чтобы любой мог использовать это решение, если, не дай Бог, сталкивается с подобной проблемой. Или, что случается гораздо чаще, кто-то просто устает ждать подтверждения транзакции и решит заплатить за ее обработку немного больше. Вот почему я назвал сценарий upmyfee и загрузил его в Github:

Только сделав окончательный git push, я заснул, думая, что благодаря развитию рынка криптовалют и популяризации криптоактивов цена безопасности растет экспоненциально.

Материал написан со слов Даниэля Яворовича, основателя и технического директора Arilot.

Лучшие криптовалютные биржи 2019 года для начинающих трейдеров

Комментарии

Больше криптоновостей

Рейтинг бирж криптовалют: Обзор лучших платформ 2017-2018 годов