Hyperledger Besu
Использование Besu в качестве DLT-слоя
Hyperledger Besu
Для реализации реестра ЦФА выбрана платформа Hyperledger Besu — высокопроизводительный Ethereum-клиент с открытым исходным кодом, поддерживающий приватные сети и корпоративные стандарты безопасности.
Почему Hyperledger Besu?
- EVM-совместимость: Позволяет использовать зрелую экосистему смарт-контрактов Solidity для реализации логики ЦФА.
- QBFT Консенсус: Обеспечивает мгновенную финальность транзакций (Instant Finality) и устойчивость к сбоям до 1/3 нод, что критично для финансовых операций.
- Permissioning: Встроенные механизмы контроля доступа на уровне нод и аккаунтов.
- Плагинная архитектура: Возможность расширения функционала (например, добавление поддержки российских криптографических стандартов).
Конфигурация сети
Сеть развернута в приватном контуре и состоит из валидаторов и архивных нод.
Параметры QBFT (Genesis)
{
"config": {
"chainId": 1337,
"berlinBlock": 0,
"qbft": {
"blockperiodseconds": 2,
"epochlength": 30000,
"requesttimeoutseconds": 4
}
},
"gasLimit": "0x1fffffffffffff",
"difficulty": "0x1"
}Besu Connector Service
Для интеграции с DLT используется отдельный микросервис apps/besu-connector. Он общается с другими сервисами только через Kafka и инкапсулирует JSON‑RPC вызовы в Besu.
Kafka темы
- Команды:
besu.command.sendRawTransactionbesu.command.getBlockNumberbesu.command.getTransactionReceipt
- События:
besu.event.transactionSubmittedbesu.event.transactionFailedbesu.event.transactionReceiptReadybesu.event.blockNumberRead
Локальный запуск через Docker Compose
Для локальной разработки сеть Besu поднимается через docker/docker-compose.besu-*.yml. Генерация genesis.json и ключей валидаторов выполняется автоматически при старте besu-init.
Генерация genesis и ключей валидаторов
Besu предоставляет операторский под‑командный инструмент для создания genesis.json и ключей:
besu operator generate-blockchain-config \
--config-file=qbft-config.json \
--to=network \
--private-key-file-name=keyФайл qbft-config.json содержит параметры QBFT и количество валидаторов. Результатом является genesis.json и набор директорий в network/keys.
Структура файлов
infra/besu/
qbft-config.json
network/
genesis.json
keys/Команды запуска
# DLT сеть создается базовым compose (или вручную: docker network create maniton_dlt)
# Генерация genesis.json и ключей валидаторов
docker compose -f docker/docker-compose.besu-init.yml up -d
# Запуск валидаторов
docker compose -f docker/docker-compose.besu-node1.yml up -d
docker compose -f docker/docker-compose.besu-node2.yml up -d
docker compose -f docker/docker-compose.besu-node3.yml up -dRPC и P2P порты
besu-node1: RPC8545, P2P30303besu-node2: RPC8546, P2P30304besu-node3: RPC8547, P2P30305
Порты можно переопределить в .env (пример — .env.example).
Проверка валидаторов
curl -X POST \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockNumber","params":["latest"],"id":1}' \
http://localhost:8545Permissioning
Доступ к нодам и аккаунтам ограничивается механизмами permissioning Besu. В прод‑контуре включается:
- Node Permissioning: белый список enode‑адресов валидаторов и архивных нод.
- Account Permissioning: разрешенные аккаунты для отправки транзакций.
Конфигурация хранится в управляемых файлах сети и синхронизируется с реестром валидаторов/операторов.
Важные примечания
- Ключи валидаторов генерируются в
infra/besu/network/keysавтоматически. - Если требуется пересоздать сеть, удалите
infra/besu/networkи volume узлов Besu.
Интеграция с ГОСТ 34.11 / 34.10
Для соответствия требованиям регулятора (ЦБ РФ) используется гибридная модель:
- На уровне DLT: Besu обрабатывает стандартные транзакции (ECDSA secp256k1).
- Слой CFA-Core: На уровне Rust-модуля
CFA-Coreвычисляется дополнительный хэш блока по стандарту ГОСТ 34.11-2012.
Безопасность и ключи
- Web3Signer: Для подписания транзакций ноды не хранят приватные ключи. Вместо этого используется Web3Signer, подключенный к HSM (Hardware Security Module).
- RBAC: Доступ к RPC-интерфейсу Besu ограничен для внешних сервисов. Только авторизованные модули (CFA-Core) имеют право на отправку транзакций.
Мониторинг реестра
Для клиента в мобильном приложении данные из Besu агрегируются в Ledger-DB. При просмотре деталей актива клиент может видеть:
- Идентификатор транзакции в DLT.
- Хэш блока (SHA-256 + ГОСТ).
- Подтверждение от валидаторов сети.