XODE 真人认证

确认是真人,
其余一概不知。

Xodian 让你的应用确认每位用户都是使用正版手机的真实个人。无需自拍、无需上传证件、无需任何个人信息。你的应用会收到一份签名的私密凭证,而且每部手机在每个应用里只能生成一份。

硬件认证的设备 跨应用不可关联的 ID 判定记录上链

为什么需要

一部手机,一个人,一次领取。

一个手握 50 个钱包的刷量者,在你看来就是 50 个用户。Xodian 把每次应答都绑定到一部正版手机的硬件密钥上,让这个刷量工作室重新变回一个人。

没有 Xodian

每个钱包都被当成一个人,一个手机农场就能掏空整个活动。

0次 · 一个农场领取的次数

使用 Xodian

同一部手机、同一个人、同一个 sub。其余 49 个钱包都归为同一个 ID。

0次 · 一个农场领取的次数

这是规则的示意,并非实测:Xodian 会为同一部手机上的所有钱包返回相同的 ID。

适用场景

凡是一人一号的地方都适用

Tokens going to a queue of people while robot boxes are held behind a barrier

空投与奖励

每人只发一次。一部手机上有 50 个钱包,也只能领一次。

A game controller with one player badge and duplicate badges dissolving

游戏

排位赛、试玩和新手奖励,每位玩家只有一个账号。

A queue of people casting ballots into a glass box

投票与社区

无需询问成员身份,即可做到一人一票。

People walking through a glowing gateway while robots are filtered out before a vault

金融科技开户

在 KYC 之前过滤机器人,只为真人支付完整的身份核验费用。

工作原理

用户只需大约 5 秒

扫码、查看共享内容、在 omni 中确认即可。你的服务器会收到一份可离线验证的凭证。

用 omni 扫码×
请对准 Acme Airdrop 上的二维码
Xodian×
A

Acme Airdrop 想确认你是真实用户

✓ acme.example所需等级:可信账户
ACME AIRDROP 将收到
✓ 你是使用正版手机的真实用户的确认
✓ 只有 Acme 能看到的私密 ID
绝不共享
🔒 姓名、手机号或面部信息
🔒 钱包、余额和活动
确认
拒绝
Xodian×

验证成功

Acme Airdrop 现在只知道你是真实用户,其他一概不知。

◆ 可信账户

从设计上保护隐私

连你不会收到什么,我们都想清楚了

用户保住隐私,你也不必承担保存无用数据的责任。

你的服务器收到 · id_token✓ 已验证的真人
{
  "iss": "https://xodian.xode.net",
  "aud": "rp_acme",
  "sub": "oid_9f3c1a…e07b",   // only you see this
  "human": true,
  "level": 2,
  "level_name": "established",
  "uniqueness": "new",
  "nonce": "claim-8812",
  "receipt": "1759651200-a1b2c3d4"
}
姓名、面部、证件 omni 从一开始就不收集
手机号、设备型号 连是安卓还是 iPhone 都不透露
钱包、余额、活动 只有你请求且用户同意时才提供地址
与其他应用的关联 同一个人在每个应用里的 ID 都不同

保障等级

自行选择严格程度

创建会话时设置 minLevel。未达标时你只会收到 rejected,omni 会私下告诉用户如何达标。

1
等级 1 · 设备

使用正版手机的真实个人

  • 钱包绑定到硬件密钥(StrongBox、TEE 或 Secure Enclave)
  • 已通过 Google Play Integrity 或 Apple App Attest,且近期重新核验过
  • 拒绝模拟器、已 root 的设备和被篡改的应用
适用于注册、试用和反机器人
2
等级 2 · 可信账户

等级 1,再加上使用记录

  • 账户注册满 14 天,至少活跃 7 天
  • 最近 30 天内没有更换设备
  • 每个假身份都需要一部手机持续运行数周
适用于空投、发放和投票

硬件密钥

手机用无法离开安全芯片的密钥签名,复制钱包助记词也没用。

