estimateComputeUnitLimitFactory
Use this utility to estimate the actual compute unit cost of a given transaction message.
Correctly budgeting a compute unit limit for your transaction message can increase the probability that your transaction will be accepted for processing. If you don't declare a compute unit limit on your transaction, validators will assume an upper limit of 200K compute units (CU) per instruction.
Since validators have an incentive to pack as many transactions into each block as possible, they may choose to include transactions that they know will fit into the remaining compute budget for the current block over transactions that might not. For this reason, you should set a compute unit limit on each of your transaction messages, whenever possible.
[!WARNING] The compute unit estimate is just that -- an estimate. The compute unit consumption of the actual transaction might be higher or lower than what was observed in simulation. Unless you are confident that your particular transaction message will consume the same or fewer compute units as was estimated, you might like to augment the estimate by either a fixed number of CUs or a multiplier.
[!NOTE] If you are preparing an unsigned transaction, destined to be signed and submitted to the network by a wallet, you might like to leave it up to the wallet to determine the compute unit limit. Consider that the wallet might have a more global view of how many compute units certain types of transactions consume, and might be able to make better estimates of an appropriate compute unit budget.
[!INFO] In the event that a transaction message does not already have a
SetComputeUnitLimit
instruction, this function will add one before simulation. This ensures that the compute unit consumption of theSetComputeUnitLimit
instruction itself is included in the estimate.
Example
Parameters
Parameter | Type | Description |
---|---|---|
config | EstimateComputeUnitLimitFactoryConfig |
Returns
EstimateComputeUnitLimitFactoryFunction