L2 · DEVICE AGENT · 零成本
一条命令,让你的机器自己作证 / 设备签名身份 L2
在机器上生成一对设备密钥,遥测在本地签名,服务端验签通过才落库。私钥不出这台机器。不要账户、不要 API key、不要钱。
已签名设备
0
真实设备(站内演示不计)
可认领主机
1,239
台账里已有公开报价
已认领
0
台设备完成主机桥接
为什么现在才做这一页:L2 从 v0.1 就写进规范,但真实设备一直是 0 台——不是没人愿意,而是从来没有人能跑起来的一条命令。这一页就是那条命令,连同它证明什么、不证明什么,一起写清楚。
跑起来
# 1) 下载(单文件、零依赖、Node 16+)
curl -sO https://cvin.org/cvin_attest_agent.js
# 2) 先看它要发什么(不上传)
node cvin_attest_agent.js --dry-run
# 3) 上报(升 L2),顺手认领你的市场主机号
node cvin_attest_agent.js --link vast.ai:513108 --operator "你的机房名"
# 4) 长期维护:每小时重签一次(超过 30 天不签会退回 stale)
node cvin_attest_agent.js --watch 60
只读
nvidia-smi——不碰你的业务负载、不开端口、除了你指定的接口之外不回传任何地方。证明什么,不证明什么
| 能证明 | ① 你声明的 CVIN 与这台 GPU 的序列号/UUID 哈希一致(序列号原文不出机器);② 此后每条遥测都由同一把设备私钥签名,验签通过才落库;③ 如果认领了主机号,服务端会拿台账里该主机已有的公开报价做机型核对。 |
| 不能证明 | 不证明机器没换过卡(换卡必须换 CVIN)、不证明运营方没说谎(只证明「同一把钥匙持续发言」)、也不证明你是这台机器的合法所有人(我们没有平台账户权限,这一点不假装有)。 |
| 私钥怎么管 | 首次运行写到 ~/.cvin/device-*.pem(权限 0600),之后复用。丢了只能换 CVIN(旧履历仍在,但无法继续签名);已绑定的密钥不允许更换——这是防密钥替换的设计。 |
遥测字段(白名单)
只接受并落库这些字段。签名校验前会先按白名单裁剪——所以「你签的」和「第三方从台账能复算的」是同一份数据。
| 字段 | 来源 |
|---|---|
| hours_power_on | agent 参数 --hours(你的系统有统计时) |
| ecc_errors | nvidia-smi |
| ecc_uncorrectable | nvidia-smi |
| temp_c | nvidia-smi |
| power_w | nvidia-smi |
| sm_count | 驱动读取 |
| mem_total_mb | nvidia-smi |
| driver_version | nvidia-smi |
| uuid | 不做明文落库(只存哈希) |
| pcie_bdf | nvidia-smi |
| utilization_pct | nvidia-smi |
常见问题
| 一台 8 卡机是不是 8 个 CVIN? | 是。身份是按卡(按 GPU UUID)建的,8 张卡可以各自认领同一个主机号。主机级报价对应整台机器,报告里会写明「主机报价 ÷ 在册卡数」的除法算式。 |
| 这台机器没有 GPU | 那它就不是 GPU 资产——agent 会以退出码 2 结束并直接告诉你原因,而不是硬造一个身份。 |
| AMD / 昇腾 / 其他厂商 | 规范本身覆盖(厂商标识在编号里),但当前 agent 只读 nvidia-smi。把型号与序列号发到 hi@cvin.org,我们按同一规则给你编码。 |
| 换卡了 / 重装了系统 | 换卡 = 新序列号哈希 = 新 CVIN(旧 ID 保留,走别名表关联)。重装系统只要保留 ~/.cvin 就不受影响。 |
| 服务端会收费吗? | 不会。写入方永远免费——declare / attest / bind 三条都是永久免费。我们收的是决策文件的费,不是收证据的费。 |