Слогер Создать блог
Разработка

Интеграция Monero в Node.js: RPC, подадреса и продакшн

Полное руководство по подключению криптовалюты Monero к Node.js-приложению: от настройки кошелька и RPC-сервера до генерации подадресов и мониторинга платежей.

Подготовка окружения

Для интеграции Monero в Node.js-проект потребуется установленный демон Monero и кошелёк с поддержкой RPC. Убедитесь, что у вас есть доступ к узлу сети (mainnet или testnet) и создан файл кошелька. Настройка начинается с запуска демона и кошелька в режиме RPC.

Запуск кошелька Monero в режиме RPC

Кошелёк Monero может работать как RPC-сервер, к которому будет обращаться ваше Node.js-приложение. Для тестирования можно запустить его вручную с параметрами подключения к тестовой сети:

./monero-wallet-rpc \ --wallet-file /var/lib/monero/wallets/myzubster \ --password "STRONG_PASSWORD_HERE" \ --rpc-bind-port 18083 \ --rpc-bind-ip 127.0.0.1 \ --daemon-address testnet.community:28081 \ --testnet \ --disable-rpc-login \ --log-level 0 \ --non-interactive

Проверить, что RPC работает, можно через curl-запрос метода get_version. В ответе должен прийти JSON с версией.

Создание systemd-сервиса для продакшна

Для стабильной работы в production лучше оформить запуск кошелька как системный сервис. Создайте файл /etc/systemd/system/monero-wallet-rpc.service с описанием юнита, указав ExecStart с теми же параметрами. Включите автозапуск и проверьте статус сервиса.

Node.js-сервис для работы с Monero

Установите axios для HTTP-запросов и создайте модуль moneroService.js. Он будет инкапсулировать все RPC-вызовы к кошельку. Основные функции:

  • rpc(method, params) — универсальный метод для JSON-RPC запросов;
  • generateSubaddress(label) — создание подадреса для конкретного заказа;
  • getBalance(accountIndex) — получение баланса;
  • checkPayment(address, amount, confirmations) — проверка поступления платежа на подадрес;
  • sendPayment(destination, amount) — отправка XMR;
  • getTransaction(txid) — детали транзакции;
  • getSubaddresses() — список всех подадресов.

Все суммы конвертируются из атомарных единиц (1 XMR = 1e12 атомарных единиц).

Генерация подадресов для заказов

При создании заказа вызывается generateSubaddress с меткой, содержащей ID заказа. Полученный подадрес сохраняется в модели Order. Это позволяет отслеживать платежи по каждому заказу отдельно.

Мониторинг входящих платежей

Фоновый процесс (paymentMonitor.js) периодически опрашивает кошелёк на предмет новых транзакций по активным подадресам. При обнаружении платежа статус заказа меняется на «detected», а после достижения нужного числа подтверждений — на «confirmed». Интервал опроса настраивается через переменную окружения.

Переменные окружения

Все настройки выносятся в .env: URL RPC, адрес кошелька, количество подтверждений, таймауты и т.д. Это упрощает конфигурирование под разные среды.

Тестирование интеграции

Проверьте генерацию подадреса прямым RPC-запросом:

curl -X POST http://127.0.0.1:18083/json_rpc \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":"0","method":"create_address","params":{"label":"test-order"}}'

Затем протестируйте полный цикл создания заказа, оплаты и подтверждения через API вашего приложения.

Возможные проблемы

Если RPC-сервер не видит демон, проверьте доступность узла и параметры подключения. Ошибка «no connection to daemon» решается проверкой сети и перезапуском сервисов. Также стоит убедиться, что порты не заблокированы фаерволом.

Интеграция Monero через RPC и подадреса даёт надёжный механизм приёма платежей с минимальными задержками и полным контролем на стороне сервера.

По материалам: dev.to. Текст переработан редакцией Слогера.

← На главную

Рекламное место — Конец поста
Реклама · Слогер

Комментарии (0)

Войдите, чтобы комментировать.

Пока нет комментариев. Будьте первым.

Маркетинг

Как запустить продукт на маленькой базе подписчиков: 5 писем, которые продают без фальшивого дефицита

