Главная / Руководства по приватному хостингу / Как развернуть свой криптоплатёжный шлюз на BTCPay Server
Эксплуатация

Собственный платёжный шлюз для криптовалют

Платёжный процессор — это не комиссия в один процент. Это третья сторона, которая держит ваши деньги раньше, чем вы сами, узнаёт, кто ваши клиенты, и может во вторник после обеда решить, что ваш бизнес её больше не устраивает. Собственный шлюз полностью убирает эту сторону: счета, обменные курсы, генерация адресов и вебхуки заказов работают на арендованном вами сервере. Вот что для этого на самом деле нужно: сколько диска, какие ключи никогда не должны на нём оказаться и каковы честные пределы того, что вы за это получаете.

Без KYC
Только крипто
Без логов
DMCA игнорируется
Полный root
NVMe SSD

Любой бизнес, принимающий криптовалюту, рано или поздно замечает одно и то же противоречие. Весь смысл оплаты в Bitcoin или Monero в том, что между вами и покупателем не стоит ни одна организация, — и всё же обычный путь к приёму такой оплаты лежит через регистрацию в компании, которая сначала сама получает платёж, держит его у себя, конвертирует, проверяет вашу личность и переводит вам то, что осталось. Вы променяли банк на стартап с памятью покороче и списком запрещённых видов бизнеса подлиннее.

Альтернатива вовсе не экзотична. Собственный платёжный шлюз — это программа с открытым исходным кодом на арендованном вами сервере: она генерирует новый адрес для каждого заказа, отслеживает поступление денег в блокчейне, сообщает вашему сайту, что счёт оплачен, и при этом у неё нет полномочий переместить ни одной монеты. Это зрелое решение, которое уже много лет используется в продакшене. Ниже — вся сборка от начала до конца: что такой шлюз устраняет, чего не устраняет, как подобрать сервер и где подводные камни.

Во что на самом деле обходится платёжный процессор

Комиссия — наименее интересная статья расходов. У сервиса криптопроцессинга вы на самом деле покупаете набор зависимостей, и их стоит назвать поимённо, прежде чем решать, что они приемлемы.

Что забирает процессорПочему это важно
Хранение ваших денег — на минуты или на дниМежду моментом, когда покупатель заплатил, и моментом, когда деньги дошли до вас, они принадлежат процессору. Все банкротства, заморозки и побеги с деньгами клиентов в этой отрасли случались именно в этом промежутке
Аккаунт, привязанный к вашей личностиПроцессор знает ваше настоящее имя, ваш банк, ваши обороты и платёжные привычки ваших клиентов. Хостинг без KYC в связке с кассой, требующей KYC, — это запертая дверь в стеклянной стене
Право решать, что вам продаватьПравила допустимого использования меняются без предупреждения и применяются задним числом. Аккаунт, который работал в прошлом квартале, в этом квартале оказывается замороженным
Зависимость, которую нельзя проверитьИх простой — это неработающая оплата у вас; их источник курсов — это ваши цены; их баг — это ваш потерянный заказ
Постоянная запись о каждой продажеДостаточно одного судебного запроса к ним, чтобы получить всю вашу историю заказов. Вам об этом не сообщат

Всё это — вовсе не обвинение в недобросовестности. Просто так устроен любой посредник. Если ваш бизнес не вызывает споров, хорошо капитализирован, а вы не против быть идентифицированным, посредник — вполне рациональный компромисс: вы получаете возвраты, поддержку и аптайм, за который отвечает кто-то другой. Остальная часть руководства — для всех, кто на такой компромисс отвечает «нет».

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

Что даёт собственный шлюз — и чего не даёт

Оценивайте выигрыш точно: именно из-за его преувеличения люди строят неверную модель угроз. Собственный шлюз меняет ровно три вещи и оставляет нетронутыми несколько важных.

