@metaplex-foundation/mpl-bubblegum のv3.1.2と、v4.0.0で発生しているエラー。
Agenda
現象
@metaplex-foundation/mpl-bubblegum のv3.1.2で、新規にcNFTをMintしてから「parseLeafFromMintToCollectionV1Transaction」を実行すると以下のエラー。
/Users/bubblegum_CompressedNFT/node_modules/@metaplex-foundation/umi-serializers/src/dataEnum.ts:159
throw new EnumDiscriminatorOutOfRangeError(
^
EnumDiscriminatorOutOfRangeError: Enum discriminator out of range. Expected a number between 0 and 0, got 159.
at Object.deserialize (/Users/bubblegum_CompressedNFT/node_modules/@metaplex-foundation/umi-serializers/src/dataEnum.ts:159:15)
at parseLeafFromMintToCollectionV1Transaction (/Users/bubblegum_CompressedNFT/node_modules/@metaplex-foundation/mpl-bubblegum/src/leafAssetId.ts:57:44)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at async parseLeafFromMintToCollectionSignature (/Users/bubblegum_CompressedNFT/src/parseLeafFromMintToCollectionSignature.ts:38:28)
一方で、@metaplex-foundation/mpl-bubblegum のv4.0.0で、v3.1.2でMint済みのcNFTで「parseLeafFromMintToCollectionV1Transaction」を実行すると以下のエラー。
/Users/bubblegum_CompressedNFT/node_modules/@metaplex-foundation/umi-serializers/src/publicKey.ts:38
throw new DeserializingEmptyBufferError('publicKey');
^
DeserializingEmptyBufferError: Serializer [publicKey] cannot deserialize empty buffers.
at Object.deserialize (/Users/bubblegum_CompressedNFT/node_modules/@metaplex-foundation/umi-serializers/src/publicKey.ts:38:15)
at forEach (/Users/bubblegum_CompressedNFT/node_modules/@metaplex-foundation/umi-serializers/src/struct.ts:51:47)
at Array.forEach (<anonymous>)
at Object.deserialize (/Users/bubblegum_CompressedNFT/node_modules/@metaplex-foundation/umi-serializers/src/struct.ts:50:14)
at Object.deserialize (/Users/bubblegum_CompressedNFT/node_modules/@metaplex-foundation/umi-serializers/src/dataEnum.ts:165:50)
at parseLeafFromMintToCollectionV1Transaction (/Users/bubblegum_CompressedNFT/node_modules/@metaplex-foundation/mpl-bubblegum/src/leafAssetId.ts:57:44)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at async parseLeafFromMintToCollectionSignature (/Users/bubblegum_CompressedNFT/src/parseLeafFromMintToCollectionSignature.ts:38:28)
原因
仕様変更があったらしく、v3系とv4系でcNFTの仕様が異なるっぽい。
対応
bubblegumを最新v4.0.0にして、cNFTをMintし直す。
または、バージョンとMint時期の組み合わせだけのため、バージョンを組み合わせて対応する。
整理すると、以下のような検証結果になった(2024年4月29日現在で、やや不安定のため、また状況変わる可能性大)。
2024年4月以前にMint | 2024年4月以降にMint | |
v3.1.2 | 操作可能 | 操作不可 |
v4.0.0 | 操作可能 | 操作可能 |
参考
Metaplex Bubblegum (Compressed NFT Program) has been deployed to devnet along with package v4.0.0 and crate v0.1.3.
This deployment removes a deprecated CPI to Token Metadata (consequently saving up 30K CU and removing two required accounts).
Please note that this resulted in a breaking change to the parseLeafFromMintToCollectionV1Transaction method, so users must upgrade to v4.0.0 to continue using the method.
No changes are required if the above is unused.
https://www.npmjs.com/package/@metaplex-foundation/mpl-bubblegum
https://crates.io/crates/mpl-bubblegum
Metaplex Bubblegum (圧縮 NFT プログラム) は、パッケージ v4.0.0 およびクレート v0.1.3 とともに devnet にデプロイされました。
この展開では、非推奨の CPI からトークン メタデータが削除されます (その結果、30,000 CU が節約され、2 つの必要なアカウントが削除されます)。
これにより、parseLeafFromMintToCollectionV1Transaction メソッドに重大な変更が加えられたため、このメソッドを引き続き使用するには、ユーザーは v4.0.0 にアップグレードする必要があることに注意してください。
上記を使用しない場合は変更の必要はありません。