Перейти к основному содержимому

epic-server.toml

Полный справочник по файлу конфигурации узла. Показанные значения по умолчанию соответствуют тому, что записывает свежая установка mainnet.

Каждый ключ требует перезапуска для вступления в силу. Файл читается один раз при запуске; сигнал перезагрузки не поддерживается.

Расположение файла​

Узел ищет конфигурацию в следующем порядке:

  1. --config_file <path>, если указан. Отсутствие файла по явному пути является фатальной ошибкой.
  2. ./epic-server.toml в текущем рабочем каталоге.
  3. ~/.epic/<network>/epic-server.toml, создаётся со значениями по умолчанию, если отсутствует.

<network> — это main, floo, user или auto.

epic server config записывает новый epic-server.toml в текущий каталог с путями, указывающими на этот каталог. Перезапись существующего файла не выполняется.

Усиленная отправная точка​

Сгенерированный файл содержит все ключи со значениями по умолчанию. Минимальная защищённая конфигурация отличается от этих значений по умолчанию в следующих ключах:

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_rootstring~/.epic/main/chain_dataКаталог, содержащий базы данных цепочки и пиров
api_http_addrhost:port127.0.0.1:3413Адрес прослушивания для HTTP API
api_secret_pathstring, optional~/.epic/main/.api_secretСекрет базовой аутентификации для /v1 и /v2/owner. Комментирование не открывает их: без секрета оба возвращают 401 на каждый вызов, кроме GET /v1/version и одного простого get_status. См. учётные данные узла
foreign_api_secret_pathstring, optional.foreign_api_secret, относительныйСекрет базовой аутентификации для /v2/foreign. Создайте файл вручную. Узел с установленным секретом не может обслуживать epic-wallet 4.1.0. См. аутентификацию API
foundation_pathstring, optional/usr/share/epic/foundation.json, или .\foundation.json на WindowsПредварительно сгенерированные данные foundation coinbase. Опустите ключ или оставьте его пустым, чтобы использовать копию, встроенную в бинарник
tls_certificate_filestring, optionalunsetЦепочка PEM-сертификатов. Установка переключает API на HTTPS
tls_certificate_keystring, optionalunsetПриватный ключ PEM. Обязателен, если сертификат задан
chain_typeenumMainnetMainnet, Floonet, UserTesting, AutomatedTesting
chain_validation_modeenumDisabledEveryBlock запускает полную валидацию цепочки после каждого блока
archive_modebool, optionalfalsetrue сохраняет полную историю блоков вместо обрезки
skip_pow_validationbool, optionaltrueПропустить валидацию доказательства работы во время синхронизации для блоков в пределах диапазона с контрольной точкой. Применяется только до последней контрольной точки
disable_checkpointsbool, optionalfalseВ тестовой сети расширяет пропуск за последнюю контрольную точку для блоков, находящихся более чем на 1,000 ниже вершины цепочки. Действует только когда skip_pow_validation равно true. Игнорируется на mainnet
skip_sync_waitbool, optionalfalseПропустить ожидание синхронизации при запуске
header_sync_timeoutсекунды10Таймаут ожидания подтверждения наличия новых заголовков. Ноль или отрицательное значение заменяется на 10
run_tuibool, optionalfalseЗапустить терминальный интерфейс. Включение отключает вывод в stdout
only_randomxbool, optionalfalseПринудительно применить политику блоков только с RandomX в тестовой сети. См. политику блоков
no_progpowbool, optionalfalseУдалить ProgPow из политики блоков в тестовой сети. См. политику блоков
run_test_minerbool, optionalfalseВстроенный майнер, только Cuckoo. Майнинг цепочки требует Stratum и внешнего майнера. См. запуск локальной сети
test_miner_wallet_urlstring, optionalunsetСлушатель кошелька, получающий coinbase тестового майнера. Если не задан, используется http://127.0.0.1:13415

На mainnet имеет значение только skip_pow_validation. При значении true доказательство работы пропускается для блоков до последней контрольной точки на высоте блока 3,710,000 и полностью проверяется для каждого блока выше неё. disable_checkpoints расширяет это только в тестовой сети. См. настройка узла и кошелька для описания того, что пропускает каждый вариант.

[server.p2p_config]​

КлючТипDefaultНазначение
hostIP0.0.0.0Интерфейс для прослушивания. 127.0.0.1 ограничивает до локального
portu163414, 13414 floonet, 23414 usernetПорт P2P-прослушивания
seeding_typeenumDNSSeed, None на usernetNone, List, DNSSeed, Programmatic. DNSSeed запрашивает node.epiccash.com:3414 на mainnet и floonet.epiccash.com:13414 на floonet. См. сети для случаев использования List
seedsмассив ip:port, необязательныйне задано в коде, четыре адреса в сгенерированном файлеИспользуется когда seeding_type = "List". Запуск завершается ошибкой, если этот тип задан без списка
capabilitiesфлаги u3231Что узел анонсирует. См. таблицу битов ниже
peer_min_preferred_outbound_countu32, optional4Исходящие пиры, к которым узел постоянно пытается подключиться, и количество, которого необходимо достичь, прежде чем состояние синхронизации покинет AwaitingPeers. Отсутствует в сгенерированном файле. Задайте 0 в частной цепочке, где сервер Stratum иначе отказывает в выдаче работы
peers_allowмассив, необязательноunsetПодключаться только к этим пирам
peers_denyмассив, необязательноunsetНикогда не подключаться к этим пирам
peers_preferredмассив, необязательноunsetПредпочтительные пиры, активный дозвон
ban_windowсекунды, необязательно10800Как долго заблокированный пир остаётся заблокированным
peer_max_inbound_countu32, optional128Максимум входящих пиров
peer_max_outbound_countu32, optional128Максимум исходящих пиров
peer_listener_buffer_countu32, optional8Запас сверх лимита входящих подключений для помощи при начальной загрузке. Также ограничивает количество одновременно ожидающих входящих рукопожатий — по одному на IP-адрес
dandelion_peerip:port, необязательныйunsetЗакреплённый релей Dandelion
my_onion_addrstring, optionalunsetСобственный onion-адрес этого узла

