January 13

Криптовалюты для платежей. Часть 4 — бриджи, свапы и прочее

В заключающей части расскажу про более специфические тулзы в мире децентрализованных финансов.

Зачем все это нужно

Существуют разные чейны, разные токены, но что делать, если получатель не поддерживает какой-нибудь USDT BEP-20, который лежит у вас на Сейфпале? Далеко не все биржи и криптопроекты работают с Бинанс чейном, многие не подерживают Tron и так далее. Что делать, если у вас USDC, а получатель хочет USDT?

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

На этом этапе мы вспоминаем, что у нас вообще-то децентрализация и все такое. Поэтому на помощь приходят DeFi сервисы. Это сервисы, которые работают на смарт-контрактах и ничем не регулируются, кроме кода и описанных в нем правилах. Вы обязуетесь отдать одну монету, а вам обязуются прислать другую. Все это не на уровне вербальных договоренностей, а на уровне блокчейна и кода. Контракт проверит, что у вас и второй стороны точно есть указанная сумма, заблокирует ее на время обмена и так далее.

Исполнение смарт-контрактов требует значительно большего количества вычислений в блокчейне, чем обычная отправка крипты. Во время подобных обменов происходит несколько транзакций, не говоря уже ситуаций, когда обмен происходит в разных сетях. Все это ведет к тому, что комиссия за транзакции и комиссии работы этих сервисов значительно выше, чем такая же операция на бирже. Но как всегда за безопасность нужно платить.

Типы обменов монет

Существует два основных кейса, которые я уже упомянал: обмен токена на другой токен в рамках одной сети и обмен токена на такой же токен в другой сети. Первый способ называется Swap, замена. Второй называется Bridge — мост.

Разберем оба способа на примерах. Делать все будем в приложении SafePal.

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

Swap

Допустим, у нас есть 100 USDC ERC-20. Мы хотим отправить их нашему корешу, но его кошелек поддерживает только USDT ERC-20 (ну или он просто душнила). Значит нужно свапнуть USDC ERC-20 на USDT ERC-20.

В блокчейне Эфириума есть несколько крупных свап сервисов, например: UniSwap и 1inch. Можно зайти на их сайты, открыть веб приложения и поменять все используя подключенный МетаМаск. Но мы пойдем более удобным путем и не будет отходить от традиции тестировать все на Сейфпале.

Преимущество Сейфпала в том, что в приложении есть отдельный раздел Dapps, то есть децентрализированные приложения. Прямо в интерфейсе приложения откроется сайт Юнисвапа или 1inch, где можно будет сделать тоже самое. Причем, подключать какие-либо кошельки не нужно будет, ведь вы уже и так находитесь в своем кошельке, в этом и смысл встроенных приложений в Сейфпале.

Но это еще не все — у Сейфпала есть свой интерфейс свапа. Он так и называется — Swap, соседняя кнопка с Dapps. Никуда не уходя из приложения можно свапнуться. В данном случае кошелек использует публичное API нескольких сервисов. Во внутреннем свапе Сейфпала есть как централизированные сервисы, так и децентрализированные. На момент написания статьи в списке были Бинанса и биржа MEXC для CEX и 1inch и 0x для DEX. Для того чтобы пользоваться Бинансом нужно авторизоваться там через апку, что мало чем отличается от прямого обмена на бирже, а для MEXC есть ограничение на сумму обмена.

Наша цель воспользоваться децентрализованным способом, поэтому давайте посмотрим что будет происходить, если мы попробуем свапнуть USDC на USDT используя 1inch протокол.

Введя требуемую сумму, мы видим как интерфейс высчитал сумму к получению. За 100 USDC мы получим 99.6 USDT. Ниже мы видим комиссию Сейфпала в 0.2%, и сразу возникает вопрос, почему сумма к получению меньше (100-0,2%=99.8)? Давайте сделаем небольшую паузу и поверхостно разоберем логику работы подобных свапов.

Откуда беруться монеты для свапа

