Una Guía No Oficial para Escribir Contratos Inteligentes Qubic
Esta guía no oficial proporciona una visión general del desarrollo de Contratos Inteligentes Qubic, detallando funciones clave, asignación de memoria y procedimientos de prueba para garantizar un despliegue robusto y eficiente.
Qsilver · 27 de junio de 2024.
Introducción
Bienvenido a la guía no oficial para escribir Contratos Inteligentes (SC) Qubic. Esta guía tiene como objetivo proporcionar una visión clara y concisa sobre cómo desarrollar e implementar contratos inteligentes dentro del ecosistema Qubic, basándose en la documentación central de QPI.
Visión General de los Contratos Inteligentes Qubic
Actualmente, la documentación principal para escribir SCs es el archivo QPI en GitHub. QPI significa Interfaz de Programación Qubic, análogo a una API (Interfaz de Programación de Aplicaciones) pero específico para Qubic.
El archivo QPI incluye:
- Caracteres Prohibidos: No operadores de multiplicación o división, no directivas del preprocesador.
- Estructura del Código Principal:
- 5000 líneas de código: Define cada tipo de tamaño de variable desde bits individuales hasta matrices con millones de elementos.
- 1000 líneas de código: Gestiona varias colas y tipos de datos relacionados para un manejo de datos eficiente.
- Últimas pocas centenas de líneas: Permiten el acceso al estado de la red Qubic.
Funciones Clave en QPI
Aquí hay algunas de las funciones esenciales proporcionadas en el QPI:
id arbitrator() const;
id computor(uint16 computorIndex) const; // [0..675]
uint8 day() const; // [1..31]
uint8 dayOfWeek() const; // [0..6]
uint16 epoch() const; // [0..9'999]
bit getEntity() const; // Devuelve “true” si la entidad ha sido encontrada, “false” de lo contrario
uint8 hour() const; // [0..23]
sint64 invocationReward() const;
id invocator() const; // Devuelve el id del usuario/contrato que activó este contrato; devuelve NULL_ID si ninguno
template <typename T> id K12(const T& data) const;
uint16 millisecond() const; // [0..999]
uint8 minute() const; // [0..59]
uint8 month() const; // [1..12]
id nextId(const id& currentId) const;
sint64 numberOfPossessedShares() const;
id originator() const; // Devuelve el id del usuario que activó toda la cadena de invocaciones; devuelve NULL_ID si ninguno
uint8 second() const; // [0..59]
bit signatureValidity() const;
uint32 tick() const; // [0..999'999'999]
uint8 year() const; // [0..99] (0 = 2000, 1 = 2001, …, 99 = 2099)
¿Qué Significa Esto?
Los Contratos Inteligentes Qubic son Turing completos, lo que significa que puedes implementar prácticamente cualquier lógica computacional. Sin embargo, ciertas restricciones aseguran que los SCs se ejecuten en un entorno altamente compartimentado y seguro.
Asignación de Memoria
Los SCs utilizan un modelo de asignación de memoria estática donde toda la memoria debe ser preasignada. Este diseño es crucial para gestionar estructuras de datos de manera eficiente dentro de un límite de RAM de 1GB. Aunque este límite se duplicará en el futuro, sigue siendo una asignación fija, requiriendo una planificación cuidadosa del uso de memoria.
Uso de Bibliotecas
Actualmente, no se pueden usar bibliotecas externas en SCs; todo el código necesario debe incluirse directamente en la fuente. Con el tiempo, a medida que más SCs incorporen varias bibliotecas, estas pueden estar disponibles para uso público dentro de otros SCs.
Transacciones y Mensajes de Red RCF
Cada SC tiene una dirección única derivada de una clave pública, siendo el ID del contrato los 64 bits más bajos. Los SCs se invocan mediante transacciones enviadas a esta dirección, con inputData
especificando la operación. Además, el estado de un SC puede consultarse utilizando mensajes de red RCF.
Ejemplo: SC de Airdrop
Un SC de airdrop podría iterar a través de un conjunto de datos y distribuir QU o tokens a cada dirección en un tick por transacción de SC. Con un límite actual de 1024 transacciones por tick, esto podría resultar en hasta 500 millones de transferencias por tick. El rendimiento real depende de la complejidad del SC.
Cómo Probar Tu SC
- Desarrolla tu SC: Escribe y depura tu código de contrato inteligente.
- Actualiza qubic-cli: Asegúrate de que tus transacciones de SC y funciones RCF estén integradas.
- Crea una Actualización de Core de Testnet: Integra tu SC en un entorno de testnet.
- Ejecuta Pruebas: Usa qubic-cli para consultar tu nodo de testnet y validar el rendimiento del SC.
- Pruebas de Estrés: Realiza pruebas de carga y pruebas automatizadas para garantizar la estabilidad.
- Envía para Aprobación: Una vez que se complete la depuración, envía tu SC para aprobación del quórum y luego procede a la IPO.
Al seguir estos pasos, puedes asegurarte de que tus contratos inteligentes sean robustos, eficientes y estén listos para desplegarse en la red Qubic. ¡Feliz programación!
Lee la serie “No Oficial” de Qsilver
- Una hoja de ruta interina no oficial de Qubic
- Detalles de Qubic Crypto
- Una Guía No Oficial para la Integración de Servicios Qubic
- Una Guía No Oficial para Escribir Contratos Inteligentes Qubic
Para obtener las últimas actualizaciones, únete al Discord de Valis, síguenos en X y guarda nuestro blog en tus favoritos.
Siguiente →
En esta página
- Una Guía No Oficial para Escribir Contratos Inteligentes Qubic
- Introducción
- Visión General de los Contratos Inteligentes Qubic
- Funciones Clave en QPI
- ¿Qué Significa Esto?
- Asignación de Memoria
- Uso de Bibliotecas
- Transacciones y Mensajes de Red RCF
- Ejemplo: SC de Airdrop
- Cómo Probar Tu SC
- Lee la serie “No Oficial” de Qsilver