Añadir soporte para contratos inteligentes
Stellar recientemente actualizó su protocolo para admitir contratos inteligentes, añadiendo una nueva forma de interactuar con la red. Este documento de una página destaca las consideraciones clave para integrar con los contratos inteligentes de Stellar específicamente para billeteras y exchanges que ya admiten las operaciones 'clásicas' de Stellar. Esboza rápidamente qué cambios esperar, proporciona enlaces a documentación detallada y es un punto de partida para adaptar los procesos existentes de Stellar Classic al nuevo entorno de contratos inteligentes.
1. Infraestructura
Transición de Horizon a RPC
Para admitir correctamente los contratos inteligentes de Stellar, debes usar Stellar RPC. Más específicamente, necesitas RPC para simular transacciones que ejecuten contratos inteligentes, como se describe en la sección "Simulando Transacciones", y proporciona una API conveniente para consumir eventos de contratos. Ambas características no están disponibles en Horizon.
Ejecutar tu propio RPC vs. Aprovechar proveedores de terceros
Puedes configurar un entorno RPC al alojar tu propio nodo o utilizando un proveedor de terceros. Para obtener orientación sobre cómo alojar tu propia instancia, incluyendo una configuración basada en Docker, consulta la Guía del Administrador. Alternativamente, una lista de proveedores de confianza está disponible en la documentación de proveedores de RPC del ecosistema.
2. Ingesta de Datos
Ingestar Eventos de Contratos Inteligentes
Horizon ofrece un endpoint de efectos que describe los cambios de estado ejecutados por operaciones clásicas. De manera similar, los contratos emiten eventos que describen cambios en su estado, los cuales pueden ser obtenidos a través de la API de RPC. Las soluciones off-chain pueden monitorear e ingresar estos eventos (para transferencias de tokens o actualizaciones de protocolo) y mantenerse en sincronía con los datos on-chain. Cada evento está definido por el contrato y está sujeto a los estándares aplicados a la implementación. Dependiendo de los requisitos de retención, una solución podría tener que manejar la ingestión directamente o usar un servicio de terceros para un historial a largo plazo.
Simulando Transacción
Mientras que los eventos deben usarse para monitorear cambios en el estado de un contrato, los clientes también pueden necesitar determinar el estado actual de un contrato. La simulación permite a los clientes ejecutar invocaciones de contratos sin incurrir en tarifas o finalizar cambios, lo que la convierte en un enfoque ideal para obtener el estado actual de los contratos. Por ejemplo, los clientes pueden llamar a la función de saldo en un contrato de token compatible con SEP-0041 para obtener el saldo actual de un usuario.
3. Cambios en el Flujo de Trabajo de Transacciones
Construir Transacciones
La construcción de transacciones implica especificar una llamada a una función de contrato en lugar de cualquiera de las operaciones integradas que Stellar ofrece. Al construir estas llamadas a contrato, es necesario especificar el ID del contrato relevante y los argumentos de función de acuerdo con la interfaz del contrato. Consulta más en Documentación para la Interacción con Contratos - Transacción de Stellar.
Puedes seguir usando las bibliotecas o herramientas que ya conoces para ensamblar estas transacciones, pero ten en cuenta los pasos adicionales requeridos para la invocación de contratos.
Simulando Transacción
Las transacciones que ejecutan contratos inteligentes deben ser simuladas antes de enviarlas. Eso se debe a que la simulación no solo proporciona los resultados de la ejecución de transacciones; también proporciona información esencial como la huella de lectura/escritura de la transacción y las autorizaciones necesarias, y los clientes deben agregar esta información a la transacción antes de enviarla a la red para su ejecución.
Firmando & Entradas de Autenticación
Los contratos inteligentes pueden definir su propia lógica de autorización personalizada, lo que significa que es posible que necesites firmas adicionales para datos de autorización específicos para probar el permiso para ciertas llamadas de contrato. Cada contrato puede tener sus propios requisitos, por lo que una buena práctica es aprovechar las simulaciones de transacciones para identificar requisitos de autorización específicos para una transacción.
Envío Asincrónico de Transacciones
A diferencia de Horizon, RPC solo pone en cola las transacciones para su inclusión en lugar de esperar la confirmación final. Por lo tanto, es necesario consultar el estado de la transacción para determinar si una transacción finalmente tiene éxito o falla. Este modelo asincrónico, así como otros desafíos comunes, se pueden ver en la Documentación para el Desarrollo de Dapp - Errores Comunes.
Guías en esta categoría:
📄️ Crear una cuenta
Sigue esta guía paso a paso para aprender los conceptos básicos de la cuenta y cómo crear una cuenta de Blockchain en Stellar, lo que implica crear un keypair y financiarlo.
📄️ Enviar y recibir pagos
Aprender a enviar pagos y vigilar los pagos recibidos en la red Stellar
📄️ Seguir pagos recibidos
Observa los pagos entrantes utilizando Horizon
📄️ Añadir soporte para contratos inteligentes
Consideraciones para integrar con los contratos inteligentes de Stellar específicamente para billeteras y exchanges
📄️ Automatizar los datos de restablecimiento de Testnet y Futurenet
Aprende a automatizar los datos de restablecimiento de Testnet y Futurenet en Stellar