Что такое Transaction Replacement Attack?
Transaction Replacement Attack: это когда кто-то отправляет криптовалютный платёж, а затем быстро транслирует другую версию той же транзакции с изменёнными данными до её подтверждения. Цель обмануть того, кто принял первый ожидающий платёж. Представьте, что вы пообещали наличные на кассе, а затем выбежали и подменили купюры, пока кассир не смотрит.
Если транзакция отображается как ожидающая, её можно считать оплаченной. Не совсем так. Пока майнер не включил её в блок, возможны замены и Transaction Replacement Attack может изменить результат.
Как работает Transaction Replacement Attack
Краткий пошаговый разбор на примере простой покупки.
- Шаг 1: Злоумышленник отправляет вам платёж с низкой комиссией. Вы видите статус «в ожидании» и думаете, что всё в порядке.
- Шаг 2: Перед подтверждением злоумышленник создаёт новую транзакцию, расходующую те же средства, часто с помощью Replace by Fee (RBF) или путём повторной отправки с тем же nonce в сетях на основе аккаунтов.
- Шаг 3: Замена предлагает более высокую комиссию и лучше привлекает майнеров, поэтому она попадает в блок, а первая версия отклоняется.
- Шаг 4: Это проще при сильной перегрузке сети, когда майнеры отдают приоритет более высоким комиссиям.
- Шаг 5: Вы отдаёте товар или предоставляете услугу на основании ожидающей оплаты и остаётесь без оплаты, когда сеть подтверждает замену.
Вот в чём суть. Просто, немного хитро и это можно предотвратить.
Почему Transaction Replacement Attack важна
Вот почему это должно вас волновать, независимо от того, управляете ли вы кассой или просто переводите монеты другу.
- Польза: Механизм замены позволяет добросовестным пользователям ускорять застрявшие платежи путём повышения комиссии, что удобно, когда нужно подтверждение немедленно.
- Риск: Те же инструменты, которые помогают вам, могут быть использованы против вас, если вы доверяете ожидающему платежу при выдаче товаров или доступа.
- Актуальность: Это встречается в точках продаж, при эмиссии NFT, во внебиржевых сделках и везде, где принимают ожидающие транзакции.
Используйте криптовалютный кошелёк, который явно помечает заменяемые транзакции и показывает число подтверждений. Для платежей требуйте несколько подтверждений, прежде чем передавать что-либо важное.
Ключевые признаки Transaction Replacement Attack
Что выделяет это, простыми словами:
- Время: Происходит до подтверждения, пока транзакция всё ещё находится в мемпуле.
- Стимулы: Более высокая комиссия или лучшие условия привлекают майнеров или валидаторов включить замену вместо оригинала.
- Сигналы: Некоторые транзакции помечены как заменяемые, а в сетях на основе аккаунтов возможны замены с тем же nonce.
- Цель: Продавцы или партнёры, которые принимают ожидающие платежи, уязвимы.
Варианты
Та же идея, немного разные механики в зависимости от сети.
- RBF: Отправитель помечает платёж как заменяемый и позже транслирует версию с более высокой комиссией, которая меняет выход или получателя.
- Замена nonce: В сетях на основе аккаунтов пользователь повторно отправляет транзакцию с тем же nonce, но с более высоким газом, что отменяет или меняет предыдущий намерение.
- Трюк с возвратом: Отправитель сначала платит продавцу, а затем заменяет ожидающий платёж на такой, который отправляет средства на адрес, контролируемый им.
Не считайте платёж окончательным, пока ваш узел не отметит транзакцию как завершённую. Transaction Replacement Attack теряет силу после надёжных подтверждений.
Пример
Кафе принимает ожидающий платёж за латте, покупатель сразу же транслирует замену с более высокой комиссией, которая отправляет средства в другое место, и позже бариста понимает, что покупатель воспользовался возможностью замены.
Забавный факт
Повышение комиссии было введено, чтобы помочь добросовестным пользователям спасать застрявшие транзакции, задолго до того, как это стало мемом о хитростях. Как и многие технические решения, восприятие зависит от того, кто держит ключи.
Итог
Коротко: не отдавайте товары по неопределённой оплате. Подождите один или два блока, затем можно действовать спокойнее.
