Uso de la Librería Estándar Sway para Contratos Inteligentes

Clase 7 de 16Curso de Programación de Contratos Inteligentes con Sway

Resumen

¿Qué es la librería estándar de Sway?

La librería estándar de Sway es una poderosa herramienta esencial durante el desarrollo en el entorno de Sway. Actúa como la base del software portable de Sway al proporcionar un conjunto de abstracciones mínimas que facilitan el proceso de programación a los desarrolladores. Gracias a esta librería, los programadores tienen acceso a funciones y estructuras de datos predefinidas, permitiéndoles concentrarse en aspectos más complejos del desarrollo sin preocuparse por elementos básicos.

  • Abstracciones: La librería incluye abstracciones que simplifican tareas comunes en el desarrollo. Esto optimiza el tiempo y esfuerzo de los desarrolladores.

  • Accesibilidad: Se incluye automáticamente cuando se crea un nuevo proyecto con Forc, facilitando el inicio instantáneo del desarrollo sin necesidad de instalaciones adicionales.

¿Qué elementos conforman la Librería Estándar de Sway?

Dirección

Las direcciones en Sway son envolturas de tipo seguro alrededor del tipo primitivo B256, usualmente utilizado para representar hashes. Es importante destacar que, a diferencia del EVM, una dirección en Sway nunca se refiere a un contrato inteligente desplegado. En su lugar, representa la dirección de un usuario o EOA (externally owned account).

ID de contrato

Similar a las direcciones, el ID de contrato en Sway es una envoltura de tipo seguro alrededor del tipo B256. No obstante, al contrario de las direcciones, se refiere a la ubicación de un contrato inteligente en la cadena. Este identificador es único y determinista, asegurando la correcta identificación de cada contrato desplegado.

Identidad

El tipo Identidad es un enum que permite manejar tanto direcciones como IDs de contratos, dependiendo del caso. Usualmente se emplea en situaciones donde ambos tipos son aceptables, como la recepción de fondos de diferentes remitentes.

Ejemplo de uso en control de acceso

La identidad se utiliza comúnmente en control de acceso, permitiendo la inclusión de IDs de contratos o direcciones en sus verificaciones. Al utilizar una declaración de tipo match, se puede determinar si la identidad corresponde a una dirección o a un ID de contrato para proceder en consecuencia.

impl CancelTransaction for Contract {
    fn cancel_transaction(sender: Identity) -> Result<(), AuthError> {
        match sender {
            Identity::Address(address) => {
                // Operaciones para la dirección
            },
            Identity::ContractId(contract_id) => {
                // Operaciones para el ID de contrato
            },
        }
    }
}

Resultado

El resultado es un tipo diseñado para la gestión de errores, ofreciendo un retorno estructurado y claro de operaciones exitosas o fallidas. Este enum incluye la varianza OK para el éxito y Err para los errores, conteniendo un mensaje adecuado para cada situación.

Ejemplo de uso del tipo Resultado

En este ejemplo, se muestra cómo gestionar una operación de autenticación que puede resultar en un éxito (representando una identidad obtenida) o en un error.

fn authenticate_user(sender: Identity) -> Result<Identity, AuthError> {
    // Lógica de autenticación
}

¿Cómo empezar a usar la librería estándar Sway?

Para comenzar a utilizar la librería estándar de Sway, simplemente crea un nuevo proyecto con Forc. Esta librería viene incluida por defecto, lo que significa que puedes empezar a aprovechar sus funcionalidades desde el primer momento. A medida que tus proyectos crezcan en complejidad, encontrarás que esta herramienta se vuelve indispensable para optimizar tu flujo de trabajo y mejorar la eficiencia en el desarrollo.

Si quieres explorar más sobre sus capacidades, mantente atento a futuras clases donde se detallará el acceso y uso de todas las funcionalidades dentro de esta librería. Mientras tanto, sigue familiarizándote con sus estructuras, ya que serán esenciales para escribir contratos inteligentes intermedios y avanzados.