February 9, 2023

Криптовалюты для платежей. Часть 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, то есть децентрализированные приложения. Прямо в интерфейсе приложения откроется сайт Юнисвапа или ВанИнча, где можно будет сделать тоже самое. Причем, подключать какие-либо кошельки будет не нужно, ведь вы уже и так находитесь в своем кошельке, в этом и смысл встроенных приложений в Сейфпале.

Но это еще не все — у Сейфпала есть свой интерфейс свапа. Он так и называется — 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. Может еще получиться так, что дополнительно к риску перевеса соотношения профит вы будете получать вообще в каких-нибудь левых токенах проекта, который тоже сильно волатильны.

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

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

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

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

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

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

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

Видео свапа USDT на USDC через SafePal

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

✅ Задача выполнена в СейфПале.

Bridge

Идем далее к более сложной с технической точки зрения операции, но нам как юзерам разница будет не заметна.
Допустим, у нас есть USDT ERC-20, а мы хотим USDT BEP-20. То есть мы хотим вывести монету из одного блокчейна и получить ее в другом. В случае с USDT проблем нет, потому что монета доступна на обоих блокчейнах: и на Эфире, и на Бинансе. Но не все монеты доступны на всех чейнах, разработчик может и не создавать свою монету в других сетях, потому что это сопряжено с дополнительными головными болями в виде разработки и менеджмента бриджей.

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

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

В данном случае Сейфпал — не лучшее средство для бриджа, потому что из доступных провайдеров тут только MEXC. Несмотря на заявление сервиса, что они берут комиссию в 1 USDT, из-за особенностей бриджа по факту денег вы можете получить меньше.

Кстати, при бридже через Сейфпал при втором экшене кнопка называется не бридж, а свап. Такой вот косячок.

Обычно я выбираю бриджи на том же сервисе 1inch, хоть они и реферят на другие децентрализованные приложения. Пример одного такого сервиса Celer Network:

Извините за кривой скрин, но так надо)

