Move.

Inicio

Bienvenido al Foro Comunitario de Move

Nuevos Artículos

  • article banner.
    MumiTroll.
    Oct 31, 2023
    Artículo
    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í.

    0
  • article banner.
    MumiTroll.
    Oct 31, 2023
    Artículo
    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í.

    1

Publicaciones

98
  • hohm.
    Feb 17, 2025
    P&R expertos

    How to fix 'UnusedValueWithoutDrop' error in PTB function?

    I'm trying to create a contract interaction function similar to a given transaction hash but face an error during execution. The error message is UnusedValueWithoutDrop { result_idx: 0, secondary_idx: 0 }. It appears in the dry run result of the PTB function. I suspect it might be due to an object not being properly handled by the end of the transaction. I attempted to use MoveCall, but I'm not sure if my approach is correct. Can someone advise me on correctly handling this issue?

    • Move CLI
    • Move
    1
    1
  • mssoni.
    Feb 17, 2025
    P&R expertos

    How to resolve CommandArgumentError with tx failed issue?

    I've been trying to execute a transaction using the CommandArgumentError { arg_idx: 1, kind: InvalidBCSBytes } error. Here's the snippet I used: const tx = new Transaction(); const [newCoin] = tx.splitCoins( tx.object(coinObjectId), [1000] ); tx.transferObjects([newCoin], tx.pure.string(wallet.address || "")); tx.setGasBudget(750000); const result = await wallet.signAndExecuteTransaction({ transaction: tx, }); I've tried using tx.pure.u64 but it didn't help. Any solutions?

    • Move CLI
    1
    1
  • doodee.
    Feb 17, 2025
    P&R expertos

    How to properly pass BCS serialized struct parameters in Sui?

    I've been trying to pass BCS serialized struct parameters to a move module in the Sui blockchain, but I'm hitting an InvalidUsageOfPureArg error. Can Sui handle BCS serialized struct parameters directly, or do I need to create a struct object first and pass it to the move module? How should I structure my code to achieve this?

    • Move CLI
    1
    2
  • mssoni.
    Feb 17, 2025
    P&R expertos

    How to call a function from another Move contract?

    I've deployed a contract with an address 0x3df... and a public function 'coll'. Now, I'm trying to write another contract that calls this 'coll' function, but I'm getting an error saying 'use 0x3df...::coll; use is invalid. Unbound module'. I've seen suggestions about using a dependencies file but I'm not sure how to implement this properly. What steps should I take to resolve the error and successfully call the function?

    • Move CLI
    • Move
    1
    2
  • kryptoschain.
    Feb 14, 2025
    P&R expertos

    How to call `public fun`s from Sui framework using CLI?

    Hey folks, I'm trying to call public functions from the Sui framework using the Sui CLI. For instance, if someone transfers an object to me and I don't want it, how can I freeze it? I thought about using sui client call, but I'm having trouble with the module identifier. Is publishing a wrapper package the only way, or is there a CLI command I'm missing?

    • Move CLI
    • Move
    0
    2
  • Theoremus.
    Feb 14, 2025
    Discusión

    ¿Puedo acceder a un objeto a través de su dirección en Move?

    Estoy trabajando con el lenguaje de programación Move y tengo curiosidad por saber si hay alguna forma de acceder a un objeto directamente usando su dirección. Sé que en algunos lenguajes se pueden manipular punteros o referencias, pero no estoy seguro de cómo o si eso es posible en Move. ¿Alguna idea?

    • Move CLI
    0
    1
  • andreweth..
    Feb 13, 2025
    Discusión

    ¿Cómo publicar un paquete usando código JavaScript?

    Me preguntaba si puedo publicar un paquete directamente desde mi código JavaScript. He oído hablar del uso de tx.publish para hacerlo. ¿Alguien puede explicar cómo funciona o proporcionar algún enlace que sirva de orientación?

    • Move Bug
    1
    2
  • farshad.
    Feb 13, 2025
    P&R expertos

    How to handle function signature changes in SUI Move Package

    I'm working on a SUI Move package and encountered an error when I tried to change a function signature. The error message is 'PackageUpgradeError { upgrade_error: IncompatibleUpgrade }'. How can I upgrade the package with the new function signature without causing errors?

    • Move CLI
    0
    1
  • Aliabee.
    Feb 13, 2025
    Discusión

    ¿Cómo comprobar si un monedero posee un NFT en un quiosco?

    Hola amigos, estoy intentando averiguar cómo verificar si una dirección de monedero específica posee un NFT de una colección de NFT en particular almacenada en un quiosco. Por lo que he leído, esto no es sencillo cuando los NFT están en un quiosco. ¿Alguien tiene consejos o métodos para realizar esta verificación?

    • Move Prover
    0
    1
  • kryptoschain.
    Feb 13, 2025
    P&R expertos

    Can I assign a specific ID to a shared object in Move?

    I'm trying to create a shared object within the init function of a Move module and want to assign it a specific predetermined ID like 0x123. Is this possible, or do I need to follow another approach?

    • Move CLI
    1
    1
Usamos cookies para asegurarnos de que obtenga la mejor experiencia en nuestro sitio web.
Más información