Розгортання приватного блокчейну

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

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

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

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

  • 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

Розгортування приватного блокчейна

«Нам потрібен свій блокчейн» — фраза, яку я чую раз на місяць. Часто за нею стоїть завдання яке можна розв'язати звичайною БД з аудит-логом або permissioned смарт-контрактами на публічному блокчейні. Але є легітимні кейси: консорціумні розрахунки між конкуруючими компаніями, коли жодна сторона не довіряє іншій достатньо для розташування даних на їх сервері; державні реєстри які вимагають децентралізації без публічності; торгові мережі з власним токеном розрахунків.

Якщо ви попадаєте в один з цих кейсів — цей документ про те, як це зробити правильно.

Вибір платформи

Три реальних варіанти для enterprise private blockchain в 2024-2025:

Hyperledger Besu — EVM-сумісний клієнт Ethereum, розроблений ConsenSys, тепер Linux Foundation. Підтримує QBFT, IBFT2 consensus. Головна перевага: повна EVM сумісність — все що працює на Ethereum, працює і здесь без змін. Solidity контракти, Hardhat, MetaMask, ethers.js — все працює. Для команд з EVM експертизою — перший вибір.

Hyperledger Fabric — не EVM, chaincode на Go/Java/Node.js, канальна архітектура, MSP (Membership Service Provider) для управління учасниками. Краще підходить для складних permissioned сценаріїв з різними ролями учасників. Складніший в експлуатації.

Polygon Edge / Polygon CDK — EVM сумісний, bridge до Ethereum mainnet або Polygon. Якщо потрібна зв'язок з публічним блокчейном — гарний вибір. Активно розвивається як appchain фреймворк.

Для більшості корпоративних завдань рекомендую Besu з QBFT: EVM сумісність відкриває доступ до величезної екосистеми інструментів, а QBFT забезпечує детерміновану фіналізацію без форків.

Архітектура мережи Hyperledger Besu + QBFT

QBFT (Quorum Byzantine Fault Tolerance) — Byzantine fault tolerant consensus. Мережа з N нод видерживає до ⌊(N-1)/3⌋ відмов. Для 4 нод — 1 відмова, для 7 — 2.

Мінімальна production топологія:

┌──────────────────────────────────────────────────────┐
│                   Private Network                     │
│                                                      │
│  ┌──────────┐   ┌──────────┐   ┌──────────────────┐ │
│  │Validator1│   │Validator2│   │   Validator3      │ │
│  │ (Org A)  │──▶│ (Org B)  │──▶│    (Org C)        │ │
│  └──────────┘   └──────────┘   └──────────────────┘ │
│        │              │                │             │
│        └──────────────┴────────────────┘             │
│                       │                              │
│              ┌────────▼────────┐                    │
│              │  RPC / Boot node│                    │
│              │  (non-validator)│                    │
│              └────────────────-┘                    │
└──────────────────────────────────────────────────────┘

Validators беруть участь у consensus. RPC/Boot node — точка входу для програм, не валідує.

Настройка генезис-блоку

Генезис визначає початковий стан мережі. Критичні параметри:

{
  "config": {
    "chainId": 12345,
    "berlinBlock": 0,
    "londonBlock": 0,
    "qbft": {
      "blockperiodseconds": 2,
      "epochlength": 30000,
      "requesttimeoutseconds": 4
    }
  },
  "nonce": "0x0",
  "timestamp": "0x5B3D92D7",
  "gasLimit": "0x1fffffffffffff",
  "difficulty": "0x1",
  "mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": {
    "0xYOUR_INITIAL_ACCOUNT": {
      "balance": "90000000000000000000000"
    }
  },
  "extraData": "0x<QBFT_EXTRA_DATA>"
}

chainId — унікальний ідентифікатор мережі. Вибирайте не пересікаючийся з публічними мережами. Список займаних chainId: chainlist.org.

blockperiodseconds: 2 — блок кожні 2 секунди. Для фінансових транзакцій достатньо, для high-frequency можна знизити до 1.

extraData для QBFT кодує список початкових validators. Генерується через Besu:

besu operator generate-blockchain-config \
  --config-file=qbftConfigFile.json \
  --to=networkFiles \
  --private-key-file-name=key

Деплой з Docker Compose

version: '3.8'
services:
  validator1:
    image: hyperledger/besu:latest
    volumes:
      - ./data/validator1:/data
      - ./genesis.json:/genesis.json
      - ./networkFiles/keys/validator1:/keys
    command: >
      --data-path=/data
      --genesis-file=/genesis.json
      --node-private-key-file=/keys/key
      --rpc-http-enabled
      --rpc-http-api=ETH,NET,QBFT,ADMIN
      --rpc-http-cors-origins=*
      --rpc-http-port=8545
      --p2p-port=30303
      --bootnodes=enode://BOOTNODE_ENODE@bootnode:30303
      --min-gas-price=0
      --revert-reason-enabled
      --metrics-enabled
      --metrics-port=9545
    ports:
      - "8545:8545"
      - "30303:30303"

  validator2:
    image: hyperledger/besu:latest
    # аналогічна конфігурація з іншими ключами
    
  validator3:
    image: hyperledger/besu:latest
    # ...

