为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和disable_checkpoints均默认为true。这是同步速度优化,而非降低了默认安全性。
| 区块所在位置 | 已执行的验证 |
|---|---|
| 在检查点范围内 | 区块头哈希与硬编码检查点比对。不匹配则中止同步。跳过工作量证明 |
| 超过检查点,距链顶端超过1,000个区块 | 跳过工作量证明 |
| 距链顶端1,000个区块以内 | 始终执行完整工作量证明,与上述设置无关 |
节点内置了12个检查点,位于chain/src/types.rs:432中。代码为check_header_against_checkpoints(),跳过决策位于servers/src/common/adapters.rs:728,下限为POW_VERIFICATION_THRESHOLD。
将两者均设为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的节点,在默认目录布局下,它会将节点的API机密解析到节点创建的同一文件。无需任何配置。
有两种情况需要更改。如果你移动了任一目录,请将node_api_secret_path设置为钱包向节点出示的凭据。如果你想使用不同的节点,请在epic-wallet.toml中设置check_node_api_http_addr。
epic-wallet info
余额为零且无报错,表示钱包已成功连接节点且节点已响应。401表示两者的机密不一致。
将钱包指向公共节点可以正常使用。但该节点会看到钱包查询的输出(output),且钱包不会验证所获得的链状态。