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 ответов

16 просмотров

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

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

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

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

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

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

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

Anyone knows where there are some instructions or discort about failed bridge transactions ?
Jochem
21
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
any reference of this implementation?
BitBuddha
29
Ⓐrtto, [4/23/24 7:02 PM] Please explain more fully how it is not working exactly, and what are the steps you are taking, and what error messages come or what happens. Ⓐrtto, ...
Ezza Kezza
2
sounds like people have lost their kaspa on tradeogre... does this mean tradeogre not trustworthy?
Ezza Kezza
15
Btw looks like Kushti is at it with 6.0, has he shared any plans to stop developing Ergo or just to keep going indefinitely?
Original Ergonaut Manley
16
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
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
So much speculation in the last week. So much volatility in price. This is because Hedera has a GC that isn't using the network it's governing. Why aren't people asking why a...
Summit Seeker R
9
Any chance you send me instructions on how to bridge manually or how yo reverse the transaction ? Sorry but so many people are trying to scam. Its absurd.
Jochem
8
Карта сайта