[英]ERC20: transfer amount exceeds allowance Smart contract with brownie and NFT
[英]ERC20: transfer amount exceeds allowance, even when it is approved
返回錯誤:VM Exception while processing transaction: revert ERC20: transfer amount exceeds allowance
代碼:
ERC20Tokens[tokenTicker].token.approve(ERC20Tokens[tokenTicker].tokenHolder, 10);
emit tokenOwnerBalance(ERC20Tokens[tokenTicker].token.balanceOf(ERC20Tokens[tokenTicker].tokenHolder));
ERC20Tokens[tokenTicker].token.transferFrom(ERC20Tokens[tokenTicker].tokenHolder, address(this), 1);
日志:
[
{
"from":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"topic":"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
"event":"Approval",
"args":{
"0":"0x7A2946b37399fa3F1C9EF81c7Bcf94AE1099D18F",
"1":"0x95Ba4cF87D6723ad9C0Db21737D862bE80e93911",
"2":"10",
"owner":"0x7A2946b37399fa3F1C9EF81c7Bcf94AE1099D18F",
"spender":"0x95Ba4cF87D6723ad9C0Db21737D862bE80e93911",
"value":"10"
}
},
{
"from":"0x7A2946b37399fa3F1C9EF81c7Bcf94AE1099D18F",
"topic":"0xcff530ae4ada35c1dd7ac314ef643b9eb7ae40665958ad5899e2fbc18865444a",
"event":"tokenOwnerBalance",
"args":{
"0":"31000000"
}
}
]
ERC20Tokens[tokenTicker].token.approve(ERC20Tokens[tokenTicker].tokenHolder, 10);
此行批准tokenHolder
花費您合約的代幣。 不是相反。
所以transferFrom()
失敗了,因為你的合約正試圖花費tokenHolder
的代幣。
如果您希望您的合約能夠花費tokenHolder
的代幣,則tokenHolder
需要直接從他們的地址對代token
執行approve()
function。 不是通過兩者之間的合同。
對我來說,從合約中轉移代幣時使用transferFrom
而不是transfer
是錯誤的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.