All SIMDs
SIMD · 0500

Disable deployment of SBPF-v0, -v1 and -v2

IdeaCoreStandardMarch 17, 2026
by Alexander Meißner (Anza)

Summary

Disable deployment of SBPFv0, SBPFv1 and SBPFv2.

Motivation

The number of programs using these older SBPF versions will decrease over time as dApp developers will have to target at least SBPFv3 for re-deployments. This will eventually allow us to deprecate the execution of these SBPF versions after their existence (and thus also usage) drops to near zero.

Dependencies

This proposal depends on the following previously accepted proposals:

which together form SBPFv3. Thus, there will be a new valid deployment target before we deactivate the older ones.

New Terminology

None.

Detailed Design

After the activation of the associated feature key a validator must fail to (re-)deploy or finalize programs with any SBPF version older than SBPFv3.

Currently loader-v3 is the only loader with program management enabled, thus this means for each of the following loader-v3 instructions:

  • deployment: DeployWithMaxDataLen
  • redeployment: Upgrade
  • finalization: SetAuthority and SetAuthorityChecked with no new authority

must return InstructionError::InvalidAccountData when the ELF (in the buffer account for re-/deployments and in the programdata account for finalization) contains a SBPFv0, SBPFv1 or SBPFv2 program. While InitializeBuffer, Write, ExtendProgram and Close remain unaffected.

In order not to interfere with other SIMDs, all core program migrations (SIMD-0418) and upgrades (SIMD-0495) are exempt from this. These core programs, while owned by loader-v3, are not using the program management instructions of loader-v3 anyway.

Alternatives Considered

Not deprecating some or all older SBPF versions.

Impact

dApp developers using outdated toolchains will have to update them and adjust their programs before they can re-/deploy or finalize them.

Furthermore, testing frameworks and mock ups will have to be adapted to either deactivate this feature or bypass the entire deployment in order to continue to test older SBPF versions.

Currently Deployed SBPF Versions per Loader (Mainnet)

Analysis performed using Blueshift's [program-sync] tool.

LoaderSBPFv0SBPFv1SBPFv2
Loader-v1 (Finalized)13600
Loader-v2 (Finalized)31500
Loader-v3 (Finalized)42200
Loader-v3 (Upgradable)172791241

[program-sync]: https://github.com/blueshift-gg/program-sync

Security Considerations

None.

Backwards Compatibility

Execution of SBPFv0, SBPFv1 and SBPFv2 will remain supported for now.