首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转贷后审批代币

转贷后审批代币
EN

Ethereum用户
提问于 2021-11-30 03:43:28
回答 1查看 312关注 0票数 1

我正在创建一个智能契约,它既可以通过0x进行闪光贷款,也可以交换令牌。我可以很好地调用闪存贷款和令牌交换函数,但是当我试图在闪存贷款回调中调用令牌交换时,我会得到一个错误:execution reverted: SafeERC20: low-level call failed

如果我正确理解了这个错误,我相信这意味着我没有正确地批准令牌。下面是我的代码的要点:

代码语言:javascript
复制
/// Make a flash loan.
function makeFlashLoan(...) {
    IERC20(borrowedTokenAddress).approve(zrxSpender, uint256(-1));
    lendingPool.flashLoan(...);
}

/// Callback for flash loan.
function executeOperation(...) {
    IERC20(borrowedTokenAddress).approve(lendingPoolAddress, uint256(-1));
    swapOnZrx(...);
}

/// Swap a token on 0x.
function swapOnZrx(...) {
    IERC20(fromToken).approve(zrxSpender, uint256(-1));
    ...
    (bool success,) = _swapTarget.call(_swapCallData);
    ...
}

如果我做了一个只调用swapOnZrx的事务,事务就会成功。类似地,如果我做了一个事务来调用makeFlashLoan,并且swapOnZrx注释掉了,事务也会成功。但是,当我调用makeFlashLoan并调用swapOnZrx时,总是会得到SafeERC20错误。

任何帮助都将是非常感谢的,因为我已经为这个错误挣扎了将近一整天:

EN

回答 1

Ethereum用户

发布于 2021-11-30 04:20:04

啊呀。事实证明这是因为我没有还清我的短期贷款。

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/114629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档