为mainnet设置节点和钱包
Mainnet使用真实价值。本文所有内容均假设你已完成运行本地网络和首次转账中的操作,因为两者的操作机制完全相同,但后果截然不同。
两个进程。一个节点负责验证和中继链,一个钱包负责持有密钥并向节点查询世界状态。你需要一个节点,不需要挖矿。
1. 启动节点
mainnet是默认网络,因此无需任何参数:
epic
节点在首次运行时写入epic-server.toml,此后从该文件读取配置。编辑该文件是更改行为的常规方式,因为大多数设置仅以配置键的形式存在,而非命令行参数。每个键的修改都需要重启节点。
确认节点已启动。owner接口需要身份验证,机密文件会自动为你创建:
- Linux 和 macOS
- Windows
curl -s -u epic:$(cat ~/.epic/main/.api_secret) -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"get_status","params":[],"id":1}' \
http://127.0.0.1:3413/v2/owner
$secret = (Get-Content "$HOME\.epic\main\.api_secret" -First 1).Trim()
$body = '{"jsonrpc":"2.0","method":"get_status","params":[],"id":1}'
Invoke-RestMethod -Uri 'http://127.0.0.1:3413/v2/owner' -Method Post `
-ContentType 'application/json' -Body $body `
-Authentication Basic -Credential (
[PSCredential]::new('epic', (ConvertTo-SecureString $secret -AsPlainText -Force))
) -AllowUnencryptedAuthentication
首次同步会下载并验证整条链。预计耗时较长,并会占用实际磁盘空间。
端口
| 端口 | 用途 | 默认绑定 |
|---|---|---|
| 3413 | HTTP API | 127.0.0.1 |
| 3414 | P2P | 所有接口 |
| 3416 | Stratum挖矿服务器 | 127.0.0.1,默认关闭 |
只有P2P端口需要对外部可达。将API保持在回环地址上,并在更改之前阅读身份验证与TLS。所有端口和网络偏移量均在CLI参考中列出。
同步验证设置
skip_pow_validation默认为true,disable_checkpoints默认为false。在已检查点范围内跳过工作量证明(proof of work)是一种同步速度优化,而非降低安全性的默认设置:跳过的范围终止于一个硬编码检查点,该检查点的哈希值必须匹配,且范围内的每个区块头都链接回该检查点。只有位于13检查点高度处的区块头通过哈希进行比较,其间的区块头不做比较。
| 区块所在位置 | 在mainnet上执行验证 |
|---|---|
| 在检查点范围内,最高至区块高度3,710,000 | 检查点高度处的区块头与硬编码哈希进行比对,不匹配则中止同步。skip_pow_validation为true时跳过工作量证明验证 |
| 在最后一个检查点之上 | 始终执行完整工作量证明,无论这些设置如何 |
只有当批次中的每个区块头都通过检查点验证时,该批次才被视为已检查点。
节点中编译了13个检查点,位于chain/src/types.rs:432。代码为check_header_against_checkpoints(),跳过决策为should_skip_pow(),节点在mainnet上启动时会记录日志,说明适用哪种策略。
disable_checkpoints在mainnet上被忽略。在测试网络上,当skip_pow_validation也为true时,它将跳过范围延伸至最后一个检查点之后,适用于距链顶端超过1,000个区块的区块(POW_VERIFICATION_THRESHOLD)。
将skip_pow_validation = false设置为自行验证所有历史工作量证明。这会导致初始同步时间大幅增加。
节点存储的内容
chain_data、配置文件、日志文件和API机密。chain_data是占用空间较大的项目,且可以丢弃,因此删除它只需重新同步,不会有其他损失。节点不持有任何密钥,因此其数据目录中的内容无需备份。
2. 创建钱包
epic-wallet init
系统会要求你设置密码,并显示一个恢复助记词。
助记词是唯一能够重建你的资金的凭据。它仅在此处显示一次,之后只能通过epic-wallet recover查看,而该操作需要密码。
| 命令 | 效果 |
|---|---|
epic-wallet init | 在默认位置创建钱包,~/.epic/main |
epic-wallet init -w | 在当前目录创建。该参数不接受值 |
epic-wallet init -r | 从已有恢复助记词恢复 |
如果种子文件已存在,init -r将拒绝运行,因此若要恢复到一个已有钱包的目录,需先将该钱包移至其他位置。参见备份与恢复。
关闭Tor监听器
钱包将use_tor_listener默认设置为true,并期望发布版本归档中未附带的Tor二进制文件,因此epic-wallet listen会启动一个后台线程并失败。有两种方式可以关闭它,其中一种是按命令生效:
[tor]
use_tor_listener = false
epic-wallet listen -n
-n仅在listen上声明(src/cmd/wallet_args.rs:123),因此必须在每个listen上重复指定。配置键适用于该钱包目录中的所有命令,是推荐使用的设置。两者均不影响节点对Tor的使用。
钱包存储的内容
备份与恢复列出了钱包目录中的每个文件、其内容以及是否需要备份。恢复助记词可重建你的资金,但无法恢复历史记录。交易记录、账户标签和支付证明记录仅存储在数据库中,链上的任何内容都无法重建它们。
钱包开放的端口
epic-wallet listen在3415上开启Foreign API,epic-wallet owner_api在3420上开启Owner API。Foreign端口由网络决定;Owner端口在所有网络上均为3420,因此同一台机器上的第二个钱包无论运行哪条链,都会在该端口发生冲突。覆盖owner_api_listen_port。完整列表见CLI参考。
3. 将钱包指向节点
钱包默认连接到回环地址上端口3413的节点。无需配置。
钱包的调用发往节点中无需凭据的接口,因此移动任一目录不会导致连接中断。node_api_secret_path仅用于Tor洋葱地址查找;参见钱包向节点提交的凭据。如需连接其他节点,在epic-wallet.toml中设置check_node_api_http_addr。
epic-wallet info
余额为零且无报错,表示钱包已成功连接节点且节点已响应。401表示节点设置了foreign_api_secret_path,而epic-wallet 4.1.0无法与之配合使用。根据代码,版本早于4.1.0且设置了API机密的节点同样会返回401;该组合尚未经过测试。
将钱包指向公共节点可以正常使用。但该节点会看到钱包查询的输出(output),且钱包不会验证所获得的链状态。