Move.

帖子

分享您的知识。

Ramirez.
Feb 13, 2025
讨论

在 DEX 交换操作中从硬币中收取费用

一个星期以来,我一直在努力执行一份合同,该合同对DEX交换中使用的硬币收取费用. 看来我无法从输出中读取硬币的SUI金额,因为它是在交易中消耗的. 如果诸如swap_a2b不返回硬币之类的函数,我该如何以原子方式收取费用?

  • Move CLI
  • Move Bug
0
2
分享
评论
.

答案

2
1 Luca.
Feb 13 2025, 11:08

如果您将硬币用于交易,则无法再次使用. 如果您将其用于汽油支付,则一次性使用. 在DEX交换方面,一旦你在函数交换中传递了像OutCoina这样的硬币,它就会被消耗,除非明确返回,否则后续调用将无法识别它. 主要问题可能是swap_a2b不返回任何东西,这意味着在交换操作后你不能直接收取费用. 一种解决方法可能是取得要交换的硬币的所有权,并在执行交换后减去费用,然后将结果转移回给用户.

0
评论
.
CarlkawIy.
Feb 13 2025, 11:10

将交换功能打包在智能合约中可以解决这个问题. 通过在合约内执行互换,您可以管理所有权和分配,以自动方式处理费用. 合约将执行互换,处理费用减免,然后将剩余金额分配给用户. 以下是PTB背景下的一种方法:1. 将代币拆分成单独的CoinIn,2. 将该代币传递给智能合约进行交换、费用处理,然后返回到用户步骤. 如果智能合约按价值使用CoinIn,则不一定需要在步骤2之前明确转移硬币对象.

0
评论
.

你知道答案吗?

请登录并分享。

我们使用 cookie 确保您在我们的网站上获得最佳体验。
更多信息