Programas

En el ecosistema de Solana, los "contratos inteligentes" se llaman programas. Cada programa es una cuenta en la cadena de bloques que almacena lógica ejecutable, organizada en funciones específicas conocidas como instrucciones.

Para temas adicionales relacionados con los programas de Solana, consulte las páginas incluidas en la sección Despliegue de programas de esta documentación.

Puntos clave #

  • Los programas son cuentas en la cadena de bloques que contienen código ejecutable. Este código es organizado en distintas funciones conocidas como instrucciones.

  • Los programas no tienen estado, pero pueden incluir instrucciones para crear cuentas, las cuales son usadas para almacenar y manejar el estado del programa.

  • Los programas pueden ser actualizados por una autoridad de actualización. Un programa se vuelve inmutable cuando la autoridad de actualización está establecida en nula.

  • Verifiable builds enable users to verify that onchain programs match the publicly available source code.

Escribir Programas en Solana #

Los programas de Solana están escritos de forma predominante en el lenguaje de programación Rust, con dos enfoques comunes para el desarrollo:

  • Anchor: Un marco de trabajo diseñado para el desarrollo de programas en Solana. Proporciona una forma más rápida y sencilla de escribir programas, usando macros de Rust para reducir significativamente el código repetitivo. Para principiantes, se recomienda comenzar con Anchor.

  • Rust Nativo: Este enfoque implica escribir programas de Solana en Rust sin aprovechar los beneficios de ningún marco de trabajo. Ofrece más flexibilidad pero viene acompañado de una mayor complejidad.

Actualizar Programas en Solana #

Los programas en la cadena de bloques pueden ser modificados directamente por una cuenta designada como la "autoridad de actualización", que es típicamente la cuenta que originalmente desplegó el programa.

Si la autoridad de actualización se revoca y se establece como None, el programa se vuelve inmutable y ya no se puede actualizar.

Programas verificables #

Asegurar la integridad y verificabilidad del código en la cadena de bloques es esencial. Una compilación verificable asegura que el código ejecutable desplegado en la cadena de bloques puede ser independientemente verificado para que coincida con su código fuente público por cualquier tercero. Este proceso aumenta la transparencia y la confianza, permitiendo detectar discrepancias entre el código fuente y el programa desplegado.

The Solana developer community has introduced tools to support verifiable builds, enabling both developers and users to verify that onchain programs accurately reflect their publicly shared source code.

  • Buscando programas verificados: Para comprobar rápidamente los programas verificados, los usuarios pueden buscar un programa por su dirección en el explorador SolanaFM e ir a la pestaña "Verification". Vea un ejemplo de un programa verificado aquí.

  • Verification Tools: The Solana Verifiable Build CLI by Ellipsis Labs enables users to independently verify onchain programs against published source code.

  • Soporte para compilaciones verificables en Anchor: Anchor proporciona soporte integrado para compilaciones verificables. Los detalles pueden ser encontrados en la documentación de Anchor.

Berkeley Packet Filter (BPF) #

Solana aprovecha la infraestructura del compilador LLVM para compilar programas en archivos con formato ejecutable y enlazable (ELF). Estos archivos incluyen una versión modificada del bytecode Berkeley Packet Filter (eBPF) para programas de Solana, conocido como "Solana Bytecode Format" (sBPF).

El uso de LLVM permite a Solana soportar potencialmente cualquier lenguaje de programación que pueda compilar al backend BPF de LLVM. Esto mejora significativamente la flexibilidad de Solana como plataforma de desarrollo.