Розгортання блокчейну на 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. Ми гарантуємо якість і підтримку на всіх етапах.







