January 7

Криптовалюты для платежей. Часть 2 — отправка транзакций

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

В этой части я не снимал видео, потому что удобнее сверять через скриншоты.

Как отправить тразакцию в Ethereum

Если вы планируете использовать крипту для небольших платежей(<$10000), то ETH-сеть вам не подойдет из-за больших комиссий. Но именно с нее все начинается, поэтому сначала разберемся с ней, тем более что в остальных сетях все примерно тоже самое.

Немного теории

Если хочется сразу приступить к практике, эти абзацы можно сразу пропускать.

Любая транзакция в блокчейне должна быть подтверждена майнерами или валидаторами. Механизм подтверждения транзакций нам не важен, но особенность алгоритма такова, что транзакция считается успешно совершенной, когда у нее произошло несколько подтверждений, а не одно. Сколько именно — вопрос личного предпочтения, но в случае с Эфиром обычно ждут от 15 подтверждений. На моем опыте достаточно и 5-6, потому что вероятность того, что транзакцию отклонят, потому что верной окажется другая ветвь подтверждений, уже крайне мала.

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

Среднее время подтверждения блока в Эфире - 15 секунд. Это значит, что за минуту транзакция пройдет 4 блока. Может больше, может меньше. Итого за две-три минуты вы уже увидите свой перевод на бирже или другом кошельке. Для сравнения среднее время подтверждения блока в Биткоине — от 10 минут. Поэтому, когда вам кто-то будет рассказывать о каких-либо платежах в Биткоинах, нервно смейтесь ему в лицо. Да и вообще можете смеяться любому, кто будет рассказывать о массовых платежах на блокчейне, напоминая о секундных транзакциях VISA/Master.

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

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

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

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

Это пофиксится, но не скоро. И не смотря на все проблемы, Эфир и его токены — это самый распространенный и поддерживаемый способ. Подавляющее большинство китов и фондов будут держать стейблы в ETH ERC-20. Согласитесь, когда переводишь миллионы, комиссия даже в 50 долларов не такая принципиальная.

Кратко разберем рандомную транзакцию на Etherscan:

На скрине у транзакции уже 123 подтверждения за 25 минут. Далее внизу указано от кого и куда. В данном случае человек отправлял токен, а значит отправлял транзакцию на смарт-контракт этого токена. В детали вдаваться не будем, поэтому сразу смотрим дальше на строку ERC-20 Tokens Transferred. Там дублируется адрес отправителя и сразу указывается адрес получателя самих токенов и имя токена. В примере вместо адреса кошелька указан получатель OKX — это биржа, которая оставила адреса своих кошельков публичными. На сканере матчатся определенные адреса и подменяются на какие-то имена. Такие же есть у Бинанса и прочих. Лейбл адреса можно и себе уникальный создать, об этом я расскажу в другой части.
Ниже стоимость транзакции в эфире и комиссия. Стоимость 0 эфиров, потому что мы отправляли токены, а не сам эфир. Комиссия в полтора доллара, но это конвертация на тот день, когда я смотрю. Посмотрите на эту транзакцию, когда читаете, и, скорее, всего цена в долларах будет отличаться из-за меняющегося курса Эфира. Комиссии за транзакцию с токенами всегда больше, чем просто перевод эфира, потому что операция сложнее. Ниже количество эфира, отданного за газ — чем оно больше, тем выше будет комиссия. Расчет идет по формуле, в которую углубляться тоже нет смысла.

Практика

Как мы уже выяснили, чтобы отправить USDT токен, нужен Эфир. Способов это сделать множество, и о них я расскажу в следующей части. Я купил эфир и USDT на бирже, а потом отправил себе на кошелек.

Мы находимся на этапе, когда на новом созданном кошельке уже лежит немного Эфира и USDT.

В случае с Ethereum мы будем использовать MetaMask, а далее SafePal. В качестве стейблкоина — стандартный USDT.

