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.

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: A framework designed for Solana program development. It provides a faster and simpler way to write programs, using Rust macros to significantly reduce boilerplate code. For beginners, it is recommended to start with the Anchor framework.

  • 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.