Что действительно меняется. Деньги идут напрямую от покупателя на адрес, который контролируете только вы, поэтому нет ни кастодиана, ни заморозки, которую пришлось бы пережидать. Ни одной третьей стороне не сообщается, кто ваши клиенты и что вы продаёте. И никто не может лишить вас возможности принимать платежи, потому что нет аккаунта, который можно закрыть, — есть только программа, которую запускаете вы.

Что не меняется. Блокчейн Bitcoin — по-прежнему публичный реестр, и каждый адрес, который выдаёт ваш сервер, навсегда остаётся на виду. Ваши обязательства по налогам и отчётности остаются ровно такими же. А как только вы конвертируете эти монеты в местную валюту, вы сталкиваетесь с регулируемой биржей, которой понадобится ваш паспорт, — именно поэтому у большинства людей приватность на самом деле заканчивается не на приёме оплаты, а на выводе денег.

Главное достоинство, если говорить прямо: правильно настроенный собственный шлюз не хранит приватных ключей. Если сервер взломают, изымут или хостер просто заберёт его, злоумышленник получит историю ваших счетов и список ваших адресов — но не возможность потратить хотя бы один сатоши. Это совсем не та катастрофа, что потеря горячего кошелька, и именно поэтому такая архитектура стоит затраченных усилий.

Стек: что на самом деле представляет собой BTCPay Server

Ответом де-факто стал BTCPay Server: бесплатный, под лицензией MIT, размещаемый на собственном сервере и появившийся после того, как решения одного известного процессора разозлили достаточно продавцов, чтобы те создали ему замену. Это не одна программа, а небольшой стек контейнеров, которые запускаются вместе, и полезно знать, какая часть за что отвечает, ещё до того, как что-то сломается в два часа ночи.

  • Нода Bitcoin. Ваша собственная копия блокчейна. Именно она избавляет схему от необходимости кому-то доверять: вы ни у кого не спрашиваете, заплатили ли вам, и никто посторонний не узнаёт, за какими адресами вы следите.
  • Индексатор, который отслеживает адреса, сгенерированные из вашего кошелька, и сообщает, что на них поступает, — так что самой ноде не нужно хранить кошелёк.
  • Приложение BTCPay — та часть, которую вы действительно видите. Магазины, счета, обменные курсы, POS-страница, платёжные кнопки, страницы краудфандинга, возвраты, REST API и вебхуки.
  • База данных с магазинами, счетами и настройками. Это единственное незаменимое состояние на машине, что крайне важно, когда дело доходит до бэкапов.
  • Обратный прокси с автоматическим TLS, чтобы страница оплаты отдавалась по HTTPS и вам не пришлось собирать это вручную.
  • Дополнительные демоны — нода Lightning, нода и кошелёк Monero, другие блокчейны, — каждый из которых ощутимо нагружает машину. Добавляйте их осознанно, а не по умолчанию.

Развёртывание — это стек Docker Compose, которым управляет файл переменных окружения: вы указываете, какие дополнительные компоненты вам нужны, запускаете скрипт установки, и конфигурация генерируется за вас. Это настоящее преимущество перед ручной сборкой шести сервисов — и одновременно причина, по которой машине нужно больше диска, чем можно было бы предположить.

Выбор сервера: всё решает диск

CPU почти никогда не становится узким местом. Шлюз, обрабатывающий несколько сотен счетов в день, большую часть времени простаивает: серьёзная нагрузка бывает только при начальной загрузке блоков, а дальше всё идёт тонкой струйкой. Память важнее, а диск решает всё. Прежде чем что-либо заказывать, определите, в какую строку таблицы попадаете вы.