Четыре адреса, которые записывает сгенерированный файл (config/src/comments.rs:273):

epic-server.toml, p2p seeds
seeds = ["95.217.197.180:3414","5.161.127.56:3414","5.75.242.4:3414","5.78.71.29:3414"]

Биты возможностей:

БитЗначениеЗначение
HEADER_HIST1Отдаёт историю заголовков
TXHASHSET_HIST2Отдаёт историю txhashset
PEER_LIST4Отдаёт списки пиров
TX_KERNEL_HASH8Отдаёт хеши ядер
HEADER_FASTSYNC16Поддерживает быструю синхронизацию заголовков
ONIONSTEM32Поддерживает stem-транзакции через onion-маршрут

Значение по умолчанию 31 — это все биты, кроме ONIONSTEM.

[server.pool_config]​

КлючТипDefaultНазначение
accept_fee_baseu64100000Минимальная комиссия на единицу веса транзакции для принятия в пул
max_pool_sizeusize50000Максимальное количество транзакций в основном пуле
max_stempool_sizeusize50000Максимальное количество транзакций в стемпуле
mineable_max_weightusize40000, 150 на usernet и при автоматизированном тестированииМаксимальный суммарный вес, упаковываемый майнером в блок

[server.dandelion_config]​

КлючТипDefaultНазначение
epoch_secsu16600Длина одной эпохи Dandelion
embargo_secsu16180Транслировать в сеть стемированную транзакцию, если она не появилась до истечения этого времени
aggregation_secsu1630Окно агрегации перед релеем
stem_probabilityu8 процент90Вероятность режима стема для эпохи
always_stem_our_txsbooltrueВсегда стемировать транзакции, поданные через собственный API

[server.stratum_mining_config]​

КлючТипDefaultНазначение
enable_stratum_serverbool, optionalfalse на каждой сетиЗапустить сервер Stratum. Сгенерированный конфиг содержит false для любой сети
stratum_server_addrstring, optional127.0.0.1:3416Адрес прослушивания Stratum
attempt_time_per_blockсекунды15Сколько времени майнить один заголовок перед его пересборкой
cuckatoo_minimum_share_difficultyu643Минимальная сложность шары для воркеров Cuckatoo
randomx_minimum_share_difficultyu644000, 1 при usertestingМинимальная сложность шары для воркеров RandomX
progpow_minimum_share_difficultyu64200000Минимальная сложность шары для воркеров ProgPow
wallet_listener_urlstringhttp://127.0.0.1:3415Слушатель кошелька, получающий награды coinbase
burn_rewardboolfalseОтбросить награду за блок вместо выплаты кошельку. Только для тестирования

Оставьте секцию [server.stratum_mining_config] и установите enable_stratum_server = false, чтобы отключить майнинг. См. Stratum для описания протокола.

[server.webhook_config]​

КлючТипDefaultНазначение
tx_received_urlstring, optionalunsetPOST-цель при получении транзакции от пира
header_received_urlstring, optionalunsetPOST-цель при получении заголовка
block_received_urlstring, optionalunsetPOST-цель при получении блока
block_accepted_urlstring, optionalunsetPOST-цель при принятии блока этим узлом, включая реорги
nthreadsu164Рабочие потоки для доставки webhook
timeoutсекунды10Таймаут HTTP-запроса

[server.tor]​

КлючТипDefaultНазначение
socks_proxy_addrstring127.0.0.1:9050Адрес SOCKS-прокси, записываемый в сгенерированный torrc
send_config_dirstring.Каталог для torrc, data/ и адресов onion-сервиса

Маршрутизация через onion stem также требует, чтобы capabilities включал бит ONIONSTEM, значение 32, которое значение по умолчанию 31 исключает.

[logging]​

КлючТипDefaultНазначение
log_to_stdoutbooltrueЛогировать в stdout
stdout_log_levelenumInfoError, Warning, Info, Debug, Trace
log_to_fileboolfalseЛогировать в файл
file_log_levelenumDebugУровень для файлового лога
log_file_pathstring~/.epic/main/epic-server.logПуть к файлу лога
log_file_appendbooltrueДописывать, а не перезаписывать при каждом запуске
log_max_sizebytes, optional16777216Ротация при превышении этого размера. Закомментируйте для отключения ротации
log_max_filesu32, optional32Сколько ротированных файлов хранить
tui_runningbool, optionalunsetУстанавливается из run_tui при запуске

Новый узел не записывает лог-файл, поскольку log_to_file равно false, а log_file_path заполнено. Установите log_to_file = true для записи лога на диск.

Исходный код​

Эти значения берутся из структур конфигурации и их значений по умолчанию:

Далее​