Как запустить атомарный своп 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-адресом. Чтобы повысить уровень защиты данных при запуске инструмента необходимо следовать следующим правилам:
- Если вы не используете Tor, никогда не запускайте этот инструмент из дома.
- В случае работы в домашних условиях, никогда не используйте ПК, на котором запущено ПО, в Интернет через SSH.
- Если вы не уверены в том, что у второй стороны обмена запущен Tor, используйте только инструмент ASB.
- Запустите собственную ноду Monero.
- Если возможно, запустите собственную Bitcoin-ноду и сервер Electrum.
- Используйте инструмент конфиденциальности для BTC, например, кошелек Samourai Wallet, который повысит конфиденциальность и проверит полученные в ходе обмена монеты “на чистоту”.
- В случае предоставления кому-либо журналов, следует отредактировать:
- идентификаторы обмена
- идентификаторы транзакции
- 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:
Запуск инструментов
Запускаем 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-адрес загрузки на последнюю версию.
monero-wallet-rpc
asb
Расширенные параметры конфигурации
Данный раздел содержит расширенные параметры, доступные вам как владельцу ASB, однако он не является обязательным при развертывании ПО.
Использование формата / dnsaddr для external_address
Одна из функций, встроенных в libp2p, сетевую основу для атомарных свопов COMIT, – это возможность использовать единый адрес для всех возможных доступных ASB. Опция открывает доступ к ASB через IP, DNS и Onionv3, одновременно предоставляя пользователям свопа единый унифицированный адрес, позволяя клиенту выбрать лучший вариант для своей сетевой конфигурации и / или использования Tor.
Дополнительные сведения о доступных / необходимых спецификациях и конфигурации можно изучить на GitHub.
Для настройки нужно добавить записи TXT DNS для вашего доменного имени, по одной для каждого адреса, который вы хотите рекламировать, через запись / dnsaddr.
- Настройте желаемую доступность с помощью директивы listen и конфигурации Tor. Обычно это просто параметры listen по умолчанию и включение конфигурации Tor, как упоминалось ранее в этом руководстве.
- Добавьте записи 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
Заключение
Хотя это ПО уже зарекомендовало себя в мейннете, оно все еще находится в активной разработке. Свопы всегда должны заканчиваться либо полным обменом, либо возвращением средств обеими сторонами, но имейте в виду, что могут случаться ошибки, так как атомарные свопы – еще очень молодая технология.