I am using below code to mint pNFT on Solana using Metaplex
const transactionBuilder = await METAPLEX
.nfts()
.builders()
.create({
uri: metadataUri,
name: name,
sellerFeeBasisPoints: sellerFee,
symbol: symbol,
creators: creators,
isMutable: true,
isCollection: false,
tokenStandard: TokenStandard.ProgrammableNonFungible,
ruleSet: null
});
let { signature, confirmResponse } = await METAPLEX.rpc().sendAndConfirmTransaction(transactionBuilder, { commitment: 'finalized' });
I have error in second line METAPLEX.rpc().sendAndConfirmTransaction().
Below is my error log
ParsedProgramError: The program [TokenMetadataProgram] at address [metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s] raised an error of code [1] that translates to "".
How to fix it?
The SDK I was using has been deprecated. So I switched to new JS SDK. Below is the code I used for this.
const mintpNFT = async ({ data, uri }) => {
const tx = await transactionBuilder()
.add(
createV1(umi, {
mint: mint,
uri,
name: data.imgName,
symbol: data.symbol,
isCollection: false,
sellerFeeBasisPoints: createAmount(data.sellerFeeBasisPoints, "%", 2),
tokenStandard: TokenStandard.ProgrammableNonFungible,
collection: {
verified: false,
key: data.collectionNFT,
},
})
)
.add(
mintV1(umi, {
mint: mint.publicKey,
authority: umi.identity,
tokenOwner: keypair.publicKey,
tokenStandard: TokenStandard.ProgrammableNonFungible,
})
)
.sendAndConfirm(umi, { send: { commitment: "finalized" } });
const metadataAccount = findMetadataPda(umi, { mint: mint.publicKey })[0];
await verifyCollectionV1(umi, {
metadata: metadataAccount,
collectionMint: publicKey(data.collectionNFT),
authority: umi.identity,
}).sendAndConfirm(umi, { send: { skipPreflight: true } });
console.log("New NFT minted", mint.publicKey);
};
This is working fine.
You can check the documentatio here.