Bankrun (TS)
Bankrun proporciona pruebas rápidas de la VM de Solana en proceso desde TypeScript sin ejecutar solana-test-validator. Úsalo cuando tu equipo trabaje con pruebas de Anchor TS pero necesite la velocidad de LiteSVM.
Busca en todas las páginas de la documentación
Bankrun proporciona pruebas rápidas de la VM de Solana en proceso desde TypeScript sin ejecutar solana-test-validator. Úsalo cuando tu equipo trabaje con pruebas de Anchor TS pero necesite la velocidad de LiteSVM.
Tarjeta de receta de referencia rápida, lista para copiar y pegar.
import { startAnchor, BankrunProvider } from "anchor-bankrun";
import { Program } from "@coral-xyz/anchor";
const context = await startAnchor("", [], []);
const provider = new BankrunProvider(context);
const program = new Program(idl, provider);Cuándo usar esto:
chai sobre Rust #[test].import { startAnchor, BankrunProvider } from "anchor-bankrun";
import { Program, BN } from "@coral-xyz/anchor";
import { Keypair, PublicKey } from "@solana/web3.js";
import { describe, it } from "node:test";
import assert from "node:assert/strict";
describe("vault bankrun", async () => {
const context = await startAnchor(".", [], []);
const provider = new BankrunProvider(context);
const program = new Program(idl as any, provider);
it("deposita tokens", async () => {
const user = Keypair.generate();
context.setAccount(user.publicKey, {
lamports: 1_000_000_000,
data: Buffer.alloc(0),
owner: PublicKey.default,
executable: false,
});
const [vaultPda] = PublicKey.findProgramAddressSync(
[Buffer.from("vault"), user.publicKey.toBuffer()],
program.programId
);
await program.methods
.deposit(new BN(500_000))
.accounts({ user: user.publicKey, vault: vaultPda })
.signers([user])
.rpc();
const vault = await program.account.vault.fetch(vaultPda);
assert.equal(vault.balance.toNumber(), 500_000);
});
});Lo que esto demuestra:
startAnchor carga los programas del espacio de trabajo en la VM en proceso.BankrunProvider conecta el cliente Anchor sin RPC local.context.setAccount siembra el estado de la cuenta antes de las instrucciones..so se cargan desde las rutas del espacio de trabajo.| Aspecto | Bankrun | anchor test (validador) |
|---|---|---|
| Inicio | ~ms | segundos |
| Fidelidad RPC | Alta para programas | Completa |
| SPL Token | Soportado | Nativo |
| Bifurcación DeFi | Limitada | Surfpool / clon |
// Mueve el reloj para ix dependientes del tiempo
context.warpToSlot(100n);anchor build antes de las pruebas.spl_token.so en la lista de programas de startAnchor.setAccount.package.json.signers en rpc() - Olvidar .signers([user]) en instrucciones mutables. Solución: Reflejar los patrones de prueba del validador.| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| LiteSVM (Rust) | Equipo centrado en Rust | Desarrolladores solo TS |
| anchor test | Se necesita RPC completo | Bucle interno crítico para la velocidad |
| Surfpool | Lógica de programa simple | Bifurcación de mainnet DeFi |
No: mantén las pruebas E2E del validador para rutas específicas de RPC; Bankrun cubre la mayor parte de las pruebas de lógica de Anchor.
Usa la versión de anchor-bankrun alineada con tu versión de Anchor; consulta la README del paquete.
El soporte evoluciona: verifica ALT/transacciones versionadas para tu versión de bankrun; recurre al validador si no es compatible.
Habilita los registros detallados del proveedor o captura errores de transacciones e imprime el campo simulation logs.
Sí: npm test solo con bankrun; más rápido y sin conflictos de puertos.
Pasa la matriz de rutas de programas a startAnchor para dependencias de CPI.
Igual que las pruebas del validador: findProgramAddressSync + program.methods...accounts.
assert.rejects en rpc() esperando códigos de error de Anchor.
Bankrun usa el modelo de proveedor de web3.js; las pruebas de kit pueden apuntar a la RPC de bankrun si se expone; la ruta de Anchor usa web3.js.
Cuando la instrucción necesita cuentas de pool/oráculo reales de mainnet que no se pueden simular fácilmente.
Versiones de la pila: Esta página se escribió para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, y LiteSVM 0.6.x.
Revisado por Chris St. John·Última actualización: 16 jul 2026