我已经成功地将合同部署到goerli测试网,通过“硬帽子”。然而,当我尝试用元问询调用requestFlashLoan函数时,事务建议的煤气费似乎异常大,并且失败时出现了“失败与错误'27'”。我发现这意味着‘函数的调用者不是贷款池配置器’。然而,我仍然被困在如何实际解决这个问题上。
被困在这几天现在,任何方向都会非常感谢!
Tx:https://goerli.etherscan.io/tx/0xfb200d7dafa42dc811a19e984b75ae966951f12b8864d10995491a644044a3f8


我的可靠代码在下面。
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.10; // .10 because thats the version a lot of the aave contracts that will be used are on.
import {FlashLoanSimpleReceiverBase} from "@aave/core-v3/contracts/flashloan/base/FlashLoanSimpleReceiverBase.sol";
import {IPoolAddressesProvider} from "@aave/core-v3/contracts/interfaces/IPoolAddressesProvider.sol";
import {IERC20} from "@aave/core-v3/contracts/dependencies/openzeppelin/contracts/IERC20.sol";
contract FlashLoan is FlashLoanSimpleReceiverBase {
address payable owner;
constructor(address _addressProvider)
FlashLoanSimpleReceiverBase(IPoolAddressesProvider(_addressProvider))
{
owner = payable(msg.sender);
}
function executeOperation(
address asset,
uint256 amount,
uint256 premium,
address initiator,
bytes calldata params
) external override returns (bool) {
// we have the borrowed funds
// Logic
uint256 amountOwed = amount + premium;
IERC20(asset).approve(address(POOL), amountOwed);
return true;
}
function requestFlashLoan(address _token, uint256 _amount) public {
address recieverAddress = address(this);
address asset = _token;
uint256 amount = _amount;
bytes memory params = "";
uint16 referralCode = 0;
POOL.flashLoanSimple(recieverAddress, asset, amount, params, referralCode);
}
function getBalance(address _tokenAddress) external view returns (uint256) {
return IERC20(_tokenAddress).balanceOf(address(this));
}
function withdraw(address _tokenAddress) external onlyOwner {
IERC20 token = IERC20(_tokenAddress);
token.transfer(msg.sender, token.balanceOf(address(this)));
}
modifier onlyOwner() {
require(msg.sender == owner, "Only the contract owner can call this function");
_;
}
receive() external payable {}
}发布于 2022-11-24 21:52:05
我想你想借用一个错误的地址标记pool.<
函数requestFlashLoan(_token,_amount)包含两个参数:要借入的令牌地址和金额。
我认为您把令牌的地址传递给了第一个参数。
尝试在AAVE V3测试网上使用USDC的官方地址: 0xa2025b15a1757311bfd68cb14eaefcc237af5b43
(请参阅文档地址:https://docs.aave.com/developers/deployed-contracts/v3-testnet-addresses)
在本文档中,您可以在闪存贷款上借入的所有令牌地址都在本文档中。
我想我的回答会对你有所帮助:)

https://ethereum.stackexchange.com/questions/139653
复制相似问题