Move.

Publicación

Comparte tu conocimiento.

Ramirez.
Feb 13, 2025
Discusión

Cobrar una comisión por una moneda en una operación de intercambio de DEX

Llevo una semana esforzándome por implementar un contrato que aplique una comisión a una moneda utilizada en una permuta de DEX. Parece que no puedo leer el importe del SUI de la moneda en la salida debido a que se consumió en la transacción. ¿Cómo cobro una comisión de forma atómica si funciones como swap_a2bno devolver una moneda?

  • Move CLI
  • Move Bug
0
2
Cuota
Comentarios
.

Respuestas

2
1 Luca.
Feb 13 2025, 11:08

Si consumes la moneda para una transacción, no podrás volver a usarla. Si la usas para pagar gasolina, es de un solo uso. Cuando se trata de permutas de DEX, una vez que pasas una moneda como OutCoinA en un intercambio de funciones, se consume y las llamadas posteriores no la reconocerán a menos que se devuelvan de forma explícita. El problema principal podría ser que swap_a2b no devuelva nada, lo que significa que no puedes cobrarte una comisión directamente después de una operación de intercambio. Una solución alternativa podría ser tomar posesión de la moneda que se va a canjear y, tras ejecutar el canje, restar la comisión antes de devolver el resultado al usuario.

0
Comentarios
.
CarlkawIy.
Feb 13 2025, 11:10

Envolver la funcionalidad de intercambio en un contrato inteligente puede resolver este problema. Al ejecutar la permuta dentro del contrato, puedes gestionar la propiedad y la distribución para gestionar las comisiones de forma atómica. El contrato ejecutaría la permuta, gestionaría la resta de las comisiones y, a continuación, distribuiría el importe restante al usuario. En el contexto del PTB, se sigue un enfoque: 1) dividir la moneda en un CoinIn independiente, 2) pasar esta moneda al contrato inteligente para realizar el canje, gestionar las comisiones y volver al usuario. No es necesario transferir el objeto de la moneda de forma explícita antes del paso 2 si el contrato inteligente toma CoinIn por valor.

0
Comentarios
.

Sabes la respuesta?

Inicie sesión y compártalo.

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