Skip to content

Conversation

@lgalabru
Copy link
Member

@lgalabru lgalabru commented Nov 25, 2025

SVM Feature Flags

Surfpool allows you to control which Solana Virtual Machine (SVM) features are enabled when running your local simnet. By default, surfpool uses mainnet-compatible features to ensure your programs behave the same way they would on mainnet.

Default Behavior

By default, surfpool enables all features that are currently active on Solana mainnet-beta. Features that are not yet activated on mainnet are disabled.

CLI Options

Enable a specific feature

surfpool start --feature <feature-name>
# or
surfpool start -f <feature-name>

Disable a specific feature

surfpool start --disable-feature <feature-name>

Enable all features (bleeding edge)

surfpool start --features-all

Combine options

# Mainnet defaults + enable loader v4
surfpool start --feature enable-loader-v4

# Mainnet defaults but disable a specific feature
surfpool start --disable-feature stricter-abi-and-runtime-constraints

# All features enabled, but disable one
surfpool start --features-all --disable-feature enable-loader-v4

Features Disabled by Default (Not Active on Mainnet)

The following features are not yet active on Solana mainnet and are disabled by default:

Feature Description
blake3-syscall-enabled Blake3 hash syscall
deprecate-legacy-vote-ixs Deprecate legacy vote instructions
disable-sbpf-v0-execution Disable SBPF v0 execution
reenable-sbpf-v0-execution Re-enable SBPF v0 execution
disable-zk-elgamal-proof-program Disable ZK ElGamal proof program
enable-extend-program-checked Checked program extension
enable-loader-v4 Loader v4 program
enable-sbpf-v1-deployment-and-execution SBPF v1 deployment and execution
formalize-loaded-transaction-data-size Formalize loaded transaction data size
move-precompile-verification-to-svm Move precompile verification to SVM
move-stake-and-move-lamports-ixs Move stake and lamports instructions
stake-raise-minimum-delegation-to-1-sol Raise minimum stake delegation to 1 SOL

All Available Features

abort-on-invalid-curve
blake3-syscall-enabled
curve25519-syscall-enabled
deplete-cu-meter-on-vm-failure
deprecate-legacy-vote-ixs
disable-deploy-of-alloc-free-syscall
disable-fees-sysvar
disable-sbpf-v0-execution
disable-zk-elgamal-proof-program
enable-alt-bn128-compression-syscall
enable-alt-bn128-syscall
enable-big-mod-exp-syscall
enable-bpf-loader-set-authority-checked-ix
enable-extend-program-checked
enable-get-epoch-stake-syscall
enable-loader-v4
enable-poseidon-syscall
enable-sbpf-v1-deployment-and-execution
enable-sbpf-v2-deployment-and-execution
enable-sbpf-v3-deployment-and-execution
fix-alt-bn128-multiplication-input-length
formalize-loaded-transaction-data-size
get-sysvar-syscall-enabled
increase-tx-account-lock-limit
last-restart-slot-sysvar
mask-out-rent-epoch-in-vm-serialization
move-precompile-verification-to-svm
move-stake-and-move-lamports-ixs
raise-cpi-nesting-limit-to-8
reenable-sbpf-v0-execution
reenable-zk-elgamal-proof-program
remaining-compute-units-syscall-enabled
remove-bpf-loader-incorrect-program-id
simplify-alt-bn128-syscall-error-codes
stake-raise-minimum-delegation-to-1-sol
stricter-abi-and-runtime-constraints

Examples

Test with mainnet-compatible features (default)

surfpool start

Test with upcoming loader v4

surfpool start --feature enable-loader-v4

Test with all bleeding-edge features

surfpool start --features-all

Disable stricter ABI constraints for legacy program testing

surfpool start --disable-feature stricter-abi-and-runtime-constraints

@lgalabru lgalabru merged commit f232dca into main Nov 25, 2025
3 checks passed
@lgalabru lgalabru deleted the feat/svm-features branch November 25, 2025 19:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants