Как запустить атомарный своп XMR-BTC провайдеру

22 сентября, 2021 / Технологии

xmr btc

В конце прошлого месяца разработчики Monero добавили опцию атомарных свопов. Теперь пользователи могут обменивать Bitcoin<>Monero напрямую через Tor, без кастодиана, доверенной третьей стороны и KYC. В этом руководстве мы расскажем как действовать провайдерам (продавцам или “ASB”).

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

Перед началом работы рекомендуется изучить следующие документы:

  • https://github.com/comit-network/xmr-btc-swap/blob/master/docs/asb/README.md
  • https://github.com/comit-network/xmr-btc-swap/blob/master/docs/asb/README.md#setup-details
  • https://comit.network/blog/2020/10/06/monero-bitcoin

Настоятельно рекомендуется ознакомиться с процессом реализации свопов, прежде чем инициировать обмен.

Как сохранить конфиденциальность/анонимность

Важно понимать, что при отсутствии подключения к Tor, участники могут связывать идентификаторы транзакций с IP-адресом. Чтобы повысить уровень защиты данных при запуске инструмента необходимо следовать следующим правилам:

  1. Если вы не используете Tor, никогда не запускайте этот инструмент из дома.
  2. В случае работы в домашних условиях, никогда не используйте ПК, на котором запущено ПО, в Интернет через SSH.
  3. Если вы не уверены в том, что у второй стороны обмена запущен Tor, используйте только инструмент ASB.
  4. Запустите собственную ноду Monero.
  5. Если возможно, запустите собственную Bitcoin-ноду и сервер Electrum.
  6. Используйте инструмент конфиденциальности для BTC, например, кошелек Samourai Wallet, который повысит конфиденциальность и проверит полученные в ходе обмена монеты “на чистоту”.
  7. В случае предоставления кому-либо журналов, следует отредактировать:
  • идентификаторы обмена
  • идентификаторы транзакции
  • IP-адреса

Предполагается, что пользователь уже выполнил следующие условия:

  • наличие компьютера/сервера для размещения инструмента (желательно VPS или выделенный сервер);
  • наличие доступа к командной строке на хосте;
  • в случае использования DNS, вы уже владеете доменным именем;
  • у вас уже запущена собственная нода Monero, либо нода того, кому доверяете;
  • наличие XMR для обмена;
  • условия для отправки и получения Monero;
  • наличие кошелька Samourai Wallet, или другого сервиса с поддержкой анонимности в сети BTC.

Руководство предназначено для пользователей ОС Linux, но также возможно для macOS и Windows с возможными незначительными изменениями в командах. Первый шаг к началу работы – получение всех необходимых инструментов.

Автоматизированный своп-брокер (ASB)

Создайте папку, в которой будут храниться соответствующие файлы.

атомарные свопы

Загрузите последнюю версию инструмента ASB, то есть asb_0.8.3_Linux_x86_64.tar.

https://github.com/comit-network/xmr-btc-swap/releases/latest

Как альтернатива возможна загрузка инструмента через интерфейс командной строки.

атомарные свопы

Извлеките двоичный файл asb: в командной строке нужно ввести следующие команды:

атомарные свопы

Убедитесь, в корректности работе двоичного файла.

атомарные свопы

monero-wallet-rpc

Загрузите последнюю версию двоичных файлов Monero: monero-linux-x64-v0.17.2.0.tar.bz2

https://github.com/monero-project/monero/releases/latest

Как альтернатива возможна загрузка инструмента через интерфейс командной строки.

атомарные свопы

Извлеките двоичный файл monero-wallet-rpc: в командной строке нужно ввести следующие команды:

атомарные свопы

Убедитесь, в корректной работе двоичного файла.

атомарные свопы

Демон Tor

Если вы используете Debian, для установки и запуска Tor выполните следующую команду:

атомарные свопы

Если вы используете Ubuntu, используйте репозиторий, предоставленный Tor, следуя их официальной документации.

https://support.torproject.org/apt/tor-deb-repo/

После настройки репозитория Tor выполните следующие команды для установки и запуска Tor.

атомарные свопы