Отправляем крипту в MetaMask

Начнем с MetaMask как с самого сложного варианта.

Сначала отправим ETH, чтобы было наглядно понятно, чем отличается отправка основной валюты от токена. Отправлять будем на второй кошелек, который я специально создал для этих целей в СейфПале. Авторизировавшись в МетаМаске, вижу тот же баланс, что и в СейфПале:

Нажимаем Send и вставляем адрес получателя. Кошелек проверит, соблюден ли формат адреса, и откроет экран деталей транзакции. Отправить можно любую сумму, поэтому возьмем примерно $1 или 0.001 ETH.

На следующем экране нас интересует величина комиссии (fee). Чтобы изучить параметры подробнее, нажмем на текущее значение Market в блоке Gas:

Новый интерфейс МетаМаска предлагает три градации комиссий: low, market, aggresive. Чем ниже комиссия, тем дольше будет подтверждаться транзакция, а в каких-то случаях может не подтвердиться вообще. По факту значения, которые подсказывают кошельки, всегда оказываются выше, чем на самом деле. Как я и говорил ранее, это некая защита от дурака — всегда берут запас, чтобы транзакция не зависла. И это даже учитывая тот факт, что значения здесь обновляются автоматически несколько раз в минуту.

Чтобы переписать предустановленные настройки, нажмем Advanced:

Теперь наша задача — выбрать правильное значение в Max base fee. Давайте посмотрим в независимом источнике, сколько на самом деле сейчас gwei необходимо блокчейну Эфириума. Для этого переходим на Etherscan>More>Explore.Gas Tracker.

Значения могут меняться от блока к блоку. Через минуту High значение было уже 18, но это не критичное изменение. В момент высокой нагрузки сети значения могут очень сильно скакать. Когда за транзакцию нужно заплатить больше 50 gwei, лучше сразу выбирать объем выше на 5-10 пунктов, чем максимальный на данный момент. Когда же значения меньше 10, то можно не волноваться, ведь это значит, что нагрузка на блокчейн невелика и маловероятно, что она резко изменится.

Для быстрой транзакции высокой комиссией будет 17 gwei, столько и подставим в соответствующее поле. Priority fee менять не нужно. Это возможный бонус для майнера и на моем опыте он мало на что влияет. Сохраняем результат.

Обратите внимание, как изменилась комиссия в сравнении с рекомендуемыми. В долларовом эквиваленте она тоже поменяется. Закрываем это окно и подтверждаем транзакцию.

Пока транзакция не подтвердится в одном блоке, она будет в статусе Pending. Как только все пройдет хорошо, появится зеленая дата отправки. Во время действия обоих статусов можно посмотреть детальную информацию о транзакции:

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

https://etherscan.io/tx/0xf43f20100805384f39a7d07627acee09d8e0c6ad1eb63ca495741e8fe04bfd8b

С интерфейсом и значениями вы уже знакомы. Мы потратили $0.44, чтобы отправить доллар. Комиссия возрастает в зависимости от количества отправляемой крипты, но незначительно. Сейчас блокчейн Эфира не нагружен, поэтому комиссия небольшая. Но не спешите делать выводы, пока мы не отправим токен.

Эфир благополучно получен на новый адрес:

Так как оба кошелька добавлены в один СейфПал, в истории транзакций я увидел сразу обе нотификации: на вход и на выход.

Давайте теперь отправим USDT, и сделаем это через СейфПал.

Отправляем крипту в SafePal

Задача: отправить USDT ERC-20 с первого тестового адреса на второй.

Для начала нам нужно узнать адрес получения. У нас уже есть адрес, куда мы отправляли ETH, и, забегая вперед, он будет такой же и для токена ERC-20, но на всякий случай я рекомендую всегда сверять эти данные.

Вбивая в поиске USDT на втором тестовом кошельке, мы его не находим — нужно его добавить.

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

