Jump to content
Sign in to follow this  
Cryptonist

Трата и получение Tether USDT (omni) с помощью Trezor, Ledger, Keepkey

Recommended Posts

Хочу поделиться возможностью получать и отправлять Tether USDT (omni), который работает на блокчейне биткоина с помощью аппаратных кошельков Trezor, Ledger, Keepkey.

Начнем с теории:
Tether USDT использует блокчейн биткоина для движение средств в omni инфраструктуре - кошельках, обозревателях и т.п.. Для транзакции с usdt используется команда биткоин скрипта op_return, которая позволяет записать произвольные данные в блокчейн. Именно эти данные служат идентификатором для omni транзакций.

Для примера рассмотрим одну из таких транзакций - https://btc4.trezor.io/tx/30f9199cc09bacf64e2e50f0ff812053fc6979cd711d0cbee0b3a31ff0801554.
Здесь используется один вход и три выхода:
1) это сдача
2) выход с op_return (OMNI Simple Send 2143,31 TetherUS (#31))
3) выход по которому протокол определяет получателя токенов tether

Для выполнения этой транзакции необходимо соблюдение требований:
1) адрес отправителя должен быть идентичен адресу сдачи
2) на адресе отправителя помимо токенов usdt должно быть определенное количество btc, так как плата комиссии осуществляется в btc. (также как и в ethereum при отправке токенов erc20 нам нужен эфир для оплаты комиссии)
3) нам нужно отправить 546 сатоши (пыль) получателю usdt. Этот выход обязателен, так как позволяет протоколу определить кто есть получатель.

Важно также учесть особенность спецификации протокола, где есть правило - что получатель определяется как выход с наибольшим индексом. Другими словами, если мы попытаемся отправить транзакцию, где адрес отправителя не равен адресу сдачи, то транзакция может сконфигурироваться так, что получатель будет с индексом 0, а адрес сдачи с индексом 1, тогда мы отправим средства сами себе. Чтобы этого избежать как раз и нужно, чтобы адрес отправителя был равен адресу получателя. Тогда протокол проигнорирует этот выход и определит получателя с выходом в 546 сатоши. По сути, нам не важно будет в каком порядке интерфейс расставит выходы. Еще раз самое важное!!! адрес отправителя должен быть равен адресу сдачи! В противном случае можно нарваться на неприятности!

Теперь рассмотрим произвольный код этой транзакции с op_return
OP_RETURN 6f6d6e69000000000000001f00000031e71f84c0. Это код записанный в HEX. Попробуем его декодировать.

Разделим его на части:

6f6d6e69 00000000 0000001f 00000031e71f84c0

6f6d6e69 - означает omni (при переводе в ascii)
00000000 - это индекс 0, означает команду simple send (отправка). В спецификации протокола есть множество других команд с другими индексами.
0000001f - при переводе в decimals это цифра 31, означает индекс токена. Список токенов можно посмотреть здесь - https://omniexplorer.info/properties/production
00000031e71f84c0 - это сумма в десятичном формате - 214 331 000 000. 214 миллиардов микроцентов. 1 usdt = 100 000 000 микроцентам. В этом формате мы и записываем сумму отправления. Это равно 2143 долларам.

Важно учесть, что при отправке 1$. Код в HEX цифры (100 000 000) будет выглядеть так 5f5e100, то нам надо будет добавить 000 000 000 - девять нулей впереди. И строка будет выгдяеть так 0000000005f5e100. То есть последний блок данных должен обязательно иметь длину в 16 символов. Просто добавляем нужное количество нулей.

Еще одна важная деталь - omni протокол работает только с адресами p2pkh и p2sh, которые начинаются с 1 и с 3. Адреса bech32 (bc1) не работают в омни.

Сконфигурировать такую транзакцию можно с помощью интеграции аппаратных кошельков с горячим кошельком electrum. Там нам необходимо выключить автоматическую подстановку адреса сдачи (ОБЯЗАТЕЛЬНО) чтобы адрес отправления был равен адресу сдачи. И далее сформировать вручную код транзакции.