КонфигурацияСколько диска закладыватьРазумный объём RAMДля кого
Pruned-нода Bitcoin, только ончейн~40–60 GB всего, включая операционную систему4 GBБольшинство продавцов. Правильный выбор по умолчанию
Pruned-нода плюс Lightning~60–80 GB8 GBНебольшие частые платежи, где иначе львиную долю съедали бы комиссии
Полная нода Bitcoin без прунинга~1 TB, с запасом на годы роста8 GBТе, кому нода нужна и для другого софта, или кто ценит наличие всего блокчейна
Добавление ноды MoneroПлюс ~120 GB с прунингом, ~300 GB без него+4 GBВсе, кому нужны платежи, о которых не рассказывает публичный реестр
Всё сразу, без прунинга1.5 TB и больше16 GBРедкость и обычно признак того, что шлюз пора разнести на две машины

Две детали регулярно застают людей врасплох, и обе стоят времени, а не денег. Во-первых, прунинг экономит диск, но не трафик: во время начальной синхронизации нода всё равно скачивает и проверяет весь блокчейн, а затем удаляет старые блоки, которые ей больше не нужны. Закладывайте на эту первую синхронизацию несколько сотен гигабайт трафика независимо от итогового объёма на диске — именно поэтому безлимитный трафик должен входить в список требований. Во-вторых, NVMe здесь не роскошь. Начальная загрузка блоков — это беспощадный случайный доступ к диску: синхронизация, которая на NVMe занимает день, на обычном жёстком диске может растянуться на неделю, и всю эту неделю вы будете гадать, не сломалось ли что-нибудь.

Сначала прунинг, расширение — потом; наоборот будет больно. Переход с pruned-ноды на полную означает повторную синхронизацию с генезис-блока. Переход с полной ноды на pruned — это смена конфигурации и перезапуск. Если сомневаетесь, начинайте с прунинга: шлюз работает точно так же, а теряете вы только возможность раздавать исторические блоки другим пирам.

Шаг 1 — подготовка и защита сервера

Закажите сервер заранее и дайте блокчейну синхронизироваться, пока вы занимаетесь всем остальным. Правильный вариант — KVM VPS с полным root-доступом: для Docker нужен контроль на уровне ядра, а вам нужно, чтобы машина была вашей, а не контейнером на чьей-то общей платформе. Оплатите его так же, как собираетесь получать оплату сами: эту сторону вопроса разбирает наше руководство о том, как купить VPS за Bitcoin, а руководство по выбору юрисдикции поможет решить, где его разместить.

Защитите сервер, пока он ещё пуст: пустым он останется недолго, а эта машина по самой своей сути — публичное объявление о том, что через неё идут деньги. SSH только по ключам, никакой аутентификации по паролю, файрвол с запретом по умолчанию, где открыты только порты 22, 80 и 443, автоматические обновления безопасности, а если получится — доступ к самому SSH-порту только с адресов, которые вы контролируете. Чек-лист защиты сервера в первый час — ровно этот список, и пока шлюза ещё нет, на него уйдёт двадцать минут, а не полдня.

Направьте на машину доменное имя ещё до установки — скрипту установки нужен домен, чтобы при первом запуске запросить сертификат. Отдельного поддомена вполне достаточно, и большинство так и поступает. Учтите, что это имя станет частью вашей публичной страницы оплаты, поэтому в момент выпуска сертификата оно появится в журналах Certificate Transparency — навсегда и в открытом для поиска виде. Выбирайте имя, которое вы готовы навечно оставить в индексах, а если сама связь этого имени с вашим основным сайтом чувствительна, прочитайте нашу заметку о том, что раскрывает имя хоста, прежде чем его выбирать.

Шаг 2 — установка шлюза

Установка намеренно скучна: клонируйте репозиторий развёртывания, экспортируйте несколько переменных окружения, описывающих, что вам нужно, и запустите скрипт установки. Важны имя хоста, нужные блокчейны и дополнительные фрагменты — какая реализация Lightning, включать ли прунинг, добавлять ли другие демоны. Есть и полнофункциональный веб-установщик, но путь через переменные окружения можно повторить по своим заметкам и через полгода, а воспроизводимость здесь ценнее удобства.

