Development tracker for SIMD-0401
Goal: Ship a Pinocchio-based implementation of the Stake program that is a no_std, byte-for-byte ABI compatible, semantically equal, upstream eBPF toolchain-friendly, drop-in replacement for the current program.
Roadmap
Comms
External dependencies
Env Setup
StakeStateV2 state migration
Migrated to zero-copy by defining structs with #[repr(C)]. To guarantee ABI compatibility, add golden tests or compile-time size assertions.
Instruction migrations
Implement a Pinocchio ix handler that decodes the u32 opcode, performs the legacy state transition with zero-copy reads/writes, and returns the same errors/return data. Parity of accounts/signers order, instruction data, error codes, and final account state. Additional unit tests written as needed if coverage holes. Benchmarks published per ix migration. Remove all logging.
Ordered in a way that is incrementally buildable: Meta-only edits -> delegation lifecycle -> account transforms.
Clients
Documentation
Auditing
Deployment
Development tracker for SIMD-0401
Goal: Ship a Pinocchio-based implementation of the Stake program that is a
no_std, byte-for-byte ABI compatible, semantically equal, upstream eBPF toolchain-friendly, drop-in replacement for the current program.Roadmap
Comms
p-stake) solana-foundation/solana-improvement-documents#401External dependencies
Env Setup
Move from pnpm to Makefile workflows
Complete test migration
Create p-stake & p-stake-interface crates
Add dual-runner test harness to execute against legacy & p-stake
stake_instruction.rsunit testsinterface.rsprop testsmollusk run-test original.so new_prog.so ./fixtures/ Stake111111….Bencher utility. Standard process for measuring CU differences of instructions.
StakeStateV2 state migration
Migrated to zero-copy by defining structs with
#[repr(C)]. To guarantee ABI compatibility, add golden tests or compile-time size assertions.StakeStakeV2zero copy api [wincode] #222Instruction migrations
Implement a Pinocchio ix handler that decodes the u32 opcode, performs the legacy state transition with zero-copy reads/writes, and returns the same errors/return data. Parity of accounts/signers order, instruction data, error codes, and final account state. Additional unit tests written as needed if coverage holes. Benchmarks published per ix migration. Remove all logging.
Ordered in a way that is incrementally buildable: Meta-only edits -> delegation lifecycle -> account transforms.
Clients
Documentation
Auditing
Deployment