Более подробная информация по совершению таких транзакций я описал в нашем блоге - https://cryptonist.ru/blog/apparatnye-koshelki/tether_usd_trezor_ledger_keepkey/. Также есть видео - https://youtu.be/N9qegGT-gSs.

Я успешно совершал транзы с отправкой и получением Tether с Trezor T и что приятно, то что модель T понимает omni транзакцию и выводит на экран в удобном виде всю информацию. По Ledger Nano S, Nano X, Keepkey все тоже самое можно сделать. Проблем возникнуть не должно.

Кстати, по поводу адрес сдачи = адресу отправителя. Есть хитрость - мы можем совершить транзу без сдачи и тогда будет два выхода 1 с op_return, другой с пылью. И таким образом, мы можем не переживать про порядок выходов.

И напоследок, если кто будет экспериментировать, то экспериментируйте на тестовых кошельках и на маленьких суммах!

Edited by Cryptonist

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Topics

    • Суд отклонил запрос Ripple на получение данных о транзакциях сотрудников SEC с использованием XRP

      Суд Южного округа Нью-Йорка отклонил ходатайство Ripple о предоставлении информации, касающейся криптовалютных транзакций с использованием XRP, которые могли быть совершены сотрудниками SEC. В конце 2020 года Комиссия по ценным бумагам и биржам США (SEC) подала иск против Ripple, обвинив компанию в продаже незарегистрированных ценных бумаг. Судебное разбирательство Ripple с регулятором продолжается до сих пор. В конце августа компания потребовала, чтобы ведомство предоставило доступ к тор

      in Новости криптовалют

    • Двойная трата Double-spending - пошаговая инструкция с картинками

      В связи с тем, что время от времени у пользователей "зависают" транзакции из-за низкой или неправильно указанной комиссии - возникает проблема повторной отправки платежа.   Это можно сделать, например, через Bitcoin Core клиент, но для этого его нужно как минимум скачать и подождать пока синхронизируется весь Блокчейн (около 150 Гб на конец 2017 года).   Другой вариант - вручную собрать транзакцию и отправить ее в сеть, это можно сделать онлайн имея только приватный ключ. Дал

      in Биткоин

    • Paxos подала в OCC заявку на получение федеральной банковской лицензии

      Компания Paxos подала в Управление контролера денежного обращения США (OCC) заявку на получение лицензии федерального банка США. Банк будет работать из Нью-Йорка, где находится штаб-квартира Paxos. Согласно документу, компания намерена создать Paxos National Trust и подала соответствующую заявку в OCC. Таким образом Paxos пополнила ряды других криптовалютных компаний, включая BitPay и Anchorage, которые подали аналогичные заявки на получение федеральной банковской лицензии.   Комп

      in Новости криптовалют

    • Anchorage подала заявку в OCC на получение федеральной банковской лицензии

      Криптовалютная компания Anchorage подала заявку на федеральную банковскую лицензию в Управление контролера денежного обращения США (OCC) для получения статуса квалифицированного кастодиана. Согласно уведомлению, размещенному на веб-сайте федерального регулирующего органа, подразделение Anchorage, базирующееся в Южной Дакоте, подало в OCC заявку на получение федеральной банковской лицензии. В этом году криптовалютная биржа Kraken стала первой компанией в индустрии, получившей аналогичную л

      in Новости криптовалют

    • NYDFS упростит получение BitLicense для криптовалютных фирм

      Департамент финансовых услуг штата Нью-Йорк (NYDFS) упростит получение BitLicense для криптовалютных фирм и листинг новых монет на торговых площадках. В соответствии с предложением Департамента финансовых услуг Нью-Йорка, по которому NYDFS принимает комментарии до 10 августа, процесс получения лицензии для криптовалютных компаний будет упрощен.   Сейчас работающие в Нью-Йорке криптовалютные компании, включая биржи криптовалют, должны получать BitLicense, которая позволяет фирмам в

      in Новости криптовалют

×
×
  • Create New...