209 похожих чатов

Всем привет. Подскажите. Когда я хочу интегрировать другой токен стандарта ERC20

в свой проект (например для обмена), как выстроена логика предоставления возможности пользоваться токенами для действующего контракта.

Чуть подробнее:
1. Мы сделали свой контракт, который создает свой токен ERC-20, назовем его "Test"
2. В этом контракте я хочу добавить функцию обмена токена Test на USDT. Пусть курс будет заложен 1 к 1.
3. Через интерфейс я подключаю токен USDT.

Теперь когда я обмениваю токен, что происходит:
1. Сам контракт отдает свои токены Test через функцию Transfer, так как в данном случае мы имеем глобальную переменную msg.sender, в которой помещен аккаунт вызывающего пользователя.
2. Непонятно что происходит со вторым токеном. Здесь уже как я понимаю к другому контракту образается не сам пользователь, а контракт который вызывал пользователь (т.е. наш контракт). В этом случае в msg.sender будет положен адрес нашего контракта. Но в этом случае необходимо вызывать функцию transferFrom, а для этого надо подтвердить (вызвать функцию approve) наш контракт, с нужным объемом токенов для обмена. Но approve должен вызывать изначальный пользователь, а не наш контракт, так как если мы вызовем через наш контракт, то approve будет применен для нашего аккаунта. Т.е. получается изначально пользователь должен зайти на контракт другого токена и сам вызвать функцию approve? Ну судя по тому, что обмены проходят свободно без этого лишнего действия, значит я что-то не понимаю.

Собственно вопрос во втором пункте... У меня есть идея, что если через интерфейс мы подключаем токен, то функция будет вызываться от имени человека, который вызывает наш контракт, а не от имени нашего контракта. Но подтвердить я этого где-либо не смог)

Буду благодарен ответившим ;)

5 ответов

35 просмотров

Будет две транзакции от пользователя. Первая - апрув от пользователя на контракт usdt в пользу контракта Test Вторая - на контракт Test, который вызовет transferFrom usdt с адреса пользователя и отправит ему в ответ токены Test

Dmitry-Podolsky Автор вопроса
Sergey Mironov
Будет две транзакции от пользователя. Первая - апр...

Т.е. через интерфейс web3 мы должны вызвать сначала запрос от имени пользователя на контракт usdt. А после того, как вернется true, отправить еще оин запрос уже на transferFrom, верно?

Dmitry-Podolsky Автор вопроса
Sergey Mironov
да

Получается, что через один вызов функции на смарт контракте это реализовать невозможно? Я на всякий случай уточню)

Похожие вопросы

Обсуждают сегодня

@Benzenoid can you tell me the easiest, and safest way to bu.y HEX now?
Živa Žena
20
This is a question from my wife who make a fortune with memes 😂😂 About the Migration and Tokens: 1. How will the old tokens be migrated to the new $LGCYX network? What is th...
🍿 °anton°
2
What is the Dex situation? Agora team started with the Pnetwork for their dex which helped them both with integration. It’s completed but as you can see from the Pnetwork ann...
Ben
1
Anyone knows where there are some instructions or discort about failed bridge transactions ?
Jochem
21
@lozuk how do I get my phex copies of my ehex from a atomic wallet, to move to my rabby?
Justfrontin 👀
11
Hello, Is iExec also part of the "inception program" or another one ? Would it be a name to qualified the nature of the relationship between iExec and Nvidia? And does Secret ...
Ñïķøłäś
8
Ready for some fun AND a chance to win TKO Tokens? Join us for exciting minigames in our Telegram group! 🕒 Don’t miss out—games start on today 25 October 2024, at 8 PM! Ge...
Milkyway | Tokocrypto
255
any reference of this implementation?
BitBuddha
29
Also, why can’t the community have a vote/ say when it comes to initiatives like buybacks. Isn’t the point of crypto decentralisation? Don’t we deserve input as long term supp...
👨🏽‍🦰
13
Hi guys, any problem with Pulsebrige? Trying to transfer from wETH to ETH. First it tells me to connect my metamask "through mobile app" not desktop. Then I did and confirmed ...
Snowflakecrypto
13
Карта сайта