Пост
Поделитесь своими знаниями.
Взимание комиссии с монеты в рамках операции по свопу DEX
Уже неделю я пытаюсь заключить контракт, предусматривающий взимание платы за монету, использованную в свопе DEX. Кажется, я не могу определить сумму SUI монеты по выходным данным, так как она была потрачена на транзакцию. Как я могу автоматически взимать комиссию, если есть такие функции, как «swap_a2b
Не вернуть монету»?
- Move CLI
- Move Bug
Ответы
2Если вы израсходуете монету для транзакции, ее нельзя будет использовать снова. Если вы используете эту валюту для оплаты газа, вы можете использовать ее один раз. Когда дело доходит до свопов DEX, как только вы передаете такую монету, как OutCoinA, в обмен функциями, она расходуется, и последующие вызовы не смогут распознать ее, если вы не получите обратный ответ. Основная проблема может заключаться в том, что swap_a2b ничего не возвращает, а значит, вы не сможете напрямую взимать комиссию после операции обмена. В качестве обходного решения можно взять в собственность обмениваемую монету и, выполнив обмен, вычесть комиссию, а затем вернуть результат пользователю.
Объединение функций свопа в смарт-контракт может решить эту проблему. Выполнив своп в контракте, вы сможете управлять владением и распределением, а также оплачивать платежи в автоматическом режиме. Контракт заключает своп, вычитает комиссию, а затем распределяет оставшуюся сумму обратно пользователю. В контексте PTB используется следующий подход: 1) разделите монету на отдельную монету (CoinIn), 2) передайте эту монету в смарт-контракт для обмена, обработки комиссий и возврата к пользователю. Если смарт-контракт принимает стоимость CoinIn, необязательно явно передавать объект монеты перед шагом 2.
Знаете ответ?
Пожалуйста, войдите в систему и поделитесь им.
Move is an executable bytecode language used to implement custom transactions and smart contracts.