Разбираться будем на примере нашумевшего $GIFTSTR. Он имеет комиссию на покупку и продажу себя. Как это реализовано?
Если посмотреть на транзакцию продажи, то там всё просто — при отправке жетонов с целью продать jetton wallet отправителя парсит свой
forward_payload, и если находит там операцию продажи токена, отправляет 10% от депозита на jetton wallet команды. Это, к сожалению, ведёт к тому, что при неудавшемся свапе пользователь теряет 10% баланса. От этого крайне трудно избавиться, поэтому это не особо важно.При покупке жетона всё сложнее. Когда мы продаем жетон, $GIFTSTR контролирует момент продажи, потому что он начинается с jetton wallet $GIFTSTR. При покупке же jetton wallet участвует только в конце, когда свап прошёл, и надо выплатить пользователю его жетоны. Поэтому самый простой способ проверять покупку — это проверять, что жетоны отправляются с адреса волта Dedust. И действительно — в такой ситуации jetton wallet отправляет 10% от полученного количества жетонов на кошелек команды.
Но у этого есть побочный эффект. Если выплата с волта Dedust происходит по иным причинам (например, вывод ликвидности), то пользователь тоже будет терять 10% от полученных токенов, хотя никакого свапа не произошло. Поэтому, несмотря на 100% APY на Dedust, класть ликвидность в $GIFTSTR — крайне сомнительная затея.
@TheOpenDevBlog