はじめに
MIZUHIKI アテスターは、KYC 審査済みのユーザーを MIZUHIKI に登録し、MIZUHIKI Verified(本人認証済み)ソウルバウンドトークンを発行することが認可されたサービス事業者です。このトークンは、ウォレットアドレスが承認済みアテスターを通じて検証されたことを示す、非転送型のオンチェーントークンです。MIZUHIKI Verified(本人認証済み)ソウルバウンドトークンは、エコシステム内の他のサービスに向けたトラストシグナルであり、各規制対象サービスによるオンボーディング、利用資格確認、KYC 義務を置き換えるものではありません。
メリット
- ユーザーへのメリット: MIZUHIKI 対応アプリケーションに対して提示できる、ウォレットレベルの検証シグナルを得られます。ただし、各規制対象サービスは、必要な情報を別途求める場合があります。
- アプリケーションへのメリット: 個人情報をオンチェーンに公開することなく、ウォレットアドレスが KYC 審査済みの個人に帰属していることを示す、信頼性の高いオンチェーンのトラストシグナルを利用できます。
- エコシステムの相互運用性: 規制対象 DeFi、RWA、その他コンプライアンスが必要なサービスが、それぞれのオンボーディングや利用資格判断を行う際に参照できる共通の検証シグナルを提供します。
前提条件
認定アテスターになる
MIZUHIKI アテスターは、API アクセスを取得する前に MIZUHIKI チームの承認を得る必要があります。承認プロセスでは、お客様の KYC プロセスが犯罪による収益の移転の防止に関する法律の規制要件を満たしているかを確認いたします。
申請は [email protected] までご連絡ください。
承認後、以下が提供されます:
- バックエンドリクエストの認証に使用する API キー。
- プロジェクトへの操作をスコープするための プロジェクト ID(
x-project-id)。
このガイドのすべてのユーザー登録 API 呼び出しは、バックエンドから行う必要があります。クライアントサイドのコードに API キーを公開しないでください。
MIZUHIKI Verified(本人認証済み)ソウルバウンドトークンの発行
現在サポートされているユースケースは、オンチェーンのトラストシグナルとして MIZUHIKI Verified(本人認証済み)ソウルバウンドトークンをユーザーの EVM ウォレットアドレスにミントすることです。
概要
1. ユーザーを登録する → ユーザー JWT を受け取る
2. SBT を発行する
a. 署名チャレンジを取得する → SIWE メッセージパーツを受け取る
b. ユーザーがメッセージに署名 → ユーザーのウォレットから署名を受け取る
c. 署名を送信する → SBT がユーザーのアドレスにミントされる
ステップ 1 — ユーザーを登録する
ユーザーの KYC データを添えて POST /v1/auth/partner-kyc/register を呼び出します。アテスター API キーで認証してください。
POST https://api.mizuhiki.io/v1/auth/partner-kyc/register
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"partnerUserId": "partner-user-123",
"kycPii": {
"fullName": "山田 太郎",
"dateOfBirth": "1990-01-25",
"address": "東京都港区六本木2丁目3番2号",
"gender": "male"
}
}
成功すると、ユーザープロファイルとそのユーザー用の JWT が返されます:
{
"user": {
"id": "user-01JY63JZD76DTJH26HF4T2EKYX",
"status": "verified",
"linkedAddresses": []
},
"authTokens": {
"accessToken": "eyJhbGci...",
"refreshToken": "eyJhbGci..."
}
}
accessToken を保存してください。このユーザーに代わって SBT 発行の呼び出しを認証するために必要です。
partnerUserId は、お客様のシステムにおけるこのユーザーの一意の識別子でなければなりません。同じ partnerUserId で同じユーザーが再度登録した場合、既存のアカウントが返されます。
ステップ 2 — ユーザーのウォレットに SBT を発行する
SBT の発行には、ユーザーがウォレットアドレスの管理権限を証明する必要があります。これは ERC-4361 Sign-In With Ethereum(SIWE) チャレンジを通じて行われます。
ステップ 2a — 署名チャレンジを取得する
ユーザーの accessToken を使用して POST /v1/user/address/link/start を呼び出します。プロジェクト ID とアプリ名をヘッダーに含めてください。
POST https://api.mizuhiki.io/v1/user/address/link/start
Authorization: Bearer USER_ACCESS_TOKEN
x-project-id: YOUR_PROJECT_ID
x-app-name: defi.example.com
レスポンスには、ユーザーが署名する SIWE メッセージを構築するために必要なフィールドが含まれます:
{
"statement": "I agree to a soulbound token (SBT) being issued to my account...",
"domain": "mizuhiki.io",
"uri": "api.mizuhiki.io",
"chainId": 1,
"nonce": "bPJhMz0WkRhAuETBuQitAg",
"issuedAt": "2025-12-01T21:34:56.789+09:00",
"expirationTime": "2025-12-01T22:04:56.789+09:00"
}
チャレンジは expirationTime に期限切れとなります。ステップ 2b と 2c はその前に完了させてください。
ステップ 2b — ユーザーにメッセージへの署名を依頼する
チャレンジフィールドとユーザーのウォレットアドレスを使用して ERC-4361 SIWE メッセージを構築し、ユーザーのウォレットに署名を要求してください。
メッセージは以下の正確なフォーマットに従う必要があります:
{domain} wants you to sign in with your Ethereum account:
{address}
{statement}
URI: {uri}
Version: 1
Chain ID: {chainId}
Nonce: {nonce}
Issued At: {issuedAt}
Expiration Time: {expirationTime}
例:
mizuhiki.io wants you to sign in with your Ethereum account:
0x7D74778Fe31741c42C5308FB78ED5373157D51F7
I agree to a soulbound token (SBT) being issued to my account, with both me and MIZUHIKI being authorized to burn it. The SBT will have this metadata: {"name":"Mizuhiki SBT","description":"Proof of Mizuhiki KYC","image":"http://mizuhiki.io/assets/img/mizuhiki_verified.png"}
URI: api.mizuhiki.io
Version: 1
Chain ID: 1
Nonce: bPJhMz0WkRhAuETBuQitAg
Issued At: 2025-12-01T12:34:56.789Z
Expiration Time: 2025-12-01T13:04:56.789Z
ユーザーの EVM ウォレット秘密鍵を使用してこのメッセージに署名します(例:MetaMask / ethers.js の eth_sign または personal_sign 経由)。
ステップ 2c — 署名を送信して SBT をミントする
アドレス、署名済みメッセージ、ノンス、署名を添えて POST /v1/user/address/link を呼び出します。
POST https://api.mizuhiki.io/v1/user/address/link
Authorization: Bearer USER_ACCESS_TOKEN
x-project-id: YOUR_PROJECT_ID
x-app-name: defi.example.com
Content-Type: application/json
{
"address": "0x7D74778Fe31741c42C5308FB78ED5373157D51F7",
"message": "mizuhiki.io wants you to sign in with your Ethereum account:\n0x7D74778Fe...",
"nonce": "bPJhMz0WkRhAuETBuQitAg",
"signature": "0xdf6aaf23..."
}
成功すると、MIZUHIKI がユーザーのアドレスに SBT をミントします。レスポンスには、リンクされたアドレスとミントトランザクションのブロックエクスプローラー URL を含む、更新されたユーザープロファイルが含まれます:
{
"data": {
"id": "user-01JY63JZD76DTJH26HF4T2EKYX",
"status": "verified",
"linkedAddresses": [
{
"id": "user-address-01K1JJ4XVD7X5H3G3Y2EVJXT5J",
"address": "0x7D74778Fe31741c42C5308FB78ED5373157D51F7",
"linkedAt": "2025-12-01T12:34:56.789+09:00",
"sbtUrl": "https://awaji.blockscout.com/tx/0x36b9b1b2...",
"sbtTokenId": "1",
"sbtContractAddress": "0x7D74778Fe31741c42C5308FB78ED5373157D51F7"
}
]
}
}
ユーザーのウォレットは、MIZUHIKI エコシステム内のサービスがトラストシグナルとして利用できる MIZUHIKI Verified(本人認証済み)ソウルバウンドトークンを保有した状態になります。
次のステップ
- リクエスト・レスポンスのスキーマとエラーコードについては、API リファレンスをご覧ください。
- サポートやアテスター申請については、[email protected] までご連絡ください。