NRX 挖矿指南

了解如何通过可验证的 AI 算力贡献和质押增强机制参与 NeuroX Network,获取 NRX 奖励。

挖矿指南

NeuroX Token(NRX)采用基于贡献的代币释放模型。参与者可以提供可验证的 AI 算力资源、完成网络任务,或通过质押 NRX 支持验证工作。目标是产生有用且可审计的工作,而不是竞赛式地执行无实际用途的哈希计算。

NRX 固定总量为 1,000,000,000 枚,全部通过 NeuroX 矿池释放,不设预挖、私募或团队份额。

网络与代币参数

参数
网络 Ethereum 主网
代币 NeuroX Token(NRX)
总供应量 1,000,000,000 NRX
代币合约 0x41685818a2aBe77F39C989547cfD783e75ff2a64
矿池合约 0xAE6F2eA6A57352a478daABfBbF7b85479832D187
发行方式 固定总量,全部由矿池释放

什么是有效贡献

NeuroX Network 连接三类主要节点:

  • Lite Nodes:负责轻量任务、网络同步和基础网络支持。
  • Edge Nodes:提供低延迟推理和区域化任务执行能力。
  • Core GPU Nodes:提供高性能模型训练和并行计算能力。

根据任务类型,节点可以参与模型训练、实时推理、GPU 渲染、边缘计算或数据处理。网络根据任务要求验证工作,不会把闲置硬件或未经验证的提交直接视为有效产出。

奖励模型

NRX 奖励由协议接受的贡献决定,主要参考因素包括:

  • GPU、CPU 或边缘设备的有效算力;
  • 任务完成质量与结果正确性;
  • 节点稳定性和服务可用性;
  • 在线时长与响应性能;
  • 历史信誉和可验证贡献深度。

矿池是奖励结算层。参与者不应假设固定收益、保证回报,或认为仅质押就会自动产生奖励。具体计算方式和资格规则以已部署合约及 NeuroX 任务协议为准。

Contribution Proof(贡献证明)

Contribution Proof 是直接参与路径。节点接收或选择符合条件的任务,执行任务并生成所需证明,然后向矿池合约提交证明。通过验证的工作可以被记录,并按规则结算 NRX。

下面的客户端保留项目现有 JavaScript/ethers 接入代码的结构。其中 mint、挑战值、目标值和奖励读取接口必须先与已部署矿池的 verified ABI 核对后才能用于生产环境。仅替换合约地址并不能证明接口兼容。

系统要求

操作系统: Linux / macOS / Windows
Node.js: >= 16.x
内存: >= 4GB RAM
网络: 稳定的 Ethereum 主网 RPC 连接
钱包: 用于支付 Gas 的 ETH,以及可参与 NeuroX 的账户

安装 ethers

npm install ethers@6

算力贡献客户端示例

const { ethers, keccak256, solidityPacked } = require("ethers");

const CONFIG = {
  RPC_URL: process.env.ETHEREUM_RPC_URL,
  MINER_CONTRACT: "0xAE6F2eA6A57352a478daABfBbF7b85479832D187",
  PRIVATE_KEY: process.env.NRX_MINER_PRIVATE_KEY,
};

if (!CONFIG.RPC_URL || !CONFIG.PRIVATE_KEY) {
  throw new Error("请先设置 ETHEREUM_RPC_URL 和 NRX_MINER_PRIVATE_KEY");
}

const MINER_ABI = [
  "function mint(uint256 nonce) external returns (bool)",
  "function getChallengeNumber() external view returns (bytes32)",
  "function getMiningTarget() external view returns (uint256)",
  "function getMiningReward() external view returns (uint256)",
  "function checkMintSolution(uint256 nonce, address miner) external view returns (bool)",
];

class NeuroXMiner {
  constructor() {
    this.provider = new ethers.JsonRpcProvider(CONFIG.RPC_URL);
    this.wallet = new ethers.Wallet(CONFIG.PRIVATE_KEY, this.provider);
    this.contract = new ethers.Contract(
      CONFIG.MINER_CONTRACT,
      MINER_ABI,
      this.wallet,
    );
    this.minerAddress = this.wallet.address;
  }

  async initialize() {
    this.challengeNumber = await this.contract.getChallengeNumber();
    this.miningTarget = await this.contract.getMiningTarget();
    const reward = await this.contract.getMiningReward();
    console.log(`当前奖励: ${ethers.formatEther(reward)} NRX`);
  }

  calculateHash(nonce) {
    const innerHash = keccak256(
      solidityPacked(
        ["bytes32", "address", "uint256"],
        [this.challengeNumber, this.minerAddress, nonce],
      ),
    );
    return BigInt(keccak256(solidityPacked(["bytes32"], [innerHash])));
  }

  checkSolution(nonce) {
    return this.calculateHash(nonce) <= this.miningTarget;
  }

  async mine() {
    let nonce = BigInt(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER));

    while (true) {
      if (this.checkSolution(nonce)) {
        console.log(`找到有效贡献证明: ${nonce}`);
        const transaction = await this.contract.mint(nonce);
        await transaction.wait();
        console.log("NRX 贡献已提交");
        await this.initialize();
      }
      nonce++;
    }
  }
}

