Artículos
Materiales educativos y tutoriales sobre Move
Publicaciones
2- ArtículoOct 31, 2023
Transacciones patrocinadas por Sui: ejemplos básicos de integraciones
Tradicionalmente, los usuarios que utilizan aplicaciones descentralizadas (dApps) se enfrentan a un obstáculo común: las tarifas de gas. En nuestro caso, estas tarifas de Sui, necesarias para ejecutar transacciones en la cadena de bloques, a menudo disuaden a los nuevos usuarios de aprovechar al máximo el potencial de Web3. Sin embargo, la innovadora función de transacciones patrocinadas de Sui elimina este obstáculo, lo que permite a los desarrolladores cubrir las tarifas de gas de las transacciones de sus aplicaciones. Esta funcionalidad revolucionaria allana el camino para una experiencia de usuario perfecta y fomenta una adopción más amplia de aplicaciones descentralizadas. TheMoveDev GitHub; SuIQL Repositorio de GitHub; Si tienes alguna duda, puedes hacerla aquí. Flujo de trabajo de transacciones patrocinadas El flujo de trabajo de transacciones patrocinadas de Sui es un proceso bien orquestado que garantiza transacciones fluidas y sin comisiones para los usuarios finales. Este es un desglose de los pasos necesarios. El usuario inicia una acción El proceso se inicia cuando un usuario inicializa una GasLessTransactionDatatransacción, indicando su intención de realizar una acción específica dentro de una dApp. dApp crea un bloque de transacciones de Sui En el centro del flujo de trabajo de las transacciones patrocinadas se encuentra la capacidad de la dApp para crear un bloque de transacciones. Este bloque encapsula todos los datos necesarios, incluida la intención del usuario, la acción que se va a realizar y los parámetros asociados. Transmisión de GasLessTransactionData GasLessTransactionDataSe envía al patrocinador, un participante clave en el marco de la transacción patrocinada, con una solicitud de firma. Estos datos sirven de base para la próxima transacción. Validación y construcción de datos de transacciones El patrocinador valida la transacción recibida y la construyeTransactionData, incorporando las tarifas de gas necesarias. Este paso garantiza que la transacción esté debidamente financiada para su ejecución en la cadena de bloques Sui. Firma de transacciones El patrocinador firma laTransactionData, indicando su aprobación y compromiso con la transacción. La clave privada necesaria para esta firma se almacena de forma segura en AWS Secrets Manager, lo que garantiza la máxima seguridad. Verificación y doble firma por parte del usuario La firmaTransactionData, junto con la firma del patrocinador, se devuelve al usuario. El usuario verifica los detalles de la transacción y la firma TransactionDatauna vez más, creando una transacción con doble firma lista para su ejecución. Ejecución de transacciones en Sui La transacción con doble firma se envía a la red Sui a través de un nodo Sui (nodo completo) o del patrocinador. Sui procesa la transacción y ejecuta la acción especificada dentro de la dApp, todo ello sin que el usuario deba pagar ninguna tarifa de gas. Notificación al usuario Finalmente, una dApp notifica al usuario que la transacción está patrocinada y enviada. Implementación de transacciones patrocinadas por Sui: la perspectiva de un desarrollador Para implementar transacciones patrocinadas, los desarrolladores interactúan con la API Sui o la API de transacciones patrocinadas, haciendo uso de la función sui-sign-sponsored-transactionLambda. He aquí un vistazo al código del lado del cliente que facilita este proceso: const response = await fetch('http://localhost:5000/blockchain/sui-sign-sponsored-transaction', { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify({ sender: wallet.address, module: libName, action, arguments: data, }), }); const sponsorSignedTransaction = await response.json(); const transactionBlock = TransactionBlock.from(sponsorSignedTransaction?.transactionBlockBytes); const senderSignedTransaction = await wallet.signTransactionBlock({ transactionBlock, }); const executeResponse = await provider.executeTransactionBlock({ transactionBlock: sponsorSignedTransaction?.transactionBlockBytes, signature: [sponsorSignedTransaction?.signatureBytes, senderSignedTransaction.signature], options: { showEffects: true }, requestType: 'WaitForLocalExecution', }); Este código del lado del cliente actúa como un puente entre el usuario, el patrocinador y la cadena de bloques Sui, lo que permite la ejecución sin problemas de transacciones sin comisiones de gas. Conclusión La función de transacciones patrocinadas de Sui representa un cambio de paradigma en el mundo de las aplicaciones descentralizadas, ya que elimina una importante barrera de entrada para los usuarios. A través de nuestra exploración de esta innovadora funcionalidad, hemos obtenido información valiosa que ha dado forma a nuestro enfoque para crear dApps fáciles de usar. No dudes en dejar tus preguntas aquí.
- Move
0 - ArtículoOct 31, 2023
Oyentes y webhooks de Sui Move Events: ejemplos básicos de integraciones
Para las empresas y los desarrolladores, la integración con cadenas como Sui ofrece una oportunidad única para innovar y crear soluciones transformadoras. En esta serie, nos adentramos en el proceso de construir sobre Sui, arrojando luz sobre las complejidades de las integraciones y centrándonos en los oyentes de eventos y los webhooks, que han sido componentes integrales de TheMoveDev y SuiQL, la API de eventos de GraphQL para indexación de Sui creada por Peeranha. TheMoveDev GitHub; SuIQL Repositorio de GitHub; Si tienes alguna duda, puedes hacerla aquí. El código se implementa en TypeScript y se ejecuta en el entorno de nube de AWS mediante tecnologías sin servidor. Serverless se usa para las implementaciones. Serverless Offline se usa para ejecutar el código localmente. Sui Events Listeners and Webhooks: una breve descripción Las redes blockchain están inherentemente descentralizadas, lo que hace que la integración de datos en tiempo real sea una hazaña desafiante. Aquí es donde entran en juego los oyentes de eventos y los webhooks. Losdetectores de eventosson mecanismos que supervisan constantemente la actividad de la cadena de bloques, identificando y capturando eventos específicos de interés. LosWebhooks, por otro lado, son llamadas HTTP activadas por estos eventos, lo que permite una comunicación fluida entre diferentes aplicaciones. La arquitectura de integración de Sui Nuestro proceso de integración con Sui implicó una arquitectura integral que comprendía varios componentes clave. Oyente de eventos ElEvents Listener, una potente herramienta de ECS Fargate, desempeña un papel fundamental en nuestra configuración de integración. Sondea continuamente los nuevos eventos de los nodos Sui (nodo completo de Sui) para garantizar que nuestro sistema se mantenga actualizado con las últimas actividades de la cadena de bloques. Lista de oyentes de Sui Events Los eventos identificados por elEvents Listenerse añaden a laSui Listener Queue, una cola FIFO SQS. Esta cola actúa como almacenamiento intermediario, lo que permite procesar y gestionar los eventos de forma eficiente. Invocador de webhook ElWebhook Invoker, responsable de invocar los webhooks, es una función de Lambda que garantiza una comunicación fluida entre nuestro sistema y las aplicaciones externas. Actúa como un puente, lo que facilita la transmisión de los datos de los eventos a los puntos finales designados. Event Bridge ElEvent Bridge, un componente fundamental de nuestra arquitectura, invoca la lambdaWebhook Invokercada vez que se añaden nuevos elementos a laSui Listener Queue. Este mecanismo de activación en tiempo real garantiza la invocación rápida de los webhooks. Webhook ElWebhook, implementado como una función de AWS Lambda, procesa los eventos individuales recibidos de la cadena de bloques Sui. Este componente desempeña un papel crucial a la hora de interpretar los datos del evento y ejecutar acciones específicas en función del tipo de evento. Flujo de trabajo: cómo se combina todo Entender el flujo de trabajo es esencial para comprender el perfecto funcionamiento de nuestra arquitectura de integración. Eventos: funcionamiento del oyente El detector de eventos funciona en un bucle continuo y realiza llamadas a la API de RPC para suix_queryEventsrecuperar nuevos eventos asociados a un ID de paquete configurado. El detector de eventos mantiene un valor de cursor en DynamoDB, lo que garantiza que lee los eventos cronológicamente. Añadir eventos a Sui Listener Queue Siempre que el detector de eventos identifica nuevos eventos, los añade a la cola de oyentes de Sui para su posterior procesamiento. Event Bridge Trigger El AWS Event Bridge monitoriza la cola de oyentes de Sui y activa la lambda del invocador de webhooks en cuanto se añaden nuevos elementos. Esto garantiza el procesamiento de eventos en tiempo real. Invocación de webhook El invocador de webhooks, una vez activado, invoca la función Lambda de Webhook para cada evento presente en la cola. Ejecución local: Dev Playground El complemento offline sin servidor se utiliza para ejecutar la solución localmente. Listener ejecuta una tarea de ECS en la nube. ECS no está disponible sin conexión a Internet sin servidor. Por ese motivo, descomente la sui-events-listenerfunción lambda en serverless.yml. Esta función leerá los nuevos eventos de la cadena de bloques una vez por minuto. Instalar dependencias: npm install Instale DynamoDB: npm run dynamodb:install Si recibe un error Error getting DynamoDb local latest tar.gz location undefined: 403en este paso, significa que todavía hay un problema conocido en serverless-dynamodb-local. Se discute aquí o puedes dejar tu pregunta en Sui Move Q&A. node_modules/dynamodb-localhost/dynamodb/config.json URL to https://s3.us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.tar.gz- En http(añadir s a); node_modules/dynamodb-localhost/dynamodb/installer.j Cambiando httpahttps; Para iniciar los servicios, ejecute: npm run dev Implementación de Event Listener en AWS Instale la CLI de AWS; Configurar la CLI de AWS; aws configure Modificar los valores en stages\test.ymlystages\prod.yml; Iniciar el despliegue; npm run deploy:test o npm run deploy:prod Continuará... En esta primera parte de nuestra serie sobre integraciones de Sui, hemos explorado los conceptos fundamentales de los oyentes de eventos y los webhooks, y hemos desentrañado la intrincada arquitectura que subyace a nuestra integración con la cadena de bloques Sui. Estén atentos a las próximas partes, en las que profundizaremos en nuestro viaje y compartiremos ideas, desafíos y soluciones innovadoras que han dado forma a nuestra experiencia. No dudes en dejar tus preguntas aquí.
- Move
1
- 174
- 162
- 160
- 134
- 130
- 122
- 110
- 110
- 106
- 100
- Move CLI
- Move
- Move Bug
- Move Module
- Smart Contract
- Move Script
- Move Prover
- Feature Request