Пример конфигурации: production-нода¶
Production-нода (нода делегата / block producer) подписывает блоки от имени аккаунта из графика продюсеров. Это самый чувствительный с точки зрения безопасности профиль: компрометация signature-provider равна компрометации ключа продюсера.
Зачем именно так¶
producer_pluginобязателен;producer-nameиsignature-provider— минимальная пара для подписи блоков. На проде обычно используютKEOSD:или аппаратный провайдер, а неKEY:с приватным ключом в файле.pause-on-startup = true— после рестарта производство не начнётся, пока вы явно не возобновите его (защита от двойного выпуска при ошибках в инфраструктуре). Перед включением убедитесь, что цепочка синхронизирована и график корректен.enable-stale-production = false(по умолчанию) — не выпускать блоки, если цепочка считается устаревшей; снижает риск некорректного поведения при сетевых сбоях.api-accept-transactions = false— публичная «касса» транзакций не на BP; транзакции приходят по P2P от API- и других нод.- HTTP на
127.0.0.1— еслиhttp_pluginнужен только для локальногоcleos/мониторинга. Публичный RPC на продюсере обычно не нужен и увеличивает атакуемую поверхность. - P2P — узкий круг — соединения с другими BP и доверенными relay; опции вроде
allowed-connection,peer-keyиp2p-auto-bp-peerпомогают ограничить, кто может подключаться (см. комментарии вcoopos/config.example.ini). validation-mode = full— полная проверка входящих блоков.read-mode = head— состояние до головы цепочки, что соответствует роли продюсера.
Тюнинг cpu-effort-percent, producer-threads, chain-threads зависит от железа и нагрузки сети; начните с значений из примера и корректируйте по метрикам.
Фрагмент config.ini¶
plugin = eosio::chain_plugin
plugin = eosio::net_plugin
plugin = eosio::http_plugin
plugin = eosio::producer_plugin
producer-name = yourproducer
# Пример с keosd; в бою — безопасное хранилище ключей, не файл с KEY:
signature-provider = YOUR_BLOCK_SIGNING_PUBKEY=KEOSD:http://127.0.0.1:8900
pause-on-startup = true
enable-stale-production = false
validation-mode = full
read-mode = head
http-server-address = 127.0.0.1:8888
http-validate-host = true
api-accept-transactions = false
p2p-listen-endpoint = 0.0.0.0:9876
p2p-server-address = YOUR_BP_PUBLIC:9876
p2p-peer-address = peer-bp1.example.com:9876
p2p-peer-address = peer-bp2.example.com:9876
chain-threads = 4
producer-threads = 2
cpu-effort-percent = 80
last-block-cpu-effort-percent = 80
max-transaction-time = 30
keosd-provider-timeout = 5
Дополнительно настройте файрвол так, чтобы P2P-порт был доступен только нужным пирам, а не всему интернету, если политика сети это допускает.