Python para Solana
Python es un lenguaje off-chain de primera clase para Solana. Los equipos lo utilizan para bots, servicios backend, notebooks de investigación, ETL y automatización de operaciones contra nodos RPC de Agave 4.1.1.
Busca en todas las páginas de la documentación
Python es un lenguaje off-chain de primera clase para Solana. Los equipos lo utilizan para bots, servicios backend, notebooks de investigación, ETL y automatización de operaciones contra nodos RPC de Agave 4.1.1.
No se ejecuta dentro del runtime de Sealevel. Los programas on-chain siguen siendo Rust (a menudo Anchor 0.32.1), compilados y desplegados con Solana CLI 3.0.10. Python se comunica con esos programas a través de JSON-RPC, websockets y clientes IDL.
Esta página es el paraguas de la sección. Artículos hermanos cubren el par de SDKs, la construcción de transacciones, AnchorPy, lecturas, bots, análisis y hábitos de producción.
solana), AnchorPy, VersionedTransaction, blockhash, simulación / preflight, AsyncClient, getProgramAccounts / filtros, DAS API, pandas / Polars, Python vs Kit.El código fuente de los programas de Solana es Rust 1.91.1 dirigido a sBPF. Python nunca entra en esa ruta de compilación. Tu proceso es un runtime de host normal que:
Esa separación es todo el modelo. El estado duradero de la aplicación vive en las cuentas. Los programas las mutan. Python observa, programa y a veces firma.
La pila Python por defecto es:
| Paquete | Rol |
|---|---|
| solders | Tipos rápidos respaldados por Rust: Pubkey, Keypair, Instruction, mensajes, transacciones versionadas, helpers de sistema y compute-budget |
solana (solana-py) | Cliente JSON-RPC (Client / AsyncClient), TxOpts, suscripciones |
| anchorpy | Carga IDL de Anchor, program.rpc tipado / fetch de cuentas, Provider + Wallet |
Fija las URLs de RPC y los IDs de programa por entorno. Los scripts de desarrollo no deben apuntar silenciosamente a mainnet-beta. Para trabajo local, combina Solana CLI 3.0.10 (solana-test-validator o flujos de trabajo de Surfpool / LiteSVM del equipo para programas) con un venv de Python para el código cliente.
El dinero son siempre enteros: lamports y unidades base de tokens. Nunca uses flotantes para saldos, tarifas o PnL que deban coincidir con la cadena.
solders es la capa de tipos y serialización. Refleja las primitivas de Solana con rendimiento de Rust a través del límite de Python. Prefiere los constructores de solders para instrucciones, metadatos de cuentas y empaquetado de mensajes en lugar de crear formatos de cableado manualmente.
solana-py (ruta de importación solana) es la capa de red. Úsalo para:
get_latest_blockhash, get_balance, get_account_infosimulate_transaction y send_transactionget_signatures_for_address, get_transactionsolana-py moderno espera tipos de solders. Trátalos como una sola pila, no como SDKs competidores. Los detalles y recetas de copiar y pegar se encuentran en solders & solana-py.
La ruta feliz para una transacción construida en Python:
Message.new_with_blockhash o APIs de mensajes versionados).VersionedTransaction (o legado solo cuando una dependencia lo fuerce).Las tarifas de prioridad y los límites de cómputo son instrucciones ordinarias (helpers de compute-budget de solders). Colócalos al principio del mensaje. Los bots de larga duración deben tratar la vida útil del blockhash y las reglas de firma duplicada como preocupaciones del bucle de control principal, no como casos extremos.
Los patrones de composición completos se encuentran en Construcción de Transacciones en Python.
Si el programa on-chain es Anchor 0.32.1, envía el IDL de anchor build y cárgalo con AnchorPy. Eso te da:
fetch / decodificarProvider del cliente RPC, billetera y opciones por defectoFlujo de trabajo:
Provider + Program.at(...) o Idl.from_json explícito.program.rpc["instruction_name"](...) o construir instrucciones para lotes personalizados.Regenera los clientes cuando el IDL cambie. Los discriminadores o el orden de las cuentas que no coinciden fallan en la simulación o en tiempo de ejecución. AnchorPy se basa en solders/solana-py; tú sigues siendo el propietario del blockhash, la simulación y la confirmación. Ver AnchorPy.
Las lecturas dominan la mayoría de los servicios Python de producción.
RPC Central
get_account_info (crudo o jsonParsed donde se admita)get_balanceget_token_accounts_by_owner (y variantes jsonParsed)get_signatures_for_address luego get_transactionget_program_accounts con filtros memcmp en discriminadores o campos fijosDAS (Digital Asset Standard)
Las carteras de NFT y cNFT a menudo necesitan un endpoint DAS proveedor (getAsset, búsqueda, pruebas). Usa httpx o clientes HTTP similares cuando solana-py no envuelva el método; mantén las URLs de DAS y las claves API fuera de git.
Hábitos de lectura de producción
get_program_accounts con filtros; no descargues programas completos en RPC públicoProfundizaciones: Lectura de Datos de Cadena.
La ventaja comparativa de Python es la pila de datos: pandas, Polars, NumPy, notebooks y herramientas de ML.
Flujo típico:
Trata el tiempo de la cadena (slots, tiempos de bloque) con cuidado; las claves de unión suelen ser pubkey, firma o mint. Los lamports permanecen enteros hasta la presentación. Patrones y encuadre: Análisis de Datos.
Los scripts de Python deben coincidir con la forma en que los operadores usan Solana CLI 3.0.10: la misma URL de RPC, el mismo formato JSON de keypair (Keypair.from_bytes en el array secreto de 64 bytes), el mismo clúster (devnet / mainnet-beta / local). La semántica RPC de Agave 4.1.1 (compromiso, resultados de simulación, informes de unidades de cómputo) es lo que tu cliente debe manejar, no un "Solana de Python" separado.
| Necesidad | Preferir | Por qué |
|---|---|---|
| Conexión de billetera, dApp de navegador, POST de Acción/Blink en Next.js | @solana/kit 7.0.0 | Estándares de billetera, ecosistema web, la pila de frontend por defecto de este sitio |
| Bots, trabajos por lotes, ML, investigación con pandas/Polars | Python | Servicios asíncronos + bibliotecas de ciencia de datos |
| Repositorio compartido de servicios TS y web | Kit (o clientes duales) | Un lenguaje para la ruta del producto |
| Patrimonio existente de servicios Python FastAPI/Django | Python | Reutilizar autenticación, colas y observabilidad |
| Clientes tipados Codama / Kit para muchos programas | Kit | Mejor historia de generación de código en el mundo TS |
| Llamadas IDL de Anchor desde un portátil de investigación | AnchorPy | Ruta rápida sin frontend |
Muchas organizaciones ejecutan ambos: Kit en la aplicación orientada al usuario; Python para datos de mercado, riesgo, reequilibrio y operaciones. El formato de cableado es el mismo: transacciones versionadas y JSON RPC. No inventes una segunda interfaz de programa por lenguaje; comparte IDs de programa, versiones de IDL y documentación de layout de cuentas.
processed para una UX rápida no es liquidación para contabilidad; elige el compromiso según el riesgo.El trading y la automatización unen lecturas RPC, constructores de transacciones y límites de riesgo en un bucle de control. Eso se basa en los mismos fundamentos que esta descripción general; las páginas de sección para trading y mejores prácticas cubren el ritmo, las tarifas de prioridad y el manejo de errores sin convertir Python en una caja negra de estrategias.
Python no se preocupa de si el programa es Anchor, solana-program nativo o Pinocchio. Necesitas el ID de programa correcto, metadatos de cuenta y bytes de instrucción. AnchorPy reduce ese costo para los IDL de Anchor. Para programas nativos, construye manualmente con solders o mantén pequeños codecs compartidos con pruebas de Rust.
Trabajo off-chain: leer cuentas, construir y enviar transacciones, llamar a programas a través de RPC/IDL, ejecutar bots, backends y análisis. Los programas siguen siendo Rust (u otras herramientas sBPF).
Un venv, luego solders y solana (solana-py). Añade anchorpy cuando llames a programas Anchor. Añade httpx, pandas o polars para DAS y análisis.
Sí, para solana-py moderno: los tipos principales y la serialización provienen de solders. Aprende ambos paquetes como una sola pila.
Cuando invocas programas Anchor 0.32.1 y deseas clientes de instrucciones y cuentas dirigidos por IDL en lugar de discriminadores y metadatos de cuenta manuales.
Compón instrucciones de solders, obtén un blockhash reciente, construye un mensaje, firma una transacción versionada, simula y luego envía a través de solana-py. Ver Construcción de Transacciones en Python.
Usa métodos RPC de cuenta de token para saldos de SPL y un proveedor compatible con DAS para metadatos de NFT/cNFT y consultas conscientes de la compresión. Ver Lectura de Datos de Cadena.
Posible pero incómodo. Prefiere @solana/kit 7.0.0 (y adaptadores de billetera) en el navegador; mantén Python para servidores y bots que no necesiten experiencia de billetera en la página.
Son clientes RPC de nodos Agave (o proveedores compatibles). Los niveles de compromiso, los resultados de simulación y los mercados de tarifas coinciden con el comportamiento del clúster, no con una cadena específica de Python.
Carga JSON de keypair compatible con Solana CLI solo en entornos seguros. Prefiere variables de entorno o un gestor de secretos. Nunca incluyas archivos de claves en el control de versiones. Usa billeteras calientes con fondos limitados para bots.
Los blockhashes tienen una vida útil corta. Los bucles de eventos largos deben actualizar los blockhashes y volver a firmar. Las políticas de reintento deben detectar la expiración y reconstruir, no reenviar una firma obsoleta para siempre.
Extrae muestras acotadas de firmas o cuentas (o CSV/Parquet del indexador), normaliza las cantidades enteras y luego agrega en pandas/Polars. Ver Análisis de Datos.
Prefiere AsyncClient cuando consultes muchas cuentas, extiendas RPC o mezcles websockets con envíos. El Client síncrono está bien para scripts cortos.
Esta descripción general, luego Fundamentos de Python para Solana, luego solders/solana-py, transacciones, AnchorPy, lecturas y análisis según lo requiera tu rol.
No estrictamente para scripts solo de RPC, pero CLI 3.0.10 es invaluable para la generación de claves, airdrops en devnet, configuración y para alinear la configuración del clúster con tu entorno Python.
El despliegue es una preocupación de la CLI / toolchain (solana program deploy, Anchor deploy). Python puede envolver llamadas a subprocesos en automatización de operaciones; no reemplaza cargo build-sbf.
Versiones de la pila: Esta página fue escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, Rust 1.91.1, y @solana/kit 7.0.0.
Revisado por Chris St. John·Última actualización: 15 jul 2026