Как я потерял $1000 USDC: ошибка кошелька XLM/USDC на Uphold + claimable-balance специфика Stellar (часть 1/2)
Источник: https://t.me/bankandfintech/567
Как я косарь протерял 😅
🔲Смотрю, желающих послушать про мой фейл оказалось немало. Оно и неудивительно: обычно все рассказывают только про успехи. А я расскажу, как буквально просрал свою тыщу баксов
🔲Стадия принятия уже пройдена, так что могу спокойно этим поделиться. Обидно особенно потому, что с криптой я плотно знаком с 2017 года, всегда крайне внимательно отношусь к тому, на какой кошелёк и в какой сети отправляю средства - и за все эти годы у меня ни разу не было подобных ошибок. Но, как оказалось, и этого бывает недостаточно. Надежда вернуть свой косарь у меня ещё есть - об этом дальше
🔲Как всё началось
⬇️Большую часть USDC я держу в протоколе Blend в Hot wallet, который работает в сети Stellar. Мост из Stellar в EVM сети периодически ломается, поэтому я решил найти альтернативный способ перевода USDC из Stellar в EVM-сеть и так чтобы это было максимально дёшево. И такой путь я нашёл - биржа Uphold
⬇️Раньше я о ней не слышал, поэтому сначала пошёл изучать: выглядит интересно, но способы пополнения там не совсем стандартные. Для теста я отправил 10 USDC в сети Stellar и без проблем вывел их в сеть Base, заплатив всего $0.25 комиссии. Всё прошло гладко - значит, можно переводить сумму побольше. И вот здесь я и опростоволосился
🔲Где именно произошёл фейл
⬇️Делая второй перевод, я выбрал кошелёк XLM Stellar вместо USDC Stellar. Иконки сети и токена выглядят одинаково, я был уверен, что выбираю именно сеть, а не токен. Также я был уверен, что для одной сети кошелёк будет один и тот же, именно так обычно это работает на всех биржах
⬇️Но это оказалось неверно. В итоге вместо 1000 USDC я получил 1 XLM (именно так в Stellar активируется новый счёт)
⬇️Я сначала не понял, что произошло, начал сверять адреса и быстро нашёл ошибку. Но, зная как работает EVM сети, я был уверен, что ситуация не фатальная: средства просто находятся на стороне биржи, нужно написать в поддержку - и они вернут деньги. В EVM-сетях так это и работает, но не в Stellar 😭
🔲Поддержка Uphold
⬇️Первой стеной оказалась максимально некомпетентная поддержка, которая по кругу задавала одни и те же вопросы, не читая мой изначальный запрос
⬇️Через несколько дней мне всё же удалось достучаться до Senior Support. Я подумал: «Ну всё, теперь-то дело сдвинется» (спойлер - нет)
⬇️Senior Support заявил, что денег у них нет и вернуть они их не могут. Чем больше он отвечал, тем меньше я понимал, как такое вообще возможно
⬇️Стало очевидно: сеть Stellar принципиально отличается от EVM сетей. Я пошёл разбираться глубже и обратился за помощью к людям, которые понимают Stellar сильно лучше меня - CEO Coca и COO Hot wallet, спасибо им огромное за помощь. Благодаря им я наконец понял, почему денег нет ни у меня, ни у Uphold
🔲Почему деньги реально «пропали»
⬇️Что важно понимать - в сети Stellar любой токен не падает сразу на кошелёк получателя. Он сначала создаётся как claimable balance. Кошелек отправитель указывает, кто может этот баланс заклеймить (забрать), либо получатель, либо отправитель и получатель. Но к сожалению Hot wallet может разрешать клейм только получателю, т.е у меня нет возможности вернуть средства самостоятельно, если бы перевод был сделан из нативного Stellar-кошелька, я, вероятно, смог бы вернуть деньги сам
⬇️У Uphold нет функционала клеймить claimable balance, если средства пришли не на ожидаемый кошелёк конкретного токена. Т.е если отправить USDC Stellar на кошелек XLM Stellar, биржа не может забрать эти деньги, они их даже не видят. Это не «особенность сети», это ограничение их инфраструктуры. Такой функционал стоит денег, и биржа просто не стала его реализовывать
Продолжение ⬇️