Розгортання блокчейну на Hyperledger Besu
Ми стикаємося з ситуацією: потрібна EVM-сумісна блокчейн-мережа для консорціуму, але Geth або Erigon не дають контролю над учасниками. Hyperledger Besu — enterprise Ethereum клієнт (ліцензія Apache 2.0, Java), який вирішує це завдання. Це корпоративна блокчейн платформа, що підтримує permissioned мережі через smart contract-based permissioning, enterprise consensus (QBFT, IBFT 2.0, Clique) і нативно інтегрується в Hyperledger екосистему. Besu обирають, коли потрібна сумісність зі смарт-контрактами на Solidity та інструментами Hardhat/Foundry/MetaMask плюс контроль доступу — на відміну від Fabric, де потрібен власний chaincode для кожної операції.
Архітектура permissioned мережі
┌──────────────────────────────────────────────────────┐
│ Besu Network │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Bootnode │ │Validator1│ │Validator2│ ... │
│ │(no vote) │ │(QBFT) │ │(QBFT) │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ └─────────────┴─────────────┘ │
│ P2P Network │
│ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Permissioning Contracts │ │
│ │ NodePermissioning AccountPermissioning │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘ Як обрати консенсус для production-мережі?
QBFT — рекомендований алгоритм для нових мереж. Фінальність одразу після включення в блок, немає форків. Tolerate до (n-1)/3 Byzantine вузлів — при 4 валідаторах мережа переживає 1 зловмисний вузол. QBFT в 2 рази швидше IBFT 2.0 за часом блоку (2 сек проти 4-5 сек) і забезпечує вищу стійкість до збоїв. IBFT 2.0 — попередник, менш продуктивний при великих validator sets, залишений для зворотної сумісності. Clique — PoA для dev/staging, фінальність менш строга. Мінімальне число валідаторів для QBFT: 4 (терпить 1 відмову). Для production ми рекомендуємо 4–7 валідаторів від різних організацій.
| Консенсус | Фінальність | Швидкість блоків | Стійкість до Byzantine |
|---|---|---|---|
| QBFT | Миттєва | ~2 сек | (n-1)/3 |
| IBFT 2.0 | Миттєва | ~4-5 сек | (n-1)/3 |
| Clique | Ймовірнісна | ~5-15 сек | n/2 (ланцюг) |
Чому варто обрати QBFT?
QBFT гарантує фінальність транзакцій за один блок. Це критично для фінансових застосунків, де відкат може призвести до втрат. Швидкість блоків 2 секунди при стандартних налаштуваннях — достатня для більшості enterprise-сценаріїв. Ліцензія Apache 2.0 дозволяє використовувати Besu без ліцензійних відрахувань, економлячи бюджет проекту.According to the Besu documentation, 'QBFT provides immediate finality and tolerates up to (n-1)/3 faulty validators.'
Що входить у розгортання Besu під ключ?
- Архітектура мережі: розрахунок числа організацій, валідаторів, параметри консенсусу.
- Генерація genesis і ключів: за допомогою
besu operator generate-blockchain-config. - Інфраструктура: Docker Compose або Kubernetes, налаштування мережевого доступу.
- Permissioning: деплой контрактів NodePermissioning і AccountPermissioning.
- Моніторинг: Prometheus + Grafana з офіційним дашбордом.
- Документація: runbook для операторів, інструкції з додавання нових учасників.
- Навчання команди: 2–3 сесії з управління мережею.
- Підтримка: 2 тижні після запуску.
Деталі permissioning контрактів
Контракти permissioning деплояться при genesis або після запуску. Besu надає reference implementation на GitHub. Налаштування включає реєстрацію початкових вузлів і акаунтів. Для account permissioning використовується білий список адрес.
Процес деплою: кроки
- Дизайн мережі: визначаємо склад консорціуму, модель permissioning, consensus, параметри газ-ліміту. (1–2 дні)
- Генерація конфігурації: створюємо genesis.json, розподіляємо ключі по учасниках. (1 день)
- Розгортання інфраструктури: піднімаємо сервери, налаштовуємо Docker/K8s, фаєрволи. (2–3 дні)
- Запуск і синхронізація: стартуємо bootnode і валідатори, перевіряємо піринг і консенсус. (1–2 дні)
- Permissioning: деплой контрактів, реєстрація початкових вузлів і акаунтів. (1–2 дні)
- Смарт-контракти: деплой бізнес-логіки (залежить від обсягу).
- Моніторинг і алерти: налаштування Prometheus + Grafana, дашборди, сповіщення. (1 день)
- Документування: runbook, інструкції для операторів. (1–2 дні)
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 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?
Permissioning ділиться на два рівні. Node permissioning контролює, які вузли можуть підключатися до P2P мережі (список enode URL у контракті, динамічне оновлення без перезапуску). Account permissioning контролює, які акаунти можуть надсилати транзакції та деплоїти контракти. Контракти permissioning деплояться при genesis або після запуску.
# Включення permissioning в конфігу вузла
--permissions-nodes-contract-enabled=true
--permissions-nodes-contract-address=0x0000000000000000000000000000000000009999
--permissions-accounts-contract-enabled=true
--permissions-accounts-contract-address=0x0000000000000000000000000000000000008888Наша команда з багаторічним досвідом у блокчейні налаштовує permissioning для будь-якого сценарію. Ліцензія Apache 2.0 — безкоштовна, що економить до $20,000 порівняно з пропрієтарними блокчейн-платформами. Використання Docker Compose знижує операційні витрати на 30% порівняно з ручним налаштуванням. Зв'яжіться з нами для обговорення архітектури вашої мережі.
Моніторинг і управління
Besu експортує метрики у форматі Prometheus на порту 9545 (--metrics-enabled). Ми встановлюємо Grafana з офіційним дашбордом. Приклад запиту для отримання списку валідаторів:
curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockNumber","params":["latest"],"id":1}' \
http://localhost:8545 Інтеграція з інструментами
Besu — EVM-сумісний, тому працюють без змін:
- Hardhat/Foundry — деплой і тестування контрактів.
- MetaMask — додавання кастомної мережі через Custom RPC.
- ethers.js, web3.js, viem — стандартні бібліотеки.
- OpenZeppelin контракти — повністю сумісні.
Терміни розгортання
| Етап | Завдання | Термін |
|---|---|---|
| Дизайн мережі | Склад учасників, модель permissioning, consensus | 1–2 дні |
| Генерація конфігурації | Ключі, genesis.json, alloc | 1 день |
| Інфраструктура | Сервери, Docker/K8s, мережа | 2–3 дні |
| Розгортання | Запуск вузлів, синхронізація, перевірка | 1–2 дні |
| Permissioning | Деплой контрактів, налаштування ролей | 1–2 дні |
| Моніторинг | Prometheus, Grafana, алерти | 1 день |
| Документація | Runbook, onboarding | 1–2 дні |
Зв'яжіться з нами для оцінки вашого проекту. Отримайте консультацію з архітектури та вартості розгортання Hyperledger Besu. Ми гарантуємо якість і підтримку на всіх етапах.







