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写入当前目录,其路径指向该目录。若文件已存在则拒绝覆盖。
加固的起始配置
生成的文件包含所有键及其默认值。最小化加固配置与默认值的差异体现在以下键上:
epic-server.toml
[server]
# 仅回环地址。如需从其他主机访问,请在前端配置带身份验证的代理。
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"
关于foreign secret,请参阅身份验证与TLS;关于入门指引,请参阅节点与钱包设置。
[server]
| Key | 类型 | Default | 用途 |
|---|---|---|---|
db_root | string | ~/.epic/main/chain_data | 存放链和对等节点数据库的目录 |
api_http_addr | host:port | 127.0.0.1:3413 | HTTP API的监听地址 |
api_secret_path | string,可选 | ~/.epic/main/.api_secret | /v1和/v2/owner的Basic auth机密。注释掉此项不会开放这两个接口:若无机密,两者对所有调用均返回401,GET /v1/version和一个普通get_status除外。参见节点凭据 |
foreign_api_secret_path | string,可选 | .foreign_api_secret,相对路径 | /v2/foreign的Basic auth机密。需自行创建该文件。节点设置此项后无法为epic-wallet 4.1.0提供服务。参见API身份验证 |
foundation_path | string,可选 | /usr/share/epic/foundation.json,Windows上为.\foundation.json | 预生成的foundation coinbase数据。省略该键或留空,则使用二进制内置的副本 |
tls_certificate_file | string,可选 | unset | PEM证书链。设置后API切换为HTTPS |
tls_certificate_key | string,可选 | unset | PEM私钥。设置证书时必填 |
chain_type | enum | Mainnet | Mainnet, Floonet, UserTesting, AutomatedTesting |
chain_validation_mode | enum | Disabled | EveryBlock在每个区块后执行完整链验证 |
archive_mode | bool,可选 | false | true保留完整区块历史,不进行裁剪 |
skip_pow_validation | bool,可选 | true | 同步期间,对检查点范围内的区块跳过工作量证明验证。仅在最新检查点之前生效 |
disable_checkpoints | bool,可选 | false | 在测试网络上,对链顶端以下超过1,000个区块的部分,将跳过范围延伸至最新检查点之后。仅当skip_pow_validation为true时生效。在mainnet上忽略 |
skip_sync_wait | bool,可选 | false | 跳过启动时的同步等待 |
header_sync_timeout | 秒 | 10 | 等待确认更多区块头存在的超时时间。零或负值将变为10 |
run_tui | bool,可选 | false | 运行终端界面。启用后将禁用stdout日志 |
only_randomx | bool,可选 | false | 在测试网络上强制执行仅RandomX的区块策略。参见区块策略 |
no_progpow | bool,可选 | false | 在测试网络上从区块策略中移除ProgPow。参见区块策略 |
run_test_miner | bool,可选 | false | 内置矿工,仅支持Cuckoo。挖矿链需要Stratum和外部矿工。参见运行本地网络 |
test_miner_wallet_url | string,可选 | unset | 接收测试矿工coinbase的钱包监听器。未设置时回退至http://127.0.0.1:13415 |
在mainnet上,只有skip_pow_validation有效。保持true时,工作量证明对最后一个检查点(区块高度3,710,000)之前的区块跳过验证,对其上方的每个区块进行完整验证。disable_checkpoints仅在测试网络上扩大该范围。各选项跳过的内容详见节点与钱包设置。
[server.p2p_config]
| Key | 类型 | Default | 用途 |
|---|---|---|---|
host | IP | 0.0.0.0 | 监听的网络接口。127.0.0.1限制为本地访问 |
port | u16 | 3414,floonet为13414,usernet为23414 | P2P监听端口 |
seeding_type | enum | DNSSeed,usernet上为None | None、List、DNSSeed、Programmatic。DNSSeed在mainnet上查询node.epiccash.com:3414,在floonet上查询floonet.epiccash.com:13414。参见网络了解何时使用List |
seeds | ip:port数组,可选 | 代码中未设置,生成文件中有四个地址 | 当seeding_type = "List"时使用。若该类型已设置但无列表,则启动失败 |
capabilities | u32标志位 | 31 | 节点对外公告的能力。见下方位表 |
peer_min_preferred_outbound_count | u32,可选 | 4 | 节点持续尝试连接的出站对等节点,以及同步状态离开AwaitingPeers前必须达到的数量。生成的文件中不包含此项。在私有链上设置0,否则Stratum服务器将拒绝工作 |
peers_allow | 数组,可选 | unset | 仅连接这些对等节点 |
peers_deny | 数组,可选 | unset | 从不连接这些对等节点 |
peers_preferred | 数组,可选 | unset | 优先对等节点,主动拨号连接 |
ban_window | 秒,可选 | 10800 | 被封禁的对等节点保持封禁状态的时长 |
peer_max_inbound_count | u32,可选 | 128 | 最大入站对等节点数 |
peer_max_outbound_count | u32,可选 | 128 | 最大出站对等节点数 |
peer_listener_buffer_count | u32,可选 | 8 | 入站限制之上的余量,用于辅助引导。同时限制待处理的入站握手数量,每个IP地址一个 |
dandelion_peer | ip:port,可选 | unset | 固定的Dandelion中继 |
my_onion_addr | string,可选 | unset | 本节点自身的洋葱地址 |
生成文件写入的四个地址(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_HIST | 1 | 提供区块头历史 |
TXHASHSET_HIST | 2 | 提供txhashset历史 |
PEER_LIST | 4 | 提供对等节点列表 |
TX_KERNEL_HASH | 8 | 提供内核(kernel)哈希 |
HEADER_FASTSYNC | 16 | 支持快速区块头同步 |
ONIONSTEM | 32 | 支持通过洋葱路由传输stem交易 |
默认值31包含除ONIONSTEM之外的所有位。
[server.pool_config]
| Key | 类型 | Default | 用途 |
|---|---|---|---|
accept_fee_base | u64 | 100000 | 内存池接受交易的每单位交易权重最低手续费 |
max_pool_size | usize | 50000 | 主池中的最大交易数 |
max_stempool_size | usize | 50000 | stempool中的最大交易数 |
mineable_max_weight | usize | 40000,usernet和自动化测试上为150 | 矿工打包进区块的最大总权重 |
[server.dandelion_config]
| Key | 类型 | Default | 用途 |
|---|---|---|---|
epoch_secs | u16 | 600 | 一个Dandelion epoch的长度 |
embargo_secs | u16 | 180 | 若在此时间到期前未见到某笔茎传播交易,则将其蒲公英广播 |
aggregation_secs | u16 | 30 | 中继前的聚合窗口 |
stem_probability | u8 percent | 90 | 一个epoch中茎模式的概率 |
always_stem_our_txs | bool | true | 始终对通过自身API提交的交易进行茎传播 |
[server.stratum_mining_config]
| Key | 类型 | Default | 用途 |
|---|---|---|---|
enable_stratum_server | bool,可选 | 所有网络上均为false | 运行Stratum服务器。生成的配置无论针对哪个网络,均携带false |
stratum_server_addr | string,可选 | 127.0.0.1:3416 | Stratum监听地址 |
attempt_time_per_block | 秒 | 15 | 重新构建区块头前挖矿的持续时间 |
cuckatoo_minimum_share_difficulty | u64 | 3 | Cuckatoo工作节点的最低份额难度 |
randomx_minimum_share_difficulty | u64 | 4000,usertesting上为1 | 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]
| Key | 类型 | Default | 用途 |
|---|---|---|---|
tx_received_url | string,可选 | unset | 从对等节点收到交易时的POST目标 |
header_received_url | string,可选 | unset | 收到区块头时的POST目标 |
block_received_url | string,可选 | unset | 收到区块时的POST目标 |
block_accepted_url | string,可选 | unset | 本节点接受区块(包括重组)时的POST目标 |
nthreads | u16 | 4 | Webhook 投递的工作线程数 |
timeout | 秒 | 10 | HTTP请求超时 |
[server.tor]
| Key | 类型 | Default | 用途 |
|---|---|---|---|
socks_proxy_addr | string | 127.0.0.1:9050 | SOCKS代理地址,写入生成的torrc |
send_config_dir | string | . | torrc、data/及洋葱服务地址的目录 |
洋葱茎路由还需要capabilities包含ONIONSTEM位(值为32),而默认值31不包含该位。
[logging]
| Key | 类型 | Default | 用途 |
|---|---|---|---|
log_to_stdout | bool | true | 输出到标准输出 |
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,可选 | 16777216 | 超过此大小时轮转。注释掉以禁用轮转 |
log_max_files | u32,可选 | 32 | 保留的轮转文件数量 |
tui_running | bool,可选 | 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用于文件发现和路径重写