機能
検証済み作成者
コレクションと同様に、アセットの真正性を確保するために、アセットの作成者を検証する必要があります。
verifiedフラグがfalseの作成者は誰でも追加できるため、信頼できません。一方、verifiedフラグがtrueの作成者は、そのアセットの作成者として自分を検証するトランザクションに署名したことが保証されています。
以下のセクションでは、アセットの作成者を検証および未検証にする方法を学びます。作成者を検証する前に、それは既にアセットのMetadataアカウントのCreators配列の一部である必要があることに注意してください。これはアセットをミントするときに行うことができますが、アセットを更新するときにも行うことができます。
作成者の検証
Verify命令を使用して、アセットの作成者を検証できます。同じ命令は、命令に異なる引数を渡すことで、コレクションの検証にも使用できることに注意してください。一部のSDKでは、より良い開発者体験を提供するために、これらの命令をverifyCreatorV1やverifyCollectionV1のような複数のヘルパーに分割しています。
作成者を検証する文脈でVerify命令が必要とする主な属性は以下の通りです:
- Metadata: アセットのMetadataアカウントのアドレス。
- Authority: 検証しようとしている作成者(署名者として)。
以下は、Token Metadataで作成者を検証するためのSDKの使用方法です。
1import { verifyCreatorV1 } from '@metaplex-foundation/mpl-token-metadata';
2
3// Assuming umi, metadata, and creator are set up
4
5await verifyCreatorV1(umi, {
6 metadata,
7 authority: creator,
8}).sendAndConfirm(umi);
9
10console.log('Creator verified');
1import {
2 getVerifyCreatorV1Instruction,
3 findMetadataPda,
4} from '@metaplex-foundation/mpl-token-metadata-kit';
5
6// Assuming rpc, rpcSubscriptions, sendAndConfirm, and creator (signer) are set up
7
8const mintAddress = 'mintAddress...'; // The NFT mint address
9
10// Find the metadata PDA
11const [metadata] = await findMetadataPda({ mint: mintAddress });
12
13// Verify the creator on the NFT
14const verifyIx = getVerifyCreatorV1Instruction({
15 metadata,
16 authority: creator,
17});
18
19await sendAndConfirm({
20 instructions: [verifyIx],
21 payer: creator,
22});
23
24console.log('Creator verified on NFT');
作成者の未検証
相互に、Unverify命令を使用して、作成者のverifiedフラグをfalseに変更できます。Verify命令と同じ属性を受け取り、同じ方法で使用できます。
1import { unverifyCreatorV1 } from '@metaplex-foundation/mpl-token-metadata';
2
3// Assuming umi, metadata, and creator are set up
4
5await unverifyCreatorV1(umi, {
6 metadata,
7 authority: creator,
8}).sendAndConfirm(umi);
9
10console.log('Creator unverified');
1import {
2 getUnverifyCreatorV1Instruction,
3 findMetadataPda,
4} from '@metaplex-foundation/mpl-token-metadata-kit';
5
6// Assuming rpc, rpcSubscriptions, sendAndConfirm, and creator (signer) are set up
7
8const mintAddress = 'mintAddress...'; // The NFT mint address
9
10// Find the metadata PDA
11const [metadata] = await findMetadataPda({ mint: mintAddress });
12
13// Unverify the creator on the NFT
14const unverifyIx = getUnverifyCreatorV1Instruction({
15 metadata,
16 authority: creator,
17});
18
19await sendAndConfirm({
20 instructions: [unverifyIx],
21 payer: creator,
22});
23
24console.log('Creator unverified on NFT');