Основное отличие бриджа от свапа в том, что процесс занимает больше времени и комиссия за транзакцию значительно выше, потому что сервису нужно еще покрывать комиссию в целевом блокчейне. У меня кончилась уже тестовая крипта, поэтому демонстрации работы пока не будет( Кстати, забриджевать или свапнуть маленькие суммы как правило нельзя — у большинства сервисов есть минимальные суммы для операций, которые близятся к сотне долларов.

Я не стану заострять внимание на бриджах, потому что это такая операция, которую действительно намного проще сделать через биржу. И на моем опыте мало у кого вообще появляется необходимость бриджевать монеты. Но теперь у вас есть понимание процесса, и вы осведомлены, что из не популярных сетей выводить монеты — сложная и дорогая затея. Например, как-то давно у меня была задача перевести монеты AVAX из их основной сети в стейблкоины на Эфире. Свапнуть AVAX-монеты в обернутый USDT было не сложной задачей. Но бридж стейбла в Эфириум-сеть оказался задачей трудорешаемой: бриджей, которые внушают доверие, почти не нашлось, и сама операция вышла значительно более дорогостоящей. Потери были до 4%!

В Траст-кошельке бриджей нет, только свапы.

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

Бриджи и свапы — это смарт-контракты. Главное правило гигиены в криптомире подразумевает, что юзер никогда не использует свой основной адрес для работы с подобными тулзами. Разрешая смарт-контрактам выполнять какие-либо действия, вы даете доступ ко всем средствам на вашем кошельке. Иначе контракту будет нечего свапать. В этом нет ничего плохого, если использовать доверенный проект, но всегда есть риск, что произойдет очередной взлом и злоумышленник воспользуется вашим разрешением для кошелька, выведя оттуда все средства. Всегда используйте промежуточный кошелек, на который отправите нужную сумму для свапа, произведете операцию, а потом вернете все обратно, оставив разрешенный кошелек пустым. Это геморно, займет больше времени и потребует дополнительных затрат на лишние транзакции, но зато защитит в будущем от возможных взломов проектов. Я всегда говорил и буду повторять: все, что безопасно, — неудобно.
В мире крипты огромное количество мошенников и хакеров. Уверен, вы не раз читали про различные взломы или про то, как люди теряли очень большие суммы. В большинстве случаев это происходит из-за человеческой лени и пренебрежения подобными правилами. Большинство людей, работающих с криптой, прекрасно понимают все меры безопасности, но думают, что их пронесет, или надеются на удачу.

Я был один из тех многих людей, которые держали много крипты на бирже FTX. Когда начался поток негативных новостей, вместе со всеми я был полностью уверен, что ничего страшного не произойдет — биржа-то нормальная, там все хранят свои бабки. Я видел лично людей, которые держали там миллионы долларов, и своими глазами видел, как они их перечисляют туда-сюда. Помню, как я пришел вечером уставший домой и краем глаза словил очередную негативную новость, даже не вчитываясь в ее описание. Мне было настолько все впадлу, что я даже не хотел открывать ноутбук. Но потом я вспомнил правило о том, что на бирже держать средства нельзя в принципе, поэтому пересилил себя и вывел со своего аккаунта все под чистую. В моем понимании на тот момент это было абсолютно необязательно, потому что, повторюсь, я был уверен, что все будет нормально, и даже не вникал в суть проблем, про которые тогда только начинались разговоры. Но я понимал, что даже если ничего не произойдет, то, обезопасив себя таким образом, я ничего не потеряю. Следующим вечером FTX ограничил выводы, а через день биржи больше не существовало.
А потом все начали узнавать, что крупные профессиональные инвестиционные фонды держали кучу своих денег на этой бирже и в итоге все потеряли. Почему? Да потому что обычный сотрудник фонда, который был ответственнен за эти чужие средства, просто поленился последовать правилам безопасности и решил лучше жахнуть пивандрия вечером в баре, потому что "ничего ж не случится, они слишком крупные".
Из этой ситуации я вынес очень большой урок — нельзя рассчитывать на везение, когда речь идет о финансах, тем более в мире криптовалют, и ни в коем случае нельзя лениться и надеяться на удачу. Вы можете сколько угодно раз выглядеть идиотом, когда по несколько раз перестраховываетесь, но итоговый результат расставит все на свои места.

Бонус. ENS

В мире Web3 не без развлечений. Подобному тому, как вы можете купить доменное имя в интернете (например, как мое — afadeev.com), вы можете купить имя для своего кошелька. Если есть имя, то вместо бессвязного набора букв и цифр кошелек можно найти по понятному для человека названию.
Например, vitalik.eth — нейминг Виталика Бутерина. Попробуйте вбить это название в поиск на Езерскане и он покажет вам кошелек Виталика с кучей эфира.

Сервис называется Ethereum Name Service. Это обычная НФТишка, которую нужно арендовать через смарт-контракт. Затем любой поддерживаемый сервис сможет резолвить ваш кошелек по этому имени. Естественно, работать это будет только в сети Эфира. У большинства популярных EVM-блокчейнов есть свои аналоги, но придется покупать домен в каждом.

Заходим на сайт, подключаем кошелек, платим кучу комиссий и арендуем адрес. Поддерживаются даже эмоджи. Точно так же, как и в мире обычных доменных имен, Web3-домены продаются за невменяемые суммы на OpenSea.
Кстати, с недавних пор не обязательно выбирать имя с концом .eth — ENS теперь поддерживает даже зоны .com. Эдакая совместимость старого и нового веба.


На этом все. Я постарался изложить всю требуемую информацию, чтобы вы могли почувствовать себя уверенно при работе с криптой. Делитесь этими статьями с друзьями и подписывайтесь на мой Телеграм, где я продолжу рассказывать не только про крипту.


Что можно сделать дальше?

Купить холодные кошельки и стать крипто параноиком — Криптокошельки — как хранить криптовалюту

Оформить криптокарту, чтобы платить стейблкоинами за шаурму — Криптокарты — как действительно можно платить криптой в магазине у дома


Мои статьи про крипту:


Если вам помогли или показались интерсными эти статьи, то можно меня отблагодарить здесь, нажав кнопку Send Tips в шапке страницы или здесь, ну или вы уже знаете, что с этим делать: 0xd138014f90232e815c892901f37d80747cb4acf0