Розгортання блокчейну на Hyperledger Besu

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розгортання блокчейну на Hyperledger Besu
Складний
~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

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

Hyperledger Besu — єдиний enterprise Ethereum клієнт під ліцензією Apache 2.0, написаний на Java. Ключова відмінність від Geth та Erigon: Besu підтримує permissioned мережи через smart contract-based permissioning, кілька enterprise consensus алгоритмів (QBFT, IBFT 2.0, Clique), та нативно інтегрується в Hyperledger екосистему.

Вибирають Besu коли потрібна EVM-сумісність (смарт-контракти на Solidity, інструменти Hardhat/Foundry, MetaMask з коробки) плюс контроль над учасниками мережі — на відміну від Fabric де потрібен кастомний chaincode для кожної операції.

Архітектура permissioned мережи

┌──────────────────────────────────────────────────────┐
│                    Besu Network                       │
│                                                       │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐           │
│  │ Bootnode │  │Validator1│  │Validator2│ ...        │
│  │(no vote) │  │(QBFT)    │  │(QBFT)    │           │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘           │
│       └─────────────┴─────────────┘                   │
│                    P2P Network                         │
│                                                       │
│  ┌──────────────────────────────────────────────┐    │
│  │         Permissioning Contracts               │    │
│  │  NodePermissioning  AccountPermissioning      │    │
│  └──────────────────────────────────────────────┘    │
└──────────────────────────────────────────────────────┘

QBFT vs IBFT 2.0: вибір консенсусу

QBFT (Quorum Byzantine Fault Tolerance) — рекомендований алгоритм для нових мереж. Фінальність негайно після включення в блок, немає форків. Терпить до (n-1)/3 Byzantine нод — при 4 валідаторах переживаємо 1 злонамеренний.

IBFT 2.0 — попередник QBFT, схожі властивості, менш продуктивний при більших validator sets. Залишений для обратної сумісності.

Clique — PoA алгоритм, аналог Ethereum Goerli. Менш суворі гарантії фінальності, але простіше в операції. Для dev/staging.

Мінімальне число валідаторів для QBFT: 4 (терпить 1 отказ). Для production: 4–7 валідаторів від різних організацій.

Genesis файл

{
  "config": {
    "chainId": 1337,
    "berlinBlock": 0,
    "londonBlock": 0,
    "qbft": {
      "blockperiodseconds": 2,
      "epochlength": 30000,
      "requesttimeoutseconds": 4,
      "blockreward": "0",
      "validatorcontractaddress": "0x0000000000000000000000000000000000008888"
    }
  },
  "nonce": "0x0",
  "timestamp": "0x5b3d92d7",
  "gasLimit": "0x1fffffffffffff",
  "difficulty": "0x1",
  "mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": {
    "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73": {
      "privateKey": "...",
      "comment": "validator 1",
      "balance": "0xad78ebc5ac6200000"
    }
  },
  "extraData": "0x..."
}

extraData для QBFT повинен містити RLP-кодований список адрес початкових валідаторів. Використовуємо besu operator generate-blockchain-config для генерації genesis з ключами:

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

Генерує genesis.json + директорії для кожної ноди з ключами та enode URL.

Docker Compose для локальної мережи

version: '3.8'

services:
  bootnode:
    image: hyperledger/besu:latest
    command: |
      --node-private-key-file=/opt/besu/keys/bootnode/key
      --data-path=/opt/besu/data
      --genesis-file=/opt/besu/config/genesis.json
      --rpc-http-enabled=true
      --rpc-http-host=0.0.0.0
      --rpc-http-port=8545
      --rpc-http-api=ETH,NET,QBFT,ADMIN,WEB3
      --host-allowlist=*
      --rpc-http-cors-origins=all
      --p2p-port=30303
      --logging=INFO
    volumes:
      - ./config:/opt/besu/config:ro
      - ./keys:/opt/besu/keys:ro
      - bootnode-data:/opt/besu/data
    ports:
      - "8545:8545"
      - "30303:30303"

  validator1:
    image: hyperledger/besu:latest
    depends_on: [bootnode]
    command: |
      --node-private-key-file=/opt/besu/keys/validator1/key
      --data-path=/opt/besu/data
      --genesis-file=/opt/besu/config/genesis.json
      --bootnodes=enode://${BOOTNODE_PUBKEY}@bootnode:30303
      --rpc-http-enabled=true
      --rpc-http-host=0.0.0.0
      --rpc-http-port=8546
      --rpc-http-api=ETH,NET,QBFT
      --p2p-port=30304
    volumes:
      - ./config:/opt/besu/config:ro
      - ./keys:/opt/besu/keys:ro
      - validator1-data:/opt/besu/data

volumes:
  bootnode-data:
  validator1-data:

Permissioning: контроль учасників

Besu підтримує два рівні permissioning:

Node permissioning — які ноди можуть підключатися до P2P мережи. Smart contract-based: список дозволених enode URL зберігається в контракті, динамічно оновлюється без рестарту нод.

Account permissioning — які accounts можуть відправляти транзакції та деплоїти контракти. Також через контракт.

# Включення permissioning у конфісу ноди
--permissions-nodes-contract-enabled=true
--permissions-nodes-contract-address=0x0000000000000000000000000000000000009999
--permissions-accounts-contract-enabled=true  
--permissions-accounts-contract-address=0x0000000000000000000000000000000000008888

Контракти permissioning деплоятся при genesis (додаємо в alloc з bytecode) або після запуску мережи. Besu надає reference implementation:

git clone https://github.com/ConsenSys/permissioning-smart-contracts
cd permissioning-smart-contracts
npm install
# Деплой через Hardhat з вказанням початкових валідаторів та нод

Моніторинг та управління

# Список поточних валідаторів через QBFT API
curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockNumber","params":["latest"],"id":1}' \
  http://localhost:8545

# Додання нового валідатора (потребує BFT majority голосування)
curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_proposeValidatorVote","params":["0xNewValidatorAddress",true],"id":1}' \
  http://localhost:8545

Grafana + Prometheus: Besu експортує метрики у Prometheus формат на порту 9545 (--metrics-enabled=true --metrics-host=0.0.0.0 --metrics-port=9545). Офіційний Grafana dashboard: github.com/ConsenSys/quorum-monitoring.

Інтеграція з існуючими інструментами

Besu — EVM-сумісний, тому працюють без змін:

  • Hardhat/Foundry — деплой контрактів, тесты
  • MetaMask — додати кастомну мережу через Custom RPC
  • ethers.js / web3.js / viem — без змін коду
  • OpenZeppelin контракти — повністю сумісні
  • The Graph — можна деплоїти локальний graph-node для індексації

Різниця: private/permissioned нода — це ваш власний RPC endpoint, а не загальнодоступний.

Типові етапи деплою

Етап Задачі Час
Дизайн мережи Кількість організацій, валідаторів, параметри консенсусу 1–2 дні
Genesis Генерація ключів, genesis.json, alloc 1 день
Інфраструктура Сервера, Docker/K8s, networking 2–3 дні
Деплой Запуск нод, синхронізація, перевірка 1–2 дні
Permissioning Деплой контрактів, налаштування ролей 1–2 дні
Смарт-контракти Деплой бізнес-логіки залежить
Моніторинг Prometheus, Grafana, алерти 1 день
Документація Runbook, onboarding для операторів 1–2 дні