Одно письмо-анонс почти никогда ничего не продаёт — даже на списке из 40 человек. Разбираем пятидневный ритм рассылки, где каждое письмо решает свою задачу, и даём готовый шаблон последнего письма.

Слогер 28.10.2026 ▲ 1
Разработка

Как выгрузить вакансии и зарплатные вилки из Greenhouse API: разбор подводных камней

Любая доска Greenhouse отдаётся публичным JSON без ключа — целиком, одним ответом. Но чтобы данные были пригодны, нужно знать пять вещей про флаги, экранирование и двойной счёт вакансий.

Слогер 28.10.2026 ▲ 0
Fluxs lenta
Реклама · fluxs.ru
Маркетинг

Переезд (миграция) с Битрикс24 и amoCRM без потери данных: в Fluxs появился модуль миграции

4 000 контактов в Битрикс24. Сотни сделок. Задачи за несколько лет. И всё это нужно перенести в новую CRM? Раньше такой переезд мог занять несколько дней. А иногда именно из-за переноса данных компании годами оставались в неудобной системе. Мы решили эту проблему. 🚀 В Fluxs появился модуль «Миграция данных». Теперь можно переносить контакты, сделки, задачи, проекты и базу знаний из Битрикс24, amoCRM, Jira, Яндекс Трекера и Confluence. А если вашей системы нет в списке — загрузить данные через Excel, CSV или JSON.

fluxs.ru 27.10.2026 ▲ 1
Карьера

Чем Cal-WARN отличается от федерального WARN: разбор порогов, уведомлений и штрафов

Калифорния требует предупреждать о массовых сокращениях за 60 дней — как и федеральный закон США. Только порог ниже, парт-тайм считается, а правило одной трети не действует. Разбираем, что это меняет для работника и работодателя.

Слогер 27.10.2026 ▲ 0
Карьера

WARN Act: кто считается работодателем при массовом сокращении — разбор для дочек, холдингов и франшиз

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

Слогер 27.10.2026 ▲ 0
Разработка

Разбор: почему профессию разработчика хоронят каждые 20 лет и как работать, когда всё меняется

Паника вокруг ИИ — не первая волна перемен в отрасли: похожие прогнозы звучали и в 1961 году, и в 2011-м. Разбираем, что в нынешней тревоге реально, а что стоит воспринимать как фоновый шум.

Слогер 27.10.2026 ▲ 0
Fluxs lenta
Реклама · fluxs.ru
Карьера

Страх провала и страх свидетелей: чем они отличаются и как начинать новое, когда страшно

«Я пока недостаточно хорош» — честная и бесполезная фраза. Обычно дело не в навыке, а в конкретных людях, которые увидят вашу первую попытку. Разбираем, как уменьшить ставку и всё-таки начать.

Слогер 26.10.2026 ▲ 0
Карьера

Почему удалёнка платит меньше — и в каких профессиях всё наоборот: разбор 8 049 вакансий

Медианная вилка на удалёнке ниже офисной на 6,5%. Но внутри функций разрыв меняет знак: безопасность и продажи получают премию за удалёнку, data/ML — самую большую скидку. Показываю, как читать эти цифры на переговорах.

Слогер 26.10.2026 ▲ 0
Личный опыт

Как заказать командную вышивку без минимальной партии: разбор и чек-лист

Малая команда редко может позволить себе стартовый тираж на 30 вещей. Разбираем схему, при которой вышивка делается по одной штуке — и при этом логотип у всех выглядит одинаково.

Слогер 26.10.2026 ▲ 0
Маркетинг

Автоматизация бизнеса за 15 000 или 170 000 рублей в год: в чём разница?

Автоматизация бизнеса за 15 000 или 170 000 ₽ в год. За что такая разница? 🤔 Представьте: компании нужно всего несколько вещей — принимать заявки, согласовывать счета и контролировать задачи сотрудников. А ей предлагают целую цифровую экосистему: CRM, телефонию, маркетинг, аналитику, десятки дополнительных функций… Но что, если половина из этого бизнесу вообще не нужна?

Слогер 25.10.2026 ▲ 1
Fluxs lenta
Реклама · fluxs.ru