Из-за ошибки в удаленном вызове процедур (RPC) кошелька Filecoin биржа Binance обработала «двойной» депозит. В результате повторной транзакции на счет пользователя поступило 122 000 FIL вместо 61 000 FIL.
Майнеры Filecoin сообщили, что отправка «заменяющей» транзакции привела к зачислению монет FIL на биржевой кошелек пользователя вдвое больше отправленной им суммы. Это произошло из-за ошибки в коде удаленного вызова процедур (RPC) кошелька Filecoin. Ошибка не привела к реальной «двойной трате» в блокчейне, то есть консенсус не был нарушен. Двойное зачисление произошло вследствие «избыточного доверия» со стороны Binance.
Разработчик Биткоина Дастин Деттмер (Dustin Dettmer) пояснил, что RPC представляет собой информационный канал для бирж, с помощью которого они могут проверить «легитимность» депозита. Однако биржи не делают это напрямую, а запрашивают о допустимости депозита через канал. Программа кошелька FileCoin выдает им положительный или отрицательный ответ. Такой процесс проверки депозитов имеет серьезный недостаток, который позволяет несколько раз вносить те же самые монеты.
«Несмотря на проведение всего одной проверки, хакеры могут вносить депозиты столько раз, сколько захотят. Это можно сравнить с привязыванием денег на нитку, чтобы вечно играть в игровые автоматы, используя одну и ту же монету. В нашем случае последствия более драматичны. Хакеры могут украсть реальные деньги в неограниченном количестве», – сказал Деттмер.
Майнеры Filecoin обнаружили эту проблему случайно. Транзакция на 61 000 FIL (около $4.6 млн) занимала слишком много времени, поэтому они решили провести транзакцию с функцией «replace-by-fee» (RBF). В этом случае пользователь может заменить старую сделку новой транзакцией, выставив более высокую комиссию, чтобы ускорить подтверждение транзакции. Обычно при замене комиссии первая транзакция отклоняется, а действительной считается вторая транзакция с более высокой комиссией. Однако вместо этого произошло повторное зачисление депозита, и на адресе пользователя оказалась удвоенная сумма – 122 000 FIL. Баг в кодах RPC обманул Binance – биржа увидела обе транзакции и проигнорировала их конфликт, приняв обе сделки. Майнеры немедленно уведомили об этом Binance и разработчика Filecoin – компанию Protocol Labs.
Каждая биржа, на которой торгуется криптовалюта Filecoin, использует для обработки депозитов один и тот же код RPC – StateGetReceipt. Поэтому теоретически такие ошибки могли возникнуть на любых площадках, не требующих для зачисления депозита достаточного количества подтверждений в блокчейне. Разработчики Filecoin открыли обсуждение этой проблемы на GitHub. Они отрицают наличие багов в коде RPC и утверждают, что проблема возникла со стороны Binance. Тем не менее, некоторые биржи приостановили депозиты в криптовалюте FIL.
Напомним, что запуск основной сети Filecoin состоялся 15 октября 2020 года. Платформа работает на основе InterPlanetary File System (IPFS), позволяя пользователям торговать неиспользуемыми объемами для хранения данных с помощью криптовалюты FIL.