SIMD-0160

Static Instruction Limit

Author: Andrew Fitzgerald (anza) · Category: Core Protocol GitHub →

TL;DR

Transactions will fail execution in SVM if the transactions use more than 64 instructions, including CPI calls. This proposal is to make transactions that use more than 64 top-level instructions fail sanitization checks and be rejected by the network.

Summary

Transactions will fail execution in SVM if the transactions use more than 64 instructions, including CPI calls. This proposal is to make transactions that use more than 64 top-level instructions fail sanitization checks and be rejected by the network.

Motivation

The current limit of 64 instructions is a runtime failure, and makes sense in the context of CPIs. It is bad user experience to allow creation and submission of transactions that have no chance of being executed successfully. Several other checks worst-case performance scales with the number of top-level instructions in a transaction, so limiting this number can help the worst-case performance.

Impact

- Users are prevented from creating transactions that cannot be executed successfully. - Smaller upper bound on number of instructions can help performance of validator.

Backwards Compatibility

*(Optional)* - Some transactions that are currently valid will be rejected.

Security Considerations

- Requires a feature-gate to enable the new limit.