【Candy Machine】WhitelistをNFTとして発行する手順

SPLトークンをwhitelistトークンとして使用してしまうと、以下のようにPhantom walletでFTではなくてNFTとして扱われてしまいます。

▲しかもUnknown Tokensと表示されちゃう

理由については、Phantom walletの公式Docに書いてます。

If the total mint supply is greater than 1 and the mint has 0 decimals, Phantom will consider the token to be a FungibleAsset.

Deeple訳:ミントの総供給量が1より大きく、ミントの小数点以下が0の場合、PhantomはそのトークンをFungibleAssetと見なします。

引用:https://docs.phantom.app/best-practices/tokens

なので「だったら最初からSPLトークンにmetadataを付けてNFTとしてWhitelistトークンを発行したらいいじゃん」っていうことでその方法についてメモ。

 

方法としては恐らく以下の2つがあります。

  1. SPLトークンを作って、そのSPLトークンにmetadataを割り当てる
  2. 最初からmetadataが割り当てられたSPLトークンを作る

 

どうせなので両方書きたいと思います。

1.の方法

まず、SPLトークンを発行します。

ここでは100個発行するものとします。

$ spl-token create-token --decimals 0
Creating token 2PzS3QmWY4yS1HTuMNp2yBw2sEge7D1ioJF9bb3pZ4SD

Signature: egXzpHNnFFraR6trLREeHJCAS3mGx2wN5KFaMWauLXS47tMgVrJFMKnGviX5og8Dy4vWZ6xdVvsh6xujSzmAnxw

$ spl-token create-account 2PzS3QmWY4yS1HTuMNp2yBw2sEge7D1ioJF9bb3pZ4SD
Creating account AuPc8HfB24PkDkpYK4yijyzdPytzf4YmgvNopij4rFYE

Signature: 3QiDYnSGiPL3ZxMPq9zeaDCLfoBdNXbtyMt1ZS1vgHMuBRa2QB8PUbZ5E9YnmjErQW4SZm68SJSahGtcrN2yGZKu

$ spl-token mint 2PzS3QmWY4yS1HTuMNp2yBw2sEge7D1ioJF9bb3pZ4SD 100 
Minting 100 tokens
Token: 2PzS3QmWY4yS1HTuMNp2yBw2sEge7D1ioJF9bb3pZ4SD
Recipient: AuPc8HfB24PkDkpYK4yijyzdPytzf4YmgvNopij4rFYE

Signature: 22ECx1TRTLcoN81DsA9t4wZLCJ8xJw2mrepqHxED5YsWgRM3AngkjRpaPnhkmmpbZUuNUcqm1SL5kDii5tz3LNGo

※ピンク文字列がSPLトークンのmintアドレスです

 

次にmetadata用のJSONファイルを作ります。

ですがその前にJSONファイルに載せるための画像をArweaveにアップしておきます。以下の記事を参考に。

参考:Arweaveにファイルをアップロードする方法

 

ここでは以下の画像を使うものとします。

▲本番環境ではもっとかっこいい奴にします。

 

アップロードした結果のURLがこちら👇になります。

https://arweave.net/F2KJcKU7yhc_2ulFdxnACeWUpmGgB9OUozdpibBsYRY

 

これを元に、metadata用のJSONファイルを作ります👇

{
  "name": "AZITO WL",
  "symbol": "AZWL",
  "description": "AZITO WL DAYO",
  "image": "https://arweave.net/ygKlj2V-8hV312p0mneP4EkM3fJUXN87f9uQV-bM1w4",
  "seller_fee_basis_points":0,
  "properties": {
    "creators": [{ "address": "AzAdm1qrYije9d6WgVxV1pTj9eopWjYLQzVwPhxmEahq", "share": 100 }]
  }
}

 

このJSONファイルも同じようにArweaveにアップロードします。

アップロードした結果がこちら👇です。

https://arweave.net/CTIAOf1GVxzB8430Ba0L7y37r1RTN2tWU4xqtlB3060

 

このURLを使って、以下のコマンドでmetadataとSPLトークンを紐づけます。

ts-node ~/metaplex/js/packages/cli/src/cli-nft.ts create-metadata 
  --keypair <PATH_TO_KEYPAIR> 
  --mint 2PzS3QmWY4yS1HTuMNp2yBw2sEge7D1ioJF9bb3pZ4SD
  --uri https://arweave.net/CTIAOf1GVxzB8430Ba0L7y37r1RTN2tWU4xqtlB3060
  • <PATH_TO_KEYPAIR>:Solana秘密鍵のパス

 

これでSolana Explorerなどで確認すると、きちんと反映されているのが確認できます。

https://explorer.solana.com/address/2PzS3QmWY4yS1HTuMNp2yBw2sEge7D1ioJF9bb3pZ4SD?cluster=devnet

2.の方法

1.の方法と同じように、metadataのJSONファイルを作って、Arweaveにアップロードします。

そして、そのURLを元に以下のコマンドを実行するだけです。

ts-node ~/metaplex/js/packages/cli/src/cli-nft.ts mint
--keypair <PATH_TO_KEYPAIR>
--url <METADATA_URL>
--max-supply 100

配布

Whitelistトークンの作成ができたら、あとはWhitelistを配りたいユーザーに、トークンを配るだけです。

以下のコマンドで配布できます。

spl-token transfer --fund-recipient  --allow-unfunded-recipient <TOKEN_ADDRESS> <TOKEN_AMOUNT> <RECIPIENT_ADDRESS or RECIPIENT_TOKEN_ACCOUNT_ADDRESS>

 

例えば、64sMDiJPDhw7bU7yitrCL8gySHJDze8doH67m3bAWADrというアドレスに対して、2個のトークンを送ります。

spl-token transfer --fund-recipient --allow-unfunded-recipient 2PzS3QmWY4yS1HTuMNp2yBw2sEge7D1ioJF9bb3pZ4SD 2 64sMDiJPDhw7bU7yitrCL8gySHJDze8doH67m3bAWADr

 

64sMDiJPDhw7bU7yitrCL8gySHJDze8doH67m3bAWADrのアドレスをPhantom walletで見てみると、このようにきちんと画像も表示されます。

 

 

あと最後になりますが、この方法で発行したトークンはNFTではなくてFungibleAssetと呼ばれる分類になるみたいです。

参考:https://docs.metaplex.com/programs/token-metadata/token-standard

 

おわり

Dapp
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。WEBエンジニア。

技術スタック:TypeScript/Next.js/Express/Docker/AWS

フォローする
フォローする

コメント

タイトルとURLをコピーしました