Дальше — ожидание. Стек поднимается за пару минут, после чего нода Bitcoin тратит от нескольких часов до пары суток, чтобы догнать блокчейн, и BTCPay честно сообщает, что синхронизация ещё идёт, а не делает вид, будто всё работает. Не создавайте счета в этот период и не делайте по нему никаких выводов. Используйте паузу с пользой: сразу создайте учётную запись администратора и включите двухфакторную аутентификацию, потому что этот интерфейс — пульт управления вашей выручкой и он доступен из всего интернета.

Пока ждёте, обратите внимание на две настройки. Задайте срок действия счёта с учётом реального времени подтверждений: по умолчанию это четверть часа — достаточно для Lightning, но впритык для ончейн-платежа во время скачка комиссий. И настройте допуск по оплате: он определяет, будет ли счёт, оплаченный с недостачей в несколько центов, закрыт или повиснет. Нулевой допуск порождает тикеты в поддержку; небольшой процент — ни одного. Одно это поле избавляет от большего числа писем покупателей, чем любое другое.

Шаг 3 — подключение кошелька без ключей на сервере

Именно этот шаг определяет, стоило ли вообще связываться с собственным шлюзом, и именно его чаще всего делают неправильно в спешке.

BTCPay может создать для вас кошелёк прямо на сервере — с приватными ключами на сервере. Не делайте этого для магазина, который принимает настоящие деньги. Правильный подход — создать кошелёк в другом месте (на аппаратном кошельке или в десктопном кошельке на другой машине) и передать серверу только расширенный публичный ключ — xpub. Эта единственная строка позволяет шлюзу генерировать неограниченную последовательность адресов для приёма платежей и следить за ними, оставаясь при этом математически неспособным что-либо потратить. Ваши ключи остаются там, куда вы их положили, а сервер превращается в очень хорошо осведомлённого наблюдателя.

После подключения не полагайтесь на допущения, а проверьте. Создайте счёт на один цент, оплатите его с кошелька, который вы контролируете, и убедитесь в трёх вещах: адрес есть в вашем собственном кошельке, счёт закрылся в BTCPay, а средства видны и доступны для траты в вашем собственном приложении-кошельке — не только в интерфейсе шлюза. Такая тройная проверка позволяет обнаружить неверный путь деривации за пять минут, а не после первого настоящего покупателя.

Не тратьте с этого аккаунта через второй кошелёк. Индексатор следит за ограниченным окном неиспользованных адресов, идущих после последнего адреса, который он видел использованным. Если другой кошелёк незаметно расходует адреса из того же аккаунта, шлюз может смотреть не на тот участок последовательности и пропустить платёж, который на самом деле пришёл. Держите аккаунт магазина только для магазина, а если вам нужен горячий баланс для возвратов или выплат, заведите отдельный кошелёк с небольшим запасом средств, вместо того чтобы ставить под угрозу основной.

Шаг 4 — Lightning и Monero, если они нужны

И то и другое полезно, и ни то ни другое не даётся даром, так что добавляйте их по просьбе клиентов, а не потому, что есть такая галочка.

Lightning делает мелкие платежи осмысленными: они мгновенные, практически бесплатные и не боятся скачков комиссий, из-за которых ончейн-счёт на четыре доллара превращается в абсурд. Подвох не в софте — стек установит его за вас, — а во входящей ликвидности. Вам могут заплатить ровно столько, сколько способны принять ваши каналы, поэтому только что запущенная нода без входящей ёмкости вообще ничего не сможет принять, пока вы не откроете каналы, не купите входящую ёмкость или не воспользуетесь сервисом ликвидности. Заложите на это полдня и некоторый капитал. И относитесь к бэкапам этой ноды как к задаче, отдельной от всего остального на сервере: состояние каналов Lightning — живое, восстановление из старого снапшота может стоить вам баланса канала, а файл восстановления, который вас защищает, нужно держать актуальным и вне этой машины.

