El cliente TS de Anchor
Utiliza el Program de TypeScript de Anchor para llamadas RPC al mantener pilas heredadas.
Receta
npm install @coral-xyz/anchor@0.32.1import { Program, AnchorProvider } from "@coral-xyz/anchor";
import idl from "./target/idl/my_program.json";Cuándo usar esto:
- Aplicaciones Anchor existentes (brownfield) aún no migradas a Codama.
- Prototipos rápidos que ya usan Anchor Provider.
- Equipos familiarizados con la API fluida
.methods..
Ejemplo de funcionamiento
import { AnchorProvider, Program, Wallet } from "@coral-xyz/anchor";
import { createSolanaRpc } from "@solana/kit";
import idl from "../target/idl/my_program.json";
// Puente: usar RPC de kit siempre que sea posible; Anchor Provider para Program heredado
const rpc = createSolanaRpc(process.env.RPC_URL!);
// const provider = new AnchorProvider(connection, wallet, {});
// const program = new Program(idl as MyIdl, provider);
// await program.methods.increment().accounts({ counter }).rpc();Lo que esto demuestra:
- El JSON IDL de
anchor build(0.32.1) controla los diseños de las cuentas. .methodsconstruye y envía transacciones en una sola llamada.- Los nuevos módulos deben preferir la salida del kit de Codama.
Análisis en profundidad
Cómo funciona
- Anchor deserializa las cuentas utilizando las definiciones del IDL.
- Provider envuelve la billetera y la conexión para firmar.
- El análisis de eventos y el mapeo de errores provienen de los metadatos del IDL.
- Migrar a kit significa reemplazar los envíos de Provider con el pipeline de mensajes.
Errores comunes
- IDL desincronizado - errores de codificación en tiempo de ejecución. Solución: reconstruir y regenerar ante cada cambio de programa.
PublicKeyde web3.js mezclado conAddressde kit - tipos duales. Solución: migrar por característica.- Envío implícito de
.rpc()- menos control sobre la simulación. Solución: usar.transaction()+ envío de kit para la experiencia de usuario. - ID de programa incorrecto en el IDL - las llamadas apuntan a la implementación incorrecta. Solución: verificar
declare_idyAnchor.toml. - Tamaño de importación del IDL en el lado del cliente - los IDL grandes hinchan el paquete. Solución: dividir o cargar de forma diferida.
Alternativas
| Alternativa | Usar cuando | No usar cuando |
|---|---|---|
| Codama + kit | Clientes Greenfield | Código heredado congelado |
| Kit sin procesar + codecs | Programas nativos | Equipos con mucho Anchor |
Preguntas frecuentes
¿IDL de Anchor 0.32.1?
Ejecuta anchor build; apunta Codama al JSON de target/idl.
¿Regenerar cuándo?
Cada cambio en la interfaz on-chain en CI.
¿Clientes tipados de kit?
Codama renderiza funciones nativas de @solana/kit.
¿Se requiere gill?
Azúcar opcional sobre kit.
¿Next.js?
Importa clientes generados en componentes cliente para escrituras.
¿Pruebas?
Pruebas de integración con Surfpool + devnet.
¿web3.js?
No mezclar con clientes de kit generados.
¿Múltiples programas?
Una configuración de Codama por programa o espacio de trabajo monorepo.
¿Obtención de cuentas?
Usa decodificadores generados con getAccountInfo.
¿Errores?
Mapea códigos de error del programa desde metadatos del IDL.
Relacionado
- Codama - codegen nativo de kit
- Conceptos básicos de clientes tipados - resumen
- Generación de clientes TS - pipeline
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.