XODEの人物認証

人間であることだけを、
確かめる。それ以外は何も知らない。

Xodianは、アプリの利用者一人ひとりが正規の端末を使う実在の人物であることを確認します。自撮りも、本人確認書類のアップロードも、個人情報も不要です。アプリは署名付きの非公開の証明書を受け取り、1台の端末が1つのアプリで作れる証明書は1つだけです。

ハードウェア認証済みの端末 アプリ間で紐付かないID 判定はオンチェーンに記録

なぜ必要か

端末1台。人ひとり。受け取りは1回。

ウォレットを50個持つファーマーは、50人の利用者に見えてしまいます。Xodianはすべての応答を正規の端末1台のハードウェアキーに結び付けるので、そのファームは再び1人になります。

Xodianなし

ウォレット1つが1人として数えられ、端末ファーム1つがキャンペーンを食い尽くします。

0件 · 1つのファームが受け取った数

Xodianあり

同じ端末、同じ人、同じsub。残り49個のウォレットは1つのIDにまとまります。

0件 · 1つのファームが受け取った数

実測ではなく、ルールを示す例です。Xodianは1台の端末上のすべてのウォレットに同じIDを返します。

活用シーン

1人につき1アカウントであるべき、あらゆる場面に

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

エアドロップと報酬

1人に1回だけ配布。1台の端末にウォレットが50個あっても受け取りは1回です。

A game controller with one player badge and duplicate badges dissolving

ゲーム

ランク戦、体験版、初回ボーナスはプレイヤー1人につき1アカウント。

A queue of people casting ballots into a glass box

投票とコミュニティ

誰なのかを聞かずに、1人1票。

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はそもそも収集しません
電話番号・端末の機種 AndroidかiPhoneかさえ伝えません
ウォレット・残高・利用履歴 アドレスは依頼があり、利用者が同意した場合のみ
他のアプリとの紐付け 同じ人でもアプリごとに別のIDになります

保証レベル

どこまで厳しくするかを選べます

セッションを開くときにminLevelを指定します。基準に満たない場合はrejectedだけが返り、条件を満たす方法はomniが本人にだけ案内します。

1
レベル1 · 端末認証

正規の端末を使う実在の人物

  • ウォレットがハードウェアキー(StrongBox・TEE・Secure Enclave)に紐付いている
  • Google Play IntegrityまたはApple App Attestに合格し、最近再確認されている
  • エミュレーター、root化された端末、改ざんされたアプリは拒否
登録・体験版・ボット対策に
2
レベル2 · 信頼済み

レベル1に加えて利用実績

  • 登録から14日以上、7日以上の利用
  • 直近30日間に端末の変更なし
  • 偽のIDごとに端末1台を数週間動かし続ける必要がある
エアドロップ・支払い・投票に

ハードウェアキー

端末はセキュアチップから出せない鍵で署名します。ウォレットのシードをコピーしても通りません。

ストアによる証明

GoogleとAppleが、端末とアプリが正規で改ざんされていないことを保証します。

アプリごとのID

アプリごとに異なるIDなので、パートナー同士がデータを突き合わせて個人を追跡できません。

オンチェーン記録

すべての判定は毎時XODEチェーンに記録され、後から変更されていないことを誰でも確認できます。

連携

呼び出しは3回、SDKの縛りなし

ふつうのHTTPSと標準のJWTなので、どの言語・どのJOSEライブラリでも連携できます。


    

サンドボックス

端末がなくても、連携を最後まで作れます

テストキーは本番キーと同じように動き、端末の代わりにシミュレーターが応答します。トークンは同じコードで検証でき、"test": trueが付きます。本番環境ではこのフラグを拒否してください。

1 · テストキーを取得

無料ですぐに発行されます。キーは1日5個まで、各キーで1日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。各セッションは1回だけ使えます。

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が証明するのは、正規の端末を使う実在の人物が1人であることだけです。その人が誰なのかは知ることも共有することもありません。多くのチームがKYCの手前で使い、通過した人だけに本人確認の費用をかけています。

生体情報や書類を集めますか?

いいえ。自撮りも顔のスキャンも書類のアップロードもありません。証明は端末のハードウェアキーと、Google Play IntegrityまたはApple App Attestによるものです。

端末を買い替えたらどうなりますか?

ウォレットが引き継がれるので、アプリでは同じIDのままです。他人が使った端末に移ってきたウォレットはcontestedとして返るので、扱いを決められます。

複数の端末を使えば、まだファーミングできますか?

はい、正規の端末1台につきIDは1つです。レベル2では端末ごとに数週間の利用が必要になるため、コストが大きくなります。Xodianが防ぐのは安上がりな手口、つまり1台の端末での複数ウォレット、エミュレーター、改ざんアプリです。

費用はいくらですか?

XodianはXODE上でサービスを作るパートナー向けにアーリーアクセス中です。テストキーは無料です。本番キーと料金はお問い合わせください。

ボットへの支払いをやめよう

テストキーは数秒で取得でき、連携は今日中に終わります。本番キーをご希望なら、何を守りたいのか教えてください。