Skip to content

Commit f72cb60

Browse files
Raise default compute unit limit to avoid Genesis CU flakes
Genesis account creation can exceed Solana's 200k default compute budget under Node 24 CI. Prepend setComputeUnitLimit (400k) in the shared send path so heavier Metaplex transactions stop failing flakily. Co-authored-by: MarkSackerberg <MarkSackerberg@users.noreply.github.com>
1 parent 485de17 commit f72cb60

2 files changed

Lines changed: 16 additions & 4 deletions

File tree

src/lib/umi/sendOptions.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ export enum ConfirmationStrategy {
77

88
export interface UmiSendOptions {
99
priorityFee?: number | undefined
10+
/** Override the default compute unit limit (400_000). */
11+
computeUnitLimit?: number | undefined
1012
commitment?: Commitment | undefined
1113
skipPreflight?: boolean | undefined
1214
confirmationStrategy?: ConfirmationStrategy

src/lib/umi/sendTransaction.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { setComputeUnitPrice } from '@metaplex-foundation/mpl-toolbox'
2-
import { BlockhashWithExpiryBlockHeight, Signer, TransactionBuilder, TransactionSignature, Umi } from '@metaplex-foundation/umi'
1+
import { setComputeUnitLimit, setComputeUnitPrice } from '@metaplex-foundation/mpl-toolbox'
2+
import { BlockhashWithExpiryBlockHeight, TransactionBuilder, TransactionSignature, Umi } from '@metaplex-foundation/umi'
33
import { getAssetSigner } from './assetSignerPlugin.js'
44
import { UmiSendOptions } from './sendOptions.js'
55

@@ -9,6 +9,9 @@ export interface UmiTransactionResponse {
99
err: string | null
1010
}
1111

12+
/** Default above Solana's 200k so heavier Metaplex txs (e.g. Genesis create) don't flake. */
13+
const DEFAULT_COMPUTE_UNIT_LIMIT = 400_000
14+
1215
const umiSendTransaction = async (
1316
umi: Umi,
1417
tx: TransactionBuilder,
@@ -30,10 +33,17 @@ const umiSendTransaction = async (
3033

3134
let transaction = tx.setBlockhash(blockhash)
3235

36+
// Compute budget instructions must come first in the transaction.
37+
transaction = transaction.prepend(
38+
setComputeUnitLimit(umi, {
39+
units: sendOptions?.computeUnitLimit ?? DEFAULT_COMPUTE_UNIT_LIMIT,
40+
}),
41+
)
42+
3343
if (sendOptions?.priorityFee) {
34-
transaction = transaction.add(
44+
transaction = transaction.prepend(
3545
setComputeUnitPrice(umi, {
36-
microLamports: 100000,
46+
microLamports: sendOptions.priorityFee,
3747
}),
3848
)
3949
}

0 commit comments

Comments
 (0)