Я не изучал досконально как работают подобные финансовые сервисы, очевидно, что под капотом там более сложные алгоритмы, но на верхнем уровне мы имеем не сложную логику с несколькими участниками.
Любой свап или бридж работает за счет пула ликвидности, которым обеспечен весь обмен. Существует пара USDC/USDT и в нее залита ликвидность обоих монет, то есть банально где-то лежат зарезервированные USDC и USDT для целей этих обменов. Соотношение количества обоих монет в пуле ликвидности в идеале должно быть близкое к друг другу, то есть 1 к 1. Тогда и цена обмена будет 1к1. Естественно 1inch закладывает в курс обмена еще и свою комиссию.

Зададимся вопросом — а кто положил туда так много денег и зачем? Ведь мы можем свапнуть хоть миллион, не смотря на то что процент потерь будет расти с увеличением суммы. Сам 1inch положил эту крипту и зарабатывает на комиссии? Возможно, но в какой-то момент может произойти ситуация, когда одна сторона обмена сильно иссякнет и все перестанут меняться в этом сервисе. Значит пулы нужно периодически пополнять и стабилизировать. А это много постоянных вливаний.

На сайте проекта есть вкладка Earn, перейдя по которой, можно увидеть несколько способов заработать с помощью этого протокола. Это пользователи депозитят свои монеты в подобные пары ликвидности, получая свой процент. Чем менее популярен обмен или перевес соотношения, тем больше будет % заработка. Но отдавать деньги в пулы очень рискованное занятие, есть много ситуаций, когда можно все потерять. Так как это децентрализованная система, все возможные перепады никак не регулируются, а подчиняются настроению рынка. Например, чтобы вложиться в стандартный пул, нужно вложить сразу обе монеты пары. Если что-то произойдет и направление станет непоплуярным, либо возникнет большой перевес, либо вообще начнутся массовые распродажи, то ваши вложения тоже потеряют соотношения. Может получиться так, что вы вложили 1000 USDT/1000 Shitcoin, а через день уже можете забрать только 500 USDT/1500 Shitcoin. Может еще получиться так, что дополнительно к риску перевеса соотношения профит вы будете получать вообще в каких-нибудь левых токенах проекта, который тоже сильно волатильны.

Получается, что расчет получаемой суммы учитывает не только прямую комиссию сервиса, но и состояние пула, а также комиссии для тех, кто обеспечивает этот пул. Возможно там есть другие переменные и условия, но для общего понимания даже мне это уже не так важно.

Свапаем дальше

Исходя из написанного выше, становится понятно, почему в разных свап сервисах могут быть разные курсы обмена — у всех разные пулы и разные объемы. В Сейфпале как правило курс 1inch и 0x примерно одинаковый.

В строке, где указан курс обмена, есть еще один процент, который мы уже можем регулировать — Slippage Tolerance. Так называемое допустимое проскальзывание. Мы не единственные, кто сейчас что-то свапает, особенно на таких крупных сервисах. А значит ситуация в пуле может меняться очень быстро, даже в рамках одного блока блокчейна. Поэтому алгоритм предусматривает, что в процессе свапа цена может поменяться, как в большую так и в меньшую сторону. Чтобы избежать непредвиденных потерь, мы можем ограничить допустимое значение этого проскальзывания. В данном случае, если курс поменяется больше, чем на 1% в обе стороны, то свап отменится, даже если мы уже подписали и отправили транзакцию. Для маленьких сумм проскальзывание можно ставить и все 5%, потому что потери будут не такие большие в относительном значении, а в том же Эфириуме мы в итоге больше потратим Эфира на комиссии неуспешных транзакций, чем защитим себя от рисков. Для больших сумм даже 1% может быть существенным изменением, поэтому там это будет иметь смысл. На популярных направлениях обмена, типа как USDC/USDT изменения будут очень незначительные, а, как правило, не происходят вообще.

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

После нажатия кнопки Swap вас попросят подтвердить авторизацию на снятие нужной суммы. Это первый шаг операции, где вы пока просто разрешаете смарт контракту списать с вашего кошелька определенную сумму в определенной монете в будущем. Затем необходимо будет уже подтвердить саму транзакцию для свапа и через какое-то время контракт свапнет токены. Давайте попробуем это на видео.

!!!! записать видео свапа USDT>USDC erc20

Bridge

в трасвалете нет бриджей

Чем опасны свапы и бриджи

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

Бонус. ENS