В случае CentOS / RHEL, используйте репозиторий, предоставленный Tor, следуя их официальной документации.

https://support.torproject.org/rpm/

После настройки репозитория Tor для установки и запуска ПО следует выполнить следующие команды.

атомарные свопы

Защита посредством UFW​

Систему также можно защитить с использованием UFW посредством доступа брандмауэра только к портам, необходимым для SSH и asb.

Инструкция по запуску UFW доступна на Landchad.net. Для запуска выполните следующие команды:

# Запретить все неразрешенные порты:

атомарные свопы

# Разрешить доступ по SSH:

атомарные свопы

# Разрешить порты ASB по умолчанию (удалите следующие две строки, при работе исключительно через Tor, поскольку они не нужны):

атомарные свопы

# Включить UFW:

атомарные свопы

Настройка инструментов

Настройка пользователя ASB и каталогов

# Создайте уникального системного пользователя и группу для запуска asb и monero-wallet-rpc:

атомарные свопы

# Создайте необходимые каталоги для инструментов ASB:

атомарные свопы

# Установите разрешения для новых каталогов:

атомарные свопы

Конфигурация системы monero-wallet-rpc

monero-wallet-rpc – инструмент, используемый asb для подключения к блокчейну Monero, управления средствами и подписания / отправки транзакций для каждого свопа.

Самый простой способ запустить его – просто скопировать содержимое сценария systemd ниже и сохранить его в /etc/systemd/system/monero-wallet-rpc.service с помощью vim или nano:

атомарные свопы

Чтобы выйти из nano и сохранить файл, нажмите ctrl + x.

ПРИМЕЧАНИЕ. Если вы не запускаете ноду Monero на том же хосте, обязательно замените аргумент 127.0.0.1:18089 daemon-host на соответствующий URL-адрес демона Monero, то есть node.sethforprivacy.com:18089.

Конфигурация системы автоматизированного своп-брокера (ASB)

Самый простой способ запуска – просто скопировать содержимое сценария systemd ниже и сохранить его в /etc/systemd/system/asb.service с помощью vim или nano:

sudo nano /etc/systemd/system/asb.service

Чтобы выйти из nano и сохранить файл, нажмите ctrl + x.

Файл конфигурации ASB

Этот файл конфигурации будет определять, как работает инструмент asb, поэтому не забудьте изменить параметры на собственные.

Ниже представлены параметры, которые необходимо изменить:

external_addresses должен отражать доступные внешние адреса

Если вы используете ASB только для Tor, тогда нужно единожды запустить ASB, скопировать перечисленные адреса / onion3 /, и добавить их, например:

external_addresses = [“/ onion3 / b4wfknratwn6rcpvpczs5pgtyyafedpcfjqnupr32qdfu63x6odql4id: 9939”, “/ onion3 / b4wfknratwn6rcpvpczs5pgtyyafedpcfjdfu63nupr]

Если вы используете IPv4-адреса без DNS, используйте такую ​​запись:

external_addresses = [“/ip4/5.9.120.18/tcp/9939”, “/ip4/5.9.120.18/tcp/9940/ws”]

Если вы используете DNS, используйте такую ​​запись:

external_addresses = [“/dns4/swap.sethforprivacy.com/tcp/9939”, “/dns4/swap.sethforprivacy.com/tcp/9940/ws”]

При расширенных конфигурациях DNS, стоит изучить использование формата / dnsaddr.

Вот некоторые ключевые параметры, которые подлежат изменениям:

  • min_buy_btc должен отражать минимальный размер в BTC, который вы хотели бы предложить участникам обмена.
  • max_buy_btc должен отражать максимальный размер в BTC, который вы хотели бы предложить участникам обмена.
  • ask_spread должен быть установлен на ваш предпочтительный спред (вы будете взимать процент сверх рыночной цены)
    0,05 равно 5%, 0,10 равно 10% и т.д.
  • electrum_rpc_url, если у вас есть собственный сервер Electrum или тот, которому вы доверяете больше, чем значение по умолчанию.

Создайте конфигурацию для процесса asb:

атомарные свопы

