
SVMLLM
A Solana VM compiled into transformer weights. Reduced sBPF runs in hand-constructed transformer components with 1.13M constant parameters and no training, checked against Anza's solana-sbpf.
- Source code for SVMLLM
- Open the SVMLLM demo
- The launch post
- Qwenputer, the idea this builds on
- Sibling project, EVMLLM
PyTorch / Python / Rust / JavaScript
Problem
Some smart-contract incidents involve code that ran exactly as written, with an outcome a sensible human operator would have stopped. Many others are ordinary bugs or key compromises; this project targets only the first kind. The VM answers whether a transaction is valid by the code, and nothing in it asks whether it should go through.
Solution
SVMLLM runs reduced sBPF, the bytecode of Solana programs, inside hand-constructed transformer components. A one-hot PC query fetches from DeltaNet program memory, a linear layer decodes, ReLU lookup-table feed-forward blocks are the ALU, and Gated DeltaNet state holds registers and memory exactly. A rule-based judgement filter then reviews the result for allow, hold or block.
Analysis
The weights do the execution; a Python driver loop calls the step until the halt flag is set. The instruction set is reduced: no ALU32, no syscalls (call is a stub), no accounts, no CPI, and memory is two 128-byte windows. It is slow, a few milliseconds per instruction on one CPU thread, and more for div or mod. The judge is illustrative heuristics on synthetic histories, not a security product.
Result
The weights machine matched the reference interpreter on all 1,165 cases, and the reference matched Anza's solana-sbpf 0.12.2 on the 1,164 cases it can run (one case uses the call stub). The browser interpreter matches the reference on 565 of 565 cases.
The realistic use today is a sidecar beside the chain software, an off-chain audit, or a review step in front of a wallet or multisig. It affects only that operator, not consensus. It is a demo, not a validator.
Screens


The landing page. The interactive box runs a JavaScript reference interpreter; the weights runs are recorded from PyTorch and labeled that way.