应用商店认证

Google 和 Apple 担保设备和应用是正版且未被篡改。

按应用区分的 ID

每个应用的 ID 都不同,合作方无法拼接数据来追踪个人。

链上记录

每个判定每小时锚定到 XODE 链上,任何人都能确认事后没有被改动。

接入

三次调用,不绑定 SDK

就是普通的 HTTPS 和标准 JWT,任何语言、任何 JOSE 库都能接入。


    

沙盒

没有手机,也能把接入做完

测试密钥和正式密钥用法一样,只是由模拟器代替手机应答。令牌用同样的代码验证,并带有 "test": true。生产环境中请拒绝带此标记的令牌。

1 · 获取测试密钥

免费,立即生成。每天最多 5 个密钥,每个密钥每天最多 500 个会话。

// Get a test key to begin. Every call you make appears here,
// with the exact request your server would send.

在线演示

用你自己的手机试试

这里连接的是正式服务。右侧就是合作方服务器实际收到的内容。

亲自验证

在手机上打开 omni,然后扫码。在手机上,按钮会直接打开 omni。

💡你需要从 Google Play 或 App Store 安装 omni,并完成设备注册。演示要求等级 1。
// Waiting. Press "Verify with Xodian" to start.

API 参考

接口

基础 URL 为 https://xodian.xode.net。服务器调用使用 Authorization: Bearer osk_… 认证。

阅读完整手册 →

接口认证用途
POST/v1/sessionssecret请求体 {scope, minLevel, reference}。返回 sessionId、url、deeplink、pollToken 和 expiresAt(5 分钟)。
GET/v1/sessions/{id}secret状态。批准后还会返回 idToken、sub 和 level。
GET/v1/sessions/{id}/status?t=pollToken仅返回状态,可安全地从浏览器调用。组件使用此接口。
POST/v1/test/clientsnone自助沙盒密钥:{name} → 客户端 ID 和密钥。
POST/v1/test/sessions/{id}/simulatetest session应答测试会话:approve、deny、reject 或 expire。
GET/v1/.well-known/jwks.jsonpublic签名公钥(ES256,按 kid 选择)。
GET/sentinel/receipt/{receipt}public证明判定已锚定到 XODE 链上的默克尔证明。

会话状态

pending → approved | denied | rejected | expired。每个会话只能使用一次。

Webhook

session.* 和 grant.revoked 事件,使用 X-Omni-Signature: t=…,v1=HMAC_SHA256(secret, t.body) 签名。

令牌检查

先验证签名,再检查 iss、aud、exp,并确认 nonce 等于你发送的 reference。用 sub 作为用户标识。

唯一性

new、returning(同一个人或同一部手机),或 contested(此钱包转移到了已被他人使用过的手机上)。contested 很可能是重复账户。

常见问题

接入之前

这是 KYC 吗?

不是。Xodian 只证明对方是使用正版手机的一个真实个人,从不知道也不透露他是谁。很多团队把它放在 KYC 之前,只为通过的人支付完整的身份核验费用。

会收集生物特征或证件吗?

不会。没有自拍、没有人脸扫描、也没有证件上传。证明来自手机的硬件密钥,以及 Google Play Integrity 或 Apple App Attest。

用户换了新手机怎么办?

钱包会随之迁移,所以在你的应用里 ID 保持不变。如果钱包转移到了已被他人使用过的手机上,会被标记为 contested,由你决定如何处理。

一个人用多部手机还能刷吗?

可以,每部正版手机对应一个 ID。等级 2 要求每部手机持续活跃数周,成本会很高。Xodian 杜绝的是低成本的做法:一台设备上的多个钱包、模拟器和被篡改的应用。

费用是多少?

Xodian 正在面向基于 XODE 构建服务的合作方提前开放。测试密钥免费。正式密钥和价格请联系我们。

别再为机器人买单

几秒钟就能拿到测试密钥,今天就能完成接入。需要正式密钥,请告诉我们你要保护什么。