Теперь переходим на кошельке отправителя в USDT (ERC20) и попробуем отправить крипту.

После нажатия кнопки отправки (Send) нам предложат подтвердить введенные данные. Кошелек покажет первые три и последние 5 символов обоих кошельков. Проверять начало и конец адресов вполне достаточно, чтобы убедиться в их корректности. Я выбираю по классике низкую комиссию и отправляю.

Транзакция подтвердилась буквально за несколько секунд. Проверяем на Etherscan:

https://etherscan.io/tx/0x49a48091c25476f107f4d4153a91e00cd473e66e9b9a51f7f609af8d16179c34

Мы потратили почти полтора доллара, чтобы отправить 3 доллара 🙃 Велкам ту Эфириум нетворк. На кошельке получателя тоже уже увеличился баланс на отправленные 3 USDT:

Пару слов о том, как рассчитывается комиссия за транзакцию

Все вознаграждения за транзакцию (fee) основываются на базовой цене, которая рассчитывается самим блокчейном исходя из объема транзакций, которые прилетали в последний блок. Поэтому три градации комиссий мало различаются. И именно поэтому через минуту ситуация может уже поменяться (в блок вдруг просунули кучу транзакций). Для верности лучше указывать бОльшую комиссию — кошельки так и делают, не давая выбора юзеру. Своеобразная защита от дурака. Но ребята с еврейской жилкой, как у меня, всегда выбирают впритык, особенно когда не спешат. Иногда я специально ставлю заниженную комиссию с расчетом на то, что граница газа в ближайшее время упадет и моя транзакция успешно подтвердится чуть позже.

Что будет, если не транзакция долго не подтверждается? Она отменится через несколько часов. Ее можно попробовать ускорить, переотправив туже самую транзакцию, но с большей fee — она должна перезаписаться, хотя по факту из двух одинаковых транзакций в блок запишется та, что подтвердится первой. Но это рискованное занятие, я его редко практикую. Например, со старыми кошельками можно было случайно отправить транзакцию два раза, хотя сейчас множество кошельков не дадут этого сделать.

Отправить самому себе транзакцию можно. Но на моем опыте Etherscan после этого будет неправильно считать баланс кошелька.

Отправляем крипту BEP-20 через MetaMask

По умолчанию МетаМаск работает с сетью Эфира. Чтобы добавить поддержку другой EVM-сети, нужно проделать несколько манипуляций. Именно поэтому отправлять токены в сети BSC будем через него, ведь в СейфПале все будет выглядеть точно также легко, как мы это сделали с Эфирным токеном.

Добавим сеть BSC в МетаМаск.

В списке популярных сетей уже есть BSC. Но давайте пойдем по хардкору и разберемся как добавить сеть вручную. Выбираем в самом низу вариант manually. Нам нужно вбить параметры сети, которые можно узнать на сайте проекта. В нашем случае это Binance.

Вбиваем данные из документации Binance Academy
Результат должен быть такой

Добавив сеть, мы видим пустой баланс токенов, а точнее никаких токенов мы не видим вообще. Чтобы МетаМаск увидел наш баланс USDT, ему нужно указать параметры этого токена. МетаМаск — нетривиальный инструмент, поэтому по умолчанию он выполняем минимум задач. Нажимаем Import tokens внизу. Теперь нам нужно добавить адрес контракта нужного токена, его символ и количество чисел после запятой. На деле нам достаточно добавить адрес контракта, а остальная информация подтянется сама. Чтобы найти адрес контракта какого-то токена воспользуемся аналогом Etherscan только для BSC-сети — https://bscscan.com/.

Вбиваем в поиск USDT

USDT в сети Бинанс называется немного странно, и я не знаю, почему они решили так называть стейблкоины у себя на платформе. Binance-Peg BSC-USD (BSC-USD). Но это и есть нужный нам стейблкоин. Переходим на страницу токена. В правой части экрана находим необходимый нам адрес контракта (Contract):

