If any token other than ETHER is sent to the contract, I want to know the address of the sent token with receive() or fallback() (whichever works). For example, how can I find out that WBNB, BUSD and similar tokens were sent to the contract other than BNB?
How can I detect which coin or token was sent to the contract?
1.3k views Asked by hertac At
2
There are 2 answers
0
Petr Hejda
On
Onchain
The ERC20 standard doesn't require the token contract to notify the recipient, so most implementations simply don't notify. And those contracts that do notify, don't use any standardized approach.
There is also the ERC777 standard for fungible tokens that notifies the recipient but it's far less used than the original ERC20.
Offchain
You can read the Transfer event logs that were produced with your address as the recipient param. Code example in this answer. Note that most 3rd party node providers give only limited access to historic blocks (usually the last 200 blocks), so you might have to use their paid plans or run your own node to retrieve the event logs from older blocks.
Related Questions in BLOCKCHAIN
- Sepolia test network ID
- Gas Estimation Fee on Tron Mainnet
- This is the solidity code to list nft in marketplace after minting but while calling makeItem function Error is showing that Faliled to estimate gas
- Trying to send transactions via a signer using my private key
- My question is regarding installation of a package in VS code but im getting an error in installing it
- Historical data scrapping / collection for Ethereum
- Installation Private Blockchain
- How to import rpc information without importing .env file or hardcoding on frontend?
- How do I speed up transaction filtering on solan blockchain?
- Undeclared identifier: VRF_V2_Wrapper.calculateRequestPrice()
- how to interpret and format iterest rates and index returned by aave event
- Can I swap with 1inch swap apis with forked hardhart?
- How to connect metamask to flutter mobile app
- Scraping 'offers' data from OpenSea
- Which web3 decentralized wallet is suitable to store my crypto assets and lock some of the tokens for certain time?
Related Questions in ETHEREUM
- Gas estimation failed | Returned error: gas required exceeds allowance (16966)
- Historical data scrapping / collection for Ethereum
- IERC20 token.transfer always fails when called from within smart contract
- Installation Private Blockchain
- Call Uniswap V3 QuoterV2 `quoteExactOutput()` function with dart (flutter)
- Can I swap with 1inch swap apis with forked hardhart?
- Ethereum: why are the addresses still generated from the uncompressed public keys?
- WEB3.PHP Contract getEvents
- Ethereum: how to generate a valid address from the public key?
- Merkle Tree that should handle both odd and even numbers of leaves
- Uniswap v3 flashloan remainging balance not correct after paying off the loan
- Fetching Approved USDT Amount from User to Admin Wallet Using Etherscan USDT Contract Code
- How data saved using a smart contract is stored in the Ethereum blockchain
- Understanding the process of setting up a Geth client on a private network and running a DApp
- uniswapRouter.getAmountsOut returns less value of token B than present in reverses
Related Questions in SOLIDITY
- Solidity based blockchain not getting account and networkId
- unexpected keyword or identifier .ts(1434)
- Gas estimation failed | Returned error: gas required exceeds allowance (16966)
- This is the solidity code to list nft in marketplace after minting but while calling makeItem function Error is showing that Faliled to estimate gas
- My question is regarding installation of a package in VS code but im getting an error in installing it
- unsupported addressable value (argument="target", value=null, code=INVALID_ARGUMENT, version=6.11.1
- Error when deploying contract using ethers v6
- Error when fetching pending voters from smart contract using ethers.js
- IERC20 token.transfer always fails when called from within smart contract
- Solidity: How can I get an array of owners of my ERC20 and make a smart contract that uses that without exceeding the gas limit?
- Solidity call pancakeswap v3 contract exception
- Merkle Tree that should handle both odd and even numbers of leaves
- Uniswap v3 flashloan remainging balance not correct after paying off the loan
- connecting trust wallet mobile to my dapp
- Solidity Smart Contract & Hedera Hashgraph Javascript SDK Integration
Related Questions in BITCOIN
- Installation Private Blockchain
- Merkle Tree that should handle both odd and even numbers of leaves
- Blockcypher API Transaction Error 400 Status Code
- Hashlock Transaction in bitcoin
- Kaspa POW Chain Setup Issue: Miner Reports “Not Synced” Despite Genesis Block Presence
- bitcoin block chain - database - how to request / how to get status of an object?
- How to make bitcoin compressed public key
- bitcoins-lib - Cannot sign PSBT in Sparrow
- Import Bitcoin Wallet using Private Key
- How to Create P2SH Address From Multiple Public Keys
- How to transfer BRC-20 token from one wallet to another in React JS
- Bitcoin Transaction signing using Javacard
- Issue with Creating Dogecoin Transaction Using Multiple Inputs and Private Keys
- How do developers manage to update new source code on blockchain due to the difficulty of distributed and decentralized consensus process
- How to calculate BTC supply in profit in dune analytics?
Related Questions in BEP20
- Got an Error The contract function "addLiquidityETH" reverted with the following reason: TRANSFER_FROM_FAILED
- How to extract the addresses of the swapped tokens from the receipt data?
- nodejs web3 signe bep20 token gasprice too high
- nodejs web3 bsc bep20 token transfer gas price need BNB or EHT
- Can I send BEP-20 to web3 ethereumjs-wallet.js?
- Transaction has been reverted by the EVM
- how to reduce token total supply from Bep20?
- How to buy both USDT and ETH in Token Presale?
- Faucet contract only permits owner to perform transactions
- Transferring ERC20 contract to BEP20
- It is possible to change BEP-20 smart contract code?
- MetaMask can't submit transacion
- Requesting random number on Chainlink Testnet and getting zeroes
- how to avoid intermediate conversion while bep20 token swap between busd -> my own token
- How do I increase the token amount? (BEP20)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
You should keep in mind that most tokens other than ether are just smart contracts that keep track of who owns what. So if somebody sends you tokens, all he's doing is sending a tx to that contract and incrementing the number of tokens you own in its record.
Either you go into that contract and check what the balance of a specific address is.
It's possible to create a script that runs like a daemon process and listens to events that a token's smart contract emits when someone sends token to a particular address.
Just like if you said in real life I'm going to be issuing Hertac coins and the records of who owns what will be kept in this register. You have to check that register to see how many hertac tokens somebody has. Tokens on the blockchain are just distributed versions of them.