Розгортання ноди Bitcoin

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розгортання ноди Bitcoin
Простий
від 1 дня до 3 днів
Часті запитання

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

Етапи блокчейн-розробки

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

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

Розгортання ноди Bitcoin

Власна нода Bitcoin потрібна коли вам потрібна незалежність від третіх сторін. Публічні API (Blockstream, BlockCypher) — зручні, але: ліміти, downtime, неможливість робити деякі RPC-вклики, privacy (усі ваші адреси видні провайдеру). Для production-системи приймання платежів або кастодіального сервісу — власна нода обов'язкова.

Вимоги до залізо

Режим Диск 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.

Встановлення 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).

Initial Block Download

IBD на mainnet займає 1–5 днів на SSD залежно від залізо. Прискорення:

# Запуск з збільшеним кешем для IBD
bitcoind -dbcache=4000 -daemon

# Моніторинг прогресу
bitcoin-cli getblockchaininfo | jq '.verificationprogress'
# 0.0 → 1.0 (100%)

# Скільки лишилось
bitcoin-cli getnetworkinfo | jq '.connections'

ZMQ для реального часу

Polling через RPC кожні кілька секунд — примітивно. ZMQ дає push-сповіщення:

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 порт (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.