Monero — компромисс с противоположной стороны: ни каналов, ни ликвидности, ни маршрутизации — только второй блокчейн со своим демоном и платежи, о которых публичный реестр ничего не сообщает наблюдателям. BTCPay поддерживает Monero через плагин, который работает с вашей собственной нодой Monero и кошельком только для просмотра, — по тому же принципу, что и xpub: вы передаёте серверу адрес и приватный ключ просмотра, чтобы он видел входящие платежи, а ключ траты храните в другом месте. Два эксплуатационных факта, которые нужно учесть заранее: средства в Monero требуют десяти подтверждений, прежде чем их можно потратить, — это примерно двадцать минут, так что срок действия счёта и логика выполнения заказов должны это допускать; кроме того, демон занимает немало места на диске. Если вы ещё только выбираете, какие монеты вообще принимать, наше сравнение Monero, Bitcoin и USDT — более короткий путь к решению.

Шаг 5 — интеграция с сайтом

Шлюз бесполезен, пока ваше приложение не узнаёт, что счёт оплачен. Есть три способа интеграции — по возрастанию трудозатрат и степени контроля.

  1. Плагин, если вы работаете на одной из популярных e-commerce-платформ. Установите его, вставьте API-ключ — и за полдня всё готово. Этого достаточно для большинства реальных внедрений, и медалей за отказ от этого варианта не выдают.
  2. Платёжные кнопки или готовая страница оплаты, если вы продаёте всего несколько товаров или принимаете пожертвования. Скопируйте HTML-фрагмент — и BTCPay проведёт весь процесс оплаты на своём собственном домене.
  3. REST API, если у вас собственное приложение. Создавайте счета программно, получайте вебхуки при смене их статуса и полностью контролируйте пользовательский опыт.

Какой бы путь вы ни выбрали, правило выполнения заказов одно и не обсуждается: никогда не отправляйте заказ на основании непроверенного вебхука. Вебхуки подписываются общим секретом — проверяйте подпись в каждом запросе, а затем обращайтесь к API, чтобы убедиться, что счёт действительно находится в том состоянии, о котором заявляет вебхук. Эндпоинт без аутентификации, помечающий заказы как оплаченные, — это генератор бесплатных товаров, и кто-нибудь со сканером найдёт его гораздо раньше, чем вы.

Затем решите, что для вашего бизнеса значит «оплачено». Засчитывать неподтверждённую транзакцию можно мгновенно, но тогда вы рискуете, что её заменят другой транзакцией; ожидание одного подтверждения стоит покупателю в среднем десяти минут и снимает почти весь этот риск. Цифровые товары, которые выдаются мгновенно, заслуживают подтверждения. Физический товар, который уйдёт завтра, — нет: посылка не сдвинется с места раньше, чем блок.

Эксплуатация: бэкапы, обновления и сценарии сбоев

Платёжный шлюз — это инфраструктура, а инфраструктуру оценивают по плохому дню, а не по хорошему. Три привычки покрывают почти все варианты того, как что-то может пойти не так.

Делайте бэкап того, что действительно нужно. Блокчейн сюда не относится — это несколько сотен гигабайт, которые интернет с радостью пришлёт вам ещё раз. Незаменимы база данных магазинов, счетов и настроек, конфигурация и всё, что связано с Lightning. В комплекте развёртывания есть скрипт бэкапа, который сохраняет именно это; дисциплина в том, чтобы запускать его по расписанию, отправлять результат в другое место, шифровать перед отправкой и хотя бы раз восстановиться из него, чтобы доказать, что он работает. Зашифрованный бэкап вне сервера — та же схема, что и везде на этом сайте, только здесь архив — это полная запись вашей выручки, так что шифрование обязательно.

