js
js copied to clipboard
Adding priority fees to collection creation so there's higher chance of landing on chain
trafficstars
Hi team,
This is our code for creating collection with Metaplex foundation JS SDK:
export async function createCollection(
metaplex: Metaplex,
metadataUri: string,
name: string,
sellerFee: number,
creators: { address: PublicKey; share: number }[],
symbol?: string
) {
const createNftBuilder = await metaplex.nfts().builders().create({
uri: metadataUri,
name: name,
sellerFeeBasisPoints: sellerFee,
symbol: symbol,
creators: creators,
isCollection: true,
tokenStandard: TokenStandard.NonFungible,
})
const resp = await createNftBuilder.sendAndConfirm(metaplex, {
commitment: "finalized",
})
return {
mint: resp.mintAddress,
metadataAccount: resp.metadataAddress,
masterEditionAccount: resp.masterEditionAddress,
}
}
How do I modify this code to add priority fees for Solana? Thanks.
Bumping this as recent solana network congestion is causing minting to be very flaky
i had this problem too and this worked for me as a temporary fix to add a priority fee. changed RpcClient.cjs and RpcClient.mjs in dist/ and patched with npx patch-package
async sendTransaction(transaction, sendOptions = {}, signers = []) {
const prepared = await this.prepareTransaction(transaction, signers);
const modifyComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({
units: 1000000
});
const addPriorityFee = ComputeBudgetProgram.setComputeUnitPrice({
microLamports: 1
});
prepared.transaction.instructions.unshift(addPriorityFee);
prepared.transaction.instructions.unshift(modifyComputeUnits);
transaction = prepared.transaction;
signers = prepared.signers;
const defaultFeePayer = this.getDefaultFeePayer();
if (!transaction.feePayer && defaultFeePayer) {
transaction.feePayer = defaultFeePayer.publicKey;
signers = [defaultFeePayer, ...signers];
}
transaction = await this.signTransaction(transaction, signers);
const rawTransaction = transaction.serialize();
try {
return await this.metaplex.connection.sendRawTransaction(rawTransaction, sendOptions);
} catch (error) {
throw this.parseProgramError(error, transaction);
}
}