SoyFinance / smart-contracts

11 stars 9 forks source link

BugBounty: The transaction cannot succeed due to error: undefined. This is probably an issue with one of the tokens you are swapping. #7

Open kjioi7 opened 2 years ago

kjioi7 commented 2 years ago

Пример: Выбираем пару для свапа: Clo\Calimoon контракт 0x86A1012d437BBFf84fbDF62569D12d4FD3396F8c Если указывать количество монет, которые хотим обменять (Clo) автоматически выставляет количество монет для получения (CaliMoon). После подтверждения обмена выдает ошибку: The transaction cannot succeed due to error: undefined. This is probably an issue with one of the tokens you are swapping.

Если для обмена указывать количество монет, которое хотим получить, вводим число для CaliMoon, свап проходит.

Upaut1 commented 2 years ago

Немного упростим написанное Вами. Вы говорите что использование функции swapExactETHForTokens выдает ошибку, а использование функции swapETHForExactTokens проходит успешно. Я Вас уверяю, что данные функции работают идентично и никакой ошибки в них нет! Ваша транзакция скорее всего была отклонена по причине выхода за пределы проскальзывания.

P.S. на Вашем месте с данным контрактом 0x86A1012d437BBFf84fbDF62569D12d4FD3396F8c я бы не работал, тем более если не знаете что это за контракт, а то так можете попасть когда-нибудь на мошенников. Любой нормальный токен вообще не должен иметь никаких привязок с DEX-биржами, адрес пула ликвидности в этом токене просто должен иметь баланс и не более того. А открыв контракт данного токена и просто кинув взгляд на код уже видно что там явно прописаны адреса контракта factory и router Soy.Finance, плюс к этому в коде уже видны функции блокировки и разблокировки токенов, а так же предусмотрена смена владельца.... Так что для начала работы с каким-либо контрактом изучайте его код, либо ждите официальной информации по токену и его аудиту.

Upaut1 commented 2 years ago

Пример: Выбираем пару для свапа: Clo\Calimoon контракт 0x86A1012d437BBFf84fbDF62569D12d4FD3396F8c Если указывать количество монет, которые хотим обменять (Clo) автоматически выставляет количество монет для получения (CaliMoon). После подтверждения обмена выдает ошибку: The transaction cannot succeed due to error: undefined. This is probably an issue with one of the tokens you are swapping.

Если для обмена указывать количество монет, которое хотим получить, вводим число для CaliMoon, свап проходит.

Проверил данный факт. При обмене реально выдает ошибку "The transaction cannot succeed due to error: undefined. This is probably an issue with one of the tokens you are swapping". Это проблема токена Calimoon, но никак не контрактов Soy.Finance. Так что думаю данный вопрос можно закрывать.

kjioi7 commented 2 years ago

Пример: Выбираем пару для свапа: Clo\Calimoon контракт 0x86A1012d437BBFf84fbDF62569D12d4FD3396F8c Если указывать количество монет, которые хотим обменять (Clo) автоматически выставляет количество монет для получения (CaliMoon). После подтверждения обмена выдает ошибку: The transaction cannot succeed due to error: undefined. This is probably an issue with one of the tokens you are swapping. Если для обмена указывать количество монет, которое хотим получить, вводим число для CaliMoon, свап проходит.

Проверил данный факт. При обмене реально выдает ошибку "The transaction cannot succeed due to error: undefined. This is probably an issue with one of the tokens you are swapping". Это проблема токена Calimoon, но никак не контрактов Soy.Finance. Так что думаю данный вопрос можно закрывать.

Ты невнимателен. Была бы проблема с токеном, или ликвидностью, его не вышло бы менять.
А так меняется описанным методом, причем любая сумма.

yuriy77k commented 2 years ago

Данная проблема возникает из-за того что CaliMoon токен берет комиссию за перевод. При вызове функции swapExactETHForTokens через Soy Finance интерфейс указывается значение amountOutMin согласно расчетам, но из-за того что токен контракт берет комиссию сума на выходе будет меньшей поэтому транзакция завершается неудачей.

Если установить amountOutMin = 0, транзакция пройдет успешно. Вот пример:

swapExactETHForTokens https://explorer.callisto.network/tx/0x47a06484cfb47933f25c21ee893c6452779955aa9654526b10fde19eceb35a37/token-transfers

swapETHForExactTokens https://explorer.callisto.network/tx/0x39a8713e8b21d8e0b4d89b23e7847d6c92844cb7a7244825006277553a1fb58b/token-transfers

Поэтому это не ошибка контракта.