Чтобы выйти из nano и сохранить файл, нажмите ctrl + x.

Среди альтернатив используемым узлам в выше приведенной конфигурации:

/dns4/rendezvous.xmr.radio/tcp/8888/p2p/12D3KooWN3n2MioS515ek6LoUBNwFKxtG2ribRpFkVwJufSr7ro7

Перезагрузите systemd, чтобы включить новые сценарии systemd:

атомарные свопы

Конфигурация Tor

Чтобы инструмент asb мог правильно настроить скрытые службы, необходимо добавить 3 строки в файл конфигурации Tor в / etc / tor / torrc, добавить уникального пользователя в группу debian-tor, и перезапустить Tor.

Далее необходимо отредактировать файл конфигурации Tor в / etc / tor / torrc с помощью vim или nano. Таким образом, Tor даст asb разрешение устанавливать и настраивать скрытую службу:

атомарные свопы

Чтобы выйти из nano и сохранить файл, нажмите ctrl + x.

# Разрешить инструменту asb настраивать скрытые службы:

атомарные свопы

Выполните следующие команды, чтобы добавить пользователя asb в группу debian-tor и перезапустить Tor:

атомарные свопы23

Запуск инструментов

Запускаем monero-wallet-rpc и asb, выполнив соответствующие команды ниже:

monero-wallet-rpc всегда должен запускаться первым:

атомарные свопы

Затем asb:

атомарные свопы

Перезапуск monero-wallet-rpc и asb

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

monero-wallet-rpc всегда следует перезапускать первым:

атомарные свопы

Затем перезапустите asb:

атомарные свопы

Пополнение кошелька Monero

При запуске инструмент ASB присвоит вам адрес Monero для внесения средств в кошелек.

Чтобы получить адрес, выполните следующую команду:

атомарные свопы

Обязательно сохраните адрес, так как после внесения средств он больше не будет отображаться. Чтобы получить QR-код для адреса, следует запустить следующую команду (конечно, заменив адрес своим собственным, собранным выше):

qrencode “4A4tLy1b2PFFdHHvZubb85enYMroBZ3b3i8AV45gBATb2Kas1jNmVP3BwGq4HhSMwsfuedh2hK6MBMmG8M6KAvGGDVBqLDw” -t ascii -o –

Если qrencode не установлен, вы можете установить его с помощью sudo apt install qrencode или sudo dnf install qrencode

Если не удается сохранить адрес перед внесением средств, можно получить его прямо из monero-wallet-rpc с помощью следующей команды:

curl http://127.0.0.1:18083/json_rpc -d ‘{“jsonrpc”: “2.0”, “id”: “0”, “method”: “get_address”, “params”: {“account_index”: 0 , “address_index”: [0]}} ‘-H’ Content-Type: application / json ‘

После отправьте Monero на указанный адрес, но помните, что этот кошелек является горячим – вам следует минимизировать количество XMR в кошельке ASB, насколько это возможно.

Добавление нового ASB на unstoppableswap.net

ПРИМЕЧАНИЕ. Можно добавить только ATM ASB на основе IPv4 и DNS-адресов, поэтому, если вы используете ASB только с с луковым адресом, пропустите этот шаг.

Перейдите на https://unstoppableswap.net/

Нажмите на поле «Своп-провайдер» (Swap provider).

Укажите провайдера свопа, нажав на «Submit a swap provider».

Введите свой external_address (адрес) и peer ID (пиринговый идентификатор).

Чтобы получить пиринговый идентификатор, просто выполните следующую команду: sudo grep peer_id /var/log/asb/asb.log и нажмите «Отправить».

Решение проблем при свопах

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

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

атомарные свопы

Если появились строки со словом ERROR, ознакомьтесь с возможными проблемами на Github.

Если ваша проблеиа отсутстсвует в списке, обязательно откройте новую тему, предоставив как можно более подробную информацию, указав:

  • версия ASB;
  • все строки журнала с ошибкой;
  • не забудьте отредактировать IP-адреса, идентификаторы свопаи т.д;
  • версия ОС;
  • любые дополнительные сведения, которые вы можете предоставить по проблеме.

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

