Я хочу иметь возможность отправлять токен ERC20 на смарт-контракт и иметь возможность отслеживать, с какого адреса отправлен токен ERC20 и на какую сумму. Например, адрес отправляет токены X в смарт-контракт, и после того, как они осуществят передачу, адрес теперь может запустить функцию в смарт-контракте, чтобы зарегистрировать доменное имя. Указанная функция не сможет работать без депозита токена ERC20. Обратите внимание, что есть два вызова смарт-контракта: один для передачи токенов и один для смарт-контракта, получающего токен ERC20.
Когда я читаю код смарт-контракта ERC20 Solidity, я вижу сопоставление балансов. Я не понимаю, как я могу отслеживать, кто какие суммы отправил.
После успешной передачи токена ERC20 генерируется событие, содержащее адреса сторон и переданную сумму. Событие Transfer выглядит так:
event Transfer(address indexed _from, address indexed _to, uint _value);
Ваш контракт может прослушивать контракт токена для событий Transfer, где ваш контракт является параметром _to
— вы можете сделать это вне сети, используя событие web3 api watch.
Вы можете найти эти связанные вопросы полезными:
Обнаружить транзакцию токена к контракту
Вызвать платежную функцию смарт-контракта, отправив токен erc20
Хайме