--min-gas-price=0 вимикає мінімальну плату за газ. У приватній мережі транзакції безплатні — це стандартно для корпоративних мереж.

Для Kubernetes — Besu Helm chart: helm install besu-network hyperledger/besu.

Управління учасниками (Permissioning)

Besu підтримує два рівні: on-chain (контракти) та off-chain (конфіг файли).

On-chain permissioning (рекомендую для production):

// Allowlist контракт дейплоиться в genesis або після
contract NodeRules {
    mapping(bytes32 => bool) private allowedNodes;
    
    function connectionAllowed(
        bytes32 sourceEnodeHigh,
        bytes32 sourceEnodeLow,
        bytes16 sourceEnodeIp,
        uint16 sourceEnodePort,
        bytes32 destEnodeHigh,
        bytes32 destEnodeLow,
        bytes16 destEnodeIp,
        uint16 destEnodePort
    ) external view returns (bytes32) {
        bytes32 nodeId = keccak256(abi.encodePacked(sourceEnodeHigh, sourceEnodeLow));
        return allowedNodes[nodeId] ? 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff : 0x0;
    }
}

Додавання/видалення нод — транзакція в мережі, що вимагає мультисиг або governance. Аудит-трейл хто та коли додав ноду — в блокчейні.

Мониторинг з Prometheus + Grafana

Besu нативно експортує метрики у Prometheus форматі:

# prometheus.yml
scrape_configs:
  - job_name: 'besu'
    static_configs:
      - targets: ['validator1:9545', 'validator2:9545', 'validator3:9545']

Ключові метрики для мониторингу:

  • besu_blockchain_height — висота блокчейну на кожній ноді (повинні бути однакові)
  • besu_peers_connected_total — кількість підключених пірів
  • besu_consensus_round_change_total — кількість смен раунду QBFT (ріст = проблеми з consensus)
  • besu_transaction_pool_transactions — розмір mempool
-- Grafana alert: ноди рассинхронізувались
(max(besu_blockchain_height) - min(besu_blockchain_height)) > 5

BlockScout для block explorer — окремий сервіс, сумісний з будь-якою EVM мережею.

Disaster Recovery

Приватна мережа = ваша відповідальність за backup:

# Backup ключів валідатора (критично!)
tar -czf validator-keys-backup-$(date +%Y%m%d).tar.gz \
  ./networkFiles/keys/ \
  ./genesis.json

# Backup блокчейн даних (для швидкого восстановлення)
besu blocks export \
  --start-block=0 \
  --end-block=$(besu blocks --rpc-http-host localhost:8545 latest) \
  --to=blockchain-backup.bin

Ключи валідаторів — у різних фізичних локаціях. Втрата ключів = втрата участі в consensus. Якщо утрачені ключі більшості валідаторів — мережа встане.

Для production: HSM (Hardware Security Module) для зберігання validator ключів, або AWS CloudHSM / Azure Dedicated HSM.

Типові помилки

Одинакові chainId для тестової та production мережі. MetaMask та гаманці кешують мережі по chainId. Використовуйте різні chainId для кожного окруження.

Не настроєний gas limit. 0x1fffffffffffff — максимум. У production може бути потрібен більш реалістичний ліміт для захисту від ресурсомістких транзакцій.

Валідатори в одному датацентрі. При аварії ДЦ втрачаєте consensus. Розподіляйте валідаторів мінімум по двом незалежним дата центрам.

Нема мониторингу синхронізації. Беззвучна рассинхронізація — найгірший сценарій. Алерт при розходженні висоти > 5 блоків обов'язковий.

Процес роботи

Проектування (2-3 дні): топологія мережі, число валідаторів, governance модель (хто додає/видаляє учасників), вимоги до permissioning, вибір платформи.

Розробка genesis та конфігурації (1-2 дні): параметри consensus, chainId, початкове розподіл токенів, permissioning контракти.

Деплой та тестування (3-4 дні): Docker Compose або Kubernetes, перевірка consensus при відмові ноди, тест додавання/видалення учасника, нагрузочне тестування.

Мониторинг та документація (1-2 дні): Prometheus/Grafana, runbook для операційної команди, процедури backup.

Усього 1-2 тижні для базової мережі. Якщо потрібна інтеграція з enterprise системами (Active Directory, HSM, SIEM) — додавайте ще 1-2 тижні.