挖矿docs/architecture/mining.md

挖矿架构

只有算力无法生成区块。挖矿需要 State;只有证明完成后才能开始搜索 nonce 区块生产者必须持有当前 Live State,并在开始搜索 nonce 前确立精确的下一次转换。因此,独立矿工是由算力支撑、能够生成证明的全节点,而不是无状态的哈希端点。

挖矿严格分为两个有序阶段:

  1. 选择交易、构造 State 转换,并证明完整的无 nonce 区块;
  2. 搜索固定 Poseidon2b 区块头的 128 位 nonce。

这样的顺序避免把工作量证明浪费在尚未确立 State 转换的区块上。

构造模板

节点从规范链尖与当前内存池出发。它按费率选择互不冲突的逻辑交易,同时遵守 State、分段和证明类别限制。随后:

  • 计算 coinbase 奖励以及计划中的系统付款;
  • 分配新的输出创建标识;
  • 推导规范槽位写入;
  • 计算交易根与转换后 State 根;
  • 构造 HistoryStep 公开输入;
  • 生成新的终端证明。

至此,除区块头 nonce 外的一切内容都已不可变。

B64 与 B255

证明栈附带两种经过认证的矩阵类别:

类别 超立方体维度 有效页面容量
B64 m=23 最多 64 页
B255 m=24 最多 255 页

所有矿工都从 B64 开始。当完整证明准备耗时表明更大关系适合 15 秒出块目标时,节点可以使用 B255。判断依据是端到端准备时间,而不是某个内部证明生成阶段的耗时。

两种类别证明同一个共识关系。它们只是容量选择,不代表不同的区块有效性规则。

CPU 调度

内置矿工在证明构造与 nonce 搜索之间共享一个 CPU 线程池,不会同时运行两个互不相关、各自占满全部核心的任务。

本地钱包工作拥有优先级。用户在挖矿期间发送交易或执行归集时,节点会在本地边界暂停或让出挖矿 CPU,完成交易授权和提交后再继续挖矿。网络规则、对等节点优先级和全局手续费策略均不会改变。

模板刷新策略

只有改变有效工作的事件才会重建模板:

  • 出现新的规范链尖;
  • 挖矿收益地址变化;
  • 第一笔交易进入此前只有 coinbase 奖励的模板;
  • 已选交易失效。

75 秒心跳刷新只是安全兜底,并非正常刷新循环。已经证明的模板始终绑定原始收益地址和交易集;证明构造完成后不再修改。

内置矿工

内置矿工运行在节点进程内。节点负责交易选择、证明构造、PoW 和区块提交。CPU 线程数与收益地址可通过 Core 或 GUI 控制。

节点只有在同步完成且至少连接两个已完成身份认证的对等节点时才开始挖矿。本地找到的区块会通过与对等区块相同的接受路径完成封装、提交与公告。

外部矿工

外部矿工只把 nonce 搜索移出节点。它请求一个不透明、一次性的模板,其中包含:

  • 模板标识;
  • 精确的 16 字段 Poseidon2b PoW 输入序列;
  • 目标值;
  • 过期时间与显示元数据。

外部矿工返回一个小端序 128 位 nonce。节点根据仍然有效的模板验证 nonce,封装已经证明的区块,并使模板失效。外部模板 30 秒后过期;链尖改变或成功提交后均不能重放。

外部挖矿进程无权替换交易、改变 State、修改手续费或重新计算 coinbase 奖励。使用自定义 coinbase 地址必须显式启用相应节点设置,并提供 Bearer 密钥。

分叉选择

挖矿扩展累计工作量最高的有效链。工作量相同时,以字典序更小的区块哈希作为确定性决胜规则。任何试图替换硬最终性前缀的候选链都不具备资格。

部署方法见内置挖矿外部矿工,精确 nonce 关系见工作量证明

ParanO(1)d 技术文档共识行为以源代码为准。