从3.x迁移
当前发布版本为节点**4.1.0、钱包4.1.0和epicbox协议3.0.0**。
API变更
total_difficulty 是一个对象
每种工作量证明算法的难度分别独立追踪:
{
"total_difficulty": {
"cuckaroo": 0,
"cuckatoo": 1234,
"randomx": 5678,
"progpow": 9012
}
}
区块头用两个字段描述证明
proof命名算法,solution是一个标记联合体,其结构取决于所用算法。在3.x中,单个标量字段承载解。
钱包输出(output)和交易读取支持分页
retrieve_outputs和retrieve_txs接受limit、offset和sort_order。请显式提供这些参数。
Status 新增供应量字段
supply和max_supply是以freemen为单位的金额。blocks_to_next_halving是区块数,位于api/src/types.rs:102。奖励步骤并非全部为减半;参见发行。
内核(kernel)以两种形式出现
get_block返回扁平化的内核(kernel)。get_kernel和get_last_n_kernels返回原始类型,带有外部标记的features字段。
命令行变更
参数已移动。当前目录的init -h现为-w,scan -h <height>现为-s <height>,节点的taxes参数现为start_height。新增钱包命令为export_tx、import_tx和change_password,以及转账命令上的--slate_version。所有命令和参数均在配置与CLI中说明。
测试网络上的算法混合由配置键选择,而非命令行参数。参见区块策略。
工具链与构建
每个代码仓库固定其Rust版本,因此安装rustup即可,不应自行固定版本。构建还需要Rust工具链之外的系统软件包,各平台所需软件包列于从源码构建中。
存储变更
钱包以WAL模式将数据存储在db/sqlite/epic.db的SQLite中,其Tor目录为wallet_tor。任何直接读取3.x钱包数据库的代码均需重写。路径和键名在钱包配置中说明。
新行为
捆绑的Tor
使用--features with-tor构建时会下载Tor专家包,并对照已提交的摘要进行验证。发布版本构建不启用该特性。参见本版本未涵盖的内容。
Epicbox确认投递
协议3.0.0从3.6.0起由钱包使用,因此在4.x中并非新增内容,它添加了携带每条消息ID的Made确认,使slate仅在接收方确认已处理后才标记为已送达。与早于3.5.2的客户端的兼容性得以保留。参见协议。
广播后的内存池(mempool)确认
钱包在广播交易后监视节点的内存池(mempool),并在交易出现时记录一个独立状态。这一等待是发送操作看起来无响应的原因,详见发送操作看似挂起;它还会将已广播的转账移出cancel_tx所接受的集合,详见取消操作的前提条件。
epicbox中继实现已变更
中继是EpicCash/epic-epicbox-docker,Node.js配合Rust验证辅助程序。其部署拓扑和存储在epicbox参考中说明。
需在集成中检查的行为
tx_lock_outputs在手动发送流程中是必需的。参见哪些操作会预留输出。- Epicbox将所有slate转换为V2,这会丢弃支付证明请求。参见传输方式对比。
change_password会删除备份助记词,除非传入--remove-backup。- 同步验证默认值的形式已变更。
skip_pow_validation默认为true,disable_checkpoints默认为false。在mainnet上,工作量证明仅在最后一个检查点之前跳过,在其之上完整验证,且disable_checkpoints被忽略。参见节点与钱包设置。
4.1.0 的变更
节点和钱包4.1.0收紧了身份验证。针对4.0.x正常工作的集成可能开始收到401响应。
- 钱包Owner API需要HTTP Basic认证。
/v3/owner和/v2/owner在v3令牌之上,还需要用户名epic和.owner_api_secret的内容。参见钱包的owner访问。 - **节点的
/v1和/v2/owner默认拒绝访问。**未配置机密时,它们返回401而非开放运行。只有GET /v1/version和一个普通get_status调用无需凭据即可响应。参见节点凭据。 - 新增Foreign方法
ready_for_txs,无需凭据即可报告节点是否已同步。钱包用它替代owner的get_status。参见各方法的归属。 - **钱包发送节点机密的频率大幅降低。**它不再向
/v2/foreign发送机密,因此设置了foreign_api_secret_path的节点无法为其提供服务。参见钱包向节点提交的凭据。 - **
/v1/kerneldownload已移除。**参见v1路由。 disable_checkpoints默认值为false,在mainnet上被忽略, 并且在区块高度3,710,000处新增了一个检查点,即13,移动了跳过范围的末端。请参阅同步验证设置。