assetOrVC クレームは、ユーザーに、指定された一連の基準を満たすオンチェーンアセット(NFTなど)または検証可能なクレデンシャル(VC)のいずれかの所有証明を提示するよう要求する柔軟な方法を提供します。これは、複数の資格形式が受け入れられる、柔軟なアクセス制御を要するシナリオで特に役立ちます。
より具体的なリクエストについては、アセットクレームまたは検証可能なクレデンシャルクレームのドキュメントを参照してください。
仕組み
assetOrVC クレームの中核は filters 配列です。この配列を使用すると、1つ以上の条件セットを定義できます。これらのフィルターを評価するロジックは次のとおりです。
- フィルター間のORロジック:ウォレットは
filters配列内の各フィルターオブジェクトを個別に評価します。ユーザーは、これらのフィルターオブジェクトの少なくとも1つの条件を満たすアセットまたはVCを提示するだけで済みます。 - フィルター内のANDロジック:単一のフィルターオブジェクト内では、提示されたアセットまたはVCが、指定されたすべてのプロパティ(例:
trustedIssuers、tag)を満たす必要があります。 - 配列値のORロジック:値の配列を受け入れるプロパティ(
typeやtrustedIssuersなど)の場合、提示されたアイテムは配列内の値のいずれか1つに一致するだけで済みます。
パラメータ
assetOrVC クレームオブジェクトは、次のパラメータで設定されます。
| パラメータ | タイプ | 説明 | デフォルト |
|---|---|---|---|
type | string | クレームのタイプ。assetOrVC である必要があります。 | 'assetOrVC' |
description | string | ユーザーのウォレットに表示されるメッセージで、何が要求されているかを説明します。 | 'Please present NFT to continue.' |
optional | boolean | true の場合、ユーザーはセッションを終了せずにこのクレームリクエストをスキップすることを選択できます。 | false |
filters | object[] | **必須。**アセットまたはVCの許容基準を定義するフィルターオブジェクトの配列。 | [] |
フィルターオブジェクトのパラメータ
filters 配列内の各オブジェクトには、必要な基準を指定するために次のプロパティを含めることができます。
| パラメータ | タイプ | 説明 |
|---|---|---|
type | string[] | **VC のみ。**許容されるVCタイプ名の配列(例:['ProofOfCommunity'])。 |
address | string | 特定のアセットまたはVCのDIDアドレス。 |
trustedIssuers | string[] | アセットまたはVCの信頼できる発行者のDIDのリスト。 |
trustedParents | string[] | **アセットのみ。**信頼できる親DIDのリスト(例:NFTコレクションアドレス)。 |
tag | string | アセットまたはVCに存在する必要がある特定のタグ。 |
ownerDid | string[] | DIDの配列。ウォレットはこれらのDIDの1つを制御し、アセット/VCを所有していることを証明する必要があります。デフォルトは接続されたユーザーのDIDです。 |
consumed | boolean | **アセットのみ。**アセットが consumed または unconsumed 状態である必要があるかを指定します。 |
claimUrl | string | **VC のみ。**ウォレットが必要なクレデンシャルに関する詳細情報を見つけられるURL。 |
acquireUrl | string | **アセットのみ。**ユーザーがまだアセットを持っていない場合に、それを取得するためにアクセスできるURL。 |
例
プレミアムイベントへのアクセスを許可したい場合を想像してください。アクセスは、「VIP Ticket」NFTまたは「VerifiedMember」クレデンシャルのいずれかを保持しているユーザーに許可されます。次のように assetOrVC クレームを構築できます。
DID Connect Claim Request
const claims = {
assetOrVC: {
description: 'VIPチケットまたはメンバーシップクレデンシャルを提示して入場してください。',
filters: [
// 条件1:ユーザーが公式コレクションのVIPチケットNFTを所有している
{
trustedParents: ['zNKoA8Y4m1a3b5C7E9F1G3H5J7K9L1M3N5'], // NFTコレクションのDID
tag: 'VIP_TICKET_2024',
acquireUrl: 'https://example.com/buy-ticket'
},
// 条件2:ユーザーが信頼できるパートナーからのVerifiedMemberクレデンシャルを所有している
{
type: ['VerifiedMember'],
trustedIssuers: ['zNKjDm4Xsoaffb19UE6QxVeevuaTaLCS1n1S'] // 信頼できるパートナーのDID
}
]
}
};この例では:
- ユーザーのウォレットは、まず
trustedParentsコレクションに属し、かつVIP_TICKET_2024タグを持つアセットを探します。 - そのようなアセットが見つからない場合、次に指定された
trustedIssuersによって発行されたVerifiedMemberタイプの検証可能なクレデンシャルを探します。 - ユーザーがいずれかの条件に一致するアイテムを持っている場合、それを提示してクレームを満たすことができます。どちらも持っていない場合、ウォレットはチケットを取得するための
acquireUrlを表示することがあります。
この柔軟なクレームは、高度なアクセス制御システムを構築するための強力なツールです。実際のアプリケーションでこれを確認するには、NFT Gated Access の例を参照してください。