Вывод Bitcoin из кошелька ASB

По мере успешного завершения свопа, BTC сохраняются в локальном кошельке ASB. Чтобы вывести монеты из этого кошелька,  нужно остановить ASB, вывести BTC и повторить запуск.

Для этого выполните следующие команды, подставив свой Bitcoin-адрес и желаемую сумму:

атомарные свопы

Если вы хотите снять весь баланс, просто запустите инструмент:

атомарные свопы

ПРИМЕЧАНИЕ. В настоящее время существует ошибка, препятствующая работе этой команды, поэтому пока просто снимите сумму с помощью указанного выше набора команд: https://github.com/comit-network/xmr-btc-swap/issues/662

Проверка баланса Bitcoin и Monero

Самый простой способ проверить текущий баланс в кошельках – остановить работу ASB и запустить asb balance:

атомарные свопы

Если вы хотите проверить баланс Monero, не останавливая ASB, вы можете запустить:

curl http://127.0.0.1:18083/json_rpc -d ‘{“jsonrpc”: “2.0”, “id”: “0”, “method”: “get_balance”, “params”: {“account_index”: 0 , “address_indices”: [0]}} ‘-H’ Content-Type: application / json ‘

Обновление ПО

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

Расширенные параметры конфигурации

Данный раздел содержит расширенные параметры, доступные вам как владельцу ASB, однако он не является обязательным при развертывании ПО.

Использование формата / dnsaddr для external_address

Одна из функций, встроенных в libp2p, сетевую основу для атомарных свопов COMIT, – это возможность использовать единый адрес для всех возможных доступных ASB. Опция открывает доступ к ASB через IP, DNS и Onionv3, одновременно предоставляя пользователям свопа единый унифицированный адрес, позволяя клиенту выбрать лучший вариант для своей сетевой конфигурации и / или использования Tor.

Дополнительные сведения о доступных / необходимых спецификациях и конфигурации можно изучить на GitHub.

Для настройки нужно добавить записи TXT DNS для вашего доменного имени, по одной для каждого адреса, который вы хотите рекламировать, через запись / dnsaddr.

Добавьте записи TXT через своего провайдера домена с записью хоста _dnsaddr и записью, подобной приведенной ниже, настроив ее на основе вашего лукового адреса (адресов) и других предпочтительных доступных конечных точек:

Каждая запись должна начинаться с dnsaddr = и включать пост-исправление / p2p / peer_id:

dig +short txt _dnsaddr.swap.sethforprivacy.com
“dnsaddr=/ip4/5.9.120.18/tcp/9939/p2p/12D3KooWCPcfhr6e7V7NHoKWRxZ5zPRr6v5hGrVPhHdsftQk2DXW”
“dnsaddr=/ip4/5.9.120.18/tcp/9940/ws/p2p/12D3KooWCPcfhr6e7V7NHoKWRxZ5zPRr6v5hGrVPhHdsftQk2DXW”
“dnsaddr=/onion3/b4wfknratwn6rcpvpczs5pgtyyafedpcfjqnupr32qdfu63x6odql4id:9939/p2p/12D3KooWCPcfhr6e7V7NHoKWRxZ5zPRr6v5hGrVPhHdsftQk2DXW”
“dnsaddr=/onion3/b4wfknratwn6rcpvpczs5pgtyyafedpcfjqnupr32qdfu63x6odql4id:9940/p2p/12D3KooWCPcfhr6e7V7NHoKWRxZ5zPRr6v5hGrVPhHdsftQk2DXW”

Убедитесь, что записи DNS работают правильно, с помощью тестов dig и swap.

dig + short txt _dnsaddr.DOMAIN.NAME должен возвращать вывод.

Проверьте свою зарегистрированную точку встречи и убедитесь, что ASB отображается как онлайн:

./swap list-sellers –rendezvous-point /dnsaddr/swap.sethforprivacy.com/p2p/12D3KooWCULyZKuV9YEkb6BX8FuwajdvktSzmMg4U5ZX2uYZjHeu

Заключение

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

Актуально