挖矿指南
了解如何通过 Compute-PoC(独立挖矿)或 Stake-to-Validate(质押挖矿)参与 Aetherix Token 挖矿,获取 AXT 奖励
挖矿指南
Aetherix Token(AXT)提供两种挖矿机制:Compute-PoC(独立挖矿)和 Stake-to-Validate(质押挖矿)。全部 100,000,000 枚 AXT 代币均通过唯一矿池智能合约释放,无预挖、无私募、无团队份额。
矿池合约地址: 0xF2144576BdFE76E2d27f9Eacf75Ad626336ee6CC
⛏️ Compute-PoC(独立挖矿)
Compute-PoC(算力贡献证明)是 Aetherix 网络的基础算力贡献机制。节点通过 GPU、CPU 或边缘设备完成基础计算任务,并在链上提交可验证的工作量证明。矿池合约根据节点的实际贡献値、任务执行质量和历史声誉评分,动态计算并释放 AXT 奖励。
任何节点均可直接参与,无需预先注册。奖励由贡献度驱动,而非哈希竞争。
挖矿参数
| 参数 | 值 | 说明 |
|---|---|---|
| 总量 | 100,000,000 AXT | 固定总量,不增发 |
| 奖励模型 | 贡献度驱动 | 贡献值 × 任务质量 × 声誉评分 |
| 难度调整周期 | 每 2,048 个区块 | 每 2,048 个区块调整一次难度 |
| 目标 ETH 区块数 | 81,920 | 每个调整周期的目标以太坊区块数 |
| 最小难度目标 | 2^16 | 最高难度 |
| 最大难度目标 | 2^234 | 最低难度(初始值) |
| 矿池 | 单一合约 | 所有 AXT 由唯一不可修改的矿池释放 |
奖励计算公式
AXT 奖励由三个因子动态决定:
- 贡献值 — 节点实际贡献的算力(GPU/CPU/边缘设备)
- 任务质量 — 已完成任务的准确性、效率和稳定性
- 历史声誉 — 节点在链上的长期运行记录
系统要求
操作系统: Linux / macOS / Windows
Node.js: >= 16.x
内存: >= 4GB RAM
网络: 稳定的以太坊 RPC 连接
安装依赖
npm install ethers@6
算力证明哈希计算
AetherixMiner 使用双重 Keccak256 哈希算法生成可验证的算力贡献证明:
digest = keccak256(keccak256(challengeNumber + minerAddress + nonce))
挖矿成功条件:
uint256(digest) <= miningTarget
基础挖矿脚本
const { ethers, keccak256, solidityPacked } = require("ethers");
const CONFIG = {
RPC_URL: "https://your-ethereum-rpc-url",
MINER_CONTRACT: "0xF2144576BdFE76E2d27f9Eacf75Ad626336ee6CC",
PRIVATE_KEY: "0x...", // 请安全保管私钥
};
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 AetherixMiner {
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)} AXT`);
}
calculateHash(nonce) {
const innerHash = keccak256(
solidityPacked(
["bytes32", "address", "uint256"],
[this.challengeNumber, this.minerAddress, nonce],
),
);
return BigInt(keccak256(solidityPacked(["bytes32"], [innerHash])));
}
checkSolution(nonce) {
const digest = this.calculateHash(nonce);
return digest <= this.miningTarget;
}
async mine() {
let nonce = BigInt(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER));
while (true) {
if (this.checkSolution(nonce)) {
console.log(`找到有效算力证明! Nonce: ${nonce}`);
const tx = await this.contract.mint(nonce);
await tx.wait();
console.log("Compute-PoC 挖矿成功!");
await this.initialize(); // 刷新参数继续挖矿
}
nonce++;
}
}
}
async function main() {
const miner = new AetherixMiner();
await miner.initialize();
await miner.mine();
}
main().catch(console.error);
🔐 Stake-to-Validate(质押挖矿)
Stake-to-Validate 是 Aetherix 网络的质押任务接受与验证机制。节点质押 AXT 后,可获得高级任务接受权和验证权,参与模型训练验证、梯度校验、状态仲裁等系统级任务。任务完成后,矿池自动释放奖励。
与 Compute-PoC 不同,Stake-to-Validate 节点通过 EIP-712 平台签名获得任务奖励授权,无需直接参与哈希计算。
适用场景
- AI 模型训练验证奖励
- 梯度一致性校验奖励
- 状态仲裁奖励
- 生态激励发放
- 长期质押节点奖励
与 Compute-PoC 的区别
| 特性 | Compute-PoC | Stake-to-Validate |
|---|---|---|
| 挖矿方式 | 提交链上算力证明 | 任务完成后签名授权 |
| 奖励金额 | 贡献值 × 质量 × 声誉 | 灵活(由任务指定) |
| 参与门槛 | 任何节点 | 需注册质押验证节点 + 质押 AXT |
| 计算需求 | 需主动贡献算力 | 验证与仲裁任务 |
| 适用场景 | 独立算力挖矿 | 任务奖励、模型验证、治理 |
| 区块限制 | 每区块仅一次 | 无此限制 |
成为质押验证节点
前置条件:
- 拥有以太坊钱包地址
- 具备一定的 ETH 用于支付 Gas 费用
- 持有 AXT 用于质押(最低质押数量由治理 DAO 决定)
- 向 Aetherix 官方申请质押验证节点注册资格
注册流程:
- 联系 Aetherix 官方渠道
- 提交钱包地址和用途说明(AI 训练节点、验证节点等)
- 完成 KYB/KYC(如适用)
- 获取 EIP-712 注册签名
- 调用注册函数
Stake-to-Validate 代码
const { ethers } = require("ethers");
const MINER_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 StakeValidatorClient {
constructor(config) {
this.provider = new ethers.JsonRpcProvider(config.rpcUrl);
this.wallet = new ethers.Wallet(config.privateKey, this.provider);
this.contract = new ethers.Contract(
config.minerAddress,
MINER_ABI,
this.wallet,
);
}
async checkValidatorStatus() {
return await this.contract.isFlexUser(this.wallet.address);
}
async register(signature) {
const { user, deadline, nonce, v, r, s } = signature;
const tx = await this.contract.registerFlexUser(
user,
deadline,
nonce,
v,
r,
s,
);
return await tx.wait();
}
async mint(signature) {
const { miner, amount, deadline, nonce, v, r, s } = signature;
if (Date.now() / 1000 > deadline) {
throw new Error("签名已过期");
}
const tx = await this.contract.mintFlex(
miner,
amount,
deadline,
nonce,
v,
r,
s,
);
return await tx.wait();
}
}
📊 挖矿统计
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]),
};
}
⚠️ 常见错误
| 错误 | 说明 | 解决方案 |
|---|---|---|
NotFlexUser | 调用者未注册为质押验证节点 | 先完成注册 |
AlreadyMinedInBlock | 该区块已被挖出 | 等待下一个区块 |
InvalidProofOfWork | 无效的算力证明 | 刷新挑战参数重试 |
SignatureExpired | 签名已过期 | 请求新签名 |
NonceAlreadyUsed | nonce 已被使用 | 请求新签名 |
InsufficientPoolBalance | 矿池余额不足 | 减少请求金额或等待 |
📞 技术支持
- 官网: https://aetherixtoken.tech
- 质押验证节点申请: team@aetherixtoken.tech
- GitHub: https://github.com/aetherix
- 社区: https://x.com/aetherixtoken