async function main() {
  const miner = new NeuroXMiner();
  await miner.initialize();
  await miner.mine();
}

main().catch(console.error);

上面的示例代表项目现有的 challenge-based 提交流程。生产环境中的 NeuroX worker 还应执行分配的 AI 任务,并附带 verified ABI 要求的任务结果或任务证明。不要未经核验就向 Ethereum 主网矿池运行客户端。

Stake-Boost(质押增强验证)

Stake-Boost 是质押辅助路径。节点锁定 NRX 以建立参与承诺,并可能获得高级任务、验证任务、任务优先级或贡献权重。质押本身不会产生奖励,也不能代替成功完成任务。

验证工作可能包括模型训练检查、梯度一致性检查、结果对比、状态仲裁或 NeuroX 协议定义的其他任务。如果节点提交虚假结果或违反任务规则,可能触发 Slashing 或信誉扣减;具体条件必须以已部署合约和当前协议说明为准。

参与流程

  1. 准备 Ethereum 钱包,并预留 ETH 支付 Gas。
  2. 在节点使用的钱包中持有 NRX。
  3. 阅读当前质押、注册和任务资格规则。
  4. 了解锁定期、退出和扣罚条件后,再决定是否质押 NRX。
  5. 完成分配的验证工作,并提交所需证明或签名结果。
  6. 确认结算交易,持续关注节点信誉记录。

现有签名客户端结构

下面的示例保留现有签名授权接入中的函数名称,便于与已发布 ABI 对照。正式使用前必须核对函数名称、EIP-712 typed-data 域和各字段含义。

const { ethers } = require("ethers");

const STAKE_ABI = [
  "function registerFlexUser(address user, uint256 deadline, bytes32 nonce, uint8 v, bytes32 r, bytes32 s) external",
  "function mintFlex(address miner, uint256 amount, uint256 deadline, bytes32 signatureNonce, uint8 v, bytes32 r, bytes32 s) external returns (bool)",
  "function isFlexUser(address user) external view returns (bool)",
];

class NeuroXStakeClient {
  constructor(config) {
    this.provider = new ethers.JsonRpcProvider(config.rpcUrl);
    this.wallet = new ethers.Wallet(config.privateKey, this.provider);
    this.contract = new ethers.Contract(
      "0xAE6F2eA6A57352a478daABfBbF7b85479832D187",
      STAKE_ABI,
      this.wallet,
    );
  }

  async checkStatus() {
    return this.contract.isFlexUser(this.wallet.address);
  }

  async register(signature) {
    const { user, deadline, nonce, v, r, s } = signature;
    const transaction = await this.contract.registerFlexUser(
      user,
      deadline,
      nonce,
      v,
      r,
      s,
    );
    return transaction.wait();
  }

  async submitReward(signature) {
    const { miner, amount, deadline, nonce, v, r, s } = signature;

    if (Math.floor(Date.now() / 1000) > Number(deadline)) {
      throw new Error("签名已过期");
    }

    const transaction = await this.contract.mintFlex(
      miner,
      amount,
      deadline,
      nonce,
      v,
      r,
      s,
    );
    return transaction.wait();
  }
}

挖矿统计

如果 verified ABI 提供统计查询接口,应在提交工作前读取统计数据,并按正确的代币精度显示。下面保留现有客户端示例的结构,不能替代 ABI 核验:

async function getMiningStats(contract) {
  const stats = await contract.getMiningStats();

  return {
    currentReward: ethers.formatEther(stats[0]),
    difficulty: stats[1].toString(),
    epochCount: stats[3].toString(),
    tokensDistributed: ethers.formatEther(stats[6]),
    poolBalance: ethers.formatEther(stats[12]),
  };
}

安全检查清单

  • 在授权或发送交易前核对代币合约和矿池合约地址。
  • 不要将私钥直接写入代码仓库或公开文档。
  • 签名以前确认 Ethereum chain ID 和 RPC 端点。
  • 使用写入函数前检查合约 ABI 和 verified source。
  • 了解质押锁定、Slashing、签名截止时间和 nonce 使用规则。
  • 交易确认前,将页面显示的奖励视为估算值。
  • 不要假设其他网络的 challenge、任务结果或签名可以直接用于 Ethereum 主网。

常见错误

错误类别 含义 建议处理
未注册 账户没有 gated validation 任务的参与资格。 按当前流程完成注册。
贡献证明无效 提交的证明与当前任务或 challenge 不匹配。 刷新任务数据,核对 ABI 和编码方式。
签名已过期 授权截止时间已过。 请求新的授权签名。
nonce 已使用 该授权 nonce 已被消费。 请求新 nonce,避免重复提交。
矿池余额不足 矿池无法结算请求的奖励。 不要盲目重试,先检查矿池状态和当前规则。

官方入口

代币合约、矿池合约、奖励规则和 verified ABI 是权威依据。本指南说明参与模型和现有客户端结构,不构成收益承诺,也不能替代合约文档。