Ви досі використовуєте публічні 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 днів |
| Рекомендується | Легкі додатки | Прийом платежів | Гаманці з пошуком |







