
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Qubic Bob 是 Qubic网络 的高性能索引器。它从节点同步tick数据,通过共识和日志事件验证完整性,索引***状态,并通过以下方式暴露数据:
tickStream、newTicks、logs、transfers。此镜像在单个容器中集成了 bob + KeyDB + Kvrocks——无需安装额外服务。
bashdocker run -d --name qubic-bob \ -p 21842:21842 \ -p 40420:40420 \ -e NODE_SEED=your_55_char_lowercase_seed_a_z_only_padded_to_55chars \ -v qubic-bob-redis:/data/redis \ -v qubic-bob-kvrocks:/data/kvrocks \ -v qubic-bob-data:/data/bob \ qubiccore/bob:latest
yamlservices: qubic-bob: image: qubiccore/bob:latest container_name: qubic-bob restart: unless-stopped ports: - "21842:21842" # P2P端口 - "40420:40420" # JSON-RPC / REST / WebSocket端口 environment: NODE_SEED: your_55_char_lowercase_seed_a_z_only_padded_to_55chars NODE_ALIAS: my-bob-node # 完整环境变量列表见docs/DOCKER_ENV.md volumes: - qubic-bob-redis:/data/redis - qubic-bob-kvrocks:/data/kvrocks - qubic-bob-data:/data/bob volumes: qubic-bob-redis: qubic-bob-kvrocks: qubic-bob-data:
bash# 启动后等待约30秒,然后执行: curl -s http://localhost:40420/status | jq curl -s -X POST http://localhost:40420/qubic \ -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","method":"qubic_getTickNumber","params":[],"id":1}'
| 标签 | 说明 |
|---|---|
latest | 最新稳定版本,推荐用于生产环境。 |
vX.Y.Z(如 v1.5.0) | 固定版本,需要可重现性时推荐使用。 |
nightly | 每日从 master 分支构建,可能不稳定。 |
各版本变更说明见 https://github.com/qubic/core-bob/blob/master/RELEASE_NOTES.md%E3%80%82
| 资源 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 4核(需支持AVX2) | 8核及以上 |
| 内存 | 12 GB | 32 GB |
| 存储 | 300 GB SSD/NVMe | 500 GB+ NVMe |
| 网络 | 100 Mbps | 1 Gbps |
Bob在繁忙网络中对内存需求较高。KeyDB会将近期tick数据保存在内存中,之后迁移到磁盘上的Kvrocks;如果网络吞吐量超过 REDIS_MAXMEMORY,日志中会出现 OOM command not allowed when used memory > maxmemory 错误。详见下方 负载下的调优。
| 端点 | 协议 | 用途 |
|---|---|---|
POST http://localhost:40420/qubic | JSON-RPC 2.0 | 主要API |
ws://localhost:40420/ws/qubic | WebSocket | 订阅 + JSON-RPC |
GET http://localhost:40420/* | REST | 便捷端点 |
GET http://localhost:40420/swagger | Swagger UI | REST API浏览器 |
| 方法 | 描述 |
|---|---|
qubic_getTickNumber | 获取最新tick编号 |
qubic_getTickByNumber | 获取完整tick详情(摘要、投票、费用、日志范围) |
qubic_getBalance | 获取身份的QU余额 |
qubic_getAssetBalance | 获取资产余额(所有权 + 持有量) |
qubic_getTransactionByHash | 通过哈希获取交易 |
qubic_getTransactionReceipt | 获取交易收据(状态:"success" | "failed" | "pending") |
qubic_getLogs | 按tick范围、身份、日志类型过滤日志 |
qubic_broadcastTransaction | 提交已签名交易 |
qubic_status | 获取完整节点状态 |
qubic_subscribe | WebSocket订阅(newTicks、logs、transfers、tickStream) |
完整参考:https://github.com/qubic/core-bob/blob/master/docs/QUBIC_JSON_RPC.md · https://github.com/qubic/core-bob/blob/master/docs/REST_API.md · https://gistpreview.github.io/?6912d613bc27ae75126859447fca8acf
两种配置方式,按优先级排序:
bob.json——适用于环境变量不足以满足需求的高级场景。| 环境变量 | 用途 | 默认值 |
|---|---|---|
NODE_SEED | 55字符a-z种子,用于标识节点 | - |
NODE_ALIAS | 显示名称 | Big fat bob |
P2P_NODES | 逗号分隔的节点列表 | 自动发现 |
LOG_LEVEL | 日志级别(trace/debug/info/warn/error) | info |
REDIS_MAXMEMORY | KeyDB内存上限 | 2gb |
KVROCKS_TTL | Kvrocks数据保留时间(秒) | 1209600(14天) |
bashdocker run -d --name qubic-bob \ -p 21842:21842 -p 40420:40420 \ -v ./bob.json:/app/bob.json \ -v qubic-bob-redis:/data/redis \ -v qubic-bob-kvrocks:/data/kvrocks \ -v qubic-bob-data:/data/bob \ qubiccore/bob:latest
⚠️ 不要对bob.json挂载使用 :ro——入口点在启动时会修补该文件。
完整bob.json参考:https://github.com/qubic/core-bob/blob/master/docs/CONFIG_FILE.MD%E3%80%82
| 路径 | 内容 | 是否需要持久化 |
|---|---|---|
/data/redis | KeyDB持久化数据(AOF + RDB) | 是 |
/data/kvrocks | Kvrocks(基于RocksDB)数据 | 是 |
/data/bob | bob的快照文件 | 是 |
/app/logs | supervisord管理的子进程日志 | 可选 |
无卷的新容器每次重启都会从头开始——适合开发,不适合守护者节点或生产环境索引器。
如果出现 Failed to add log ... OOM command not allowed:
| 症状 | 解决方法 |
|---|---|
| 高交易 volume 下持续OOM | 增加 REDIS_MAXMEMORY(例如 8gb) |
| 容器重启后OOM | 等待数据迁移完成,或降低 LAST_N_TICK_STORAGE(lastNTick模式)/ n_tickdata_to_store(kvrocks模式) |
| 磁盘使用率快速增长 | 降低 KVROCKS_TTL(默认14天),7天可减少一半磁盘占用 |
| 清理程序(Cleaner)落后 | 查看 Current state: 日志行——GC: <a>/<b> 数值应跟踪索引进度;若偏离,说明机器性能不足 |
Bob大约每分钟记录一次 KeyDB memory: <已用> / <最大> (XX%) 日志,当使用率超过85%时会立即记录——这是内存压力最清晰的信号。
| 问题 | 检查项 |
|---|---|
| 容器立即退出 | docker logs qubic-bob——通常是配置验证错误(无效 NODE_SEED、P2P_NODES 格式错误) |
| 卡在 "Waiting for new epoch info from peers" | 节点集不可达。验证对列出节点的21841端口的出站连接。默认使用 qubic.global 自动发现。 |
低价值交易 status: "failed" | v1.4.0+ 不应出现此问题(默认 SPAM_QU_THRESHOLD 已设为 0),请升级版本。 |
tick_data 端点返回0值 | tick超出保留窗口。检查 TICK_STORAGE_MODE:lastNTick 会删除旧数据;kvrocks 会归档。 |
| WebSocket订阅断开 | Bob会自动断开空闲WS连接,断开后重新订阅即可(正常现象)。 |
bash# 查看生效配置 docker exec qubic-bob jq . /app/bob.json docker exec qubic-bob cat /etc/redis/redis.conf docker exec qubic-bob cat /etc/kvrocks/kvrocks.conf # 直接操作KeyDB / Kvrocks docker exec qubic-bob redis-cli ping # KeyDB(端口6379) docker exec qubic-bob redis-cli -p 6666 ping # Kvrocks(端口6666) # 跟踪bob日志 docker logs -f qubic-bob
由Qubic Bob团队精心打造。特别感谢 https://github.com/krypdkat 提供的原始qubicbob项目基础。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务