我有一个智能合约,想将现有的 ERC20(WETH) 转移到我的合约中。我成功地将我的合约部署到了孟买测试网 (Matic)。
我的功能如下:
// transfer weth to smart contract
function transferWeth(address acc, address _token, uint256 _amount) public payable{
ERC20 wethToken1 = ERC20(_token);
wethToken1.approve(acc, _amount);
require(wethToken1.transferFrom(acc, address(this), _amount), "Don't have enough balance");
}
但是从松露运行时我遇到了问题:
Uncaught Error: Transaction has been reverted by the EVM:
at evalmachine.<anonymous>:0:9
at sigintHandlersWrap (node:vm:274:12)
at Script.runInContext (node:vm:142:14)
at runScript (C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\core\lib\console.js:248:1)
at Console.interpret (C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\core\lib\console.js:263:1)
at bound (node:domain:416:15)
at REPLServer.runBound [as eval] (node:domain:427:12)
at REPLServer.onLine (node:repl:833:10)
at REPLServer.emit (node:events:379:20)
at REPLServer.EventEmitter.emit (node:domain:470:12)
at REPLServer.Interface._onLine (node:readline:364:10)
at REPLServer.Interface._line (node:readline:700:8)
at REPLServer.Interface._ttyWrite (node:readline:1045:14)
at REPLServer.self._ttyWrite (node:repl:925:9)
at ReadStream.onkeypress (node:readline:235:10)
at ReadStream.emit (node:events:379:20)
at ReadStream.EventEmitter.emit (node:domain:470:12)
at emitKeys (node:internal/readline/utils:358:14)
at emitKeys.next (<anonymous>)
at ReadStream.onData (node:readline:1179:36)
at ReadStream.emit (node:events:379:20)
at ReadStream.EventEmitter.emit (node:domain:470:12)
at addChunk (node:internal/streams/readable:313:12)
at readableAddChunk (node:internal/streams/readable:288:9)
at ReadStream.Readable.push (node:internal/streams/readable:227:10)
at TTY.onStreamRead (node:internal/stream_base_commons:190:23)
at TTY.callbackTrampoline (node:internal/async_hooks:131:14) {
receipt: {
blockHash: '0x1ba04a25a36f6c9317099497b234b9df80a66fc16b7bfb1b50d1f1500b548291',
blockNumber: 12518868,
contractAddress: null,
cumulativeGasUsed: 58547,
from: '0xfcddff6d80538b0ff8ad3a914996babdcc94fe1a',
我还从一个帐户实现了功能 getbalance of weth 并且此功能运行成功。我的功能如下:
// get balance of weth from account
function getBalanceOfWethA(address _address, address _account) public view returns (uint256) {
return ERC20(_address).balanceOf(_account);
}
请帮我解决这个问题。 提前致谢