Suppose I want to design a game where the user places a bet (using the ERC20 token) for a coin toss, and suppose the solidity function within our game contract called to place the bet is bet(uint256 _betAmount, int256 pick).
When playing around with some code, I realized that if the bet() function contains the token.transfer() call (used to place the initial bet before simulating the coin toss), the funds would be transfered from the game contract, and not from the user, even if the caller of bet() is the user. Thus, I would need to use the token.transferFrom() function, but the user would need to set the allowance for the game contract to spend the funds on their behalf.
My question is, how could this be handled in the frontend? Is there a way for a pop-up to show up asking for permission to spend the tokens (thinking of somehting similar to metamask when executing a transaction)?
How to handle approve/allowance when using custom ERC20 token?
1.2k Views Asked by Cesar Arnouk At
1
There are 1 best solutions below
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 ERC20
- Is there a polygon amoy chain for thirdweb?
- 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?
- How can you give a smart contract approval to use your ERC20 token? Is there any way to transfer a token through a smart contract other than approve?
- Fetching Approved USDT Amount from User to Admin Wallet Using Etherscan USDT Contract Code
- Blind signing when trying to send USDT over Arbitrum network
- When I was using the web.js library and Polygon-USDT contract ABI to send transactions, I was prompted that the transfer method does not exist
- Developing a Contract to Manage Approved Token Balances
- How to calculate sqrtPricex96 for uniswap pool creation?
- Send ERC-20 Token Transaction using Web3 js and Private Key
- Wagmi & hooks: call multiple hooks in one button click?
- DeclerationError:Function with same name and parameter types defined twice solicity .deps/npm/@openzeppelin/contracts/token/ERC20/ERC20.sol
- Smart contracts to manage funds and transactions data
- Can We Upgrade the Name and Symbol of ERC20 Token
- How to fix ERC20 token approve problem using web3js in polygon mainnet?
- ResponseError: Returned error: The requested account and/or method has not been authorized by the user
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)
Popular # Hahtags
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?
Basically the user will need to accept two transactions. But before calling the
betfunction you need also to wait until theapprovefunction is confirmed.In a project i developed i also had to handle your exact same case and i did something like this (i used
react-moralisto interact with the contract):