epic-server.toml
Полный справочник по файлу конфигурации узла. Показанные значения по умолчанию соответствуют тому, что записывает свежая установка mainnet.
Каждый ключ требует перезапуска для вступления в силу. Файл читается один раз при запуске; сигнал перезагрузки не поддерживается.
Расположение файла
Узел ищет конфигурацию в следующем порядке:
--config_file <path>, если указан. Отсутствие файла по явному пути является фатальной ошибкой../epic-server.tomlв текущем рабочем каталоге.~/.epic/<network>/epic-server.toml, создаётся со значениями по умолчанию, если отсутствует.
<network> — это main, floo, user или auto.
epic server config записывает новый epic-server.toml в текущий каталог с путями, указывающими на этот каталог. Перезапись
существующего файла не выполняется.
Усиленная отправная точка
Сгенерированный файл содержит все ключи со значениями по умолчанию. Минимальная защищённая конфигурация отличается от этих значений по умолчанию в следующих ключах:
[server]
# Только loopback. Для доступа с другого хоста используйте аутентифицирующий прокси.
api_http_addr = "127.0.0.1:3413"
api_secret_path = "/home/you/.epic/main/.api_secret"
# Необязательный, создаётся вручную: узел этот файл не записывает.
foreign_api_secret_path = "/home/you/.epic/main/.foreign_api_secret"
# Хранить полную историю блоков без обрезки.
archive_mode = true
# skip_pow_validation применяется только до последней контрольной точки. Установите false, чтобы проверить все
# исторические доказательства работы самостоятельно.
# skip_pow_validation = true
# disable_checkpoints = false
[server.p2p_config]
host = "0.0.0.0"
port = 3414
[logging]
log_to_file = true
file_log_level = "Info"
См. аутентификация и TLS для foreign secret и настройка узла и кошелька для начала работы.
[server]
| Ключ | Тип | Default | Назначение |
|---|---|---|---|
db_root | string | ~/.epic/main/chain_data | Каталог, содержащий базы данных цепочки и пиров |
api_http_addr | host:port | 127.0.0.1:3413 | Адрес прослушивания для HTTP API |
api_secret_path | string, optional | ~/.epic/main/.api_secret | Секрет базовой аутентификации для /v1 и /v2/owner. Комментирование не открывает их: без секрета оба возвращают 401 на каждый вызов, кроме GET /v1/version и одного простого get_status. См. учётные данные узла |
foreign_api_secret_path | string, optional | .foreign_api_secret, относительный | Секрет базовой аутентификации для /v2/foreign. Создайте файл вручную. Узел с установленным секретом не может обслуживать epic-wallet 4.1.0. См. аутентификацию API |
foundation_path | string, optional | /usr/share/epic/foundation.json, или .\foundation.json на Windows | Предварительно сгенерированные данные foundation coinbase. Опустите ключ или оставьте его пустым, чтобы использовать копию, встроенную в бинарник |
tls_certificate_file | string, optional | unset | Цепочка PEM-сертификатов. Установка переключает API на HTTPS |
tls_certificate_key | string, optional | unset | Приватный ключ PEM. Обязателен, если сертификат задан |
chain_type | enum | Mainnet | Mainnet, Floonet, UserTesting, AutomatedTesting |
chain_validation_mode | enum | Disabled | EveryBlock запускает полную валидацию цепочки после каждого блока |
archive_mode | bool, optional | false | true сохраняет полную историю блоков вместо обрезки |
skip_pow_validation | bool, optional | true | Пропустить валидацию доказательства работы во время синхронизации для блоков в пределах диапазона с контрольной точкой. Применяется только до последней контрольной точки |
disable_checkpoints | bool, optional | false | В тестовой сети расширяет пропуск за последнюю контрольную точку для блоков, находящихся более чем на 1,000 ниже вершины цепочки. Действует только когда skip_pow_validation равно true. Игнорируется на mainnet |
skip_sync_wait | bool, optional | false | Пропустить ожидание синхронизации при запуске |
header_sync_timeout | секунды | 10 | Таймаут ожидания подтверждения наличия новых заголовков. Ноль или отрицательное значение заменяется на 10 |
run_tui | bool, optional | false | Запустить терминальный интерфейс. Включение отключает вывод в stdout |
only_randomx | bool, optional | false | Принудительно применить политику блоков только с RandomX в тестовой сети. См. политику блоков |
no_progpow | bool, optional | false | Удалить ProgPow из политики блоков в тестовой сети. См. политику блоков |
run_test_miner | bool, optional | false | Встроенный майнер, только Cuckoo. Майнинг цепочки требует Stratum и внешнего майнера. См. запуск локальной сети |
test_miner_wallet_url | string, optional | unset | Слушатель кошелька, получающий coinbase тестового майнера. Если не задан, используется http://127.0.0.1:13415 |
На mainnet имеет значение только skip_pow_validation. При значении true доказательство работы пропускается для
блоков до последней контрольной точки на высоте блока 3,710,000 и полностью проверяется для каждого блока
выше неё. disable_checkpoints расширяет это только в тестовой сети. См. настройка узла и кошелька для
описания того, что пропускает каждый вариант.
[server.p2p_config]
| Ключ | Тип | Default | Назначение |
|---|---|---|---|
host | IP | 0.0.0.0 | Интерфейс для прослушивания. 127.0.0.1 ограничивает до локального |
port | u16 | 3414, 13414 floonet, 23414 usernet | Порт P2P-прослушивания |
seeding_type | enum | DNSSeed, None на usernet | None, List, DNSSeed, Programmatic. DNSSeed запрашивает node.epiccash.com:3414 на mainnet и floonet.epiccash.com:13414 на floonet. См. сети для случаев использования List |
seeds | массив ip:port, необязательный | не задано в коде, четыре адреса в сгенерированном файле | Используется когда seeding_type = "List". Запуск завершается ошибкой, если этот тип задан без списка |
capabilities | флаги u32 | 31 | Что узел анонсирует. См. таблицу битов ниже |
peer_min_preferred_outbound_count | u32, optional | 4 | Исходящие пиры, к которым узел постоянно пытается подключиться, и количество, которого необходимо достичь, прежде чем состояние синхронизации покинет AwaitingPeers. Отсутствует в сгенерированном файле. Задайте 0 в частной цепочке, где сервер Stratum иначе отказывает в выдаче работы |
peers_allow | массив, необязательно | unset | Подключаться только к этим пирам |
peers_deny | массив, необязательно | unset | Никогда не подключаться к этим пирам |
peers_preferred | массив, необязательно | unset | Предпочтительные пиры, активный дозвон |
ban_window | секунды, необязательно | 10800 | Как долго заблокированный пир остаётся заблокированным |
peer_max_inbound_count | u32, optional | 128 | Максимум входящих пиров |
peer_max_outbound_count | u32, optional | 128 | Максимум исходящих пиров |
peer_listener_buffer_count | u32, optional | 8 | Запас сверх лимита входящих подключений для помощи при начальной загрузке. Также ограничивает количество одновременно ожидающих входящих рукопожатий — по одному на IP-адрес |
dandelion_peer | ip:port, необязательный | unset | Закреплённый релей Dandelion |
my_onion_addr | string, optional | unset | Собственный onion-адрес этого узла |
Четыре адреса, которые записывает сгенерированный файл (config/src/comments.rs:273):
seeds = ["95.217.197.180:3414","5.161.127.56:3414","5.75.242.4:3414","5.78.71.29:3414"]
Биты возможностей:
| Бит | Значение | Значение |
|---|---|---|
HEADER_HIST | 1 | Отдаёт историю заголовков |
TXHASHSET_HIST | 2 | Отдаёт историю txhashset |
PEER_LIST | 4 | Отдаёт списки пиров |
TX_KERNEL_HASH | 8 | Отдаёт хеши ядер |
HEADER_FASTSYNC | 16 | Поддерживает быструю синхронизацию заголовков |
ONIONSTEM | 32 | Поддерживает stem-транзакции через onion-маршрут |
Значение по умолчанию 31 — это все биты, кроме ONIONSTEM.
[server.pool_config]
| Ключ | Тип | Default | Назначение |
|---|---|---|---|
accept_fee_base | u64 | 100000 | Минимальная комиссия на единицу веса транзакции для принятия в пул |
max_pool_size | usize | 50000 | Максимальное количество транзакций в основном пуле |
max_stempool_size | usize | 50000 | Максимальное количество транзакций в стемпуле |
mineable_max_weight | usize | 40000, 150 на usernet и при автоматизированном тестировании | Максимальный суммарный вес, упаковываемый майнером в блок |
[server.dandelion_config]
| Ключ | Тип | Default | Назначение |
|---|---|---|---|
epoch_secs | u16 | 600 | Длина одной эпохи Dandelion |
embargo_secs | u16 | 180 | Транслировать в сеть стемированную транзакцию, если она не появилась до истечения этого времени |
aggregation_secs | u16 | 30 | Окно агрегации перед релеем |
stem_probability | u8 процент | 90 | Вероятность режима стема для эпохи |
always_stem_our_txs | bool | true | Всегда стемировать транзакции, поданные через собственный API |
[server.stratum_mining_config]
| Ключ | Тип | Default | Назначение |
|---|---|---|---|
enable_stratum_server | bool, optional | false на каждой сети | Запустить сервер Stratum. Сгенерированный конфиг содержит false для любой сети |
stratum_server_addr | string, optional | 127.0.0.1:3416 | Адрес прослушивания Stratum |
attempt_time_per_block | секунды | 15 | Сколько времени майнить один заголовок перед его пересборкой |
cuckatoo_minimum_share_difficulty | u64 | 3 | Минимальная сложность шары для воркеров Cuckatoo |
randomx_minimum_share_difficulty | u64 | 4000, 1 при usertesting | Минимальная сложность шары для воркеров RandomX |
progpow_minimum_share_difficulty | u64 | 200000 | Минимальная сложность шары для воркеров ProgPow |
wallet_listener_url | string | http://127.0.0.1:3415 | Слушатель кошелька, получающий награды coinbase |
burn_reward | bool | false | Отбросить награду за блок вместо выплаты кошельку. Только для тестирования |
Оставьте секцию [server.stratum_mining_config] и установите enable_stratum_server = false, чтобы отключить майнинг. См. Stratum для описания
протокола.
[server.webhook_config]
| Ключ | Тип | Default | Назначение |
|---|---|---|---|
tx_received_url | string, optional | unset | POST-цель при получении транзакции от пира |
header_received_url | string, optional | unset | POST-цель при получении заголовка |
block_received_url | string, optional | unset | POST-цель при получении блока |
block_accepted_url | string, optional | unset | POST-цель при принятии блока этим узлом, включая реорги |
nthreads | u16 | 4 | Рабочие потоки для доставки webhook |
timeout | секунды | 10 | Таймаут HTTP-запроса |
[server.tor]
| Ключ | Тип | Default | Назначение |
|---|---|---|---|
socks_proxy_addr | string | 127.0.0.1:9050 | Адрес SOCKS-прокси, записываемый в сгенерированный torrc |
send_config_dir | string | . | Каталог для torrc, data/ и адресов onion-сервиса |
Маршрутизация через onion stem также требует, чтобы capabilities включал бит ONIONSTEM, значение 32, которое
значение по умолчанию 31 исключает.
[logging]
| Ключ | Тип | Default | Назначение |
|---|---|---|---|
log_to_stdout | bool | true | Логировать в stdout |
stdout_log_level | enum | Info | Error, Warning, Info, Debug, Trace |
log_to_file | bool | false | Логировать в файл |
file_log_level | enum | Debug | Уровень для файлового лога |
log_file_path | string | ~/.epic/main/epic-server.log | Путь к файлу лога |
log_file_append | bool | true | Дописывать, а не перезаписывать при каждом запуске |
log_max_size | bytes, optional | 16777216 | Ротация при превышении этого размера. Закомментируйте для отключения ротации |
log_max_files | u32, optional | 32 | Сколько ротированных файлов хранить |
tui_running | bool, optional | unset | Устанавливается из run_tui при запуске |
Новый узел не записывает лог-файл, поскольку log_to_file равно false, а log_file_path заполнено. Установите log_to_file = true
для записи лога на диск.
Исходный код
Эти значения берутся из структур конфигурации и их значений по умолчанию:
servers/src/common/types.rsдля[server],[server.webhook_config]и[server.tor]p2p/src/types.rsдля[server.p2p_config]pool/src/types.rsдля[server.pool_config]и[server.dandelion_config]util/src/logger.rs:65для[logging], общего с кошелькомconfig/src/comments.rsдля аннотированного шаблона, записываемого на дискconfig/src/config.rsдля обнаружения файлов и перезаписи путей