Skip to main content
Technical proposal SIMD-0089 Activated

Programify Feature Gate Program

  1. Idea
  2. Draft
  3. Review
  4. Accept
  5. Implement
  6. Active

Decision brief

Why this proposal matters

This proposal suggests replacing the non-existent native program at address Feature111111111111111111111111111111111111 with a Core BPF Program, as described in SIMD 0088. Feature accounts are already assigned the owner program address Feature111111111111111111111111111111111111. Deploying a Core BPF program at this address would provide engineers with the capability to revoke pending feature activations. Note: The process by which core contributors activate features would remain completely unchanged.

Source-backed reading aid · source language: EN

Proposal at a glance

What changes

  • Feature Gate program: The Core BPF program that all feature accounts will be assigned to, with address Feature111111111111111111111111111111111111.
  • This proposal suggests replacing the non-existent native program at address Feature111111111111111111111111111111111111 with a Core BPF Program, as described in SIMD 0088. Feature accounts are already assigned the owner program address Feature111111111111111111111111111111111111.…

Stakeholder map

Who is affected

Builders & client teams Medium impact

There is otherwise no change to the activation process whatsoever. This includes queuing features for activation with the CLI and the timing of their activation by the runtime.

Action requirement unknown
Validators & operators Medium impact

The program will have no upgrade authority. If changes are required, for essential network operations, the program will be updated using feature-gates.

Action may be required
Users & stakers Impact unknown

No proposal-specific evidence was found for this group.

Action requirement unknown
Governance & ecosystem Medium impact

This proposal suggests replacing the non-existent native program at address Feature111111111111111111111111111111111111 with a Core BPF Program, as described in SIMD 0088.

Action requirement unknown

Exact source revision

Full proposal document

Source-language document. Technical identifiers and evidence remain unchanged. f1f6c8b05dc2

Summary

This proposal suggests replacing the non-existent native program at address Feature111111111111111111111111111111111111 with a Core BPF Program, as described in SIMD 0088.

Feature accounts are already assigned the owner program address Feature111111111111111111111111111111111111. Deploying a Core BPF program at this address would provide engineers with the capability to revoke pending feature activations.

Note: The process by which core contributors activate features would remain completely unchanged.

Motivation

Currently, a feature is queued for activation by a keypair holder creating an empty account and assigning it to the Feature111111111111111111111111111111111111 program.

Because there is no actual program implementation at this address, the queuing is irreversible; if the runtime knows about a feature gate at some address, it will activate it at the next epoch boundary. This means there is no recourse in the case of a mistaken queuing, discovery of a bug, or simply a desire to manage the cadence and schedule of activations.

A fully-implemented Core BPF program would take ownership of those accounts and support revoking queued features, giving engineers more flexibility and safeguards.

Alternatives Considered

The Feature Gate program could instead be implemented as a built-in native program, rather than a Core BPF program. However, this would mean any changes to the program would need to be implemented by all validator clients in coordination. This makes upgrading the program cumbersome.

With the Feature Gate program instead implemented as a Core BPF program, any changes need only be done once, eliminating this duplication of work.

New Terminology

  • Feature Gate program: The Core BPF program that all feature accounts will be assigned to, with address Feature111111111111111111111111111111111111.

Detailed Design

A Core BPF program - the Feature Gate program - shall be placed at the address of Feature111111111111111111111111111111111111 using the process outlined in SIMD 0088.

The program will have no upgrade authority. If changes are required, for essential network operations, the program will be updated using feature-gates.

The program shall initially be designed to support one instruction: RevokePendingActivation. Any other instructions or functionality this program may support in the future will be proposed and discussed separately.

When this instruction is invoked by a feature key-holder, the program will reallocate the account to zero, assign it back to the System Program, and defund its lamports balance. As a result, the runtime will no longer recognize this feature as pending, since it will no longer be owned by Feature111111111111111111111111111111111111.

The creation of this program will not change the existing feature activation process.

Impact

Core contributors are positively impacted by this change, since the ability to revoke pending feature activations is a significant security advantage.

There is otherwise no change to the activation process whatsoever. This includes queuing features for activation with the CLI and the timing of their activation by the runtime.

Security Considerations