Скопировав его в окно МетаМаска получаем автозаполнение данных

Сохраняемся и наслаждаемся балансом USDT на блокчейне Binance.

Отправляем USDT BEP-20. Жмем на токен в списке на главном экране МетаМаска, а далее нажимаем Send.

По такой же схеме проверяем адрес в СейфПале:

Обратите внимание: видим тут тот же самый адрес контракта токена, который вбивали в МетаМаске

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

Разберем экран отправки транзакции в МетаМаске:

Первое, что бросается в глаза — отсутствие градаций комиссий. У нас есть возможность ее повысить или понизить, но сам кошелек не рекомендует никаких значений. Дело в особенностях блокчейна BSC, на которых я сейчас не буду останавливаться. У BSC фактически централизированная система валидаторов, поэтому я никогда не видел, чтобы размер gwei в сети менялся. Благодаря этому стоимость транзакций значительно дешевле того же ETH, в чем мы сейчас убедимся. Необходимости как-то менять прайс у меня никогда не возникало.

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

Менять в деталях транзакции нечего, поэтому просто отправляем.

https://bscscan.com/tx/0x38ac26e32586d81f0bceac57715b6d0ef2d3875412b9c416b9ebdd131b5bc814

Мы заплатили $0.06 за транзакцию в $3. В этом основной смысл использования разных блокчейнов. В TRON (TRC-20) будет примерно такая же ситуация, а может цена будет даже меньше.

Итак, мы разобрались как добавить другую сеть, как добавить токен и в чем смысл использования отличных от Эфира блокчейнов.

Давайте отправим все средства со второго тестового кошелька через СейфПал обратно, что я сделаю уже на видео.

Видео возвращения тестовых монет обратно

Почему криптоплатежи такие сложные?

Проблема всей криптотемы в том, что цена за транзакцию непредсказуема. Можно заплатить 5 центов сегодня за трнасфер 1000 баксов, а завтра уже 5 долларов. Или доллар сегодня за транзакцию в Эфире, а завтра уже 20! Это делает крипторасчеты в подобных надежных и правильных сетях не удобными и не предсказуемыми. На такие методы нельзя положиться, чтобы спланировать свои платежи. А все дешевые чейны, как показывает опыт разных взломов и атак, рискованны — страшно хранить там большие суммы. Возникает резонный вопрос — ну и нахера нам это всем нужно? Ответ у меня пока один — обходить регуляцию, отводить от себя внимание, сократить где-то время и обезопасить себя от внешнего воздействия. Но удобны ли ежедневные платежи криптой по сравнению с традиционной картой виза/мастер? Очевидно, что пока нет. Все эти амбициозные блокчейны-убийцы _подставь любую устоявшуюся систему оплат_ звучат очень классно, но абсолютно неюзабельны, пока любой обыватель может прийти в банк, оформить за полчаса карту и за доли секунды оплачивать ей покупки в миллионах мест, прикладывая карту к терминалу, который есть у любой палатки с сухариками. Mass adoption'а блокчейн не получает, и непонятно, сколько еще должно пройти времени.
Возможно, вы видели впечатляющий ролик, где в швейцарском городе Лугано местный МакДональдс принимает оплаты криптой. По стечению обстоятельств я часто бывал в этом городе и даже жил там несколько месяцев. Как думаете, видел ли я хоть одного человека, который заплатил криптой? Я даже не знал, что там есть такая возможность, пока не наткнулся на новость в инетернетах. Нет никакого фокуса — просто МакДак запартнерился с какой-то местной платежкой, у которой есть платежи в крипте. Вы не можете прийти со своим СейфПальчиком и оплатить двойной чиз своими USDC BEP-20 с минимальной комиссией. Это, как всегда, только лишь информационный шум.

В следующей части разберемся, что делать с этим вашим USDT и как конвертировать его в реальные мани. Stay tuned.