Многих пользователей аппаратных кошельков волнует один и тот же вопрос – как можно получать, хранить и тратить криптовалюту Tether USDT. Напомню, что особенность этого стейблкойна заключается в привязке 1 USDT к 1 доллару. Это позволяет сохранить ценность своих активов во время высокой волатильности на рынке криптовалют. В этой статье я покажу, как используя аппаратные кошельки, можно совершать платежи с Tether.
Как работает Tether
Tether использует данные блокчейна биткоина через протокол OMNI Layer – программное обеспечение с открытым исходным кодом, которое взаимодействует с блокчейном биткоина и обеспечивает движение, то есть получение и трату токенов USDT.
Ключевым вопросом здесь является то, как протокол определяет в блокчейне биткоина, какие транзакции являются omni, а какие нет. Для этого следует немного углубиться в их структуру.
Структура OMNI транзакций
Рассмотрим omni платеж с помощью обозревателя обозревателя блокчейна от SatoshiLabs.
Ссылка на транзакцию - 30f9199cc09bacf64e2e50f0ff812053fc6979cd711d0cbee0b3a31ff0801554
На первый взгляд она выглядит как обычная, но если присмотреться, то во втором выходе мы можем обнаружить строку:
OMNI Simple Send 2143,31 TetherUS (#31)
И здесь важно отметить четыре особенности такого платежа:
- Адрес отправителя и сдачи должны быть идентичны. В спецификации протокола OMNI есть правило, которое определяет получателя, как выход с наибольшим индексом. Так как многие интерфейсы конфигурируют порядок выходов по неизвестному нам алгоритму, то может случиться так, что выход сдачи будет с наибольшим индексом, чем выход получателя, таким образом, отправитель отправит USDT сам себе. Во избежании этого, необходимо чтобы адрес отправления был равен адресу сдачи; в этом случае OMNI протокол проигнорирует этот выход и определит получателя с адресом 1LxNaNcfbDN6ZqXCFzM1Wj1ueDFzn6Zpo2;
- Помимо USDT мы отправляем получателю минимальную сумму в биткоинах 546 сатоши. Этот выход определяет адрес получателя;
- При отправлении USDT необходимо иметь на адресе Биткоины, так как комиссию за эту транзакцию мы будем выплачивать в них;
- Очевидное условие, но я все же решил его тоже озвучить – на адресе отправителя должна быть необходимая сумма в USDT.
Перед тем как начать практиковать такие платежи, я бы хотел разобрать выход со строкой OMNI Simple Send 2143,31 TetherUS (#31).
Разбираем OP_RETURN
В сыром виде он выглядит вот так:
{
"value": 0,
"n": 1,
"scriptPubKey": {
"asm": "OP_RETURN 6f6d6e69000000000000001f00000031e71f84c0",
"hex": "6a146f6d6e69000000000000001f00000031e71f84c0",
"type": "nulldata"
}
Отбросим лишний код.
OP_RETURN 6f6d6e69000000000000001f00000031e71f84c0
OP_RETURN – это команда биткоин скрипта, которая позволяет записать произвольные данные в блокчейн. С помощью нее мы можем передать привет другу, сделать предложение девушке, записать хеш значение музыкального файла и поместить его в блокчейн и при возникновении споров доказать свое авторство. Я думаю, что вы уже догадались, что именно эта команда и отвечает за совершение OMNI транзакции.
Теперь рассмотрим этот код, который записан в шестнадцатеричном формате или в HEX.
6f6d6e69000000000000001f00000031e71f84c0
Разделим его на смысловые части:
6f6d6e69 00000000 0000001f 00000031e71f84c0
1. 6f6d6e69 при переводе c HEX в кодировку ASCII означает “omni”. Это можно проверить с помощью соответствующего конвертера;
2. 00000000 при переводе с HEX в десятичный формат означает цифру 0, в спецификации OMNI этот индекс означает команду Simple Send, то есть отправку.
3. 0000001f при переводе с HEX в цифры равен 31. На странице омни-обозревателя можно найти индекс этого номера за которым закреплен токен Tether;
4. 00000031e71f84c0 при переводе в десятичный формат означает 214 331 000 000. Почему такая большая цифра? Дело в том, что USDT отправляется в микроцентах. 1 USDT = 100 000 000 микроцентам.
Повторяем важное!
Во избежание ошибок еще раз зафиксируем следующие утверждения:
- Адрес отправления = Адресу сдачи
- Адрес отправления должен иметь баланс в BTC для оплаты комиссии
- Получателю отправляем пыль в 546 сатоши
- Формируем правильный код в HEX. Первые три блока данных 6f6d6e69 00000000 0000001f статичные (без пробелов), а последние формируем с помощью google-конвертера при условии, что 1usdt = 100 000 000 микроцентам
Получаем USDT
Для получения я использую адрес 3L7VHGV5nUW4Gr3jH64pqVoMH5CuJLDTyH, мне необходимо убедиться, что на нем имеются биткоины, которые пригодятся для расходов на комиссию. Не будет лишним сверить адреса на дисплее аппаратного кошелька и на ПК.
Запомним путь деривации расчет ключа m/49’/0’/1’/0/3, он нам пригодится немного позже.
Теперь отправляем USDT с биржи или горячего кошелька на аппаратный кошелек и дожидаемся подтверждения.
Транзакцию также можно посмотреть в ОМНИ обозревателе.
Обратим внимание, что OMNI обозреватель не отображает сдачу, как это делает биткоин обозреватель.
Тратим USDT
Как я говорил ранее, чтобы успешно совершить транзакцию необходимо, чтобы адрес сдачи совпадал с адресом отправления. В интерфейсе trezor.io это сделать не удастся, так как у нас нет возможности управлять выходами. Поэтому воспользуемся интеграцией Trezor T с горячим кошельком Electrum.
Интеграция с Electrum
Даем название кошельку.
Выбираем тип кошелька – Standard wallet.
Выбираем опцию Use a Hardware Wallet.
Устанавливаем желаемый тип соединения – Webusb новый протокол обмена, а bridge требует наличия приложения trezor bridge.
Если включена кодовая фраза (passphrase), то вводим ее.
Напомню, что в Trezor T есть опция ввода кодовой фразы и через устройство, где выбираем пункт Device.
Выбираем формат ключей и пути деривации. Так как я использую адрес, который начинается с 3, то это p2sh-segwit формат. В путях деривации на уровне аккаунтов устанавливаем цифру 1 (первый аккаунт 0, второй 1) в соответствии с путями, которые были предложены при использовании ключа – m/49’/0’/1’/0/3.
Шифруем файл кошелька.
Попадаем в интерфейс кошелька Electrum. Мы его можем определить по первому поступлению в 546 сатоши, которые мы отправили недавно.
И первое, что нам необходимо сделать – это выключить автоматическую подстановку адресов сдачи, чтобы адрес отправления и сдачи были идентичны.
Создаем транзакцию
Выбираем адрес, на который были отправлены токены tether. Нажимаем правой кнопкой мыши опцию Spend from, которая позволяет тратить средства непосредственно с него.
В данном окне я уберу лишние входы (правая кнопка и Remove), которые мне не нужны, так как достаточно будет средств для оплаты комиссии и с одного входа.
И вводим в строке Pay to команду OP_RETURN и код в HEX:
6f6d6e69000000000000001f 000000001dcd6500
Последняя часть данных означает перевод 5 USDT, то есть 500 000 000 микроцентов. При переводе этой цифры в HEX мы получаем 1dcd6500. В конце ставим запятую и цифру 0, которая будет означать, что на этот выход мы отправляем ноль биткоинов.
Добавляем второй выход с адресом получателя – 3KStF5tPingpcuqM1fi9P99KYFcaCavDG3 и минимальной суммой отправления в 546 сатоши.
Комиссию я установлю максимальную в 23049 сатоши, чтобы платеж быстро подтвердился. Еще раз тщательно проверяем вход, выходы, суммы и нажимаем на кнопку Send.
Подтверждаем действия на аппаратном кошельке. Мы видим, что Trezor T распознает эту транзакцию и отображает команду OP_RETURN в удобном виде. Сначала соглашаемся с намерением отправить USDT, далее сверяем адрес получателя и соглашаемся с комиссией.
Транзакция успешно совершена.
Подтверждение транзакции
Теперь самое время по id посмотреть на то, как выглядит транзакция в обозревателе биткоина.
Мы видим, что адрес отправления используется один и тот же. Мы видим пыль предназначенную для получателя и также видим Simple Send 5 Tether USDT.
Можно скопировать id транзакции и посмотреть ее в омни обозревателе.
Здесь она выглядит также за исключением отображения сдачи.
Подождем подтверждения.
Подтверждение в блокчейне биткоина.
Подтверждение в omni обозревателе.
Как потратить USDT с помощью аппаратных кошельков Keepkey, Ledger Nano S, Nano X?
Пользователи других аппаратных кошельков могут также повторить все эти действия с помощью интеграции с кошельком Electrum, которые можно увидеть в следующих видео:
Интеграции Ledger Nano S и Electrum
Не будет лишним также ознакомиться с фишингом сайта Electrum
Весь процесс совершения транзакции Tether я демонстрировал в одном из роликов на нашем YouTube канале.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.