Вы до сих пор используете публичные API для транзакций Bitcoin? Rate limits, скрытый IP, централизованные точки отказа — мы сталкиваемся с этим в каждом проекте по приёму платежей. Собственная полная нода Bitcoin Core даёт независимость, privacy и полный контроль. За 5+ лет опыта мы развернули ноды для 50+ проектов — от кастодиальных сервисов до DeFi-протоколов.
Почему собственная нода Bitcoin — необходимость для продакшна?
Без своей ноды вы зависите от публичных API: они могут уйти в офлайн, изменить тарифы или rate limits. Публичные API имеют аптайм около 99%, а собственная нода на надёжном хостинге достигает 99.99% — разница в 100 раз меньше простоев. Нода даёт: собственную валидацию транзакций, полную историю через txindex, real-time нотификации через ZMQ, и приватность — ваши адреса не видны сторонним провайдерам. Экономия на API при своей ноде составляет до $2000 в месяц для среднестатистического проекта приёма платежей.
Требования к железу
| Режим | Диск | RAM | CPU | Описание |
|---|---|---|---|---|
| Pruned | 10–15 GB | 2 GB | 2 cores | Хранит только UTXO set + последние N блоков |
| Full | 650+ GB | 4 GB | 4 cores | Полная история транзакций |
| Full + Electrum (Fulcrum) | 1 TB+ | 8 GB | 4+ cores | Для кошельков и адресного поиска |
SSD обязателен — HDD делает initial block download в 3–5 раз медленнее из-за случайных чтений при верификации UTXO set. Мы используем только NVMe в продакшне. Серверное оборудование обойдётся от $80 в месяц, что окупается за 2-3 месяца.
Установка Bitcoin Core
# Ubuntu 22.04 wget https://bitcoincore.org/bin/bitcoin-core-27.0/bitcoin-27.0-x86_64-linux-gnu.tar.gz # Всегда верифицируйте подпись! wget https://bitcoincore.org/bin/bitcoin-core-27.0/SHA256SUMS wget https://bitcoincore.org/bin/bitcoin-core-27.0/SHA256SUMS.asc gpg --recv-keys 152812300785C96444D3334D17565732E08E52E gpg --verify SHA256SUMS.asc SHA256SUMS sha256sum --check SHA256SUMS --ignore-missing tar xzf bitcoin-27.0-x86_64-linux-gnu.tar.gz sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-27.0/bin/* Конфигурация ~/.bitcoin/bitcoin.conf:
# Основное server=1 daemon=1 txindex=1 # Индекс всех транзакций (нужен для lookupByTxId) # RPC rpcuser=bitcoinrpc rpcpassword=STRONG_RANDOM_PASSWORD_HERE rpcbind=127.0.0.1 rpcallowip=127.0.0.1 # ZMQ — для real-time нотификаций zmqpubrawblock=tcp://127.0.0.1:28332 zmqpubrawtx=tcp://127.0.0.1:28333 zmqpubhashblock=tcp://127.0.0.1:28334 # Производительность dbcache=1000 # Кеш для initial sync, МБ maxmempool=500 # Размер мемпула, МБ # Для pruned mode (уберите txindex): # prune=10000 # Хранить 10 GB блоков txindex=1 критичен если нужно искать транзакции по хешу. Без него — только текущие UTXO. Включение задним числом требует полного reindex (bitcoind -reindex). Если ваш сценарий требует поиска транзакций по хешу, txindex=1 обязателен. Без него доступны только текущие UTXO. При включении задним числом нода переиндексирует все блоки — это может занять дополнительное время. Наши инженеры рекомендуют сразу включать индекс, если есть потенциальная потребность в истории.
Initial Block Download
IBD на mainnet занимает 1–5 дней на SSD в зависимости от железа. Ускорение: запустите с dbcache=4000. Прогресс отслеживайте через bitcoin-cli getblockchaininfo | jq '.verificationprogress'. Мы настраиваем параметры так, чтобы минимизировать время синхронизации.
Как использовать ZMQ для real-time нотификаций?
Polling через RPC каждые несколько секунд примитивно. ZMQ даёт push-нотификации — разница в скорости до 100 раз быстрее.
import * as zmq from 'zeromq'; const blockSocket = new zmq.Subscriber(); const txSocket = new zmq.Subscriber(); blockSocket.connect('tcp://127.0.0.1:28334'); blockSocket.subscribe('hashblock'); txSocket.connect('tcp://127.0.0.1:28333'); txSocket.subscribe('rawtx'); // Новый блок for await (const [topic, message] of blockSocket) { const blockHash = message.toString('hex'); console.log('New block:', blockHash); await processNewBlock(blockHash); } // Новая транзакция в мемпуле for await (const [topic, rawTx] of txSocket) { const tx = bitcoin.Transaction.fromBuffer(rawTx); await processPendingTransaction(tx); } RPC основные вызовы
import * as Client from 'bitcoin-core'; const client = new Client({ host: '127.0.0.1', port: 8332, username: 'bitcoinrpc', password: process.env.BITCOIN_RPC_PASSWORD!, }); // Информация о транзакции const tx = await client.getRawTransaction(txHash, true); // Информация о UTXO const utxo = await client.getTxOut(txHash, outputIndex); // Создание нового адреса (для HD wallet лучше использовать bitcoinjs-lib) const address = await client.getNewAddress('payment_label', 'bech32'); // Текущий fee rate (sat/vB для следующего блока) const feeRate = await client.estimateSmartFee(1); // feeRate.feerate в BTC/kB, переводим в sat/vB: const satPerVbyte = Math.ceil(feeRate.feerate * 100_000); Как обезопасить RPC и ноду?
RPC порт (8332) никогда не открывайте наружу. Доступ только через localhost или VPN:
# Firewall: закрыть RPC снаружи ufw deny 8332 ufw allow 8333 # P2P порт — должен быть открыт для синхронизации # Systemd unit для автозапуска cat > /etc/systemd/system/bitcoind.service << EOF [Unit] Description=Bitcoin daemon After=network.target [Service] User=bitcoin ExecStart=/usr/local/bin/bitcoind -conf=/home/bitcoin/.bitcoin/bitcoin.conf Restart=on-failure TimeoutStartSec=infinity [Install] WantedBy=multi-user.target EOF systemctl enable bitcoind systemctl start bitcoind Отдельный системный пользователь bitcoin без sudo — стандартная практика. Файлы кошелька в /home/bitcoin/.bitcoin/wallets/ с резервной копией seed.
Типичные ошибки при развёртывании и как их избежать
Одна из частых проблем — использование недостаточного дискового пространства. Полная нода с txindex требует 650+ ГБ, и многие забывают про рост блокчейна. Рекомендуем закладывать запас 20-30%. Другая ошибка — открытый RPC порт. Сразу настраиваем firewall. Также встречается запуск ноды от root — мы создаём отдельного пользователя bitcoin.
Как настроить мониторинг ноды Bitcoin?
Для мониторинга используйте Prometheus с bitcoin_exporter и настройте алерты в Telegram. Это позволит вовремя реагировать на падение ноды или рост дискового пространства. Мы включаем базовый мониторинг в развёртывание под ключ.
Что входит в развёртывание под ключ
Мы предоставляем полный цикл: установка Bitcoin Core, настройка конфигурации под ваши задачи, ZMQ-мост для real-time данных, безопасность (firewall, systemd, отдельный пользователь), мониторинг здоровья ноды и документация. Дополнительно — обучение вашей команды и техническая поддержка 24/7. Наши инженеры имеют 5+ лет опыта и 50+ развёрнутых нод — гарантируем стабильную работу. Свяжитесь с нами для консультации по вашему проекту. Закажите развертывание ноды под ключ — получите стабильную инфраструктуру.
| Сравнение режимов | Pruned | Full | Full + Electrum |
|---|---|---|---|
| Диск | 10-15 GB | 650+ GB | 1 TB+ |
| История транзакций | Только последние блоки | Полная | Полная + адресный поиск |
| Время IBD | 1-2 дня | 2-5 дней | 3-7 дней |
| Рекомендуется | Лёгкие приложения | Приём платежей | Кошельки с поиском |