Currently the accounts used for feature-gating are owned by a program ID that does not have any implementation. This means that there is no on-chain authority that can modify feature accounts once they've been created under Feature111111111111111111111111111111111111. This allows the runtime to confidently update their state upon activation.

With this proposal, a live BPF program - which can accept instructions from anyone and execute code - will be the owner of these accounts. This introduces new risks that must be mitigated through careful implementation of Feature Gate program functionality.

Backwards Compatibility

This change is 100% backwards compatible with the existing feature activation process. It only adds the ability to revoke pending activations.

Evidence graph

Related proposals and rollout

One or more sources are unavailable.

Upstream review record

Upstream discussion & review

GitHub review is editorial context, not evidence of on-chain support, voting, or outcome.

PR #89 · merged SIMD-0089: Programify Feature Gate Program 22 comments and reviews · Jan 19, 2026
@buffalojoec

@ripatel-fd I appreciate the thoughts on the larger feature process overhaul, but I think it might be a bit easier to handle the building out of the new process piecemeal, focusing on one step at a time and what each step aims to solve. This proposal specifically aims to solve the following problem: In our current feature activation process, we want to be able to revoke pending feature activations. The proposal here is suggesting simply to replace Feature111111111111111111111111111111111111 with a BPF program that has a revoke instruction. We just need a good way to manage that program's upgrade authority. It doesn't seem appropriate to me for a multi-sig to take on the critical task of mana

GitHub ↗
@buffalojoec

Ok so this would just be Solana Labs and Jito. I won't go into specifics on how many keys, etc. I've updated this in the SIMD to remove Jump.

GitHub ↗
@ripatel-fd

This proposal specifically aims to solve the following problem: In our current feature activation process, we want to be able to revoke pending feature activations. @buffalojoec That makes total sense and sounds good to me. I guess I overspeculated the long-term intention of this new feature gate program. That is probably out of scope for this SIMD anyways.

GitHub ↗
@buffalojoec

I am going to approve this but I expect it will be amended after we (FD) see a first implementation with more details. Before or after merging, can you link to a reference implementation? https://github.com/solana-labs/solana-program-library/tree/master/feature-gate Keep in mind the actual implementation of the program's source code is decoupled from this SIMD. The proposal herein is outlining: - This program will exist as Core BPF - This program will be upgradeable, managed by a multi-sig - This program will possess the capability to revoke pending feature activations by clearing their data and assigning them back to the system program Anything more code-specific beyond that last bullet I b

GitHub ↗
@lheeger-jump

I am going to approve this but I expect it will be amended after we (FD) see a first implementation with more details. Before or after merging, can you link to a reference implementation? https://github.com/solana-labs/solana-program-library/tree/master/feature-gate Keep in mind the actual implementation of the program's source code is decoupled from this SIMD. The proposal herein is outlining: This program will exist as Core BPF This program will be upgradeable, managed by a multi-sig This program will possess the capability to revoke pending feature activations by clearing their data and assigning them back to the system program Anything more code-specific beyond that last bullet I believe

GitHub ↗
@lheeger-jump

Lets merge this on 08/01/2024?

GitHub ↗
@buffalojoec

Lets merge this on 08/01/2024? Sorry, is this DD/MM/YYY? Fwiw, we need 88 first, but I think we're close to consensus on that one, too.

GitHub ↗
@jacobcreech

Looks like we've got general consensus. Last call for any objections. We'll merge this after 88 on Thursday, January 25th if no objections are made.

GitHub ↗

simd.watch community discussion · SIMD-0089

Powered by Giscus · Sign in with GitHub to comment

Community comments load when this section approaches the viewport.

Provenance

Evidence & technical details

Rollout or chain data, source revisions, freshness and integrity.
2

SIMD

Deployment Status

Document lifecycleActivated
CategoryCore protocol
Devnetactive Epoch 816
Testnetactive Epoch 746
Mainnet-Betaactive Epoch 752
4eohviozzEeivk1y9UbrnekbAFMDQyJz5JjA9Y6gyvky

Exact source revision

Sources & integrity

  • Proposal document pinned_commit_blob
    f1f6c8b05dc205552d3c290a854a438392701107
  • simd-document document · stale · Oct 18, 2026
    f1f6c8b05dc205552d3c290a854a438392701107

One or more sources are unavailable.