По словам майнеров Filecoin из Filfox и FileStar, в среду Binance обработал «двойной депозит» FIL на сумму в миллионы долларов. Это не настоящая двойная трата внутри сети, но Binance зачислял средства на счет дважды после одного депозита из-за серьезной ошибки в коде RPC Filecoin.
«Двойная трата» происходит, когда одни и те же средства в блокчейне расходуются дважды. Алгоритм доказательства работы биткоина был разработан, чтобы сделать это практически невозможным. Но похоже, что коды RPC для Filecoin, проекта блокчейна для распределенного хранилища, созданного Protocol Labs, имеют недостаток, при котором пользователи могут обманом заставить биржи принять депозит дважды.
«Канал RPC - это информационный канал для бирж для проверки законности депозитов. Они не проверяют напрямую. Вместо этого они отправляют сообщение по каналу и затем получают ответ от программного обеспечения FileCoin, в котором говорится «да» или «нет»», - пояснил разработчик биткоинов Дастин Деттмер.
Однако, добавил он, процесс, который разработчики Filecoin предоставили биржам для проверки депозитов, содержит критический недостаток, который позволяет пользователям многократно вносить одни и те же монеты.
«Это позволяет хакерам выписывать один чек, но повторно вносить его столько раз, сколько они захотят - подобно тому, как дети в игровых автоматах привязывают ниточки к четвертям, чтобы играть вечно, используя одну монету», - сказал Деттмер. «За исключением этого случая, последствия более драматичны. Могут быть украдены неограниченные суммы реальных средств».
Эту неудачу правильнее назвать «двойным депозитом», потому что эта ошибка не привела к истинному двойному расходованию, и обнаружившие ее майнеры верят, что они нашли и другие случаи.
Ошибка двойного депозита Filecoin RBF
Коллектив разработчиков Filfox и FileStar обнаружил ошибку в среду после ее случайного использования. После того, как транзакция на 61 000 FIL (на сумму примерно 4,6 миллиона долларов) на обмен заняла слишком много времени, команда увеличила комиссию транзакцией «replace-by-fee» (RBF), чтобы ускорить ее.
Транзакция с заменой по комиссии имеет место, когда пользователь транслирует новую транзакцию, чтобы заменить старую, неподтвержденную транзакцию, и прикрепляет к ней более высокую плату за майнинг с целью ускорения ее подтверждения.
Эта транзакция RBF, однако, привела к тому, что депозит появился на их счете Binance дважды, что фактически превратило 61 000 FIL в 120 000 FIL. Проблема в том, что второй раз FIL никогда не попал в кошелек Binance - Binance дважды обманули, чтобы зачислить депозиты из-за ошибки в кодах RPC Filecoin. Команда немедленно уведомила Binance и Protocol Labs.
По сути, ошибка означала, что Binance увидела обе транзакции, проигнорировала, что они конфликтуют, и приняла обе (для транзакции с заменой по комиссии обычно вторая транзакция с более высокой комиссией считается действительной, а первая отклоняется).
Каждая биржа с торговыми парами Filecoin использует один и тот же RPC-код StateGetReceipt для обработки депозитов, поэтому теоретически ошибку можно использовать на любой бирже, торгующей токеном, сообщила команда.
«Protocol Labs предложила биржам получать квитанции сообщений от RPC StateGetReceipt, в котором есть серьезная ошибка. Когда есть два сообщения с одним и тем же отправителем и одним и тем же nonce в цепочке (что означает двойное расходование), StateGetReceipt возвращает одинаковый результат для них обоих», - сообщил майнинговым фирмам разработчик Filecoin.
Разработчики Filecoin открыли проблему с GitHub, чтобы работать над исправлением ошибки. По словам майнеров, в результате депозиты для Filecoin на Binance, Huobi и других были остановлены. Разработчики Filecoin также отрицали, что ошибка возникла из-за ошибки RPC, и вместо этого утверждали, что она возникла из-за ошибки на стороне Binance.
«Ошибки RPC нет. Проблема возникла из-за неправильного использования API-интерфейсов рассматриваемой биржи. Мы не знаем ни одной другой биржи, которая совершила бы подобную ошибку», - заявили в команде Filecoin. «Команда будет работать с биржами над проверкой их депозитного механизма, чтобы избежать проблем в будущем».