Розгортання повної ноди Bitcoin Core: залізо, встановлення, безпека

Ви досі використовуєте публічні API для транзакцій Bitcoin? Rate limits, прихований IP, централізовані точки відмови — ми стикаємося з цим у кожному проекті з прийому платежів. Власна повна нода <cite>[Bitcoin Core](https://github.com/bitcoin/bitcoin)</cite> дає незалежність, privacy та повний контр

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1450
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1004
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1270
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1011

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