[英]Balancer flashloan transaction execution reverting on Polygon Mumbai Testnet
我试图在 Balancer 的金库合约上调用 flashLoan() function,但是当我在 polygonscan mumbai 上查看交易时,我不断收到“执行已恢复”错误。
这是我的智能合约代码:
// SPDX-License-Identifier: agpl-3.0
pragma solidity ^0.8.7;
pragma abicoder v2;
import "@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol";
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
interface Vault {
function flashLoan(
IFlashLoanRecipient recipient,
IERC20[] memory tokens,
uint256[] memory amounts,
bytes memory userData
) external;
}
contract FlashLoanSimple is IFlashLoanRecipient {
using SafeMath for uint256;
address internal constant vaultAddr = 0xBA12222222228d8Ba445958a75a0704d566BF2C8;
Vault vault = Vault(vaultAddr);
function receiveFlashLoan(IERC20[] memory tokens,uint256[] memory amounts,uint256[] memory
feeAmounts,bytes memory userData) external override {
userData;
for (uint i = 0; i < tokens.length; i++) {
uint amountOwing = amounts[i].add(feeAmounts[i]);
if(address(this).balance >= amountOwing) {
IERC20(tokens[i]).approve(vaultAddr,amountOwing);
IERC20(tokens[i]).transfer(vaultAddr, amountOwing);
}
}
}
function executeFlashLoan(address _flTokenAddr,uint256 _flAmount) external {
IERC20 flToken = IERC20(_flTokenAddr);
IERC20[] memory flTokens = new IERC20[](1);
uint256[] memory flAmounts = new uint256[](1);
flTokens[0] = flToken;
flAmounts[0] = _flAmount ;
Vault(vaultAddr).flashLoan(IFlashLoanRecipient(address(this)),flTokens,flAmounts,"");
}
}
这是我的脚本的一部分:
const maticProvider = new ethers.providers.JsonRpcProvider("https://polygon-
mumbai.g.alchemy.com/v2/Q0iw05Ps4B9YV10FMtVUSBOzxNKVoV2x");
const private_key = "xxxxxxxxxxxxxxxxxxxxxxxx";
const signer = new ethers.Wallet(private_key, maticProvider);
const Flashloan = new ethers.Contract(flashloanAddress,FlashloanJson.abi,maticProvider);
export const flashloan = async (address: string, amountIn: BigNumber) => {
const gasPrice = await maticProvider.getGasPrice();
const tx = await Flashloan.connect(signer).executeFlashLoan(address,amountIn, {gasLimit:
15000000,gasPrice: gasPrice});
return tx;
};
任何帮助将不胜感激,我之前收到与气体相关的错误,但在我增加气体限制后我不再收到该错误。 我的合约部署在 Polygon Mumbai.network 上,余额为 3 MATIC。
问题是我使用的是 Mumbai.network,它仅在部署在 mai.net 上时有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.