Обновляйтесь осознанно. У стека есть скрипт обновления, и ведёт он себя прилично, но шлюз, который обновляется сам без присмотра, — это шлюз, который может лежать, пока вы спите. Читайте примечания к релизам, сначала делайте бэкап базы данных и обновляйтесь в спокойные часы. И никогда — во время акции.

Понимайте, во что на самом деле обходится простой. Это обнадёживающая часть. Если шлюз лежит, новые покупатели не могут создать счёт — это проблема доступности, и вполне реальная. Но деньги, уже отправленные на ваши адреса, не потеряны, не задержаны и ничем не рискуют: они лежат в кошельке, ключи от которого никогда не были на сервере, и будут на месте, когда нода вернётся и пересканирует блокчейн. Простой стоит вам продаж, а не средств. Эту разницу стоит усвоить, потому что она превращает аварию в три часа ночи в задачу, которая спокойно подождёт до завтрака.

Приватность на деле: что по-прежнему видно в блокчейне

Убрав процессор, вы убираете только процессор. Bitcoin от этого не становится приватным, а собственный шлюз, если не следить, может даже незаметно ухудшить вашу ончейн-приватность.

Что утекаетПочемуЧто с этим делать
Вся история вашей выручки — любому, у кого есть xpubИз одного расширенного публичного ключа выводятся все адреса, которые ваш магазин когда-либо будет использоватьОтноситесь к xpub как к коммерческой тайне. Никогда не вставляйте его в обозреватель блоков или в тикет поддержки
Какие клиенты вам платили — со связью между нимиОбъединение множества оплат по счетам в одну транзакцию доказывает, что все они получены одним и тем же лицомКонсолидируйте редко, крупными партиями и в спокойное время — или не консолидируйте вовсе
Связь между страницей оплаты и вашим основным сайтомCertificate Transparency, DNS-записи и страница, в которую встроена платёжная формаИсходите из того, что эта связь публична. Если она не должна быть публичной, это ограничение нужно закладывать в архитектуру, а не в последующий патч
Ваши собственные сеансы администрированияЖурналы доступа сервера фиксируют, кто администрирует машину и откудаНикогда не заходите на шлюз с адреса, который вас идентифицирует. Подробная версия — в нашем руководстве по OpSec для серверов
В конечном счёте всё — на биржеКонвертация в фиат — регулируемое узкое место, и там видна история монетТехнически это не исправить. Учитывайте это заранее или принимайте оплату в том, что реестр не публикует

Две меры стоят усилий, и обе уже встроены. Включение совместных платежей в стиле payjoin ломает наивное предположение, что все входы транзакции принадлежат одному человеку, — а это самая полезная эвристика, на которую опираются аналитики блокчейна. А если предлагать Monero наряду с Bitcoin, покупатели, которым это важнее всего, просто изначально ничего не записывают в публичный реестр. Ни то ни другое не волшебство, но и то и другое повышает цену слежки за вами.

Юридическая часть, которую никто не любит

Коротко и не в качестве юридической консультации: регулируется не запуск программы. Регулироваться может то, что вы делаете с деньгами.

В большинстве юрисдикций приём криптовалюты в оплату собственных товаров и услуг — обычная коммерческая сделка. Вы продавец, которому платят, а не финансовое учреждение. Обязательства, которые из этого следуют, у вас уже есть: признавайте выручку по её стоимости на день получения, применяйте тот же налог с продаж или НДС, что и при оплате картой, и ведите учёт, который выдержит аудит. Собственный шлюз это скорее упрощает, чем усложняет, потому что история счетов принадлежит вам и она полная.

Граница смещается, когда вы начинаете распоряжаться чужими деньгами. Конвертация, перевод или хранение криптовалюты от имени третьих лиц почти везде требует лицензии, и «но у меня же свой сервер» — не оправдание. Санкционные обязательства тоже целиком переживают смену архитектуры. А приём платежей без KYC — совсем не то же самое, что приём платежей, о преступном характере которых вам известно: первое законно в большей части мира, второе — нигде. Наше руководство о том, законен ли офшорный хостинг, разбирает то же различие подробнее.

Вся сборка на одной странице

Если отбросить объяснения, это проект на выходные, большая часть которого — ожидание:

  1. Определите конфигурацию: pruned или полная нода, с Lightning или без, с Monero или без. От этого зависит диск, а от диска — тариф.
  2. Закажите сервер — NVMe, безлимитный трафик, полный root — и оплатите его в той валюте, которую собираетесь принимать.
  3. Защитите его, пока он пуст, затем направьте на него доменное имя и дождитесь выпуска сертификата.
  4. Разверните стек из файла переменных окружения и дождитесь синхронизации ноды. Пока она идёт, не делайте никаких выводов.
  5. Создайте кошелёк в другом месте и передайте серверу только расширенный публичный ключ. Прежде всего остального проверьте связку счётом на один цент.
  6. Добавляйте Lightning или Monero, только если ими будут пользоваться клиенты, и соответственно заложите ликвидность или диск.
  7. Интегрируйте через плагин, кнопку или API — и проверяйте подпись каждого вебхука, сверяясь с API, прежде чем отправить хотя бы один заказ.
  8. Настройте бэкап по расписанию, шифруйте его, отправляйте за пределы машины и один раз восстановитесь из него, чтобы знать, что он работает.

В итоге вы получаете нечто неброское, но по-настоящему важное: оплату без единой компании посередине. Деньги приходят на адреса, с которых тратить можете только вы, закрыть аккаунт невозможно, потому что аккаунта нет, а вся эта конструкция стоит одного небольшого сервера. Если вам нужна такая же независимость и для машины, на которой всё это работает, для этого и существует хостинг с оплатой в Bitcoin — и, что приятно, оба решения на самом деле одно и то же решение, принятое дважды.

FAQ

Собственный приём криптоплатежей — частые вопросы

01 Нужна ли полная нода Bitcoin, чтобы запустить собственный шлюз?

Нода нужна, но не обязательно полная. Pruned-нода проверяет каждый блок точно так же, как полная, а затем удаляет старые блоки, которые ей больше не нужны, — это снижает требования к хранилищу примерно с терабайта до объёма диска небольшого VPS. Шлюз работает точно так же — вы теряете лишь возможность раздавать исторические блоки другим пирам. А вот без самой ноды обойтись нельзя: без неё вы спрашиваете у третьей стороны, заплатили ли вам, а это именно та зависимость, от которой вы хотели избавиться.

02 Сколько диска на самом деле нужно собственному платёжному шлюзу?

Для типичного случая — pruned-нода Bitcoin и только ончейн-платежи — закладывайте примерно от 40 до 60 GB вместе с операционной системой и 4 GB RAM. Добавите Lightning — понадобится чуть больше диска и около 8 GB памяти. Добавите ноду Monero — прибавьте ещё 120 GB с прунингом или около 300 GB без него. Одной только полной ноде Bitcoin без прунинга нужен терабайт с запасом на рост. Прунинг экономит диск, но не трафик: первая синхронизация в любом случае скачивает и проверяет весь блокчейн, поэтому безлимитный трафик должен входить в список требований.

03 Если сервер взломают или изымут, доберутся ли до моих денег?

Нет, если всё настроено правильно. Корректно настроенный шлюз не хранит приватных ключей: вы передаёте ему только расширенный публичный ключ, который позволяет генерировать адреса и следить за ними, но делает трату средств математически невозможной. Злоумышленник, получивший полный контроль над машиной, увидит историю ваших счетов, данные о заказах клиентов и список адресов — это серьёзная утечка приватных данных, и от неё стоит защищаться. Но перевести ваши средства он не сможет. Исключение — любой горячий кошелёк, который вы намеренно пополняете для возвратов или Lightning; держите на нём небольшой баланс, потому что именно эта часть действительно под угрозой.

04 Можно ли принимать Monero через собственный шлюз?

Да, через плагин, который работает с вашим собственным демоном Monero и кошельком только для просмотра. Вы передаёте серверу адрес и приватный ключ просмотра, чтобы он видел поступающие платежи, а ключ траты никогда не попадает на машину — тот же принцип, что и с расширенным публичным ключом на стороне Bitcoin. Учесть нужно две вещи: демону нужен собственный диск — примерно 120 GB с прунингом, а средства в Monero требуют десяти подтверждений, прежде чем их можно потратить, — это около двадцати минут. Настройте срок действия счёта и логику выполнения заказов так, чтобы они допускали эту задержку, а не боролись с ней.

05 Значит ли собственный шлюз, что я полностью избавлюсь от KYC?

Он убирает KYC из оплаты — той части, которая касается ваших клиентов. Из вывода средств он KYC не убирает. Как только вы конвертируете криптовалюту в местную валюту через регулируемую биржу, вы сталкиваетесь с проверкой личности, а биржа видит историю монет, которые вы на неё заводите. Для большинства бизнесов это скорее выгодный обмен, чем решённая проблема: ваши клиенты платят, не попадая в профили третьей стороны, ваша книга заказов не лежит на чужом сервере, а этап с идентификацией происходит один раз — в вашем собственном банке и по вашему собственному графику.

06 Что будет с платежами, если шлюз упадёт?

Новые покупатели не смогут создать счёт, так что, пока шлюз лежит, вы теряете продажи, — это настоящая проблема доступности. Но деньги, уже отправленные на ваши адреса, это никак не затрагивает. Эти средства лежат в кошельке, ключи от которого никогда не были на сервере, а когда нода вернётся, она пересканирует блокчейн и сверит пропущенные платежи. Простой стоит вам выручки, которую вы не получили, а не средств, которые у вас уже были. Это полезно знать в три часа ночи: так авария превращается в задачу, которая может подождать до утра.

07 Нужен ли Lightning или хватит ончейна?

Большинству продавцов хватает ончейна, и хлопот с ним гораздо меньше. Lightning окупается, когда средний чек настолько мал, что ончейн-комиссии становятся абсурдными: вы продаёте что-то за несколько долларов или принимаете микропожертвования. Настоящая цена — не софт, а входящая ликвидность: новая нода ничего не сможет принять, пока у неё нет каналов со свободной ёмкостью в её сторону, а это значит — открывать каналы, покупать входящую ёмкость или пользоваться услугами провайдера ликвидности. Начните с ончейна, следите за отношением комиссий к сумме заказа и добавляйте Lightning, когда цифры оправдают потраченные полдня.

08 Законно ли держать собственный криптовалютный платёжный шлюз?

Сам по себе запуск программы не является регулируемой деятельностью, а в большинстве юрисдикций приём криптовалюты за собственные товары и услуги — обычная коммерческая сделка: вы продавец, которому платят, а не финансовое учреждение. Обычные обязательства при этом действуют в полном объёме: признавайте выручку по стоимости на день поступления, начисляйте тот же налог с продаж или НДС, что и при оплате картой, и ведите учёт. Граница смещается, когда вы распоряжаетесь чужими деньгами: конвертация, перевод или хранение криптовалюты от имени третьих лиц почти везде лицензируется, и собственный сервер от этого не защищает. Это общая информация, а не юридическая консультация, — уточняйте правила своей юрисдикции.

Разместите шлюз там, где он не упадёт

Офшорные KVM-серверы в семи юрисдикциях от $7.50/мес.: полный root, NVMe-накопители и безлимитный трафик, развёртывание менее чем за пять минут после подтверждения криптоплатежа. Старшим тарифам хватит диска для полной ноды, а младших более чем достаточно для pruned-ноды.

Тарифы VPS Bitcoin-хостинг Офшорный хостинг